From 67cb2535a9e028f96ca45040ead20de41de3c392 Mon Sep 17 00:00:00 2001 From: Packit Date: Sep 21 2020 09:03:26 +0000 Subject: gsl-2.5 base --- diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..ead4e86 --- /dev/null +++ b/AUTHORS @@ -0,0 +1,32 @@ +Mark Galassi (rosalia@lanl.gov) - overall design, simulated annealing +Jim Davies (jimmyd@nis.lanl.gov) - statistics library +James Theiler (jt@lanl.gov) - random number generators +Brian Gough (bjg@network-theory.co.uk) - + 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 and eigensystems. +Reid Priedhorsky (rp@lanl.gov) - root finding +Gerard Jungman (jungman@lanl.gov) special functions, interpolation, + series acceleration, ODEs, BLAS, Linear Algebra, Eigensystems, + Hankel Transforms. +Michael Booth (booth@debian.org (email address not working)) - Monte + Carlo integration +Fabrice Rossi (rossi@ufrmd.dauphine.fr) - Multidimensional minimization +Simone Piccardi (piccardi@fi.infn.it) - Ntuples +Carlo Perassi (carlo@linux.it) - Additional random number generators +Dan, Ho-Jin (hjdan@sys713.kaist.ac.kr) - divided differences interpolation +Szymon Jaroszewicz (sj@cs.umb.edu) - combinations +Nicolas Darnis (ndarnis@cvf.fr) - cyclic functions and the initial functions for + canonical permutations. +Tuomo Keskitalo (tuomo.keskitalo@iki.fi) - multidimensional minimization and + ode-initval2 routines for ordinary differential equations +Ivo Alxneit (ivo.alxneit@psi.ch) - multidimensional minimization, wavelet + transforms +Jason H. Stover (jason@sakla.net) - cumulative distribution functions +Patrick Alken - 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/BUGS b/BUGS new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/BUGS diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/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/ChangeLog b/ChangeLog new file mode 100644 index 0000000..e6ae1f3 --- /dev/null +++ b/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/INSTALL b/INSTALL new file mode 100644 index 0000000..2099840 --- /dev/null +++ b/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/Makefile.am b/Makefile.am new file mode 100644 index 0000000..9a8af40 --- /dev/null +++ b/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/Makefile.in b/Makefile.in new file mode 100644 index 0000000..527c604 --- /dev/null +++ b/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/NEWS b/NEWS new file mode 100644 index 0000000..69800eb --- /dev/null +++ b/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/README b/README new file mode 100644 index 0000000..69ebe86 --- /dev/null +++ b/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/THANKS b/THANKS new file mode 100644 index 0000000..d6342f5 --- /dev/null +++ b/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/TODO b/TODO new file mode 100644 index 0000000..9b80051 --- /dev/null +++ b/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/aclocal.m4 b/aclocal.m4 new file mode 100644 index 0000000..b4c2a8d --- /dev/null +++ b/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/autogen.sh b/autogen.sh new file mode 100755 index 0000000..9995a50 --- /dev/null +++ b/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/blas/ChangeLog b/blas/ChangeLog new file mode 100644 index 0000000..ce72bf1 --- /dev/null +++ b/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/blas/Makefile.am b/blas/Makefile.am new file mode 100644 index 0000000..e58b11d --- /dev/null +++ b/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/blas/Makefile.in b/blas/Makefile.in new file mode 100644 index 0000000..d674d5a --- /dev/null +++ b/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/blas/TODO b/blas/TODO new file mode 100644 index 0000000..2183976 --- /dev/null +++ b/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/blas/blas.c b/blas/blas.c new file mode 100644 index 0000000..9ef62a6 --- /dev/null +++ b/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/blas/gsl_blas.h b/blas/gsl_blas.h new file mode 100644 index 0000000..7c42714 --- /dev/null +++ b/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/blas/gsl_blas_types.h b/blas/gsl_blas_types.h new file mode 100644 index 0000000..923edb3 --- /dev/null +++ b/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/block/ChangeLog b/block/ChangeLog new file mode 100644 index 0000000..ee2d5fa --- /dev/null +++ b/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/block/Makefile.am b/block/Makefile.am new file mode 100644 index 0000000..87124f5 --- /dev/null +++ b/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/block/Makefile.in b/block/Makefile.in new file mode 100644 index 0000000..7d93077 --- /dev/null +++ b/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/block/block.c b/block/block.c new file mode 100644 index 0000000..a60e0e0 --- /dev/null +++ b/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/block/block_source.c b/block/block_source.c new file mode 100644 index 0000000..d654bb1 --- /dev/null +++ b/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/block/file.c b/block/file.c new file mode 100644 index 0000000..f86b537 --- /dev/null +++ b/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/block/fprintf_source.c b/block/fprintf_source.c new file mode 100644 index 0000000..33a714d --- /dev/null +++ b/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/block/fwrite_source.c b/block/fwrite_source.c new file mode 100644 index 0000000..2b6e767 --- /dev/null +++ b/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/block/gsl_block.h b/block/gsl_block.h new file mode 100644 index 0000000..f1f9ef8 --- /dev/null +++ b/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/block/gsl_block_char.h b/block/gsl_block_char.h new file mode 100644 index 0000000..70bf969 --- /dev/null +++ b/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/block/gsl_block_complex_double.h b/block/gsl_block_complex_double.h new file mode 100644 index 0000000..bcf66c0 --- /dev/null +++ b/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/block/gsl_block_complex_float.h b/block/gsl_block_complex_float.h new file mode 100644 index 0000000..03595dc --- /dev/null +++ b/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/block/gsl_block_complex_long_double.h b/block/gsl_block_complex_long_double.h new file mode 100644 index 0000000..eb0c605 --- /dev/null +++ b/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/block/gsl_block_double.h b/block/gsl_block_double.h new file mode 100644 index 0000000..3a95f4d --- /dev/null +++ b/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/block/gsl_block_float.h b/block/gsl_block_float.h new file mode 100644 index 0000000..f1c3fb3 --- /dev/null +++ b/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/block/gsl_block_int.h b/block/gsl_block_int.h new file mode 100644 index 0000000..2213f47 --- /dev/null +++ b/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/block/gsl_block_long.h b/block/gsl_block_long.h new file mode 100644 index 0000000..0c30aa5 --- /dev/null +++ b/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/block/gsl_block_long_double.h b/block/gsl_block_long_double.h new file mode 100644 index 0000000..639cd81 --- /dev/null +++ b/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/block/gsl_block_short.h b/block/gsl_block_short.h new file mode 100644 index 0000000..9744775 --- /dev/null +++ b/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/block/gsl_block_uchar.h b/block/gsl_block_uchar.h new file mode 100644 index 0000000..58cf789 --- /dev/null +++ b/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/block/gsl_block_uint.h b/block/gsl_block_uint.h new file mode 100644 index 0000000..52cf2cb --- /dev/null +++ b/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/block/gsl_block_ulong.h b/block/gsl_block_ulong.h new file mode 100644 index 0000000..863ff47 --- /dev/null +++ b/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/block/gsl_block_ushort.h b/block/gsl_block_ushort.h new file mode 100644 index 0000000..24ad7db --- /dev/null +++ b/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/block/gsl_check_range.h b/block/gsl_check_range.h new file mode 100644 index 0000000..d110b6b --- /dev/null +++ b/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/block/init.c b/block/init.c new file mode 100644 index 0000000..852d2d1 --- /dev/null +++ b/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/block/init_source.c b/block/init_source.c new file mode 100644 index 0000000..5661901 --- /dev/null +++ b/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/block/test.c b/block/test.c new file mode 100644 index 0000000..fc10417 --- /dev/null +++ b/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/block/test_complex_io.c b/block/test_complex_io.c new file mode 100644 index 0000000..c3f1fd7 --- /dev/null +++ b/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/block/test_complex_source.c b/block/test_complex_source.c new file mode 100644 index 0000000..25fb887 --- /dev/null +++ b/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/block/test_io.c b/block/test_io.c new file mode 100644 index 0000000..6f4331f --- /dev/null +++ b/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/block/test_source.c b/block/test_source.c new file mode 100644 index 0000000..d2afc9d --- /dev/null +++ b/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/bspline/ChangeLog b/bspline/ChangeLog new file mode 100644 index 0000000..506c83d --- /dev/null +++ b/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/bspline/Makefile.am b/bspline/Makefile.am new file mode 100644 index 0000000..3f4f950 --- /dev/null +++ b/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/bspline/Makefile.in b/bspline/Makefile.in new file mode 100644 index 0000000..8b4614c --- /dev/null +++ b/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/bspline/TODO b/bspline/TODO new file mode 100644 index 0000000..f39f3f1 --- /dev/null +++ b/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/bspline/bspline.c b/bspline/bspline.c new file mode 100644 index 0000000..23c7c3c --- /dev/null +++ b/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/bspline/bspline.h b/bspline/bspline.h new file mode 100644 index 0000000..f80e03e --- /dev/null +++ b/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/bspline/greville.c b/bspline/greville.c new file mode 100644 index 0000000..585a38e --- /dev/null +++ b/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/bspline/gsl_bspline.h b/bspline/gsl_bspline.h new file mode 100644 index 0000000..878fe49 --- /dev/null +++ b/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/bspline/test.c b/bspline/test.c new file mode 100644 index 0000000..608a628 --- /dev/null +++ b/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/build.h b/build.h new file mode 100644 index 0000000..0f18cc0 --- /dev/null +++ b/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/cblas/ChangeLog b/cblas/ChangeLog new file mode 100644 index 0000000..5d500c8 --- /dev/null +++ b/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/cblas/Makefile.am b/cblas/Makefile.am new file mode 100644 index 0000000..12a92c0 --- /dev/null +++ b/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/cblas/Makefile.in b/cblas/Makefile.in new file mode 100644 index 0000000..a846889 --- /dev/null +++ b/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/cblas/TODO b/cblas/TODO new file mode 100644 index 0000000..6224220 --- /dev/null +++ b/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/cblas/caxpy.c b/cblas/caxpy.c new file mode 100644 index 0000000..842153e --- /dev/null +++ b/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/cblas/cblas.h b/cblas/cblas.h new file mode 100644 index 0000000..b478671 --- /dev/null +++ b/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/cblas/ccopy.c b/cblas/ccopy.c new file mode 100644 index 0000000..c4716dd --- /dev/null +++ b/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/cblas/cdotc_sub.c b/cblas/cdotc_sub.c new file mode 100644 index 0000000..7bf646d --- /dev/null +++ b/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/cblas/cdotu_sub.c b/cblas/cdotu_sub.c new file mode 100644 index 0000000..4dff0be --- /dev/null +++ b/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/cblas/cgbmv.c b/cblas/cgbmv.c new file mode 100644 index 0000000..8337128 --- /dev/null +++ b/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/cblas/cgemm.c b/cblas/cgemm.c new file mode 100644 index 0000000..f1ca0c2 --- /dev/null +++ b/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/cblas/cgemv.c b/cblas/cgemv.c new file mode 100644 index 0000000..d09ec64 --- /dev/null +++ b/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/cblas/cgerc.c b/cblas/cgerc.c new file mode 100644 index 0000000..db34ddf --- /dev/null +++ b/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/cblas/cgeru.c b/cblas/cgeru.c new file mode 100644 index 0000000..de3e5be --- /dev/null +++ b/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/cblas/chbmv.c b/cblas/chbmv.c new file mode 100644 index 0000000..58c3644 --- /dev/null +++ b/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/cblas/chemm.c b/cblas/chemm.c new file mode 100644 index 0000000..87b7c65 --- /dev/null +++ b/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/cblas/chemv.c b/cblas/chemv.c new file mode 100644 index 0000000..a501605 --- /dev/null +++ b/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/cblas/cher.c b/cblas/cher.c new file mode 100644 index 0000000..42c7e5b --- /dev/null +++ b/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/cblas/cher2.c b/cblas/cher2.c new file mode 100644 index 0000000..ceb1e68 --- /dev/null +++ b/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/cblas/cher2k.c b/cblas/cher2k.c new file mode 100644 index 0000000..90acff3 --- /dev/null +++ b/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/cblas/cherk.c b/cblas/cherk.c new file mode 100644 index 0000000..984450f --- /dev/null +++ b/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/cblas/chpmv.c b/cblas/chpmv.c new file mode 100644 index 0000000..6163d77 --- /dev/null +++ b/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/cblas/chpr.c b/cblas/chpr.c new file mode 100644 index 0000000..f5098f3 --- /dev/null +++ b/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/cblas/chpr2.c b/cblas/chpr2.c new file mode 100644 index 0000000..9f7a189 --- /dev/null +++ b/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/cblas/cscal.c b/cblas/cscal.c new file mode 100644 index 0000000..5a881b9 --- /dev/null +++ b/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/cblas/csscal.c b/cblas/csscal.c new file mode 100644 index 0000000..ef59150 --- /dev/null +++ b/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/cblas/cswap.c b/cblas/cswap.c new file mode 100644 index 0000000..8e940ec --- /dev/null +++ b/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/cblas/csymm.c b/cblas/csymm.c new file mode 100644 index 0000000..eca487d --- /dev/null +++ b/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/cblas/csyr2k.c b/cblas/csyr2k.c new file mode 100644 index 0000000..0d7a097 --- /dev/null +++ b/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/cblas/csyrk.c b/cblas/csyrk.c new file mode 100644 index 0000000..b3bede5 --- /dev/null +++ b/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/cblas/ctbmv.c b/cblas/ctbmv.c new file mode 100644 index 0000000..97cc4a4 --- /dev/null +++ b/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/cblas/ctbsv.c b/cblas/ctbsv.c new file mode 100644 index 0000000..bd2b5f7 --- /dev/null +++ b/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/cblas/ctpmv.c b/cblas/ctpmv.c new file mode 100644 index 0000000..51405a5 --- /dev/null +++ b/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/cblas/ctpsv.c b/cblas/ctpsv.c new file mode 100644 index 0000000..e68ee3c --- /dev/null +++ b/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/cblas/ctrmm.c b/cblas/ctrmm.c new file mode 100644 index 0000000..b8adbc4 --- /dev/null +++ b/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/cblas/ctrmv.c b/cblas/ctrmv.c new file mode 100644 index 0000000..1e00514 --- /dev/null +++ b/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/cblas/ctrsm.c b/cblas/ctrsm.c new file mode 100644 index 0000000..e3086a7 --- /dev/null +++ b/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/cblas/ctrsv.c b/cblas/ctrsv.c new file mode 100644 index 0000000..e6f8ca0 --- /dev/null +++ b/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/cblas/dasum.c b/cblas/dasum.c new file mode 100644 index 0000000..db215c1 --- /dev/null +++ b/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/cblas/daxpy.c b/cblas/daxpy.c new file mode 100644 index 0000000..d0fd567 --- /dev/null +++ b/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/cblas/dcopy.c b/cblas/dcopy.c new file mode 100644 index 0000000..5c6ed2e --- /dev/null +++ b/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/cblas/ddot.c b/cblas/ddot.c new file mode 100644 index 0000000..e5801f3 --- /dev/null +++ b/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/cblas/dgbmv.c b/cblas/dgbmv.c new file mode 100644 index 0000000..766a4d5 --- /dev/null +++ b/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/cblas/dgemm.c b/cblas/dgemm.c new file mode 100644 index 0000000..c2d93fa --- /dev/null +++ b/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/cblas/dgemv.c b/cblas/dgemv.c new file mode 100644 index 0000000..ff8614b --- /dev/null +++ b/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/cblas/dger.c b/cblas/dger.c new file mode 100644 index 0000000..26de791 --- /dev/null +++ b/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/cblas/dnrm2.c b/cblas/dnrm2.c new file mode 100644 index 0000000..f7d5d83 --- /dev/null +++ b/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/cblas/drot.c b/cblas/drot.c new file mode 100644 index 0000000..15c75db --- /dev/null +++ b/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/cblas/drotg.c b/cblas/drotg.c new file mode 100644 index 0000000..bc95658 --- /dev/null +++ b/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/cblas/drotm.c b/cblas/drotm.c new file mode 100644 index 0000000..69d5129 --- /dev/null +++ b/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/cblas/drotmg.c b/cblas/drotmg.c new file mode 100644 index 0000000..d9e68ba --- /dev/null +++ b/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/cblas/dsbmv.c b/cblas/dsbmv.c new file mode 100644 index 0000000..8fede0a --- /dev/null +++ b/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/cblas/dscal.c b/cblas/dscal.c new file mode 100644 index 0000000..479b121 --- /dev/null +++ b/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/cblas/dsdot.c b/cblas/dsdot.c new file mode 100644 index 0000000..2d3400b --- /dev/null +++ b/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/cblas/dspmv.c b/cblas/dspmv.c new file mode 100644 index 0000000..66b4dc8 --- /dev/null +++ b/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/cblas/dspr.c b/cblas/dspr.c new file mode 100644 index 0000000..f0db80d --- /dev/null +++ b/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/cblas/dspr2.c b/cblas/dspr2.c new file mode 100644 index 0000000..e10ac86 --- /dev/null +++ b/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/cblas/dswap.c b/cblas/dswap.c new file mode 100644 index 0000000..e8401a5 --- /dev/null +++ b/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/cblas/dsymm.c b/cblas/dsymm.c new file mode 100644 index 0000000..a57c476 --- /dev/null +++ b/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/cblas/dsymv.c b/cblas/dsymv.c new file mode 100644 index 0000000..81311db --- /dev/null +++ b/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/cblas/dsyr.c b/cblas/dsyr.c new file mode 100644 index 0000000..790f829 --- /dev/null +++ b/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/cblas/dsyr2.c b/cblas/dsyr2.c new file mode 100644 index 0000000..ce5e005 --- /dev/null +++ b/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/cblas/dsyr2k.c b/cblas/dsyr2k.c new file mode 100644 index 0000000..79e6dff --- /dev/null +++ b/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/cblas/dsyrk.c b/cblas/dsyrk.c new file mode 100644 index 0000000..f244ad7 --- /dev/null +++ b/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/cblas/dtbmv.c b/cblas/dtbmv.c new file mode 100644 index 0000000..d9559b0 --- /dev/null +++ b/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/cblas/dtbsv.c b/cblas/dtbsv.c new file mode 100644 index 0000000..13815f8 --- /dev/null +++ b/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/cblas/dtpmv.c b/cblas/dtpmv.c new file mode 100644 index 0000000..6071fe7 --- /dev/null +++ b/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/cblas/dtpsv.c b/cblas/dtpsv.c new file mode 100644 index 0000000..b68bea2 --- /dev/null +++ b/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/cblas/dtrmm.c b/cblas/dtrmm.c new file mode 100644 index 0000000..ded3161 --- /dev/null +++ b/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/cblas/dtrmv.c b/cblas/dtrmv.c new file mode 100644 index 0000000..eede099 --- /dev/null +++ b/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/cblas/dtrsm.c b/cblas/dtrsm.c new file mode 100644 index 0000000..a50b5fa --- /dev/null +++ b/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/cblas/dtrsv.c b/cblas/dtrsv.c new file mode 100644 index 0000000..fc069c0 --- /dev/null +++ b/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/cblas/dzasum.c b/cblas/dzasum.c new file mode 100644 index 0000000..7484ede --- /dev/null +++ b/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/cblas/dznrm2.c b/cblas/dznrm2.c new file mode 100644 index 0000000..d58ec9f --- /dev/null +++ b/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/cblas/error_cblas.h b/cblas/error_cblas.h new file mode 100644 index 0000000..342bf3b --- /dev/null +++ b/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/cblas/error_cblas_l2.h b/cblas/error_cblas_l2.h new file mode 100644 index 0000000..480b78d --- /dev/null +++ b/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/cblas/hypot.c b/cblas/hypot.c new file mode 100644 index 0000000..8f6bb47 --- /dev/null +++ b/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/cblas/icamax.c b/cblas/icamax.c new file mode 100644 index 0000000..cf0f344 --- /dev/null +++ b/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/cblas/idamax.c b/cblas/idamax.c new file mode 100644 index 0000000..b6372e7 --- /dev/null +++ b/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/cblas/isamax.c b/cblas/isamax.c new file mode 100644 index 0000000..6e7279a --- /dev/null +++ b/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/cblas/izamax.c b/cblas/izamax.c new file mode 100644 index 0000000..e3ae675 --- /dev/null +++ b/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/cblas/sasum.c b/cblas/sasum.c new file mode 100644 index 0000000..019d925 --- /dev/null +++ b/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/cblas/saxpy.c b/cblas/saxpy.c new file mode 100644 index 0000000..af08d4d --- /dev/null +++ b/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/cblas/scasum.c b/cblas/scasum.c new file mode 100644 index 0000000..af87482 --- /dev/null +++ b/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/cblas/scnrm2.c b/cblas/scnrm2.c new file mode 100644 index 0000000..4653c13 --- /dev/null +++ b/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/cblas/scopy.c b/cblas/scopy.c new file mode 100644 index 0000000..423a386 --- /dev/null +++ b/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/cblas/sdot.c b/cblas/sdot.c new file mode 100644 index 0000000..c65904f --- /dev/null +++ b/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/cblas/sdsdot.c b/cblas/sdsdot.c new file mode 100644 index 0000000..5672ac4 --- /dev/null +++ b/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/cblas/sgbmv.c b/cblas/sgbmv.c new file mode 100644 index 0000000..281d5c7 --- /dev/null +++ b/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/cblas/sgemm.c b/cblas/sgemm.c new file mode 100644 index 0000000..1883232 --- /dev/null +++ b/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/cblas/sgemv.c b/cblas/sgemv.c new file mode 100644 index 0000000..bbdfeee --- /dev/null +++ b/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/cblas/sger.c b/cblas/sger.c new file mode 100644 index 0000000..4f2da43 --- /dev/null +++ b/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/cblas/snrm2.c b/cblas/snrm2.c new file mode 100644 index 0000000..76b3d59 --- /dev/null +++ b/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/cblas/source_asum_c.h b/cblas/source_asum_c.h new file mode 100644 index 0000000..5b4abb6 --- /dev/null +++ b/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/cblas/source_asum_r.h b/cblas/source_asum_r.h new file mode 100644 index 0000000..863619e --- /dev/null +++ b/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/cblas/source_axpy_c.h b/cblas/source_axpy_c.h new file mode 100644 index 0000000..fbf543d --- /dev/null +++ b/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/cblas/source_axpy_r.h b/cblas/source_axpy_r.h new file mode 100644 index 0000000..1e8ad7a --- /dev/null +++ b/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/cblas/source_copy_c.h b/cblas/source_copy_c.h new file mode 100644 index 0000000..d3248cd --- /dev/null +++ b/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/cblas/source_copy_r.h b/cblas/source_copy_r.h new file mode 100644 index 0000000..ba0abef --- /dev/null +++ b/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/cblas/source_dot_c.h b/cblas/source_dot_c.h new file mode 100644 index 0000000..fa1aca5 --- /dev/null +++ b/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/cblas/source_dot_r.h b/cblas/source_dot_r.h new file mode 100644 index 0000000..b83f85e --- /dev/null +++ b/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/cblas/source_gbmv_c.h b/cblas/source_gbmv_c.h new file mode 100644 index 0000000..3c4d5e4 --- /dev/null +++ b/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/cblas/source_gbmv_r.h b/cblas/source_gbmv_r.h new file mode 100644 index 0000000..3905508 --- /dev/null +++ b/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/cblas/source_gemm_c.h b/cblas/source_gemm_c.h new file mode 100644 index 0000000..af9bfdb --- /dev/null +++ b/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/cblas/source_gemm_r.h b/cblas/source_gemm_r.h new file mode 100644 index 0000000..a008d22 --- /dev/null +++ b/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/cblas/source_gemv_c.h b/cblas/source_gemv_c.h new file mode 100644 index 0000000..17dd107 --- /dev/null +++ b/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/cblas/source_gemv_r.h b/cblas/source_gemv_r.h new file mode 100644 index 0000000..a2959c5 --- /dev/null +++ b/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/cblas/source_ger.h b/cblas/source_ger.h new file mode 100644 index 0000000..882c184 --- /dev/null +++ b/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/cblas/source_gerc.h b/cblas/source_gerc.h new file mode 100644 index 0000000..36ac679 --- /dev/null +++ b/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/cblas/source_geru.h b/cblas/source_geru.h new file mode 100644 index 0000000..4ca5ecc --- /dev/null +++ b/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/cblas/source_hbmv.h b/cblas/source_hbmv.h new file mode 100644 index 0000000..62cdbaa --- /dev/null +++ b/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/cblas/source_hemm.h b/cblas/source_hemm.h new file mode 100644 index 0000000..0a25ccc --- /dev/null +++ b/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/cblas/source_hemv.h b/cblas/source_hemv.h new file mode 100644 index 0000000..2582940 --- /dev/null +++ b/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/cblas/source_her.h b/cblas/source_her.h new file mode 100644 index 0000000..9427cd0 --- /dev/null +++ b/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/cblas/source_her2.h b/cblas/source_her2.h new file mode 100644 index 0000000..eb5382f --- /dev/null +++ b/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/cblas/source_her2k.h b/cblas/source_her2k.h new file mode 100644 index 0000000..f289a7e --- /dev/null +++ b/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/cblas/source_herk.h b/cblas/source_herk.h new file mode 100644 index 0000000..3ff9395 --- /dev/null +++ b/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/cblas/source_hpmv.h b/cblas/source_hpmv.h new file mode 100644 index 0000000..cdee41c --- /dev/null +++ b/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/cblas/source_hpr.h b/cblas/source_hpr.h new file mode 100644 index 0000000..8b8b6d5 --- /dev/null +++ b/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/cblas/source_hpr2.h b/cblas/source_hpr2.h new file mode 100644 index 0000000..850f5fa --- /dev/null +++ b/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/cblas/source_iamax_c.h b/cblas/source_iamax_c.h new file mode 100644 index 0000000..e4566d4 --- /dev/null +++ b/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/cblas/source_iamax_r.h b/cblas/source_iamax_r.h new file mode 100644 index 0000000..19bed3a --- /dev/null +++ b/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/cblas/source_nrm2_c.h b/cblas/source_nrm2_c.h new file mode 100644 index 0000000..9ce29b2 --- /dev/null +++ b/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/cblas/source_nrm2_r.h b/cblas/source_nrm2_r.h new file mode 100644 index 0000000..b97b9b3 --- /dev/null +++ b/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/cblas/source_rot.h b/cblas/source_rot.h new file mode 100644 index 0000000..6b3f40b --- /dev/null +++ b/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/cblas/source_rotg.h b/cblas/source_rotg.h new file mode 100644 index 0000000..0502699 --- /dev/null +++ b/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/cblas/source_rotm.h b/cblas/source_rotm.h new file mode 100644 index 0000000..bb14a2c --- /dev/null +++ b/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/cblas/source_rotmg.h b/cblas/source_rotmg.h new file mode 100644 index 0000000..dd1f9ea --- /dev/null +++ b/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/cblas/source_sbmv.h b/cblas/source_sbmv.h new file mode 100644 index 0000000..3360afe --- /dev/null +++ b/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/cblas/source_scal_c.h b/cblas/source_scal_c.h new file mode 100644 index 0000000..b386d32 --- /dev/null +++ b/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/cblas/source_scal_c_s.h b/cblas/source_scal_c_s.h new file mode 100644 index 0000000..8cecb73 --- /dev/null +++ b/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/cblas/source_scal_r.h b/cblas/source_scal_r.h new file mode 100644 index 0000000..81d2300 --- /dev/null +++ b/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/cblas/source_spmv.h b/cblas/source_spmv.h new file mode 100644 index 0000000..85301e6 --- /dev/null +++ b/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/cblas/source_spr.h b/cblas/source_spr.h new file mode 100644 index 0000000..65742fc --- /dev/null +++ b/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/cblas/source_spr2.h b/cblas/source_spr2.h new file mode 100644 index 0000000..c92832a --- /dev/null +++ b/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/cblas/source_swap_c.h b/cblas/source_swap_c.h new file mode 100644 index 0000000..3676d25 --- /dev/null +++ b/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/cblas/source_swap_r.h b/cblas/source_swap_r.h new file mode 100644 index 0000000..ae52215 --- /dev/null +++ b/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/cblas/source_symm_c.h b/cblas/source_symm_c.h new file mode 100644 index 0000000..8b1804a --- /dev/null +++ b/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/cblas/source_symm_r.h b/cblas/source_symm_r.h new file mode 100644 index 0000000..1885aee --- /dev/null +++ b/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/cblas/source_symv.h b/cblas/source_symv.h new file mode 100644 index 0000000..affe127 --- /dev/null +++ b/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/cblas/source_syr.h b/cblas/source_syr.h new file mode 100644 index 0000000..28725f6 --- /dev/null +++ b/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/cblas/source_syr2.h b/cblas/source_syr2.h new file mode 100644 index 0000000..0c7040a --- /dev/null +++ b/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/cblas/source_syr2k_c.h b/cblas/source_syr2k_c.h new file mode 100644 index 0000000..0318c5e --- /dev/null +++ b/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/cblas/source_syr2k_r.h b/cblas/source_syr2k_r.h new file mode 100644 index 0000000..692ee39 --- /dev/null +++ b/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/cblas/source_syrk_c.h b/cblas/source_syrk_c.h new file mode 100644 index 0000000..b94e68d --- /dev/null +++ b/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/cblas/source_syrk_r.h b/cblas/source_syrk_r.h new file mode 100644 index 0000000..0455c38 --- /dev/null +++ b/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/cblas/source_tbmv_c.h b/cblas/source_tbmv_c.h new file mode 100644 index 0000000..659ae9c --- /dev/null +++ b/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/cblas/source_tbmv_r.h b/cblas/source_tbmv_r.h new file mode 100644 index 0000000..9c3c12c --- /dev/null +++ b/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/cblas/source_tbsv_c.h b/cblas/source_tbsv_c.h new file mode 100644 index 0000000..463e2cc --- /dev/null +++ b/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/cblas/source_tbsv_r.h b/cblas/source_tbsv_r.h new file mode 100644 index 0000000..4958c42 --- /dev/null +++ b/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/cblas/source_tpmv_c.h b/cblas/source_tpmv_c.h new file mode 100644 index 0000000..692b942 --- /dev/null +++ b/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/cblas/source_tpmv_r.h b/cblas/source_tpmv_r.h new file mode 100644 index 0000000..00de7a8 --- /dev/null +++ b/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/cblas/source_tpsv_c.h b/cblas/source_tpsv_c.h new file mode 100644 index 0000000..7e74dba --- /dev/null +++ b/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/cblas/source_tpsv_r.h b/cblas/source_tpsv_r.h new file mode 100644 index 0000000..b240261 --- /dev/null +++ b/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/cblas/source_trmm_c.h b/cblas/source_trmm_c.h new file mode 100644 index 0000000..6c52a62 --- /dev/null +++ b/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/cblas/source_trmm_r.h b/cblas/source_trmm_r.h new file mode 100644 index 0000000..940b474 --- /dev/null +++ b/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/cblas/source_trmv_c.h b/cblas/source_trmv_c.h new file mode 100644 index 0000000..e1406d1 --- /dev/null +++ b/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/cblas/source_trmv_r.h b/cblas/source_trmv_r.h new file mode 100644 index 0000000..ff1d8bc --- /dev/null +++ b/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/cblas/source_trsm_c.h b/cblas/source_trsm_c.h new file mode 100644 index 0000000..e2f8835 --- /dev/null +++ b/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/cblas/source_trsm_r.h b/cblas/source_trsm_r.h new file mode 100644 index 0000000..4c50af2 --- /dev/null +++ b/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/cblas/source_trsv_c.h b/cblas/source_trsv_c.h new file mode 100644 index 0000000..982e4a1 --- /dev/null +++ b/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/cblas/source_trsv_r.h b/cblas/source_trsv_r.h new file mode 100644 index 0000000..c351ade --- /dev/null +++ b/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/cblas/srot.c b/cblas/srot.c new file mode 100644 index 0000000..ee602d0 --- /dev/null +++ b/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/cblas/srotg.c b/cblas/srotg.c new file mode 100644 index 0000000..65b2796 --- /dev/null +++ b/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/cblas/srotm.c b/cblas/srotm.c new file mode 100644 index 0000000..b4707e6 --- /dev/null +++ b/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/cblas/srotmg.c b/cblas/srotmg.c new file mode 100644 index 0000000..3366300 --- /dev/null +++ b/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/cblas/ssbmv.c b/cblas/ssbmv.c new file mode 100644 index 0000000..6a9302b --- /dev/null +++ b/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/cblas/sscal.c b/cblas/sscal.c new file mode 100644 index 0000000..e4a8334 --- /dev/null +++ b/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/cblas/sspmv.c b/cblas/sspmv.c new file mode 100644 index 0000000..8aca4cc --- /dev/null +++ b/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/cblas/sspr.c b/cblas/sspr.c new file mode 100644 index 0000000..14171c6 --- /dev/null +++ b/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/cblas/sspr2.c b/cblas/sspr2.c new file mode 100644 index 0000000..d64ed10 --- /dev/null +++ b/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/cblas/sswap.c b/cblas/sswap.c new file mode 100644 index 0000000..f9ca153 --- /dev/null +++ b/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/cblas/ssymm.c b/cblas/ssymm.c new file mode 100644 index 0000000..79e05e6 --- /dev/null +++ b/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/cblas/ssymv.c b/cblas/ssymv.c new file mode 100644 index 0000000..40d72a5 --- /dev/null +++ b/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/cblas/ssyr.c b/cblas/ssyr.c new file mode 100644 index 0000000..435ecca --- /dev/null +++ b/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/cblas/ssyr2.c b/cblas/ssyr2.c new file mode 100644 index 0000000..50e2868 --- /dev/null +++ b/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/cblas/ssyr2k.c b/cblas/ssyr2k.c new file mode 100644 index 0000000..796d159 --- /dev/null +++ b/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/cblas/ssyrk.c b/cblas/ssyrk.c new file mode 100644 index 0000000..bb4da44 --- /dev/null +++ b/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/cblas/stbmv.c b/cblas/stbmv.c new file mode 100644 index 0000000..94eab41 --- /dev/null +++ b/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/cblas/stbsv.c b/cblas/stbsv.c new file mode 100644 index 0000000..4be9f8a --- /dev/null +++ b/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/cblas/stpmv.c b/cblas/stpmv.c new file mode 100644 index 0000000..e05744d --- /dev/null +++ b/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/cblas/stpsv.c b/cblas/stpsv.c new file mode 100644 index 0000000..deff58a --- /dev/null +++ b/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/cblas/strmm.c b/cblas/strmm.c new file mode 100644 index 0000000..e8a33ff --- /dev/null +++ b/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/cblas/strmv.c b/cblas/strmv.c new file mode 100644 index 0000000..b5a52bd --- /dev/null +++ b/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/cblas/strsm.c b/cblas/strsm.c new file mode 100644 index 0000000..aa7f2a4 --- /dev/null +++ b/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/cblas/strsv.c b/cblas/strsv.c new file mode 100644 index 0000000..f60fc69 --- /dev/null +++ b/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/cblas/test.c b/cblas/test.c new file mode 100644 index 0000000..151d6bf --- /dev/null +++ b/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/cblas/test_amax.c b/cblas/test_amax.c new file mode 100644 index 0000000..c370224 --- /dev/null +++ b/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/cblas/test_asum.c b/cblas/test_asum.c new file mode 100644 index 0000000..26353de --- /dev/null +++ b/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/cblas/test_axpy.c b/cblas/test_axpy.c new file mode 100644 index 0000000..9f30cd4 --- /dev/null +++ b/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/cblas/test_copy.c b/cblas/test_copy.c new file mode 100644 index 0000000..2a65663 --- /dev/null +++ b/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/cblas/test_dot.c b/cblas/test_dot.c new file mode 100644 index 0000000..8000fe7 --- /dev/null +++ b/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/cblas/test_gbmv.c b/cblas/test_gbmv.c new file mode 100644 index 0000000..34eff26 --- /dev/null +++ b/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/cblas/test_gemm.c b/cblas/test_gemm.c new file mode 100644 index 0000000..aafa4f3 --- /dev/null +++ b/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/cblas/test_gemv.c b/cblas/test_gemv.c new file mode 100644 index 0000000..9145168 --- /dev/null +++ b/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/cblas/test_ger.c b/cblas/test_ger.c new file mode 100644 index 0000000..d81fe75 --- /dev/null +++ b/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/cblas/test_hbmv.c b/cblas/test_hbmv.c new file mode 100644 index 0000000..dbf4c55 --- /dev/null +++ b/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/cblas/test_hemm.c b/cblas/test_hemm.c new file mode 100644 index 0000000..3bc7921 --- /dev/null +++ b/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/cblas/test_hemv.c b/cblas/test_hemv.c new file mode 100644 index 0000000..153f1f2 --- /dev/null +++ b/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/cblas/test_her.c b/cblas/test_her.c new file mode 100644 index 0000000..d1478f8 --- /dev/null +++ b/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/cblas/test_her2.c b/cblas/test_her2.c new file mode 100644 index 0000000..b1a0fae --- /dev/null +++ b/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/cblas/test_her2k.c b/cblas/test_her2k.c new file mode 100644 index 0000000..9c20962 --- /dev/null +++ b/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/cblas/test_herk.c b/cblas/test_herk.c new file mode 100644 index 0000000..e245553 --- /dev/null +++ b/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/cblas/test_hpmv.c b/cblas/test_hpmv.c new file mode 100644 index 0000000..a043aad --- /dev/null +++ b/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/cblas/test_hpr.c b/cblas/test_hpr.c new file mode 100644 index 0000000..4682b94 --- /dev/null +++ b/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/cblas/test_hpr2.c b/cblas/test_hpr2.c new file mode 100644 index 0000000..7fb7dee --- /dev/null +++ b/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/cblas/test_nrm2.c b/cblas/test_nrm2.c new file mode 100644 index 0000000..5c777f6 --- /dev/null +++ b/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/cblas/test_rot.c b/cblas/test_rot.c new file mode 100644 index 0000000..d2d6ed3 --- /dev/null +++ b/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/cblas/test_rotg.c b/cblas/test_rotg.c new file mode 100644 index 0000000..a5a84d3 --- /dev/null +++ b/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/cblas/test_rotm.c b/cblas/test_rotm.c new file mode 100644 index 0000000..98783c5 --- /dev/null +++ b/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/cblas/test_rotmg.c b/cblas/test_rotmg.c new file mode 100644 index 0000000..0a31250 --- /dev/null +++ b/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/cblas/test_sbmv.c b/cblas/test_sbmv.c new file mode 100644 index 0000000..a79fe22 --- /dev/null +++ b/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/cblas/test_scal.c b/cblas/test_scal.c new file mode 100644 index 0000000..a7cdd4b --- /dev/null +++ b/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/cblas/test_spmv.c b/cblas/test_spmv.c new file mode 100644 index 0000000..d49b48b --- /dev/null +++ b/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/cblas/test_spr.c b/cblas/test_spr.c new file mode 100644 index 0000000..36891bd --- /dev/null +++ b/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/cblas/test_spr2.c b/cblas/test_spr2.c new file mode 100644 index 0000000..cf0c39b --- /dev/null +++ b/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/cblas/test_swap.c b/cblas/test_swap.c new file mode 100644 index 0000000..accf822 --- /dev/null +++ b/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/cblas/test_symm.c b/cblas/test_symm.c new file mode 100644 index 0000000..88a672a --- /dev/null +++ b/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/cblas/test_symv.c b/cblas/test_symv.c new file mode 100644 index 0000000..923a0f5 --- /dev/null +++ b/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/cblas/test_syr.c b/cblas/test_syr.c new file mode 100644 index 0000000..fc7b397 --- /dev/null +++ b/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/cblas/test_syr2.c b/cblas/test_syr2.c new file mode 100644 index 0000000..5f214f1 --- /dev/null +++ b/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/cblas/test_syr2k.c b/cblas/test_syr2k.c new file mode 100644 index 0000000..8955d0e --- /dev/null +++ b/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/cblas/test_syrk.c b/cblas/test_syrk.c new file mode 100644 index 0000000..21531d5 --- /dev/null +++ b/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/cblas/test_tbmv.c b/cblas/test_tbmv.c new file mode 100644 index 0000000..abd349f --- /dev/null +++ b/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/cblas/test_tbsv.c b/cblas/test_tbsv.c new file mode 100644 index 0000000..2d9d290 --- /dev/null +++ b/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/cblas/test_tpmv.c b/cblas/test_tpmv.c new file mode 100644 index 0000000..9b3f1b7 --- /dev/null +++ b/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/cblas/test_tpsv.c b/cblas/test_tpsv.c new file mode 100644 index 0000000..1fbb895 --- /dev/null +++ b/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/cblas/test_trmm.c b/cblas/test_trmm.c new file mode 100644 index 0000000..26fab2b --- /dev/null +++ b/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/cblas/test_trmv.c b/cblas/test_trmv.c new file mode 100644 index 0000000..312df89 --- /dev/null +++ b/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/cblas/test_trsm.c b/cblas/test_trsm.c new file mode 100644 index 0000000..eef55b3 --- /dev/null +++ b/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/cblas/test_trsv.c b/cblas/test_trsv.c new file mode 100644 index 0000000..39f5083 --- /dev/null +++ b/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/cblas/tests.c b/cblas/tests.c new file mode 100644 index 0000000..af00945 --- /dev/null +++ b/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/cblas/tests.h b/cblas/tests.h new file mode 100644 index 0000000..9bfb0fa --- /dev/null +++ b/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/cblas/xerbla.c b/cblas/xerbla.c new file mode 100644 index 0000000..713035f --- /dev/null +++ b/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/cblas/zaxpy.c b/cblas/zaxpy.c new file mode 100644 index 0000000..d648401 --- /dev/null +++ b/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/cblas/zcopy.c b/cblas/zcopy.c new file mode 100644 index 0000000..5e80eb4 --- /dev/null +++ b/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/cblas/zdotc_sub.c b/cblas/zdotc_sub.c new file mode 100644 index 0000000..43af96e --- /dev/null +++ b/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/cblas/zdotu_sub.c b/cblas/zdotu_sub.c new file mode 100644 index 0000000..65b9898 --- /dev/null +++ b/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/cblas/zdscal.c b/cblas/zdscal.c new file mode 100644 index 0000000..6167664 --- /dev/null +++ b/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/cblas/zgbmv.c b/cblas/zgbmv.c new file mode 100644 index 0000000..2c0c130 --- /dev/null +++ b/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/cblas/zgemm.c b/cblas/zgemm.c new file mode 100644 index 0000000..c914c00 --- /dev/null +++ b/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/cblas/zgemv.c b/cblas/zgemv.c new file mode 100644 index 0000000..3724364 --- /dev/null +++ b/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/cblas/zgerc.c b/cblas/zgerc.c new file mode 100644 index 0000000..eae60b3 --- /dev/null +++ b/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/cblas/zgeru.c b/cblas/zgeru.c new file mode 100644 index 0000000..3fc8819 --- /dev/null +++ b/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/cblas/zhbmv.c b/cblas/zhbmv.c new file mode 100644 index 0000000..0b2d4c7 --- /dev/null +++ b/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/cblas/zhemm.c b/cblas/zhemm.c new file mode 100644 index 0000000..0e817d0 --- /dev/null +++ b/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/cblas/zhemv.c b/cblas/zhemv.c new file mode 100644 index 0000000..18aed13 --- /dev/null +++ b/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/cblas/zher.c b/cblas/zher.c new file mode 100644 index 0000000..1c4d7f2 --- /dev/null +++ b/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/cblas/zher2.c b/cblas/zher2.c new file mode 100644 index 0000000..18ff644 --- /dev/null +++ b/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/cblas/zher2k.c b/cblas/zher2k.c new file mode 100644 index 0000000..6d87b3f --- /dev/null +++ b/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/cblas/zherk.c b/cblas/zherk.c new file mode 100644 index 0000000..08fa42e --- /dev/null +++ b/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/cblas/zhpmv.c b/cblas/zhpmv.c new file mode 100644 index 0000000..4914452 --- /dev/null +++ b/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/cblas/zhpr.c b/cblas/zhpr.c new file mode 100644 index 0000000..8b0bad8 --- /dev/null +++ b/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/cblas/zhpr2.c b/cblas/zhpr2.c new file mode 100644 index 0000000..7f8e0b0 --- /dev/null +++ b/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/cblas/zscal.c b/cblas/zscal.c new file mode 100644 index 0000000..2667743 --- /dev/null +++ b/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/cblas/zswap.c b/cblas/zswap.c new file mode 100644 index 0000000..9cf6796 --- /dev/null +++ b/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/cblas/zsymm.c b/cblas/zsymm.c new file mode 100644 index 0000000..022d28f --- /dev/null +++ b/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/cblas/zsyr2k.c b/cblas/zsyr2k.c new file mode 100644 index 0000000..bb74a8f --- /dev/null +++ b/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/cblas/zsyrk.c b/cblas/zsyrk.c new file mode 100644 index 0000000..6f5ef6b --- /dev/null +++ b/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/cblas/ztbmv.c b/cblas/ztbmv.c new file mode 100644 index 0000000..38957b0 --- /dev/null +++ b/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/cblas/ztbsv.c b/cblas/ztbsv.c new file mode 100644 index 0000000..315ac11 --- /dev/null +++ b/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/cblas/ztpmv.c b/cblas/ztpmv.c new file mode 100644 index 0000000..8d4ccf4 --- /dev/null +++ b/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/cblas/ztpsv.c b/cblas/ztpsv.c new file mode 100644 index 0000000..80ce153 --- /dev/null +++ b/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/cblas/ztrmm.c b/cblas/ztrmm.c new file mode 100644 index 0000000..e65d546 --- /dev/null +++ b/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/cblas/ztrmv.c b/cblas/ztrmv.c new file mode 100644 index 0000000..47c2b39 --- /dev/null +++ b/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/cblas/ztrsm.c b/cblas/ztrsm.c new file mode 100644 index 0000000..4f14140 --- /dev/null +++ b/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/cblas/ztrsv.c b/cblas/ztrsv.c new file mode 100644 index 0000000..9478602 --- /dev/null +++ b/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/cdf/ChangeLog b/cdf/ChangeLog new file mode 100644 index 0000000..8fbce13 --- /dev/null +++ b/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/cdf/Makefile.am b/cdf/Makefile.am new file mode 100644 index 0000000..053c117 --- /dev/null +++ b/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/cdf/Makefile.in b/cdf/Makefile.in new file mode 100644 index 0000000..af51218 --- /dev/null +++ b/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/cdf/TODO b/cdf/TODO new file mode 100644 index 0000000..438ab10 --- /dev/null +++ b/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/cdf/beta.c b/cdf/beta.c new file mode 100644 index 0000000..fa709d0 --- /dev/null +++ b/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/cdf/beta_inc.c b/cdf/beta_inc.c new file mode 100644 index 0000000..ac1d340 --- /dev/null +++ b/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/cdf/betainv.c b/cdf/betainv.c new file mode 100644 index 0000000..ac6c4ff --- /dev/null +++ b/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/cdf/binomial.c b/cdf/binomial.c new file mode 100644 index 0000000..190945d --- /dev/null +++ b/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/cdf/cauchy.c b/cdf/cauchy.c new file mode 100644 index 0000000..62c56d2 --- /dev/null +++ b/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/cdf/cauchyinv.c b/cdf/cauchyinv.c new file mode 100644 index 0000000..a952811 --- /dev/null +++ b/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/cdf/chisq.c b/cdf/chisq.c new file mode 100644 index 0000000..c53546d --- /dev/null +++ b/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/cdf/chisqinv.c b/cdf/chisqinv.c new file mode 100644 index 0000000..86dfbeb --- /dev/null +++ b/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/cdf/error.h b/cdf/error.h new file mode 100644 index 0000000..83db7ba --- /dev/null +++ b/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/cdf/exponential.c b/cdf/exponential.c new file mode 100644 index 0000000..d6d8226 --- /dev/null +++ b/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/cdf/exponentialinv.c b/cdf/exponentialinv.c new file mode 100644 index 0000000..56d375c --- /dev/null +++ b/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/cdf/exppow.c b/cdf/exppow.c new file mode 100644 index 0000000..a80bb7f --- /dev/null +++ b/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/cdf/fdist.c b/cdf/fdist.c new file mode 100644 index 0000000..258e3de --- /dev/null +++ b/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/cdf/fdistinv.c b/cdf/fdistinv.c new file mode 100644 index 0000000..73da90f --- /dev/null +++ b/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/cdf/flat.c b/cdf/flat.c new file mode 100644 index 0000000..d4410e2 --- /dev/null +++ b/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/cdf/flatinv.c b/cdf/flatinv.c new file mode 100644 index 0000000..340ad9e --- /dev/null +++ b/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/cdf/gamma.c b/cdf/gamma.c new file mode 100644 index 0000000..d000c57 --- /dev/null +++ b/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/cdf/gammainv.c b/cdf/gammainv.c new file mode 100644 index 0000000..43553be --- /dev/null +++ b/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/cdf/gauss.c b/cdf/gauss.c new file mode 100644 index 0000000..cdc8b0a --- /dev/null +++ b/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/cdf/gaussinv.c b/cdf/gaussinv.c new file mode 100644 index 0000000..dcbdca1 --- /dev/null +++ b/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/cdf/geometric.c b/cdf/geometric.c new file mode 100644 index 0000000..2b26af6 --- /dev/null +++ b/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/cdf/gsl_cdf.h b/cdf/gsl_cdf.h new file mode 100644 index 0000000..2bc3fed --- /dev/null +++ b/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/cdf/gumbel1.c b/cdf/gumbel1.c new file mode 100644 index 0000000..d4e50fc --- /dev/null +++ b/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/cdf/gumbel1inv.c b/cdf/gumbel1inv.c new file mode 100644 index 0000000..866cbeb --- /dev/null +++ b/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/cdf/gumbel2.c b/cdf/gumbel2.c new file mode 100644 index 0000000..eacbe5e --- /dev/null +++ b/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/cdf/gumbel2inv.c b/cdf/gumbel2inv.c new file mode 100644 index 0000000..317306f --- /dev/null +++ b/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/cdf/hypergeometric.c b/cdf/hypergeometric.c new file mode 100644 index 0000000..ee9596f --- /dev/null +++ b/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/cdf/laplace.c b/cdf/laplace.c new file mode 100644 index 0000000..5cf37d3 --- /dev/null +++ b/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/cdf/laplaceinv.c b/cdf/laplaceinv.c new file mode 100644 index 0000000..422f27e --- /dev/null +++ b/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/cdf/logistic.c b/cdf/logistic.c new file mode 100644 index 0000000..10ab9bc --- /dev/null +++ b/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/cdf/logisticinv.c b/cdf/logisticinv.c new file mode 100644 index 0000000..bc53d14 --- /dev/null +++ b/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/cdf/lognormal.c b/cdf/lognormal.c new file mode 100644 index 0000000..a356810 --- /dev/null +++ b/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/cdf/lognormalinv.c b/cdf/lognormalinv.c new file mode 100644 index 0000000..d955382 --- /dev/null +++ b/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/cdf/nbinomial.c b/cdf/nbinomial.c new file mode 100644 index 0000000..c3607c5 --- /dev/null +++ b/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/cdf/pareto.c b/cdf/pareto.c new file mode 100644 index 0000000..fb98b61 --- /dev/null +++ b/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/cdf/paretoinv.c b/cdf/paretoinv.c new file mode 100644 index 0000000..1427173 --- /dev/null +++ b/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/cdf/pascal.c b/cdf/pascal.c new file mode 100644 index 0000000..51e3af5 --- /dev/null +++ b/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/cdf/poisson.c b/cdf/poisson.c new file mode 100644 index 0000000..5b34b2b --- /dev/null +++ b/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/cdf/rat_eval.h b/cdf/rat_eval.h new file mode 100644 index 0000000..5e6fc19 --- /dev/null +++ b/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/cdf/rayleigh.c b/cdf/rayleigh.c new file mode 100644 index 0000000..50de88f --- /dev/null +++ b/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/cdf/rayleighinv.c b/cdf/rayleighinv.c new file mode 100644 index 0000000..1e01316 --- /dev/null +++ b/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/cdf/tdist.c b/cdf/tdist.c new file mode 100644 index 0000000..b324482 --- /dev/null +++ b/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/cdf/tdistinv.c b/cdf/tdistinv.c new file mode 100644 index 0000000..9bcd8d8 --- /dev/null +++ b/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/cdf/test.c b/cdf/test.c new file mode 100644 index 0000000..1b4cf77 --- /dev/null +++ b/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/cdf/test_auto.c b/cdf/test_auto.c new file mode 100644 index 0000000..cf6f610 --- /dev/null +++ b/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/cdf/weibull.c b/cdf/weibull.c new file mode 100644 index 0000000..56c9a5c --- /dev/null +++ b/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/cdf/weibullinv.c b/cdf/weibullinv.c new file mode 100644 index 0000000..1faa980 --- /dev/null +++ b/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/cheb/ChangeLog b/cheb/ChangeLog new file mode 100644 index 0000000..5832ba3 --- /dev/null +++ b/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/cheb/Makefile.am b/cheb/Makefile.am new file mode 100644 index 0000000..044dbe2 --- /dev/null +++ b/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/cheb/Makefile.in b/cheb/Makefile.in new file mode 100644 index 0000000..cb045db --- /dev/null +++ b/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/cheb/TODO b/cheb/TODO new file mode 100644 index 0000000..8e07731 --- /dev/null +++ b/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/cheb/deriv.c b/cheb/deriv.c new file mode 100644 index 0000000..8f7c223 --- /dev/null +++ b/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/cheb/eval.c b/cheb/eval.c new file mode 100644 index 0000000..9c84d67 --- /dev/null +++ b/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/cheb/gsl_chebyshev.h b/cheb/gsl_chebyshev.h new file mode 100644 index 0000000..858048e --- /dev/null +++ b/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/cheb/init.c b/cheb/init.c new file mode 100644 index 0000000..a923377 --- /dev/null +++ b/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/cheb/integ.c b/cheb/integ.c new file mode 100644 index 0000000..7720563 --- /dev/null +++ b/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/cheb/test.c b/cheb/test.c new file mode 100644 index 0000000..762f5b4 --- /dev/null +++ b/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/combination/Makefile.am b/combination/Makefile.am new file mode 100644 index 0000000..f920db9 --- /dev/null +++ b/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/combination/Makefile.in b/combination/Makefile.in new file mode 100644 index 0000000..13d25cf --- /dev/null +++ b/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/combination/TODO b/combination/TODO new file mode 100644 index 0000000..fbd4f7c --- /dev/null +++ b/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/combination/combination.c b/combination/combination.c new file mode 100644 index 0000000..370a769 --- /dev/null +++ b/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/combination/file.c b/combination/file.c new file mode 100644 index 0000000..41622ed --- /dev/null +++ b/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/combination/gsl_combination.h b/combination/gsl_combination.h new file mode 100644 index 0000000..69de7cf --- /dev/null +++ b/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/combination/init.c b/combination/init.c new file mode 100644 index 0000000..99da7a7 --- /dev/null +++ b/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/combination/inline.c b/combination/inline.c new file mode 100644 index 0000000..c33c358 --- /dev/null +++ b/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/combination/test.c b/combination/test.c new file mode 100644 index 0000000..0e0a795 --- /dev/null +++ b/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/complex/ChangeLog b/complex/ChangeLog new file mode 100644 index 0000000..57d4ec7 --- /dev/null +++ b/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/complex/Makefile.am b/complex/Makefile.am new file mode 100644 index 0000000..198f575 --- /dev/null +++ b/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/complex/Makefile.in b/complex/Makefile.in new file mode 100644 index 0000000..8a15539 --- /dev/null +++ b/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/complex/TODO b/complex/TODO new file mode 100644 index 0000000..d02b777 --- /dev/null +++ b/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/complex/gsl_complex.h b/complex/gsl_complex.h new file mode 100644 index 0000000..e77b770 --- /dev/null +++ b/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/complex/gsl_complex_math.h b/complex/gsl_complex_math.h new file mode 100644 index 0000000..ad8d076 --- /dev/null +++ b/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 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. + */ + +#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/complex/inline.c b/complex/inline.c new file mode 100644 index 0000000..9490ece --- /dev/null +++ b/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/complex/math.c b/complex/math.c new file mode 100644 index 0000000..1a25726 --- /dev/null +++ b/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/complex/results.h b/complex/results.h new file mode 100644 index 0000000..574affe --- /dev/null +++ b/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/complex/results1.h b/complex/results1.h new file mode 100644 index 0000000..7641944 --- /dev/null +++ b/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/complex/results2.h b/complex/results2.h new file mode 100644 index 0000000..b29dae4 --- /dev/null +++ b/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/complex/results_real.h b/complex/results_real.h new file mode 100644 index 0000000..356f6f5 --- /dev/null +++ b/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/complex/results_zreal.h b/complex/results_zreal.h new file mode 100644 index 0000000..2338025 --- /dev/null +++ b/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/complex/test.c b/complex/test.c new file mode 100644 index 0000000..17f9ecc --- /dev/null +++ b/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/config.guess b/config.guess new file mode 100755 index 0000000..b79252d --- /dev/null +++ b/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/config.h.in b/config.h.in new file mode 100644 index 0000000..d39c766 --- /dev/null +++ b/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/config.sub b/config.sub new file mode 100755 index 0000000..c765b34 --- /dev/null +++ b/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/configure b/configure new file mode 100755 index 0000000..e287ec0 --- /dev/null +++ b/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/configure.ac b/configure.ac new file mode 100644 index 0000000..dac0f36 --- /dev/null +++ b/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/const/ChangeLog b/const/ChangeLog new file mode 100644 index 0000000..3afae7e --- /dev/null +++ b/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 K�pper + + * 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/const/Makefile.am b/const/Makefile.am new file mode 100644 index 0000000..058b136 --- /dev/null +++ b/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/const/Makefile.in b/const/Makefile.in new file mode 100644 index 0000000..2bc6f8e --- /dev/null +++ b/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/const/TODO b/const/TODO new file mode 100644 index 0000000..3fa2491 --- /dev/null +++ b/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/const/gsl_const.h b/const/gsl_const.h new file mode 100644 index 0000000..5d749dc --- /dev/null +++ b/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/const/gsl_const_cgs.h b/const/gsl_const_cgs.h new file mode 100644 index 0000000..ab95b7b --- /dev/null +++ b/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/const/gsl_const_cgsm.h b/const/gsl_const_cgsm.h new file mode 100644 index 0000000..2047e5e --- /dev/null +++ b/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/const/gsl_const_mks.h b/const/gsl_const_mks.h new file mode 100644 index 0000000..bc60e2a --- /dev/null +++ b/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/const/gsl_const_mksa.h b/const/gsl_const_mksa.h new file mode 100644 index 0000000..5d91d1c --- /dev/null +++ b/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/const/gsl_const_num.h b/const/gsl_const_num.h new file mode 100644 index 0000000..385a660 --- /dev/null +++ b/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/const/test.c b/const/test.c new file mode 100644 index 0000000..aa5aa1c --- /dev/null +++ b/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/depcomp b/depcomp new file mode 100755 index 0000000..4ebd5b3 --- /dev/null +++ b/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/deriv/ChangeLog b/deriv/ChangeLog new file mode 100644 index 0000000..53398e0 --- /dev/null +++ b/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/deriv/Makefile.am b/deriv/Makefile.am new file mode 100644 index 0000000..d472523 --- /dev/null +++ b/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/deriv/Makefile.in b/deriv/Makefile.in new file mode 100644 index 0000000..c6b5ae9 --- /dev/null +++ b/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/deriv/deriv.c b/deriv/deriv.c new file mode 100644 index 0000000..2cec794 --- /dev/null +++ b/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/deriv/gsl_deriv.h b/deriv/gsl_deriv.h new file mode 100644 index 0000000..7f4694f --- /dev/null +++ b/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/deriv/test.c b/deriv/test.c new file mode 100644 index 0000000..0157294 --- /dev/null +++ b/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/dht/ChangeLog b/dht/ChangeLog new file mode 100644 index 0000000..e3baf4b --- /dev/null +++ b/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/dht/Makefile.am b/dht/Makefile.am new file mode 100644 index 0000000..196030a --- /dev/null +++ b/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/dht/Makefile.in b/dht/Makefile.in new file mode 100644 index 0000000..69ca561 --- /dev/null +++ b/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/dht/dht.c b/dht/dht.c new file mode 100644 index 0000000..97b6022 --- /dev/null +++ b/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/dht/gsl_dht.h b/dht/gsl_dht.h new file mode 100644 index 0000000..bfc4b2f --- /dev/null +++ b/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/dht/test.c b/dht/test.c new file mode 100644 index 0000000..03cdea4 --- /dev/null +++ b/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/diff/ChangeLog b/diff/ChangeLog new file mode 100644 index 0000000..e478e0a --- /dev/null +++ b/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/diff/Makefile.am b/diff/Makefile.am new file mode 100644 index 0000000..3953040 --- /dev/null +++ b/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/diff/Makefile.in b/diff/Makefile.in new file mode 100644 index 0000000..b90d4c7 --- /dev/null +++ b/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/diff/diff.c b/diff/diff.c new file mode 100644 index 0000000..bb7041f --- /dev/null +++ b/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/diff/gsl_diff.h b/diff/gsl_diff.h new file mode 100644 index 0000000..a145894 --- /dev/null +++ b/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/diff/test.c b/diff/test.c new file mode 100644 index 0000000..c3aad4a --- /dev/null +++ b/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/doc/Makefile.am b/doc/Makefile.am new file mode 100644 index 0000000..b234dbe --- /dev/null +++ b/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/doc/Makefile.in b/doc/Makefile.in new file mode 100644 index 0000000..b362d1f --- /dev/null +++ b/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/doc/TODO b/doc/TODO new file mode 100644 index 0000000..246c1c1 --- /dev/null +++ b/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/doc/_static/fdl.txt b/doc/_static/fdl.txt new file mode 100644 index 0000000..2f7e03c --- /dev/null +++ b/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/doc/_static/gpl.txt b/doc/_static/gpl.txt new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/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/doc/autoconf.rst b/doc/autoconf.rst new file mode 100644 index 0000000..b4aeb9a --- /dev/null +++ b/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/doc/blas.rst b/doc/blas.rst new file mode 100644 index 0000000..8f456b6 --- /dev/null +++ b/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/doc/bspline.rst b/doc/bspline.rst new file mode 100644 index 0000000..ba1908d --- /dev/null +++ b/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/doc/cblas.rst b/doc/cblas.rst new file mode 100644 index 0000000..8131400 --- /dev/null +++ b/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/doc/cheb.rst b/doc/cheb.rst new file mode 100644 index 0000000..edb409e --- /dev/null +++ b/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/doc/combination.rst b/doc/combination.rst new file mode 100644 index 0000000..7d367ca --- /dev/null +++ b/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/doc/complex.rst b/doc/complex.rst new file mode 100644 index 0000000..63c86a0 --- /dev/null +++ b/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/doc/conf.py b/doc/conf.py new file mode 100644 index 0000000..587e5d3 --- /dev/null +++ b/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/doc/const.rst b/doc/const.rst new file mode 100644 index 0000000..5740d56 --- /dev/null +++ b/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/doc/contrib.rst b/doc/contrib.rst new file mode 100644 index 0000000..0188671 --- /dev/null +++ b/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/doc/debug.rst b/doc/debug.rst new file mode 100644 index 0000000..428bbfd --- /dev/null +++ b/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/doc/dht.rst b/doc/dht.rst new file mode 100644 index 0000000..d7873c8 --- /dev/null +++ b/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/doc/diff.rst b/doc/diff.rst new file mode 100644 index 0000000..5a0865e --- /dev/null +++ b/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/doc/dwt.rst b/doc/dwt.rst new file mode 100644 index 0000000..c279ace --- /dev/null +++ b/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/doc/eigen.rst b/doc/eigen.rst new file mode 100644 index 0000000..971af75 --- /dev/null +++ b/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/doc/err.rst b/doc/err.rst new file mode 100644 index 0000000..809f6f3 --- /dev/null +++ b/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/doc/examples/Makefile.am b/doc/examples/Makefile.am new file mode 100644 index 0000000..5f0a204 --- /dev/null +++ b/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/doc/examples/Makefile.in b/doc/examples/Makefile.in new file mode 100644 index 0000000..2ed08f3 --- /dev/null +++ b/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/doc/examples/blas.c b/doc/examples/blas.c new file mode 100644 index 0000000..ab4b39b --- /dev/null +++ b/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/doc/examples/blas.txt b/doc/examples/blas.txt new file mode 100644 index 0000000..a0f51d7 --- /dev/null +++ b/doc/examples/blas.txt @@ -0,0 +1,2 @@ +[ 367.76, 368.12 + 674.06, 674.72 ] diff --git a/doc/examples/block.c b/doc/examples/block.c new file mode 100644 index 0000000..ca6e80e --- /dev/null +++ b/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/doc/examples/block.txt b/doc/examples/block.txt new file mode 100644 index 0000000..1f84cd0 --- /dev/null +++ b/doc/examples/block.txt @@ -0,0 +1,2 @@ +length of block = 100 +block data address = 0x804b0d8 diff --git a/doc/examples/bspline.c b/doc/examples/bspline.c new file mode 100644 index 0000000..311be68 --- /dev/null +++ b/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/doc/examples/bspline.txt b/doc/examples/bspline.txt new file mode 100644 index 0000000..57e4d7a --- /dev/null +++ b/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/doc/examples/cblas.c b/doc/examples/cblas.c new file mode 100644 index 0000000..cb6b31a --- /dev/null +++ b/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/doc/examples/cblas.txt b/doc/examples/cblas.txt new file mode 100644 index 0000000..a0f51d7 --- /dev/null +++ b/doc/examples/cblas.txt @@ -0,0 +1,2 @@ +[ 367.76, 368.12 + 674.06, 674.72 ] diff --git a/doc/examples/cdf.c b/doc/examples/cdf.c new file mode 100644 index 0000000..968eb96 --- /dev/null +++ b/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/doc/examples/cdf.txt b/doc/examples/cdf.txt new file mode 100644 index 0000000..f04b75b --- /dev/null +++ b/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/doc/examples/cheb.c b/doc/examples/cheb.c new file mode 100644 index 0000000..d1bdf4b --- /dev/null +++ b/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/doc/examples/cheb.txt b/doc/examples/cheb.txt new file mode 100644 index 0000000..311842f --- /dev/null +++ b/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/doc/examples/combination.c b/doc/examples/combination.c new file mode 100644 index 0000000..708174f --- /dev/null +++ b/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/doc/examples/combination.txt b/doc/examples/combination.txt new file mode 100644 index 0000000..a9050ab --- /dev/null +++ b/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/doc/examples/const.c b/doc/examples/const.c new file mode 100644 index 0000000..47718c5 --- /dev/null +++ b/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/doc/examples/const.txt b/doc/examples/const.txt new file mode 100644 index 0000000..6552a3d --- /dev/null +++ b/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/doc/examples/demo_fn.c b/doc/examples/demo_fn.c new file mode 100644 index 0000000..4910baf --- /dev/null +++ b/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/doc/examples/demo_fn.h b/doc/examples/demo_fn.h new file mode 100644 index 0000000..77aeea1 --- /dev/null +++ b/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/doc/examples/diff.c b/doc/examples/diff.c new file mode 100644 index 0000000..e32f192 --- /dev/null +++ b/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/doc/examples/diff.txt b/doc/examples/diff.txt new file mode 100644 index 0000000..34bffe6 --- /dev/null +++ b/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/doc/examples/dwt.c b/doc/examples/dwt.c new file mode 100644 index 0000000..422c55d --- /dev/null +++ b/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/doc/examples/dwt.txt b/doc/examples/dwt.txt new file mode 100644 index 0000000..297186f --- /dev/null +++ b/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/doc/examples/eigen.c b/doc/examples/eigen.c new file mode 100644 index 0000000..a24c912 --- /dev/null +++ b/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/doc/examples/eigen.txt b/doc/examples/eigen.txt new file mode 100644 index 0000000..815d495 --- /dev/null +++ b/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/doc/examples/eigen_nonsymm.c b/doc/examples/eigen_nonsymm.c new file mode 100644 index 0000000..eb1a4e5 --- /dev/null +++ b/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/doc/examples/eigen_nonsymm.txt b/doc/examples/eigen_nonsymm.txt new file mode 100644 index 0000000..c60237b --- /dev/null +++ b/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/doc/examples/fft.c b/doc/examples/fft.c new file mode 100644 index 0000000..3adc29a --- /dev/null +++ b/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/doc/examples/fft.txt b/doc/examples/fft.txt new file mode 100644 index 0000000..ab60c64 --- /dev/null +++ b/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/doc/examples/fftmr.c b/doc/examples/fftmr.c new file mode 100644 index 0000000..b12dc76 --- /dev/null +++ b/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/doc/examples/fftmr.txt b/doc/examples/fftmr.txt new file mode 100644 index 0000000..96a05f3 --- /dev/null +++ b/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/doc/examples/fftreal.c b/doc/examples/fftreal.c new file mode 100644 index 0000000..ec34458 --- /dev/null +++ b/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/doc/examples/fftreal.txt b/doc/examples/fftreal.txt new file mode 100644 index 0000000..87f38d2 --- /dev/null +++ b/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/doc/examples/filt_edge.c b/doc/examples/filt_edge.c new file mode 100644 index 0000000..a1dddaa --- /dev/null +++ b/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/doc/examples/filt_edge.txt b/doc/examples/filt_edge.txt new file mode 100644 index 0000000..45b5585 --- /dev/null +++ b/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/doc/examples/fitreg.c b/doc/examples/fitreg.c new file mode 100644 index 0000000..7208206 --- /dev/null +++ b/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/doc/examples/fitreg.txt b/doc/examples/fitreg.txt new file mode 100755 index 0000000..85d2974 --- /dev/null +++ b/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/doc/examples/fitreg2.c b/doc/examples/fitreg2.c new file mode 100644 index 0000000..8f448d6 --- /dev/null +++ b/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/doc/examples/fitreg2.txt b/doc/examples/fitreg2.txt new file mode 100644 index 0000000..8327e3a --- /dev/null +++ b/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/doc/examples/fitting.c b/doc/examples/fitting.c new file mode 100644 index 0000000..5c36969 --- /dev/null +++ b/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/doc/examples/fitting.txt b/doc/examples/fitting.txt new file mode 100644 index 0000000..ff9354e --- /dev/null +++ b/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/doc/examples/fitting2.c b/doc/examples/fitting2.c new file mode 100644 index 0000000..43f8c06 --- /dev/null +++ b/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/doc/examples/fitting2.txt b/doc/examples/fitting2.txt new file mode 100644 index 0000000..1e29597 --- /dev/null +++ b/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/doc/examples/fitting3.c b/doc/examples/fitting3.c new file mode 100644 index 0000000..a3f1e32 --- /dev/null +++ b/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/doc/examples/gaussfilt.c b/doc/examples/gaussfilt.c new file mode 100644 index 0000000..a4a1a28 --- /dev/null +++ b/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/doc/examples/gaussfilt.txt b/doc/examples/gaussfilt.txt new file mode 100644 index 0000000..6f23649 --- /dev/null +++ b/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/doc/examples/gaussfilt2.c b/doc/examples/gaussfilt2.c new file mode 100644 index 0000000..9db707f --- /dev/null +++ b/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/doc/examples/gaussfilt2.txt b/doc/examples/gaussfilt2.txt new file mode 100644 index 0000000..78678b2 --- /dev/null +++ b/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/doc/examples/histogram.c b/doc/examples/histogram.c new file mode 100644 index 0000000..a3c5150 --- /dev/null +++ b/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/doc/examples/histogram2d.c b/doc/examples/histogram2d.c new file mode 100644 index 0000000..3fcabb4 --- /dev/null +++ b/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/doc/examples/histogram2d.txt b/doc/examples/histogram2d.txt new file mode 100644 index 0000000..5fc1cbd --- /dev/null +++ b/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/doc/examples/ieee.c b/doc/examples/ieee.c new file mode 100644 index 0000000..c7f1110 --- /dev/null +++ b/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/doc/examples/ieee.txt b/doc/examples/ieee.txt new file mode 100644 index 0000000..2d2fb42 --- /dev/null +++ b/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/doc/examples/ieeeround.c b/doc/examples/ieeeround.c new file mode 100644 index 0000000..04f837d --- /dev/null +++ b/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/doc/examples/ieeeround.txt b/doc/examples/ieeeround.txt new file mode 100644 index 0000000..92c0d26 --- /dev/null +++ b/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/doc/examples/impulse.c b/doc/examples/impulse.c new file mode 100644 index 0000000..6a81193 --- /dev/null +++ b/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/doc/examples/impulse.txt b/doc/examples/impulse.txt new file mode 100644 index 0000000..ce3e1a9 --- /dev/null +++ b/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/doc/examples/integration.c b/doc/examples/integration.c new file mode 100644 index 0000000..79dd1c3 --- /dev/null +++ b/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/doc/examples/integration.txt b/doc/examples/integration.txt new file mode 100644 index 0000000..61369fb --- /dev/null +++ b/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/doc/examples/integration2.c b/doc/examples/integration2.c new file mode 100644 index 0000000..7638a5b --- /dev/null +++ b/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/doc/examples/integration2a.txt b/doc/examples/integration2a.txt new file mode 100644 index 0000000..7a81db8 --- /dev/null +++ b/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/doc/examples/integration2b.txt b/doc/examples/integration2b.txt new file mode 100644 index 0000000..3bc36a2 --- /dev/null +++ b/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/doc/examples/interp.c b/doc/examples/interp.c new file mode 100644 index 0000000..b7d6aab --- /dev/null +++ b/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/doc/examples/interp.txt b/doc/examples/interp.txt new file mode 100644 index 0000000..1add107 --- /dev/null +++ b/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/doc/examples/interp2d.c b/doc/examples/interp2d.c new file mode 100644 index 0000000..3777c10 --- /dev/null +++ b/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/doc/examples/interp2d.txt b/doc/examples/interp2d.txt new file mode 100644 index 0000000..44829b1 --- /dev/null +++ b/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/doc/examples/interp_compare.c b/doc/examples/interp_compare.c new file mode 100644 index 0000000..2049df4 --- /dev/null +++ b/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/doc/examples/interp_compare.txt b/doc/examples/interp_compare.txt new file mode 100644 index 0000000..459eac7 --- /dev/null +++ b/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/doc/examples/interpp.c b/doc/examples/interpp.c new file mode 100644 index 0000000..02488a1 --- /dev/null +++ b/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/doc/examples/interpp.txt b/doc/examples/interpp.txt new file mode 100644 index 0000000..d9b7a3a --- /dev/null +++ b/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/doc/examples/intro.c b/doc/examples/intro.c new file mode 100644 index 0000000..bd28482 --- /dev/null +++ b/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/doc/examples/intro.txt b/doc/examples/intro.txt new file mode 100644 index 0000000..dae0599 --- /dev/null +++ b/doc/examples/intro.txt @@ -0,0 +1 @@ +J0(5) = -1.775967713143382642e-01 diff --git a/doc/examples/largefit.c b/doc/examples/largefit.c new file mode 100644 index 0000000..8282055 --- /dev/null +++ b/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/doc/examples/largefit.txt b/doc/examples/largefit.txt new file mode 100644 index 0000000..c459b01 --- /dev/null +++ b/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/doc/examples/largefit2.txt b/doc/examples/largefit2.txt new file mode 100644 index 0000000..527827e --- /dev/null +++ b/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/doc/examples/linalglu.c b/doc/examples/linalglu.c new file mode 100644 index 0000000..61b5293 --- /dev/null +++ b/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/doc/examples/linalglu.txt b/doc/examples/linalglu.txt new file mode 100644 index 0000000..e1607fe --- /dev/null +++ b/doc/examples/linalglu.txt @@ -0,0 +1,5 @@ +x = +-4.05205 +-12.6056 +1.66091 +8.69377 diff --git a/doc/examples/matrix.c b/doc/examples/matrix.c new file mode 100644 index 0000000..7704687 --- /dev/null +++ b/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/doc/examples/matrix.txt b/doc/examples/matrix.txt new file mode 100644 index 0000000..9d72f45 --- /dev/null +++ b/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/doc/examples/matrixw.c b/doc/examples/matrixw.c new file mode 100644 index 0000000..b05ffbd --- /dev/null +++ b/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/doc/examples/matrixw.txt b/doc/examples/matrixw.txt new file mode 100644 index 0000000..b62ee21 --- /dev/null +++ b/doc/examples/matrixw.txt @@ -0,0 +1 @@ +differences = 0 (should be zero) diff --git a/doc/examples/min.c b/doc/examples/min.c new file mode 100644 index 0000000..62b589d --- /dev/null +++ b/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/doc/examples/min.txt b/doc/examples/min.txt new file mode 100644 index 0000000..375f95e --- /dev/null +++ b/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/doc/examples/monte.c b/doc/examples/monte.c new file mode 100644 index 0000000..f3f5063 --- /dev/null +++ b/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/doc/examples/monte.txt b/doc/examples/monte.txt new file mode 100644 index 0000000..17bd74a --- /dev/null +++ b/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/doc/examples/movstat1.c b/doc/examples/movstat1.c new file mode 100644 index 0000000..c0fac52 --- /dev/null +++ b/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/doc/examples/movstat1.txt b/doc/examples/movstat1.txt new file mode 100644 index 0000000..cdafb2c --- /dev/null +++ b/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/doc/examples/movstat2.c b/doc/examples/movstat2.c new file mode 100644 index 0000000..bc841b1 --- /dev/null +++ b/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/doc/examples/movstat2.txt b/doc/examples/movstat2.txt new file mode 100644 index 0000000..2cb7855 --- /dev/null +++ b/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/doc/examples/movstat3.c b/doc/examples/movstat3.c new file mode 100644 index 0000000..5a60314 --- /dev/null +++ b/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/doc/examples/movstat3.txt b/doc/examples/movstat3.txt new file mode 100644 index 0000000..8908969 --- /dev/null +++ b/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/doc/examples/multimin.c b/doc/examples/multimin.c new file mode 100644 index 0000000..4ebe61f --- /dev/null +++ b/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/doc/examples/multimin.txt b/doc/examples/multimin.txt new file mode 100644 index 0000000..21bab99 --- /dev/null +++ b/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/doc/examples/multiminfn.c b/doc/examples/multiminfn.c new file mode 100644 index 0000000..dd2d388 --- /dev/null +++ b/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/doc/examples/multiset.c b/doc/examples/multiset.c new file mode 100644 index 0000000..6ac1e7c --- /dev/null +++ b/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/doc/examples/multiset.txt b/doc/examples/multiset.txt new file mode 100644 index 0000000..e2a15cc --- /dev/null +++ b/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/doc/examples/nlfit.c b/doc/examples/nlfit.c new file mode 100644 index 0000000..095a061 --- /dev/null +++ b/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/doc/examples/nlfit.txt b/doc/examples/nlfit.txt new file mode 100644 index 0000000..54c88ca --- /dev/null +++ b/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/doc/examples/nlfit2.c b/doc/examples/nlfit2.c new file mode 100644 index 0000000..f9ff235 --- /dev/null +++ b/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/doc/examples/nlfit2.txt b/doc/examples/nlfit2.txt new file mode 100644 index 0000000..022fea6 --- /dev/null +++ b/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/doc/examples/nlfit2b.c b/doc/examples/nlfit2b.c new file mode 100644 index 0000000..befc3b9 --- /dev/null +++ b/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/doc/examples/nlfit3.c b/doc/examples/nlfit3.c new file mode 100644 index 0000000..9dbf278 --- /dev/null +++ b/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/doc/examples/nlfit3.txt b/doc/examples/nlfit3.txt new file mode 100644 index 0000000..eeb3d8c --- /dev/null +++ b/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/doc/examples/nlfit4.c b/doc/examples/nlfit4.c new file mode 100644 index 0000000..558c72f --- /dev/null +++ b/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/doc/examples/nmsimplex.c b/doc/examples/nmsimplex.c new file mode 100644 index 0000000..7be26a0 --- /dev/null +++ b/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/doc/examples/nmsimplex.txt b/doc/examples/nmsimplex.txt new file mode 100644 index 0000000..8cc4324 --- /dev/null +++ b/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/doc/examples/ntuple.txt b/doc/examples/ntuple.txt new file mode 100644 index 0000000..f7dbad0 --- /dev/null +++ b/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/doc/examples/ntupler.c b/doc/examples/ntupler.c new file mode 100644 index 0000000..e76a743 --- /dev/null +++ b/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/doc/examples/ntuplew.c b/doc/examples/ntuplew.c new file mode 100644 index 0000000..82f6fa4 --- /dev/null +++ b/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/doc/examples/ode-initval-low-level.c b/doc/examples/ode-initval-low-level.c new file mode 100644 index 0000000..bbc1b34 --- /dev/null +++ b/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/doc/examples/ode-initval.c b/doc/examples/ode-initval.c new file mode 100644 index 0000000..3b626b4 --- /dev/null +++ b/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/doc/examples/ode-initval.txt b/doc/examples/ode-initval.txt new file mode 100644 index 0000000..6039ed4 --- /dev/null +++ b/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/doc/examples/odefixed.c b/doc/examples/odefixed.c new file mode 100644 index 0000000..f2eda35 --- /dev/null +++ b/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/doc/examples/permseq.c b/doc/examples/permseq.c new file mode 100644 index 0000000..08ebf63 --- /dev/null +++ b/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/doc/examples/permseq.txt b/doc/examples/permseq.txt new file mode 100644 index 0000000..6076202 --- /dev/null +++ b/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/doc/examples/permshuffle.c b/doc/examples/permshuffle.c new file mode 100644 index 0000000..7247864 --- /dev/null +++ b/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/doc/examples/permshuffle.txt b/doc/examples/permshuffle.txt new file mode 100644 index 0000000..e51a5fe --- /dev/null +++ b/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/doc/examples/poisson.c b/doc/examples/poisson.c new file mode 100644 index 0000000..5d9ba81 --- /dev/null +++ b/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/doc/examples/poisson.txt b/doc/examples/poisson.txt new file mode 100644 index 0000000..016274d --- /dev/null +++ b/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/doc/examples/polyroots.c b/doc/examples/polyroots.c new file mode 100644 index 0000000..6debbd5 --- /dev/null +++ b/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/doc/examples/polyroots.txt b/doc/examples/polyroots.txt new file mode 100644 index 0000000..1194fb1 --- /dev/null +++ b/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/doc/examples/qrng.c b/doc/examples/qrng.c new file mode 100644 index 0000000..5275209 --- /dev/null +++ b/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/doc/examples/qrng.txt b/doc/examples/qrng.txt new file mode 100644 index 0000000..53ebaae --- /dev/null +++ b/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/doc/examples/randpoisson.c b/doc/examples/randpoisson.c new file mode 100644 index 0000000..ef69b72 --- /dev/null +++ b/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/doc/examples/randpoisson.txt b/doc/examples/randpoisson.txt new file mode 100644 index 0000000..1639cca --- /dev/null +++ b/doc/examples/randpoisson.txt @@ -0,0 +1 @@ + 2 5 5 2 1 0 3 4 1 1 diff --git a/doc/examples/randpoisson2.txt b/doc/examples/randpoisson2.txt new file mode 100644 index 0000000..14877c3 --- /dev/null +++ b/doc/examples/randpoisson2.txt @@ -0,0 +1 @@ + 4 5 6 3 3 1 4 2 5 5 diff --git a/doc/examples/randwalk.c b/doc/examples/randwalk.c new file mode 100644 index 0000000..588aa50 --- /dev/null +++ b/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/doc/examples/randwalk.txt b/doc/examples/randwalk.txt new file mode 100644 index 0000000..a7ee89b --- /dev/null +++ b/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/doc/examples/rng.c b/doc/examples/rng.c new file mode 100644 index 0000000..6330264 --- /dev/null +++ b/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/doc/examples/rng.txt b/doc/examples/rng.txt new file mode 100644 index 0000000..00f33a3 --- /dev/null +++ b/doc/examples/rng.txt @@ -0,0 +1,3 @@ +generator type: mt19937 +seed = 0 +first value = 4293858116 diff --git a/doc/examples/rngunif.c b/doc/examples/rngunif.c new file mode 100644 index 0000000..ca4b2db --- /dev/null +++ b/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/doc/examples/rngunif.txt b/doc/examples/rngunif.txt new file mode 100644 index 0000000..b4049ef --- /dev/null +++ b/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/doc/examples/rngunif2.txt b/doc/examples/rngunif2.txt new file mode 100644 index 0000000..aa233db --- /dev/null +++ b/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/doc/examples/robfit.c b/doc/examples/robfit.c new file mode 100644 index 0000000..81e95be --- /dev/null +++ b/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/doc/examples/robfit.txt b/doc/examples/robfit.txt new file mode 100644 index 0000000..018f91f --- /dev/null +++ b/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/doc/examples/rootnewt.c b/doc/examples/rootnewt.c new file mode 100644 index 0000000..fea5f11 --- /dev/null +++ b/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/doc/examples/rootnewt.txt b/doc/examples/rootnewt.txt new file mode 100644 index 0000000..11bc5fe --- /dev/null +++ b/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/doc/examples/roots.c b/doc/examples/roots.c new file mode 100644 index 0000000..7854fbc --- /dev/null +++ b/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/doc/examples/roots.txt b/doc/examples/roots.txt new file mode 100644 index 0000000..cbc96cf --- /dev/null +++ b/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/doc/examples/rquantile.c b/doc/examples/rquantile.c new file mode 100644 index 0000000..85c192a --- /dev/null +++ b/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/doc/examples/rquantile.txt b/doc/examples/rquantile.txt new file mode 100644 index 0000000..529b298 --- /dev/null +++ b/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/doc/examples/rstat.c b/doc/examples/rstat.c new file mode 100644 index 0000000..645507d --- /dev/null +++ b/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/doc/examples/rstat.txt b/doc/examples/rstat.txt new file mode 100644 index 0000000..8c3bcf7 --- /dev/null +++ b/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/doc/examples/siman.c b/doc/examples/siman.c new file mode 100644 index 0000000..0b46dfd --- /dev/null +++ b/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/doc/examples/siman.txt b/doc/examples/siman.txt new file mode 100644 index 0000000..e09eade --- /dev/null +++ b/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/doc/examples/siman_tsp.c b/doc/examples/siman_tsp.c new file mode 100644 index 0000000..7bd26c6 --- /dev/null +++ b/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/doc/examples/siman_tsp.txt b/doc/examples/siman_tsp.txt new file mode 100644 index 0000000..9af6213 --- /dev/null +++ b/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/doc/examples/sortsmall.c b/doc/examples/sortsmall.c new file mode 100644 index 0000000..d460ad4 --- /dev/null +++ b/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/doc/examples/sortsmall.txt b/doc/examples/sortsmall.txt new file mode 100644 index 0000000..b8c7c93 --- /dev/null +++ b/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/doc/examples/specfun.c b/doc/examples/specfun.c new file mode 100644 index 0000000..7c1a9b0 --- /dev/null +++ b/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/doc/examples/specfun.txt b/doc/examples/specfun.txt new file mode 100644 index 0000000..eb8bc11 --- /dev/null +++ b/doc/examples/specfun.txt @@ -0,0 +1,2 @@ +J0(5.0) = -0.177596771314338264 +exact = -0.177596771314338292 diff --git a/doc/examples/specfun_e.c b/doc/examples/specfun_e.c new file mode 100644 index 0000000..4f41f2a --- /dev/null +++ b/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/doc/examples/specfun_e.txt b/doc/examples/specfun_e.txt new file mode 100644 index 0000000..c3c715f --- /dev/null +++ b/doc/examples/specfun_e.txt @@ -0,0 +1,4 @@ +status = success +J0(5.0) = -0.177596771314338264 + +/- 0.000000000000000193 +exact = -0.177596771314338292 diff --git a/doc/examples/spmatrix.c b/doc/examples/spmatrix.c new file mode 100644 index 0000000..f2a0f17 --- /dev/null +++ b/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/doc/examples/spmatrix.txt b/doc/examples/spmatrix.txt new file mode 100644 index 0000000..1311aa8 --- /dev/null +++ b/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/doc/examples/stat.c b/doc/examples/stat.c new file mode 100644 index 0000000..253f704 --- /dev/null +++ b/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/doc/examples/stat.txt b/doc/examples/stat.txt new file mode 100644 index 0000000..a1d53bc --- /dev/null +++ b/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/doc/examples/statsort.c b/doc/examples/statsort.c new file mode 100644 index 0000000..2780f67 --- /dev/null +++ b/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/doc/examples/statsort.txt b/doc/examples/statsort.txt new file mode 100644 index 0000000..718de91 --- /dev/null +++ b/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/doc/examples/sum.c b/doc/examples/sum.c new file mode 100644 index 0000000..65dacc9 --- /dev/null +++ b/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/doc/examples/sum.txt b/doc/examples/sum.txt new file mode 100644 index 0000000..cb69a55 --- /dev/null +++ b/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/doc/examples/vector.c b/doc/examples/vector.c new file mode 100644 index 0000000..27462b0 --- /dev/null +++ b/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/doc/examples/vectorr.c b/doc/examples/vectorr.c new file mode 100644 index 0000000..203986b --- /dev/null +++ b/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/doc/examples/vectorr.txt b/doc/examples/vectorr.txt new file mode 100644 index 0000000..a12ca70 --- /dev/null +++ b/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/doc/examples/vectorview.c b/doc/examples/vectorview.c new file mode 100644 index 0000000..625f146 --- /dev/null +++ b/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/doc/examples/vectorview.txt b/doc/examples/vectorview.txt new file mode 100644 index 0000000..0138c24 --- /dev/null +++ b/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/doc/examples/vectorw.c b/doc/examples/vectorw.c new file mode 100644 index 0000000..f25468b --- /dev/null +++ b/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/doc/fdl.rst b/doc/fdl.rst new file mode 100644 index 0000000..1ad5ab7 --- /dev/null +++ b/doc/fdl.rst @@ -0,0 +1,5 @@ +****************************** +GNU Free Documentation License +****************************** + +.. literalinclude:: _static/fdl.txt diff --git a/doc/fft.rst b/doc/fft.rst new file mode 100644 index 0000000..c136289 --- /dev/null +++ b/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/doc/filter.rst b/doc/filter.rst new file mode 100644 index 0000000..5f4cea5 --- /dev/null +++ b/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/doc/gpl.rst b/doc/gpl.rst new file mode 100644 index 0000000..4f233f1 --- /dev/null +++ b/doc/gpl.rst @@ -0,0 +1,5 @@ +************************** +GNU General Public License +************************** + +.. literalinclude:: _static/gpl.txt diff --git a/doc/gsl-config.1 b/doc/gsl-config.1 new file mode 100644 index 0000000..2a74487 --- /dev/null +++ b/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/doc/gsl-design.texi b/doc/gsl-design.texi new file mode 100644 index 0000000..6e195d9 --- /dev/null +++ b/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/doc/gsl-histogram.1 b/doc/gsl-histogram.1 new file mode 100644 index 0000000..66f9b5a --- /dev/null +++ b/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/doc/gsl-randist.1 b/doc/gsl-randist.1 new file mode 100644 index 0000000..4a06169 --- /dev/null +++ b/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/doc/gsl-ref.info b/doc/gsl-ref.info new file mode 100644 index 0000000..4e974e8 --- /dev/null +++ b/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. + +