pax_global_header 0000666 0000000 0000000 00000000064 13555455377 0014535 g ustar 00root root 0000000 0000000 52 comment=e1fb4b421737222adf6fa3abb14a7f3ce27c8d1e
pymeeus-0.3.6/ 0000775 0000000 0000000 00000000000 13555455377 0013232 5 ustar 00root root 0000000 0000000 pymeeus-0.3.6/COPYING.LESSER 0000664 0000000 0000000 00000016744 13555455377 0015275 0 ustar 00root root 0000000 0000000 GNU LESSER 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.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.
pymeeus-0.3.6/LICENSE.txt 0000664 0000000 0000000 00000104517 13555455377 0015065 0 ustar 00root root 0000000 0000000 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
.
pymeeus-0.3.6/MANIFEST.in 0000664 0000000 0000000 00000000326 13555455377 0014771 0 ustar 00root root 0000000 0000000
# Misc
include LICENSE.txt COPYING.LESSER docs/Makefile docs/README.txt
# Documentation
recursive-include docs/build/html *
recursive-include docs/source *
recursive-include tests *.py
recursive-include bin *.py
pymeeus-0.3.6/PKG-INFO 0000664 0000000 0000000 00000021264 13555455377 0014334 0 ustar 00root root 0000000 0000000 Metadata-Version: 1.1
Name: PyMeeus
Version: 0.3.6
Summary: Python implementation of Jean Meeus astronomical routines
Home-page: https://github.com/architest/pymeeus
Author: Dagoberto Salazar
Author-email: dagoberto.salazar@gmail.com
License: LGPLv3
Download-URL: https://github.com/architest/pymeeus
Description: PyMeeus
=======
**Library of astronomical algorithms in Python**.
PyMeeus is a Python implementation of the astronomical algorithms
described in the classical book "Astronomical Algorithms, 2nd Edition,
Willmann-Bell Inc. (1998)" by Jean Meeus.
There are great astronomical libraries out there. For instance, if
you're looking for high precision and speed you should take a look at
`libnova `__. For a set of python
modules aimed at professional astronomers, you should look at
`Astropy `__. On the other hand, the advantages
of PyMeeus are its simplicity, ease of use, ease of reading, ease of
installation (it has the minimum amount of dependencies) and abundant
documentation.
Installation
------------
The easiest way of installing PyMeeus is using pip:
.. code:: sh
pip install pymeeus
Or, for a per-user installation:
.. code:: sh
pip install --user pymeeus
If you prefer Python3, you can use:
.. code:: sh
pip3 install --user pymeeus
Meta
----
Author: Dagoberto Salazar
Distributed under the GNU Lesser General Public License v3 (LGPLv3). See
``LICENSE.txt`` and ``COPYING.LESSER`` for more information.
Documentation: https://pymeeus.readthedocs.io/en/latest/
GitHub: https://github.com/architest/pymeeus
If you have Sphinx installed, you can generate your own, latest
documentation going to directory 'docs' and issuing:
.. code:: sh
make html
Then the HTML documentation pages can be found in 'build/html'.
Contributing
------------
The preferred method to contribute is through forking and pull requests:
1. Fork it (https://github.com/architest/pymeeus/fork)
2. Create your feature branch (``git checkout -b feature/fooBar``)
3. Commit your changes (``git commit -am 'Add some fooBar'``)
4. Push to the branch (``git push origin feature/fooBar``)
5. Create a new Pull Request
Please bear in mind that PyMeeus follows the PEP8 style guide for Python
code `(PEP8) `__. We suggest
you install and use a linter like
`Flake8 `__ before contributing.
Additionally, PyMeeus makes heavy use of automatic tests. As a general
rule, every function or method added must have a corresponding test in
the proper place in ``tests`` directory.
Finally, documentation is also a big thing here. Add proper and abundant
documentation to your new code. This also includes in-line comments!!!.
What's new
----------
- 0.3.6
- Add method to compute rising and setting times of the Sun
- 0.3.5
- Add method magnitude() to planet classes
- 0.3.4
- Add method to compute the parallax correction to Earth class
- 0.3.3
- Add methods to compute the passage through the nodes
- 0.3.2
- Add methods to compute the perihelion and aphelion of all planets
- 0.3.1
- Fix errors in the elongation computation, add tests and examples
of use of methods 'geocentric\_position()', and tests and examples
for 'Pluto' class
- 0.3.0
- Added 'Pluto' class
- 0.2.11
- Added conjunction and opposition methods for Jupiter, Saturn,
Uranus and Neptune
- 0.2.10
- Added 'geocentric\_position()' method to 'Minor' class, and added
conjunction and opposition methods for Mercury, Venus and Mars.
- 0.2.9
- Added class 'Minor', as well as functions to compute velocity of
an object and length of an orbit
- 0.2.8
- Added methods 'geocentric\_position()' to all the planets
- 0.2.7
- Added function 'kepler\_equation()' to 'Coordinates' module, and
'orbital\_elements' methods to classes 'Mercury', 'Venus',
'Earth', 'Mars', 'Jupiter', 'Saturn', 'Uranus' and 'Neptune'
- 0.2.6
- Added classes 'Uranus' and 'Neptune', plus additional functions in
Coordinates module'
- 0.2.5
- Added classes 'Jupiter' and 'Saturn'
- 0.2.4
- Minor bug fixing, added methods
'ephemeris\_physical\_observations()' and
'beginning\_synodic\_rotation()', and added classes 'Mercury' and
'Mars'
- 0.2.3
- Added the complete list of VSOP87 parameters to Venus, method to
compute dates of equinoxes and solstices, and the Equation of Time
- 0.2.2
- Added heliocentric position method for J2000.0 (Earth) and
rectangular coordinates methods (Sun)
- 0.2.1
- Added Venus module and VSOP87-based positioning methods
- 0.2.0
- Added Sun module
- 0.1.10
- Added functions to compute if three objects are in a straight
line, and the smallest diameter of a circle containing them.
- 0.1.9
- Added functions to compute relative position angles and
conjunctions
- 0.1.8
- Added functions to compute angular separation to Coordinates
module
- 0.1.7
- Added functions to compute atmospheric refraction to Coordinates
module
- 0.1.6
- Added function 'times\_rise\_transit\_set()' to Coordinates module
- 0.1.5
- Added functions for parallactic angle, ecliptic points in the
horizon, angle between north celestial pole and north pole of the
ecliptic, and diurnal path vs. the horizon at time of rising or
setting
- 0.1.4
- Added several conversion functions to Coordinates module
- 0.1.3
- Added Coordinates module
- 0.1.2
- Added precession and proper motion methods, and changed handling
of Epoch class
- 0.1.1
- Added methods related to nutation corrections
- 0.1.0
- Earth class added
- 0.0.9
- Significant documentation improvements
- 0.0.8
- Epoch class finished
- 0.0.7
- Epoch class added
- 0.0.6
- CurveFitting class added
- 0.0.5
- Interpolation class added
- 0.0.4
- Angle class finished
- 0.0.3
- Removed unnecessary dependencies
- 0.0.2
- Documentation improvements
- 0.0.1
- Initial commit
Keywords: Meeus astronomy module library
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Scientific/Engineering :: Astronomy
pymeeus-0.3.6/PyMeeus.egg-info/ 0000775 0000000 0000000 00000000000 13555455377 0016313 5 ustar 00root root 0000000 0000000 pymeeus-0.3.6/PyMeeus.egg-info/PKG-INFO 0000664 0000000 0000000 00000021264 13555455377 0017415 0 ustar 00root root 0000000 0000000 Metadata-Version: 1.1
Name: PyMeeus
Version: 0.3.6
Summary: Python implementation of Jean Meeus astronomical routines
Home-page: https://github.com/architest/pymeeus
Author: Dagoberto Salazar
Author-email: dagoberto.salazar@gmail.com
License: LGPLv3
Download-URL: https://github.com/architest/pymeeus
Description: PyMeeus
=======
**Library of astronomical algorithms in Python**.
PyMeeus is a Python implementation of the astronomical algorithms
described in the classical book "Astronomical Algorithms, 2nd Edition,
Willmann-Bell Inc. (1998)" by Jean Meeus.
There are great astronomical libraries out there. For instance, if
you're looking for high precision and speed you should take a look at
`libnova `__. For a set of python
modules aimed at professional astronomers, you should look at
`Astropy `__. On the other hand, the advantages
of PyMeeus are its simplicity, ease of use, ease of reading, ease of
installation (it has the minimum amount of dependencies) and abundant
documentation.
Installation
------------
The easiest way of installing PyMeeus is using pip:
.. code:: sh
pip install pymeeus
Or, for a per-user installation:
.. code:: sh
pip install --user pymeeus
If you prefer Python3, you can use:
.. code:: sh
pip3 install --user pymeeus
Meta
----
Author: Dagoberto Salazar
Distributed under the GNU Lesser General Public License v3 (LGPLv3). See
``LICENSE.txt`` and ``COPYING.LESSER`` for more information.
Documentation: https://pymeeus.readthedocs.io/en/latest/
GitHub: https://github.com/architest/pymeeus
If you have Sphinx installed, you can generate your own, latest
documentation going to directory 'docs' and issuing:
.. code:: sh
make html
Then the HTML documentation pages can be found in 'build/html'.
Contributing
------------
The preferred method to contribute is through forking and pull requests:
1. Fork it (https://github.com/architest/pymeeus/fork)
2. Create your feature branch (``git checkout -b feature/fooBar``)
3. Commit your changes (``git commit -am 'Add some fooBar'``)
4. Push to the branch (``git push origin feature/fooBar``)
5. Create a new Pull Request
Please bear in mind that PyMeeus follows the PEP8 style guide for Python
code `(PEP8) `__. We suggest
you install and use a linter like
`Flake8 `__ before contributing.
Additionally, PyMeeus makes heavy use of automatic tests. As a general
rule, every function or method added must have a corresponding test in
the proper place in ``tests`` directory.
Finally, documentation is also a big thing here. Add proper and abundant
documentation to your new code. This also includes in-line comments!!!.
What's new
----------
- 0.3.6
- Add method to compute rising and setting times of the Sun
- 0.3.5
- Add method magnitude() to planet classes
- 0.3.4
- Add method to compute the parallax correction to Earth class
- 0.3.3
- Add methods to compute the passage through the nodes
- 0.3.2
- Add methods to compute the perihelion and aphelion of all planets
- 0.3.1
- Fix errors in the elongation computation, add tests and examples
of use of methods 'geocentric\_position()', and tests and examples
for 'Pluto' class
- 0.3.0
- Added 'Pluto' class
- 0.2.11
- Added conjunction and opposition methods for Jupiter, Saturn,
Uranus and Neptune
- 0.2.10
- Added 'geocentric\_position()' method to 'Minor' class, and added
conjunction and opposition methods for Mercury, Venus and Mars.
- 0.2.9
- Added class 'Minor', as well as functions to compute velocity of
an object and length of an orbit
- 0.2.8
- Added methods 'geocentric\_position()' to all the planets
- 0.2.7
- Added function 'kepler\_equation()' to 'Coordinates' module, and
'orbital\_elements' methods to classes 'Mercury', 'Venus',
'Earth', 'Mars', 'Jupiter', 'Saturn', 'Uranus' and 'Neptune'
- 0.2.6
- Added classes 'Uranus' and 'Neptune', plus additional functions in
Coordinates module'
- 0.2.5
- Added classes 'Jupiter' and 'Saturn'
- 0.2.4
- Minor bug fixing, added methods
'ephemeris\_physical\_observations()' and
'beginning\_synodic\_rotation()', and added classes 'Mercury' and
'Mars'
- 0.2.3
- Added the complete list of VSOP87 parameters to Venus, method to
compute dates of equinoxes and solstices, and the Equation of Time
- 0.2.2
- Added heliocentric position method for J2000.0 (Earth) and
rectangular coordinates methods (Sun)
- 0.2.1
- Added Venus module and VSOP87-based positioning methods
- 0.2.0
- Added Sun module
- 0.1.10
- Added functions to compute if three objects are in a straight
line, and the smallest diameter of a circle containing them.
- 0.1.9
- Added functions to compute relative position angles and
conjunctions
- 0.1.8
- Added functions to compute angular separation to Coordinates
module
- 0.1.7
- Added functions to compute atmospheric refraction to Coordinates
module
- 0.1.6
- Added function 'times\_rise\_transit\_set()' to Coordinates module
- 0.1.5
- Added functions for parallactic angle, ecliptic points in the
horizon, angle between north celestial pole and north pole of the
ecliptic, and diurnal path vs. the horizon at time of rising or
setting
- 0.1.4
- Added several conversion functions to Coordinates module
- 0.1.3
- Added Coordinates module
- 0.1.2
- Added precession and proper motion methods, and changed handling
of Epoch class
- 0.1.1
- Added methods related to nutation corrections
- 0.1.0
- Earth class added
- 0.0.9
- Significant documentation improvements
- 0.0.8
- Epoch class finished
- 0.0.7
- Epoch class added
- 0.0.6
- CurveFitting class added
- 0.0.5
- Interpolation class added
- 0.0.4
- Angle class finished
- 0.0.3
- Removed unnecessary dependencies
- 0.0.2
- Documentation improvements
- 0.0.1
- Initial commit
Keywords: Meeus astronomy module library
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Scientific/Engineering :: Astronomy
pymeeus-0.3.6/PyMeeus.egg-info/SOURCES.txt 0000664 0000000 0000000 00000003411 13555455377 0020176 0 ustar 00root root 0000000 0000000 COPYING.LESSER
LICENSE.txt
MANIFEST.in
README.rst
setup.py
PyMeeus.egg-info/PKG-INFO
PyMeeus.egg-info/SOURCES.txt
PyMeeus.egg-info/dependency_links.txt
PyMeeus.egg-info/top_level.txt
docs/Makefile
docs/README.txt
docs/source/Angle.rst
docs/source/Coordinates.rst
docs/source/CurveFitting.rst
docs/source/Earth.rst
docs/source/Epoch.rst
docs/source/Interpolation.rst
docs/source/Jupiter.rst
docs/source/Mars.rst
docs/source/Mercury.rst
docs/source/Minor.rst
docs/source/Neptune.rst
docs/source/Pluto.rst
docs/source/Saturn.rst
docs/source/Sun.rst
docs/source/Uranus.rst
docs/source/Venus.rst
docs/source/base.rst
docs/source/conf.py
docs/source/ex-Angle.rst
docs/source/ex-Coordinates.rst
docs/source/ex-CurveFitting.rst
docs/source/ex-Earth.rst
docs/source/ex-Epoch.rst
docs/source/ex-Interpolation.rst
docs/source/ex-Jupiter.rst
docs/source/ex-Mars.rst
docs/source/ex-Mercury.rst
docs/source/ex-Minor.rst
docs/source/ex-Neptune.rst
docs/source/ex-Pluto.rst
docs/source/ex-Saturn.rst
docs/source/ex-Sun.rst
docs/source/ex-Uranus.rst
docs/source/ex-Venus.rst
docs/source/ex-base.rst
docs/source/index.rst
pymeeus/Angle.py
pymeeus/Coordinates.py
pymeeus/CurveFitting.py
pymeeus/Earth.py
pymeeus/Epoch.py
pymeeus/Interpolation.py
pymeeus/Jupiter.py
pymeeus/Mars.py
pymeeus/Mercury.py
pymeeus/Minor.py
pymeeus/Neptune.py
pymeeus/Pluto.py
pymeeus/Saturn.py
pymeeus/Sun.py
pymeeus/Uranus.py
pymeeus/Venus.py
pymeeus/__init__.py
pymeeus/base.py
tests/__init__.py
tests/test_angle.py
tests/test_coordinates.py
tests/test_curvefitting.py
tests/test_earth.py
tests/test_epoch.py
tests/test_interpolation.py
tests/test_jupiter.py
tests/test_mars.py
tests/test_mercury.py
tests/test_minor.py
tests/test_neptune.py
tests/test_pluto.py
tests/test_saturn.py
tests/test_sun.py
tests/test_uranus.py
tests/test_venus.py pymeeus-0.3.6/PyMeeus.egg-info/dependency_links.txt 0000664 0000000 0000000 00000000001 13555455377 0022361 0 ustar 00root root 0000000 0000000
pymeeus-0.3.6/PyMeeus.egg-info/top_level.txt 0000664 0000000 0000000 00000000015 13555455377 0021041 0 ustar 00root root 0000000 0000000 base
pymeeus
pymeeus-0.3.6/README.rst 0000664 0000000 0000000 00000013426 13555455377 0014727 0 ustar 00root root 0000000 0000000 PyMeeus
=======
**Library of astronomical algorithms in Python**.
PyMeeus is a Python implementation of the astronomical algorithms
described in the classical book "Astronomical Algorithms, 2nd Edition,
Willmann-Bell Inc. (1998)" by Jean Meeus.
There are great astronomical libraries out there. For instance, if
you're looking for high precision and speed you should take a look at
`libnova `__. For a set of python
modules aimed at professional astronomers, you should look at
`Astropy `__. On the other hand, the advantages
of PyMeeus are its simplicity, ease of use, ease of reading, ease of
installation (it has the minimum amount of dependencies) and abundant
documentation.
Installation
------------
The easiest way of installing PyMeeus is using pip:
.. code:: sh
pip install pymeeus
Or, for a per-user installation:
.. code:: sh
pip install --user pymeeus
If you prefer Python3, you can use:
.. code:: sh
pip3 install --user pymeeus
Meta
----
Author: Dagoberto Salazar
Distributed under the GNU Lesser General Public License v3 (LGPLv3). See
``LICENSE.txt`` and ``COPYING.LESSER`` for more information.
Documentation: https://pymeeus.readthedocs.io/en/latest/
GitHub: https://github.com/architest/pymeeus
If you have Sphinx installed, you can generate your own, latest
documentation going to directory 'docs' and issuing:
.. code:: sh
make html
Then the HTML documentation pages can be found in 'build/html'.
Contributing
------------
The preferred method to contribute is through forking and pull requests:
1. Fork it (https://github.com/architest/pymeeus/fork)
2. Create your feature branch (``git checkout -b feature/fooBar``)
3. Commit your changes (``git commit -am 'Add some fooBar'``)
4. Push to the branch (``git push origin feature/fooBar``)
5. Create a new Pull Request
Please bear in mind that PyMeeus follows the PEP8 style guide for Python
code `(PEP8) `__. We suggest
you install and use a linter like
`Flake8 `__ before contributing.
Additionally, PyMeeus makes heavy use of automatic tests. As a general
rule, every function or method added must have a corresponding test in
the proper place in ``tests`` directory.
Finally, documentation is also a big thing here. Add proper and abundant
documentation to your new code. This also includes in-line comments!!!.
What's new
----------
- 0.3.6
- Add method to compute rising and setting times of the Sun
- 0.3.5
- Add method magnitude() to planet classes
- 0.3.4
- Add method to compute the parallax correction to Earth class
- 0.3.3
- Add methods to compute the passage through the nodes
- 0.3.2
- Add methods to compute the perihelion and aphelion of all planets
- 0.3.1
- Fix errors in the elongation computation, add tests and examples
of use of methods 'geocentric\_position()', and tests and examples
for 'Pluto' class
- 0.3.0
- Added 'Pluto' class
- 0.2.11
- Added conjunction and opposition methods for Jupiter, Saturn,
Uranus and Neptune
- 0.2.10
- Added 'geocentric\_position()' method to 'Minor' class, and added
conjunction and opposition methods for Mercury, Venus and Mars.
- 0.2.9
- Added class 'Minor', as well as functions to compute velocity of
an object and length of an orbit
- 0.2.8
- Added methods 'geocentric\_position()' to all the planets
- 0.2.7
- Added function 'kepler\_equation()' to 'Coordinates' module, and
'orbital\_elements' methods to classes 'Mercury', 'Venus',
'Earth', 'Mars', 'Jupiter', 'Saturn', 'Uranus' and 'Neptune'
- 0.2.6
- Added classes 'Uranus' and 'Neptune', plus additional functions in
Coordinates module'
- 0.2.5
- Added classes 'Jupiter' and 'Saturn'
- 0.2.4
- Minor bug fixing, added methods
'ephemeris\_physical\_observations()' and
'beginning\_synodic\_rotation()', and added classes 'Mercury' and
'Mars'
- 0.2.3
- Added the complete list of VSOP87 parameters to Venus, method to
compute dates of equinoxes and solstices, and the Equation of Time
- 0.2.2
- Added heliocentric position method for J2000.0 (Earth) and
rectangular coordinates methods (Sun)
- 0.2.1
- Added Venus module and VSOP87-based positioning methods
- 0.2.0
- Added Sun module
- 0.1.10
- Added functions to compute if three objects are in a straight
line, and the smallest diameter of a circle containing them.
- 0.1.9
- Added functions to compute relative position angles and
conjunctions
- 0.1.8
- Added functions to compute angular separation to Coordinates
module
- 0.1.7
- Added functions to compute atmospheric refraction to Coordinates
module
- 0.1.6
- Added function 'times\_rise\_transit\_set()' to Coordinates module
- 0.1.5
- Added functions for parallactic angle, ecliptic points in the
horizon, angle between north celestial pole and north pole of the
ecliptic, and diurnal path vs. the horizon at time of rising or
setting
- 0.1.4
- Added several conversion functions to Coordinates module
- 0.1.3
- Added Coordinates module
- 0.1.2
- Added precession and proper motion methods, and changed handling
of Epoch class
- 0.1.1
- Added methods related to nutation corrections
- 0.1.0
- Earth class added
- 0.0.9
- Significant documentation improvements
- 0.0.8
- Epoch class finished
- 0.0.7
- Epoch class added
- 0.0.6
- CurveFitting class added
- 0.0.5
- Interpolation class added
- 0.0.4
- Angle class finished
- 0.0.3
- Removed unnecessary dependencies
- 0.0.2
- Documentation improvements
- 0.0.1
- Initial commit
pymeeus-0.3.6/docs/ 0000775 0000000 0000000 00000000000 13555455377 0014162 5 ustar 00root root 0000000 0000000 pymeeus-0.3.6/docs/Makefile 0000664 0000000 0000000 00000001167 13555455377 0015627 0 ustar 00root root 0000000 0000000 # Minimal makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
SPHINXPROJ = PyMeeus
SOURCEDIR = source
BUILDDIR = build
# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
.PHONY: help Makefile
clean:
rm -rf build
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
pymeeus-0.3.6/docs/README.txt 0000664 0000000 0000000 00000001156 13555455377 0015663 0 ustar 00root root 0000000 0000000 The documentation in this tree is in plain text files and can be viewed using
any text file viewer.
It uses ReST (reStructuredText) [1], and the Sphinx documentation system [2].
This allows it to be built into other forms for easier viewing and browsing.
To create an HTML version of the docs:
* Install Sphinx (using ``pip install Sphinx`` or some other method)
* In this docs/ directory, type ``make html`` (or ``make.bat html`` on
Windows) at a shell prompt.
The documentation in build/html/index.html can then be viewed in a web browser.
[1] http://docutils.sourceforge.net/rst.html
[2] http://sphinx-doc.org/
pymeeus-0.3.6/docs/source/ 0000775 0000000 0000000 00000000000 13555455377 0015462 5 ustar 00root root 0000000 0000000 pymeeus-0.3.6/docs/source/Angle.rst 0000664 0000000 0000000 00000000201 13555455377 0017233 0 ustar 00root root 0000000 0000000 Angle
*****
.. automodule:: pymeeus
Class to handle angles.
.. automodule:: pymeeus.Angle
:members:
:special-members:
pymeeus-0.3.6/docs/source/Coordinates.rst 0000664 0000000 0000000 00000000253 13555455377 0020466 0 ustar 00root root 0000000 0000000 Coordinates
***********
.. automodule:: pymeeus
Module holding functions to handle coordinates.
.. automodule:: pymeeus.Coordinates
:members:
:special-members:
pymeeus-0.3.6/docs/source/CurveFitting.rst 0000664 0000000 0000000 00000000276 13555455377 0020632 0 ustar 00root root 0000000 0000000 Curveffiting
************
.. automodule:: pymeeus
Class to get the best fit of a curve to a set of (x, y) points.
.. automodule:: pymeeus.CurveFitting
:members:
:special-members:
pymeeus-0.3.6/docs/source/Earth.rst 0000664 0000000 0000000 00000000207 13555455377 0017256 0 ustar 00root root 0000000 0000000 Earth
*****
.. automodule:: pymeeus
Class to model Earth's globe.
.. automodule:: pymeeus.Earth
:members:
:special-members:
pymeeus-0.3.6/docs/source/Epoch.rst 0000664 0000000 0000000 00000000177 13555455377 0017257 0 ustar 00root root 0000000 0000000 Epoch
*****
.. automodule:: pymeeus
Class to handle time.
.. automodule:: pymeeus.Epoch
:members:
:special-members:
pymeeus-0.3.6/docs/source/Interpolation.rst 0000664 0000000 0000000 00000000300 13555455377 0021034 0 ustar 00root root 0000000 0000000 Interpolation
*************
.. automodule:: pymeeus
Class to find intermediate values from those given in a table.
.. automodule:: pymeeus.Interpolation
:members:
:special-members:
pymeeus-0.3.6/docs/source/Jupiter.rst 0000664 0000000 0000000 00000000216 13555455377 0017635 0 ustar 00root root 0000000 0000000 Jupiter
*******
.. automodule:: pymeeus
Class to model Jupiter planet.
.. automodule:: pymeeus.Jupiter
:members:
:special-members:
pymeeus-0.3.6/docs/source/Mars.rst 0000664 0000000 0000000 00000000202 13555455377 0017110 0 ustar 00root root 0000000 0000000 Mars
****
.. automodule:: pymeeus
Class to model Mars planet.
.. automodule:: pymeeus.Mars
:members:
:special-members:
pymeeus-0.3.6/docs/source/Mercury.rst 0000664 0000000 0000000 00000000216 13555455377 0017641 0 ustar 00root root 0000000 0000000 Mercury
*******
.. automodule:: pymeeus
Class to model Mercury planet.
.. automodule:: pymeeus.Mercury
:members:
:special-members:
pymeeus-0.3.6/docs/source/Minor.rst 0000664 0000000 0000000 00000000221 13555455377 0017273 0 ustar 00root root 0000000 0000000 Minor
*****
.. automodule:: pymeeus
Class to model minor celestial objetcs.
.. automodule:: pymeeus.Minor
:members:
:special-members:
pymeeus-0.3.6/docs/source/Neptune.rst 0000664 0000000 0000000 00000000216 13555455377 0017631 0 ustar 00root root 0000000 0000000 Neptune
*******
.. automodule:: pymeeus
Class to model Neptune planet.
.. automodule:: pymeeus.Neptune
:members:
:special-members:
pymeeus-0.3.6/docs/source/Pluto.rst 0000664 0000000 0000000 00000000206 13555455377 0017315 0 ustar 00root root 0000000 0000000 Pluto
*****
.. automodule:: pymeeus
Class to model Pluto planet.
.. automodule:: pymeeus.Pluto
:members:
:special-members:
pymeeus-0.3.6/docs/source/Saturn.rst 0000664 0000000 0000000 00000000212 13555455377 0017463 0 ustar 00root root 0000000 0000000 Saturn
******
.. automodule:: pymeeus
Class to model Saturn planet.
.. automodule:: pymeeus.Saturn
:members:
:special-members:
pymeeus-0.3.6/docs/source/Sun.rst 0000664 0000000 0000000 00000000223 13555455377 0016756 0 ustar 00root root 0000000 0000000 Sun
***
.. automodule:: pymeeus
Module holding functions to handle coordinates.
.. automodule:: pymeeus.Sun
:members:
:special-members:
pymeeus-0.3.6/docs/source/Uranus.rst 0000664 0000000 0000000 00000000212 13555455377 0017464 0 ustar 00root root 0000000 0000000 Uranus
******
.. automodule:: pymeeus
Class to model Uranus planet.
.. automodule:: pymeeus.Uranus
:members:
:special-members:
pymeeus-0.3.6/docs/source/Venus.rst 0000664 0000000 0000000 00000000206 13555455377 0017312 0 ustar 00root root 0000000 0000000 Venus
*****
.. automodule:: pymeeus
Class to model Venus planet.
.. automodule:: pymeeus.Venus
:members:
:special-members:
pymeeus-0.3.6/docs/source/base.rst 0000664 0000000 0000000 00000000216 13555455377 0017125 0 ustar 00root root 0000000 0000000 Base
****
.. automodule:: pymeeus
Basic, general functions and constants.
.. automodule:: pymeeus.base
:members:
:special-members:
pymeeus-0.3.6/docs/source/conf.py 0000664 0000000 0000000 00000013510 13555455377 0016761 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
#
# PyMeeus documentation build configuration file, created by
# sphinx-quickstart on Wed Jun 27 23:07:31 2018.
#
# 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('../..'))
# -- 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.autodoc',
'sphinx.ext.intersphinx',
'sphinx.ext.imgmath',
'sphinx.ext.ifconfig',
'sphinx.ext.viewcode',
'sphinx.ext.githubpages']
# 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'PyMeeus'
copyright = u'2018, Dagoberto Salazar'
author = u'Dagoberto Salazar'
# 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'0.3.6'
# The full version, including alpha/beta/rc tags.
release = u'0.3.6'
# 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 = []
# 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'
# 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 = {}
# 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']
# Custom sidebar templates, must be a dictionary that maps document names
# to template names.
#
# This is required for the alabaster theme
# refs: http://alabaster.readthedocs.io/en/latest/installation.html#sidebars
html_sidebars = {
'**': [
'relations.html', # needs 'show_related': True theme option to display
'searchbox.html',
]
}
# -- Options for HTMLHelp output ------------------------------------------
# Output file base name for HTML help builder.
htmlhelp_basename = 'PyMeeusdoc'
# -- Options for LaTeX output ---------------------------------------------
latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
#
# 'papersize': 'letterpaper',
'papersize': 'a4paper',
# The font size ('10pt', '11pt' or '12pt').
#
# 'pointsize': '10pt',
'pointsize': '11pt',
# Additional stuff for the LaTeX preamble.
#
# '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, 'PyMeeus.tex', u'PyMeeus Documentation',
u'Dagoberto Salazar', 'manual'),
]
# -- 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, 'pymeeus', u'PyMeeus Documentation',
[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, 'PyMeeus', u'PyMeeus Documentation',
author, 'PyMeeus', 'One line description of project.',
'Miscellaneous'),
]
# -- Options for Epub output ----------------------------------------------
# Bibliographic Dublin Core info.
epub_title = project
epub_author = author
epub_publisher = author
epub_copyright = copyright
# The unique identifier of the text. This can be a ISBN number
# or the project homepage.
#
# epub_identifier = ''
# A unique identification for the text.
#
# epub_uid = ''
# A list of files that should not be packed into the epub file.
epub_exclude_files = ['search.html']
# Example configuration for intersphinx: refer to the Python standard library.
intersphinx_mapping = {'https://docs.python.org/': None}
pymeeus-0.3.6/docs/source/ex-Angle.rst 0000664 0000000 0000000 00000020205 13555455377 0017653 0 ustar 00root root 0000000 0000000 Angle examples
**************
Let's define a small helper function::
def print_me(msg, val):
print("{}: {}".format(msg, val))
Create an Angle object, providing degrees, minutes and seconds::
a = Angle(-23.0, 26.0, 48.999983999)
First we print using the ``__call__()`` method (note the extra parentheses)::
print_me("The angle 'a()' is", a())
# The angle 'a()' is: -23.44694444
Second we print using the ``__str__()`` method (no extra parentheses needed)::
print_me("The angle 'a' is", a)
# The angle 'a' is: -23.44694444
Use the copy constructor::
b = Angle(a)
print_me("Angle 'b', which is a copy of 'a', is", b)
# Angle 'b', which is a copy of 'a', is: -23.44694444
Use the static ``deg2dms()`` method to carry out conversions::
d, m, s, sign = Angle.deg2dms(23.44694444)
val = "{}d {}' {}''".format(int(sign*d), m, s)
print_me("{Deg}d {Min}' {Sec}''", val)
# {Deg}d {Min}' {Sec}'': 23d 26' 48.999984''
We can print Angle ``a`` directly in sexagesimal format.
- In *fancy* format::
print_me("{Deg}d {Min}' {Sec}''", a.dms_str())
# {Deg}d {Min}' {Sec}'': -23d 26' 48.999983999''
- In plain format::
print_me("{Deg}:{Min}:{Sec}", a.dms_str(False))
# {Deg}:{Min}:{Sec}: -23:26:48.999983999
Print directly as a tuple::
a = Angle(23.44694444)
print_me("a.dms_tuple()", a.dms_tuple())
# a.dms_tuple(): (23, 26, 48.999983999997596, 1.0)
print_me("a.ra_tuple()", a.ra_tuple())
# a.ra_tuple(): (1, 33, 47.26666559999941, 1.0)
Redefine Angle ``a`` several times::
a.set(-0.44694444)
print_me(" a.dms_str()", a.dms_str())
# a.dms_str(): -26' 48.999984''
a.set(0, 0, -46.31)
print_me(" a.dms_str(False)", a.dms_str(False))
# a.dms_str(False): 0:0:-46.31
We can use decimals in degrees/minutes. They are converted automatically::
a.set(0, -46.25, 0.0)
print_me(" a.dms_str()", a.dms_str())
# a.dms_str(): -46' 15.0''
a.set(0, 0, 0.0)
print_me(" a.dms_str()", a.dms_str())
# a.dms_str(): 0d 0' 0.0''
We can define the angle as in radians. It will be converted to degrees::
b = Angle(pi, radians=True)
print_me("b = Angle(pi, radians=True); print(b)", b)
# b = Angle(pi, radians=True); print(b): 180.0
And we can easily carry out the *degrees to radians* conversion::
print_me("print(b.rad())", b.rad())
# print(b.rad()): 3.14159265359
We can also specify the angle as a Right Ascension. Angle can be given as a Right Ascension: Hours, Minutes, Seconds::
a.set_ra(9, 14, 55.8)
print_me(" print(a)", a)
# print(a): 138.7325
b = Angle(9, 14, 55.8, ra=True)
print_me(" print(b)", b)
# print(b): 138.7325
We can print the Angle as Right Ascension, as a float and as string::
a = Angle(138.75)
print_me(" print(a.get_ra())", a.get_ra())
# print(a.get_ra()): 9.25
print_me(" print(a.ra_str())", a.ra_str())
# print(a.ra_str()): 9h 15' 0.0''
print_me(" print(a.ra_str(False))", a.ra_str(False))
# print(a.ra_str(False)): 9:15:0.0
Use the ``to_positive()`` method to get the positive version of an angle::
a = Angle(-87.32)
print_me(" print(a.to_positive())", a.to_positive())
# print(a.to_positive()): 272.68
Call the ``__repr__()`` method to get a string defining the current object. This string can then be fed to the ``eval()`` function to generate the object::
print_me("print(b.__repr__())", b.__repr__())
# print(b.__repr__()): Angle(138.7325)
c = eval(repr(b))
print_me("c = eval(repr(b)); print(c)", c)
# c = eval(repr(b)); print(c): 138.7325
Let's now work with some useful operators and functions::
print_me("c", c)
# c: 138.7325
- Negate an angle::
d = Angle(13, 30)
print_me("d", d)
# d: 13.5
e = -d
print_me(" e = -d", e)
# e = -d: -13.5
- Get the absolute value of an angle::
e = abs(e)
print_me(" e = abs(e)", e)
# e = abs(e): 13.5
- Module operation on an angle::
d = Angle(17.0)
print_me("d", d)
# d: 17.0
e = c % d
print_me(" e = c % d", e)
# e = c % d: 2.7325
- Convert the angle to an integer::
d = Angle(13.95)
print_me("d", d)
# d: 13.95
print_me(" int(d)", int(d))
# int(d): 13
d = Angle(-4.95)
print_me("d", d)
# d: -4.95
print_me(" int(d)", int(d))
# int(d): -4
- Convert the angle to a float::
print_me(" float(d)", float(d))
# float(d): -4.95
- Round the angle to a float::
e = Angle(-4.951648)
print_me("e", e)
# e: -4.951648
print_me(" round(e)", round(e))
# round(e): -5.0
print_me(" round(e, 2)", round(e, 2))
# round(e, 2): -4.95
print_me(" round(e, 3)", round(e, 3))
# round(e, 3): -4.952
print_me(" round(e, 4)", round(e, 4))
# round(e, 4): -4.9516
- Comparison operators::
print_me(" d == e", d == e)
# d == e: False
print_me(" d != e", d != e)
# d != e: True
print_me(" d > e", d > e)
# d > e: True
print_me(" c >= 180.0", c >= 180.0)
# c >= 180.0: False
print_me(" c < 180.0", c < 180.0)
# c < 180.0: True
print_me(" c <= 180.0", c <= 180.0)
# c <= 180.0: True
- It is very easy to add Angles to obtain a new Angle::
e = c + d
print_me(" c + d", e)
# c + d: 133.7825
We can also directly add a decimal angle::
e = c + 11.5
print_me(" c + 11.5", e)
# c + 11.5: 150.2325
Types allowed are int, float and Angle::
print('e = c + "32.5"')
# e = c + "32.5"
try:
e = c + "32.5"
except TypeError:
print("TypeError!: Valid types are int, float, and Angle, not string!")
# TypeError!: Valid types are int, float, and Angle, not string!
- Subtraction::
e = c - d
print_me(" c - d", e)
# c - d: 143.6825
- Multiplication::
c.set(150.0)
d.set(5.0)
print_me("c", c)
# c: 150.0
print_me("d", d)
# d: 5.0
e = c * d
print_me(" c * d", e)
# c * d: 30.0
- Division::
c.set(150.0)
d.set(6.0)
print_me("d", d)
# d: 6.0
e = c / d
print_me(" c / d", e)
# c / d: 25.0
Division by zero is not allowed::
d.set(0.0)
print_me("d", d)
# d: 0.0
print('e = c / d')
# e = c / d
try:
e = c / d
except ZeroDivisionError:
print("ZeroDivisionError!: Division by zero is not allowed!")
# ZeroDivisionError!: Division by zero is not allowed!
- Power::
d.set(2.2)
print_me("d", d)
# d: 2.2
e = c ** d
print_me(" c ** d", e)
# c ** d: 91.5733670999
- Accumulative module operation::
d.set(17.0)
print_me("d", d)
# d: 17.0
e %= d
print_me(" e %= d", e)
# e %= d: 6.57336709993
- Accumulative addition::
c += d
print_me(" c += d", c)
# c += d: 167.0
- Accumulative subtraction::
print_me("b", b)
# b: 138.7325
c -= b
print_me(" c -= b", c)
# c -= b: 28.2675
- Accumulative multiplication::
print_me("b", b)
# b: 138.7325
c *= b
print_me(" c *= b", c)
# c *= b: 321.62094375
- Accumulative division::
print_me("b", b)
# 138.7325
d.set(6.0)
print_me("d", d)
# d: 6.0
b /= d
print_me(" b /= d", b)
# b /= d: 23.1220833333
- Accumulative power::
d.set(2.2)
print_me("d", d)
# d: 2.2
c = abs(c)
print_me(" c = abs(c)", c)
# c = abs(c): 321.62094375
c **= d
print_me(" c **= d", c)
# c **= d: 254.307104203
The same operations, but by the right side::
e = 3.5 + b
print_me(" e = 3.5 + b", e)
# e = 3.5 + b: 26.6220833333
e = 3.5 - b
print_me(" e = 3.5 - b", e)
# e = 3.5 - b: -19.6220833333
e = 3.5 * b
print_me(" e = 3.5 * b", e)
# e = 3.5 * b: 80.9272916667
e = 3.5 / b
print_me(" e = 3.5 / b", e)
# e = 3.5 / b: 0.151370443119
e = 3.5 ** b
print_me(" e = 3.5 ** b", e)
# e = 3.5 ** b: 260.783691406
pymeeus-0.3.6/docs/source/ex-Coordinates.rst 0000664 0000000 0000000 00000052327 13555455377 0021111 0 ustar 00root root 0000000 0000000 Coordinates examples
********************
Let's define a small helper function::
def print_me(msg, val):
print("{}: {}".format(msg, val))
It follows a series of important parameters related to the angle between Earth's rotation axis and the ecliptic.
- The mean angle between Earth rotation axis and ecliptic axis is the **mean obliquity**::
e0 = Earth.mean_obliquity(1987, 4, 10)
print_me("Mean obliquity for 1987/4/10", e0.dms_str())
# Mean obliquity for 1987/4/10: 23d 26' 27.4066466278''
- If we take into account the nutation effect on the obliquity, we get the **true obliquity**::
epsilon = Earth.true_obliquity(1987, 4, 10)
print_me("True obliquity for 1987/4/10", epsilon.dms_str())
# True obliquity for 1987/4/10: 23d 26' 36.8491882378''
epsilon = Earth.true_obliquity(2018, 7, 29)
print_me("True obliquity for 2018/7/29", epsilon.dms_str())
# True obliquity for 2018/7/29: 23d 26' 7.21570241139''
- The nutation effect is separated in two components: One parallel to the ecliptic (nutation in longitude) and other perpendicular to the ecliptic (nutation in obliquity)::
dpsi = Earth.nutation_longitude(1987, 4, 10)
print_me("Nutation in longitude for 1987/4/10", dpsi.dms_str(n_dec=3))
# Nutation in longitude for 1987/4/10: -3.788''
depsilon = Earth.nutation_obliquity(1987, 4, 10)
print_me("Nutation in obliquity for 1987/4/10", depsilon.dms_str(n_dec=3))
# Nutation in obliquity for 1987/4/10: 9.443''
- We can compute the effects of precession on the equatorial coordinates of a given star, taking also into account its proper motion::
start_epoch = JDE2000
final_epoch = Epoch(2028, 11, 13.19)
alpha0 = Angle(2, 44, 11.986, ra=True)
delta0 = Angle(49, 13, 42.48)
print_me("Initial right ascension", alpha0.ra_str(n_dec=3))
# Initial right ascension: 2h 44' 11.986''
print_me("Initial declination", delta0.dms_str(n_dec=2))
# Initial declination: 49d 13' 42.48''
pm_ra = Angle(0, 0, 0.03425, ra=True)
pm_dec = Angle(0, 0, -0.0895)
alpha, delta = Earth.precession_equatorial(start_epoch, final_epoch,
alpha0, delta0, pm_ra, pm_dec)
print_me("Final right ascension", alpha.ra_str(n_dec=3))
# Final right ascension: 2h 46' 11.331''
print_me("Final declination", delta.dms_str(n_dec=2))
# Final declination: 49d 20' 54.54''
Something similar can also be done with the ecliptical coordinates::
start_epoch = JDE2000
final_epoch = Epoch(-214, 6, 30.0)
lon0 = Angle(149.48194)
lat0 = Angle(1.76549)
print_me("Initial ecliptical longitude", round(lon0(), 5))
# Initial ecliptical longitude: 149.48194
print_me("Initial ecliptical latitude", round(lat0(), 5))
# Initial ecliptical latitude: 1.76549
lon, lat = Earth.precession_ecliptical(start_epoch, final_epoch, lon0, lat0)
print_me("Final ecliptical longitude", round(lon(), 3))
# Final ecliptical longitude: 118.704
print_me("Final ecliptical latitude", round(lat(), 3))
# Final ecliptical latitude: 1.615
Additionally, module ``Coordinates`` provides a function to compute the true movement of a star through the sky relative to the Sun::
ra = Angle(6, 45, 8.871, ra=True)
dec = Angle(-16.716108)
pm_ra = Angle(0, 0, -0.03847, ra=True)
pm_dec = Angle(0, 0, -1.2053)
dist = 2.64
vel = -7.6
alpha, delta = motion_in_space(ra, dec, dist, vel, pm_ra, pm_dec, -4000.0)
print(alpha.ra_str(False, 2))
# 6:47:39.91
print(delta.dms_str(False, 1))
# -15:23:30.6
This module ``Coordinates`` also provides a series of functions to convert between equatorial, ecliptical, horizontal and galactic coordinates.
- Equatorial to ecliptical coordinates::
ra = Angle(7, 45, 18.946, ra=True)
dec = Angle(28, 1, 34.26)
epsilon = Angle(23.4392911)
lon, lat = equatorial2ecliptical(ra, dec, epsilon)
print_me("Equatorial to ecliptical. Longitude", round(lon(), 5))
# Equatorial to ecliptical. Longitude: 113.21563
print_me("Equatorial to ecliptical. Latitude", round(lat(), 5))
# Equatorial to ecliptical. Latitude: 6.68417
- Ecliptical to equatorial coordinates::
lon = Angle(113.21563)
lat = Angle(6.68417)
epsilon = Angle(23.4392911)
ra, dec = ecliptical2equatorial(lon, lat, epsilon)
print_me("Ecliptical to equatorial. Right ascension", ra.ra_str(n_dec=3))
# Ecliptical to equatorial. Right ascension: 7h 45' 18.946''
print_me("Ecliptical to equatorial. Declination", dec.dms_str(n_dec=2))
# Ecliptical to equatorial. Declination: 28d 1' 34.26''
- Equatorial to horizontal coordinates::
lon = Angle(77, 3, 56)
lat = Angle(38, 55, 17)
ra = Angle(23, 9, 16.641, ra=True)
dec = Angle(-6, 43, 11.61)
theta0 = Angle(8, 34, 57.0896, ra=True)
eps = Angle(23, 26, 36.87)
# Compute correction to convert from mean to apparent sidereal time
delta = Angle(0, 0, ((-3.868*cos(eps.rad()))/15.0), ra=True)
theta0 += delta
h = theta0 - lon - ra
azi, ele = equatorial2horizontal(h, dec, lat)
print_me("Equatorial to horizontal: Azimuth", round(azi, 3))
# Equatorial to horizontal: Azimuth: 68.034
print_me("Equatorial to horizontal: Elevation", round(ele, 3))
# Equatorial to horizontal: Elevation: 15.125
- Horizontal to equatorial coordinates::
azi = Angle(68.0337)
ele = Angle(15.1249)
lat = Angle(38, 55, 17)
h, dec = horizontal2equatorial(azi, ele, lat)
print_me("Horizontal to equatorial. Hour angle", round(h, 4))
# Horizontal to equatorial. Hour angle: 64.3521
print_me("Horizontal to equatorial. Declination", dec.dms_str(n_dec=0))
# Horizontal to equatorial. Declination: -6d 43' 12.0''
- Equatorial to galactic coordinates::
ra = Angle(17, 48, 59.74, ra=True)
dec = Angle(-14, 43, 8.2)
lon, lat = equatorial2galactic(ra, dec)
print_me("Equatorial to galactic. Longitude", round(lon, 4))
# Equatorial to galactic. Longitude: 12.9593
print_me("Equatorial to galactic. Latitude", round(lat, 4))
# Equatorial to galactic. Latitude: 6.0463
- Galactic to equatorial coordinates::
lon = Angle(12.9593)
lat = Angle(6.0463)
ra, dec = galactic2equatorial(lon, lat)
print_me("Galactic to equatorial. Right ascension", ra.ra_str(n_dec=1))
# Galactic to equatorial. Right ascension: 17h 48' 59.7''
print_me("Galactic to equatorial. Declination", dec.dms_str(n_dec=0))
# Galactic to equatorial. Declination: -14d 43' 8.0''
In addition, there is a function to compute the ecliptic longitudes of the two points of the ecliptic which are on the horizon, as well as the angle between the ecliptic and the horizon::
sidereal_time = Angle(5.0, ra=True)
lat = Angle(51.0)
epsilon = Angle(23.44)
lon1, lon2, i = ecliptic_horizon(sidereal_time, lat, epsilon)
print_me("Longitude of ecliptic point #1 on the horizon", lon1.dms_str(n_dec=1))
# Longitude of ecliptic point #1 on the horizon: 169d 21' 29.9''
print_me("Longitude of ecliptic point #2 on the horizon", lon2.dms_str(n_dec=1))
# Longitude of ecliptic point #2 on the horizon: 349d 21' 29.9''
print_me("Angle between the ecliptic and the horizon", round(i, 0))
# Angle between the ecliptic and the horizon: 62.0
Also, it is possible to compute the angle of the diurnal path of a celestial body relative to the horizon at the time of rising and setting::
dec = Angle(23.44)
lat = Angle(40.0)
j = diurnal_path_horizon(dec, lat)
print_me("Diurnal path vs. horizon angle at time of rising and setting", j.dms_str(n_dec=1))
# Diurnal path vs. horizon angle at time of rising and setting: 45d 31' 28.4''
The times (in hours of the day) of rising, transit and setting of a given celestial body can be computed with the appropriate function::
longitude = Angle(71, 5, 0.0)
latitude = Angle(42, 20, 0.0)
alpha1 = Angle(2, 42, 43.25, ra=True)
delta1 = Angle(18, 2, 51.4)
alpha2 = Angle(2, 46, 55.51, ra=True)
delta2 = Angle(18, 26, 27.3)
alpha3 = Angle(2, 51, 7.69, ra=True)
delta3 = Angle(18, 49, 38.7)
h0 = Angle(-0.5667)
delta_t = 56.0
theta0 = Angle(11, 50, 58.1, ra=True)
rising, transit, setting = times_rise_transit_set(longitude, latitude,alpha1, delta1, \
alpha2, delta2, alpha3, delta3, h0, \
delta_t, theta0)
print_me("Time of rising (hours of day)", round(rising, 4))
# Time of rising (hours of day): 12.4238
print_me("Time of transit (hours of day)", round(transit, 3))
# Time of transit (hours of day): 19.675
print_me("Time of setting (hours of day, next day)", round(setting, 3))
# Time of setting (hours of day, next day): 2.911
The air in the atmosphere introduces an error in the elevation due to the refraction. We can compute the true (airless) elevation from the apparent elevation, and viceversa.
- Apparent elevation to true (airless) elevation::
apparent_elevation = Angle(0, 30, 0.0)
true_elevation = refraction_apparent2true(apparent_elevation)
print_me("True elevation for an apparent elevation of 30'",
true_elevation.dms_str(n_dec=1))
# True elevation for an apparent elevation of 30': 1' 14.7''
- True elevation to apparent elevation::
true_elevation = Angle(0, 33, 14.76)
apparent_elevation = refraction_true2apparent(true_elevation)
print_me("Apparent elevation for a true elevation of 33' 14.76''",
apparent_elevation.dms_str(n_dec=2))
# Apparent elevation for a true elevation of 33' 14.76'': 57' 51.96''
This module provides a function to compute the angular separation between two celestial bodies::
alpha1 = Angle(14, 15, 39.7, ra=True)
delta1 = Angle(19, 10, 57.0)
alpha2 = Angle(13, 25, 11.6, ra=True)
delta2 = Angle(-11, 9, 41.0)
sep_ang = angular_separation(alpha1, delta1, alpha2, delta2)
print_me("Angular separation between two given celestial bodies, in degrees",
round(sep_ang, 3))
# Angular separation between two given celestial bodies, in degrees: 32.793
We can compute the minimum angular separation achieved between two celestial objects. For that, we must provide the positions at three equidistant epochs::
# EPOCH: Sep 13th, 1978, 0h TT:
alpha1_1 = Angle(10, 29, 44.27, ra=True)
delta1_1 = Angle(11, 2, 5.9)
alpha2_1 = Angle(10, 33, 29.64, ra=True)
delta2_1 = Angle(10, 40, 13.2)
# EPOCH: Sep 14th, 1978, 0h TT:
alpha1_2 = Angle(10, 36, 19.63, ra=True)
delta1_2 = Angle(10, 29, 51.7)
alpha2_2 = Angle(10, 33, 57.97, ra=True)
delta2_2 = Angle(10, 37, 33.4)
# EPOCH: Sep 15th, 1978, 0h TT:
alpha1_3 = Angle(10, 43, 1.75, ra=True)
delta1_3 = Angle(9, 55, 16.7)
alpha2_3 = Angle(10, 34, 26.22, ra=True)
delta2_3 = Angle(10, 34, 53.9)
a = minimum_angular_separation(alpha1_1, delta1_1, alpha1_2, delta1_2,
alpha1_3, delta1_3, alpha2_1, delta2_1,
alpha2_2, delta2_2, alpha2_3, delta2_3)
print_me("Minimum angular separation, epoch fraction", round(a[0], 6))
# Minimum angular separation, epoch fraction: -0.370726
# NOTE: Given that 'n' is negative, and Sep 14th is the middle epoch (n=0),
# then the minimum angular separation is achieved on Sep 13th, specifically
# at: 1.0 - 0.370726 = 0.629274 => Sep 13.629274 = Sep 13th, 15h 6' 9''
print_me("Minimum angular separation", a[1].dms_str(n_dec=0))
# Minimum angular separation: 3' 44.0''
There is a function to compute the relative position angle P of a body with respect to another body. In this example, given that the two bodies have the same right ascension, then the relative position angle between them must be 0 (or 180)::
alpha1 = Angle(14, 15, 39.7, ra=True)
delta1 = Angle(19, 10, 57.0)
alpha2 = Angle(14, 15, 39.7, ra=True) # Same as alpha1
delta2 = Angle(-11, 9, 41.0)
pos_ang = relative_position_angle(alpha1, delta1, alpha2, delta2)
print_me("Relative position angle", round(pos_ang, 1))
# Relative position angle: 0.0
Planetary conjunctions may be computed with the appropriate function::
alpha1_1 = Angle(10, 24, 30.125, ra=True)
delta1_1 = Angle(6, 26, 32.05)
alpha1_2 = Angle(10, 25, 0.342, ra=True)
delta1_2 = Angle(6, 10, 57.72)
alpha1_3 = Angle(10, 25, 12.515, ra=True)
delta1_3 = Angle(5, 57, 33.08)
alpha1_4 = Angle(10, 25, 6.235, ra=True)
delta1_4 = Angle(5, 46, 27.07)
alpha1_5 = Angle(10, 24, 41.185, ra=True)
delta1_5 = Angle(5, 37, 48.45)
alpha2_1 = Angle(10, 27, 27.175, ra=True)
delta2_1 = Angle(4, 4, 41.83)
alpha2_2 = Angle(10, 26, 32.410, ra=True)
delta2_2 = Angle(3, 55, 54.66)
alpha2_3 = Angle(10, 25, 29.042, ra=True)
delta2_3 = Angle(3, 48, 3.51)
alpha2_4 = Angle(10, 24, 17.191, ra=True)
delta2_4 = Angle(3, 41, 10.25)
alpha2_5 = Angle(10, 22, 57.024, ra=True)
delta2_5 = Angle(3, 35, 16.61)
alpha1_list = [alpha1_1, alpha1_2, alpha1_3, alpha1_4, alpha1_5]
delta1_list = [delta1_1, delta1_2, delta1_3, delta1_4, delta1_5]
alpha2_list = [alpha2_1, alpha2_2, alpha2_3, alpha2_4, alpha2_5]
delta2_list = [delta2_1, delta2_2, delta2_3, delta2_4, delta2_5]
pc = planetary_conjunction(alpha1_list, delta1_list, alpha2_list, delta2_list)
print_me("Epoch fraction 'n' for planetary conjunction", round(pc[0], 5))
# Epoch fraction 'n' for planetary conjunction: 0.23797
print_me("Difference in declination at conjunction", pc[1].dms_str(n_dec=1))
# Difference in declination at conjunction: 2d 8' 21.8''
If the planetary conjunction is with a star, it is a little bit simpler::
alpha_1 = Angle(15, 3, 51.937, ra=True)
delta_1 = Angle(-8, 57, 34.51)
alpha_2 = Angle(15, 9, 57.327, ra=True)
delta_2 = Angle(-9, 9, 3.88)
alpha_3 = Angle(15, 15, 37.898, ra=True)
delta_3 = Angle(-9, 17, 37.94)
alpha_4 = Angle(15, 20, 50.632, ra=True)
delta_4 = Angle(-9, 23, 16.25)
alpha_5 = Angle(15, 25, 32.695, ra=True)
delta_5 = Angle(-9, 26, 1.01)
alpha_star = Angle(15, 17, 0.446, ra=True)
delta_star = Angle(-9, 22, 58.47)
alpha_list = [alpha_1, alpha_2, alpha_3, alpha_4, alpha_5]
delta_list = [delta_1, delta_2, delta_3, delta_4, delta_5]
pc = planet_star_conjunction(alpha_list, delta_list, alpha_star, delta_star)
print_me("Epoch fraction 'n' for planetary conjunction with star", round(pc[0], 4))
# Epoch fraction 'n' for planetary conjunction with star: 0.2551
print_me("Difference in declination with star at conjunction", pc[1].dms_str(n_dec=0))
# Difference in declination with star at conjunction: 3' 38.0''
It is possible to compute when a planet and two other stars will be in a straight line::
alpha_1 = Angle(7, 55, 55.36, ra=True)
delta_1 = Angle(21, 41, 3.0)
alpha_2 = Angle(7, 58, 22.55, ra=True)
delta_2 = Angle(21, 35, 23.4)
alpha_3 = Angle(8, 0, 48.99, ra=True)
delta_3 = Angle(21, 29, 38.2)
alpha_4 = Angle(8, 3, 14.66, ra=True)
delta_4 = Angle(21, 23, 47.5)
alpha_5 = Angle(8, 5, 39.54, ra=True)
delta_5 = Angle(21, 17, 51.4)
alpha_star1 = Angle(7, 34, 16.40, ra=True)
delta_star1 = Angle(31, 53, 51.2)
alpha_star2 = Angle(7, 45, 0.10, ra=True)
delta_star2 = Angle(28, 2, 12.5)
alpha_list = [alpha_1, alpha_2, alpha_3, alpha_4, alpha_5]
delta_list = [delta_1, delta_2, delta_3, delta_4, delta_5]
n = planet_stars_in_line(alpha_list, delta_list, alpha_star1, delta_star1,
alpha_star2, delta_star2)
print_me("Epoch fraction 'n' when bodies are in a straight line", round(n, 4))
# Epoch fraction 'n' when bodies are in a straight line: 0.2233
The function 'straight_line()' computes if three celestial bodies are in line providing the angle with which the bodies differ from a great circle::
alpha1 = Angle(5, 32, 0.40, ra=True)
delta1 = Angle(0, -17, 56.9)
alpha2 = Angle(5, 36, 12.81, ra=True)
delta2 = Angle(-1, 12, 7.0)
alpha3 = Angle(5, 40, 45.52, ra=True)
delta3 = Angle(-1, 56, 33.3)
psi, omega = straight_line(alpha1, delta1, alpha2, delta2, alpha3, delta3)
print_me("Angle deviation from a straight line", psi.dms_str(n_dec=0))
# Angle deviation from a straight line: 7d 31' 1.0''
print_me("Angular distance of central point to the straight line", omega.dms_str(n_dec=0))
# Angular distance of central point to the straight line: -5' 24.0''
Now let's compute the size of the smallest circle that contains three given celestial bodies::
alpha1 = Angle(12, 41, 8.63, ra=True)
delta1 = Angle(-5, 37, 54.2)
alpha2 = Angle(12, 52, 5.21, ra=True)
delta2 = Angle(-4, 22, 26.2)
alpha3 = Angle(12, 39, 28.11, ra=True)
delta3 = Angle(-1, 50, 3.7)
d = circle_diameter(alpha1, delta1, alpha2, delta2, alpha3, delta3)
print_me("Diameter of smallest circle containing three celestial bodies", d.dms_str(n_dec=0))
# Diameter of smallest circle containing three celestial bodies: 4d 15' 49.0''
Let's find the apparent position of a star (Theta Persei) for a given epoch::
epoch = Epoch(2028, 11, 13.19)
alpha = Angle(2, 46, 11.331, ra=True)
delta = Angle(49, 20, 54.54)
sun_lon = Angle(231.328)
app_alpha, app_delta = apparent_position(epoch, alpha, delta, sun_lon)
print_me("Apparent right ascension", app_alpha.ra_str(n_dec=2))
# Apparent right ascension: 2h 46' 14.39''
print_me("Apparent declination", app_delta.dms_str(n_dec=2))
# Apparent declination: 49d 21' 7.45''
Convert orbital elements of a celestial object from one equinox to another::
epoch0 = Epoch(2358042.5305)
epoch = Epoch(2433282.4235)
i0 = Angle(47.122)
arg0 = Angle(151.4486)
lon0 = Angle(45.7481)
i1, arg1, lon1 = orbital_equinox2equinox(epoch0, epoch, i0, arg0, lon0)
print_me("New inclination", round(i1(), 3))
# New inclination: 47.138
print_me("New argument of perihelion", round(arg1(), 4))
# New argument of perihelion: 151.4782
print_me("New longitude of ascending node", round(lon1(), 4))
# New longitude of ascending node: 48.6037
Compute the eccentric and true anomalies using Kepler's equation::
eccentricity = 0.1
mean_anomaly = Angle(5.0)
e, v = kepler_equation(eccentricity, mean_anomaly)
print_me("Eccentric anomaly, Case #1", round(e(), 6))
# Eccentric anomaly, Case #1: 5.554589
print_me("True anomaly, Case #1", round(v(), 6))
# True anomaly, Case #1: 6.139762
e, v = kepler_equation(0.99, Angle(0.2, radians=True))
print_me("Eccentric anomaly, Case #2", round(e(), 8))
# Eccentric anomaly, Case #2: 61.13444578
print_me("True anomaly, Case #2", round(v(), 6))
# True anomaly, Case #2: 166.311977
Compute the velocity of a body in a given point of its (unperturbated elliptic) orbit, in this case the comet Halley in 1986::
r = 1.0
a = 17.9400782
v = velocity(r, a)
print_me("Velocity ar 1 AU", round(v, 2))
# Velocity at 1 AU: 41.53
Compute the velocity at perihelion::
a = 17.9400782
e = 0.96727426
vp = velocity_perihelion(e, a)
print_me("Velocity at perihelion", round(vp, 2))
# Velocity at perihelion: 54.52
And now compute the velocity at aphelion::
a = 17.9400782
e = 0.96727426
va = velocity_aphelion(e, a)
print_me("Velocity at aphelion", round(va, 2))
# Velocity at aphelion: 0.91
Calculate the length of the orbit for the same comet Halley::
a = 17.9400782
e = 0.96727426
length = length_orbit(e, a)
print_me("Length of the orbit (AU)", round(length, 2))
# Length of the orbit (AU): 77.06
Compute passage through the nodes of an elliptic orbit::
omega = Angle(111.84644)
e = 0.96727426
a = 17.9400782
t = Epoch(1986, 2, 9.45891)
time, r = passage_nodes_elliptic(omega, e, a, t)
y, m, d = time.get_date()
d = round(d, 2)
print("Time of passage through ascending node: {}/{}/{}".format(y, m, d))
# Time of passage through ascending node: 1985/11/9.16
print("Radius vector at ascending node: {}".format(round(r, 4)))
# Radius vector at ascending node: 1.8045
Passage through the nodes of a parabolic orbit::
omega = Angle(154.9103)
q = 1.324502
t = Epoch(1989, 8, 20.291)
time, r = passage_nodes_parabolic(omega, q, t, ascending=False)
y, m, d = time.get_date()
d = round(d, 2)
print("Time of passage through descending node: {}/{}/{}".format(y, m, d))
# Time of passage through descending node: 1989/9/17.64
print("Radius vector at descending node: {}".format(round(r, 4)))
# Radius vector at descending node: 1.3901
Compute the phase angle::
sun_dist = 0.724604
earth_dist = 0.910947
sun_earth_dist = 0.983824
angle = phase_angle(sun_dist, earth_dist, sun_earth_dist)
print_me("Phase angle", round(angle, 2))
# Phase angle: 72.96
Now, let's compute the illuminated fraction of the disk::
k = illuminated_fraction(sun_dist, earth_dist, sun_earth_dist)
print_me("Illuminated fraction of planet disk", round(k, 3))
# Illuminated fraction of planet disk: 0.647
pymeeus-0.3.6/docs/source/ex-CurveFitting.rst 0000664 0000000 0000000 00000005731 13555455377 0021245 0 ustar 00root root 0000000 0000000 CurveFitting examples
*********************
Let's define a small helper function::
def print_me(msg, val):
print("{}: {}".format(msg, val))
Now let's work with the CurveFitting class. First, create a CurveFitting object::
cf1 = CurveFitting([73.0, 38.0, 35.0, 42.0, 78.0, 68.0, 74.0, 42.0, 52.0,
54.0, 39.0, 61.0, 42.0, 49.0, 50.0, 62.0, 44.0, 39.0,
43.0, 54.0, 44.0, 37.0],
[90.4, 125.3, 161.8, 143.4, 52.5, 50.8, 71.5, 152.8,
131.3, 98.5, 144.8, 78.1, 89.5, 63.9, 112.1, 82.0,
119.8, 161.2, 208.4, 111.6, 167.1, 162.1])
Let's use ``linear_fitting()``::
a, b = cf1.linear_fitting()
print(" a = {}\tb = {}".format(round(a, 2), round(b, 2)))
# a = -2.49 b = 244.18
Use the copy constructor::
cf2 = CurveFitting(cf1)
a, b = cf2.linear_fitting()
print(" a = {}\tb = {}".format(round(a, 2), round(b, 2)))
# a = -2.49 b = 244.18
Get the number of value pairs internally stored::
print_me("Number of value pairs inside 'cf2'", len(cf2))
# Number of value pairs inside 'cf2': 22
Compute the correlation coefficient::
r = cf1.correlation_coeff()
print_me(" r", round(r, 3))
# r: -0.767
Define a new CurveFitting object::
cf2 = CurveFitting([-2.0, -1.5, -1.0, -0.5, 0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0],
[-9.372, -3.821, 0.291, 3.730, 5.822, 8.324, 9.083,
6.957, 7.006, 0.365, -1.722])
Now use ``quadratic_fitting()``::
a, b, c = cf2.quadratic_fitting()
# Original curve: y = -2.0*x*x + 3.5*x + 7.0 + noise
print(" a = {}\tb = {}\tc = {}".format(round(a, 2), round(b, 2), round(c, 2)))
# a = -2.22 b = 3.76 c = 6.64
Yet another CurveFitting object::
cf4 = CurveFitting([3, 20, 34, 50, 75, 88, 111, 129, 143, 160, 183, 200,
218, 230, 248, 269, 290, 303, 320, 344],
[0.0433, 0.2532, 0.3386, 0.3560, 0.4983, 0.7577, 1.4585,
1.8628, 1.8264, 1.2431, -0.2043, -1.2431, -1.8422,
-1.8726, -1.4889, -0.8372, -0.4377, -0.3640, -0.3508,
-0.2126])
Let's define the three functions to be used for fitting::
def sin1(x): return sin(radians(x))
def sin2(x): return sin(radians(2.0*x))
def sin3(x): return sin(radians(3.0*x))
Use ``general_fitting()`` here::
a, b, c = cf4.general_fitting(sin1, sin2, sin3)
# General fitting with f0 = sin(x), f1 = sin(2*x), f2 = sin(3*x)
print(" a = {}\tb = {}\tc = {}".format(round(a, 2), round(b, 2), round(c, 2)))
# a = 1.2 b = -0.77 c = 0.39
A final example::
cf5 = CurveFitting([0, 1.2, 1.4, 1.7, 2.1, 2.2])
a, b, c = cf5.general_fitting(sqrt)
# General fitting with f0 = sqrt(x), f1 = 0.0 and f2 = 0.0
print(" a = {}\tb = {}\t\tc = {}".format(round(a, 3), round(b, 3), round(c, 3)))
# a = 1.016 b = 0.0 c = 0.0
pymeeus-0.3.6/docs/source/ex-Earth.rst 0000664 0000000 0000000 00000017147 13555455377 0017703 0 ustar 00root root 0000000 0000000 Earth examples
**************
Let's define a small helper function::
def print_me(msg, val):
print("{}: {}".format(msg, val))
An important concept are the reference ellipsoids, comprising information about
the Earth global model we are going to use.
A very important reference ellipsoid is **WGS84**, predefined here::
print_me("WGS84", WGS84)
# WGS84: 6378137.0:0.00335281066475:7.292115e-05
# First field is equatorial radius, second field is the flattening, and the
# third field is the angular rotation velocity, in radians per second
Let's print the semi-minor axis (polar radius)::
print_me("Polar radius, b", WGS84.b())
# Polar radius, b: 6356752.31425
And now, let's print the eccentricity of Earth's meridian::
print_me("Eccentricity, e", WGS84.e())
# Eccentricity, e: 0.0818191908426
We create an Earth object with a given reference ellipsoid. By default, it is
**WGS84**, but we can use another::
e = Earth(IAU76)
Print the parameters of reference ellipsoid being used::
print_me("'e' Earth object parameters", e)
# 'e' Earth object parameters: 6378140.0:0.0033528131779:7.292114992e-05
Compute the distance to the center of the Earth from a given point at sea
level, and at a certain latitude. It is given as a fraction of equatorial
radius::
lat = Angle(65, 45, 30.0) # We can use an Angle for this
print_me("Distance to Earth's center, from latitude 65d 45' 30''", e.rho(lat))
# Distance to Earth's center, from latitude 65d 45' 30'': 0.997216343095
Parameters *rho\*sin(lat)* and *rho\*cos(lat)* are useful for different
astronomical applications::
height = 650.0
print_me("rho*sin(lat)", e.rho_sinphi(lat, height))
# rho*sin(lat): 0.908341718779
print_me("rho*cos(lat)", e.rho_cosphi(lat, height))
# rho*cos(lat): 0.411775501279
Compute the radius of the parallel circle at a given latitude::
print_me("Radius of parallel circle at latitude 65d 45' 30'' (meters)", e.rp(lat))
# Radius of parallel circle at latitude 65d 45' 30'' (meters): 2626094.91467
Compute the radius of curvature of the Earth's meridian at given latitude::
print_me("Radius of Earth's meridian at latitude 65d 45' 30'' (meters)", e.rm(lat))
# Radius of Earth's meridian at latitude 65d 45' 30'' (meters): 6388705.74543
It is easy to compute the linear velocity at different latitudes::
print_me("Linear velocity at the Equator (meters/second)", e.linear_velocity(0.0))
# Linear velocity at the Equator (meters/second): 465.101303151
print_me("Linear velocity at latitude 65d 45' 30'' (meters/second)", e.linear_velocity(lat))
# Linear velocity at latitude 65d 45' 30'' (meters/second): 191.497860977
And now, let's compute the distance between two points on the Earth:
- Bangkok: 13d 14' 09'' North, 100d 29' 39'' East
- Buenos Aires: 34d 36' 12'' South, 58d 22' 54'' West
.. note:: We will consider that positions 'East' and 'South' are negative
Here we will take advantage of facilities provided by ``Angle`` class::
lon_ban = Angle(-100, 29, 39.0)
lat_ban = Angle(13, 14, 9.0)
lon_bai = Angle(58, 22, 54.0)
lat_bai = Angle(-34, 36, 12.0)
dist, error = e.distance(lon_ban, lat_ban, lon_bai, lat_bai)
print_me("The distance between Bangkok and Buenos Aires is (km)", round(dist/1000.0, 2))
# The distance between Bangkok and Buenos Aires is (km): 16832.89
print_me("The approximate error of the estimation is (meters)", round(error, 0))
# The approximate error of the estimation is (meters): 189.0
Let's now compute the geometric heliocentric position for a given epoch::
epoch = Epoch(1992, 10, 13.0)
lon, lat, r = Earth.geometric_heliocentric_position(epoch)
print_me("Geometric Heliocentric Longitude", lon.to_positive())
# Geometric Heliocentric Longitude: 19.9072721503
print_me("Geometric Heliocentric Latitude", lat.dms_str(n_dec=3))
# Geometric Heliocentric Latitude: -0.721''
print_me("Radius vector", r)
# Radius vector: 0.997608520236
And now, compute the apparent heliocentric position for the same epoch::
epoch = Epoch(1992, 10, 13.0)
lon, lat, r = Earth.apparent_heliocentric_position(epoch)
print_me("Apparent Heliocentric Longitude", lon.to_positive())
# Apparent Heliocentric Longitude: 19.9059856939
print_me("Apparent Heliocentric Latitude", lat.dms_str(n_dec=3))
# Apparent Heliocentric Latitude: -0.721''
print_me("Radius vector", r)
# Radius vector: 0.997608520236
Print mean orbital elements for Earth at 2065.6.24::
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Earth.orbital_elements_mean_equinox(epoch)
print_me("Mean longitude of the planet", round(l, 6))
# Mean longitude of the planet: 272.716028
print_me("Semimajor axis of the orbit (UA)", round(a, 8))
# Semimajor axis of the orbit (UA): 1.00000102
print_me("Eccentricity of the orbit", round(e, 7))
# Eccentricity of the orbit: 0.0166811
print_me("Inclination on plane of the ecliptic", round(i, 6))
# Inclination on plane of the ecliptic: 0.0
print_me("Longitude of the ascending node", round(ome, 5))
# Longitude of the ascending node: 174.71534
print_me("Argument of the perihelion", round(arg, 6))
# Argument of the perihelion: -70.651889
Find the epoch of the Perihelion closer to 2008/02/01::
epoch = Epoch(2008, 2, 1.0)
e = Earth.perihelion_aphelion(epoch)
y, m, d, h, mi, s = e.get_full_date()
peri = str(y) + '/' + str(m) + '/' + str(d) + ' ' + str(h) + ':' + str(mi)
print_me("The Perihelion closest to 2008/2/1 happened on", peri)
# The Perihelion closest to 2008/2/1 happened on: 2008/1/2 23:53
Compute the time of passage through an ascending node::
epoch = Epoch(2019, 1, 1)
time, r = Earth.passage_nodes(epoch)
y, m, d = time.get_date()
d = round(d, 1)
print("Time of passage through ascending node: {}/{}/{}".format(y, m, d))
# Time of passage through ascending node: 2019/3/15.0
print("Radius vector at ascending node: {}".format(round(r, 4)))
# Radius vector at ascending node: 0.9945
Compute the parallax correction::
right_ascension = Angle(22, 38, 7.25, ra=True)
declination = Angle(-15, 46, 15.9)
latitude = Angle(33, 21, 22)
distance = 0.37276
hour_angle = Angle(288.7958)
top_ra, top_dec = Earth.parallax_correction(right_ascension, declination,
latitude, distance, hour_angle)
print_me("Corrected topocentric right ascension: ", top_ra.ra_str(n_dec=2))
# Corrected topocentric right ascension: : 22h 38' 8.54''
print_me("Corrected topocentric declination", top_dec.dms_str(n_dec=1))
# Corrected topocentric declination: -15d 46' 30.0''
Compute the parallax correction in ecliptical coordinates::
longitude = Angle(181, 46, 22.5)
latitude = Angle(2, 17, 26.2)
semidiameter = Angle(0, 16, 15.5)
obs_lat = Angle(50, 5, 7.8)
obliquity = Angle(23, 28, 0.8)
sidereal_time = Angle(209, 46, 7.9)
distance = 0.0024650163
topo_lon, topo_lat, topo_diam = \
Earth.parallax_ecliptical(longitude, latitude, semidiameter, obs_lat,
obliquity, sidereal_time, distance)
print_me("Corrected topocentric longitude", topo_lon.dms_str(n_dec=1))
# Corrected topocentric longitude: 181d 48' 5.0''
print_me("Corrected topocentric latitude", topo_lat.dms_str(n_dec=1))
# Corrected topocentric latitude: 1d 29' 7.1''
print_me("Corrected topocentric semidiameter", topo_diam.dms_str(n_dec=1))
# Corrected topocentric semidiameter: 16' 25.5''
pymeeus-0.3.6/docs/source/ex-Epoch.rst 0000664 0000000 0000000 00000021720 13555455377 0017666 0 ustar 00root root 0000000 0000000 Epoch examples
**************
Let's define a small helper function::
def print_me(msg, val):
print("{}: {}".format(msg, val))
Let's start creating and Epoch object, and printing it::
e = Epoch(1987, 6, 19.5)
print_me("JDE for 1987/6/19.5", e)
# JDE for 1987/6/19.5: 2446966.00064
Redefine the Epoch object::
e.set(333, 'Jan', 27, 12)
print_me("JDE for 333/1/27.5", e)
# JDE for 333/1/27.5: 1842713.0
We can create an Epoch from a ``date`` or ``datetime`` object::
d = datetime.datetime(837, 4, 10, 7, 12, 0, 0)
f = Epoch(d)
print_me("JDE for 837/4/10.3", f)
# JDE for 837/4/10.3: 2026871.8
Let's check if a given date belong to the Julian or the Gregorian calendar::
print_me("Is 1590/4/21.4 a Julian date?", Epoch.is_julian(1590, 4, 21.4))
# Is 1590/4/21.4 a Julian date?: False
We can also check if a given year is leap or not::
print_me("Is -1000 a leap year?", Epoch.is_leap(-1000))
# Is -1000 a leap year?: True
print_me("Is 1800 a leap year?", Epoch.is_leap(1800))
# Is 1800 a leap year?: False
print_me("Is 2012 a leap year?", Epoch.is_leap(2012))
# Is 2012 a leap year?: True
Get the Day Of Year (DOY) corresponding to a given date::
print_me("Day Of Year (DOY) of 1978/11/14", Epoch.get_doy(1978, 11, 14))
# Day Of Year (DOY) of 1978/11/14: 318.0
print_me("Day Of Year (DOY) of -400/2/29.9", Epoch.get_doy(-400, 2, 29.9))
# Day Of Year (DOY) of -400/2/29.9: 60.9
Now the opposite: Get a date from a DOY::
t = Epoch.doy2date(2017, 365.7)
s = str(t[0]) + "/" + str(t[1]) + "/" + str(round(t[2], 2))
print_me("Date from DOY 2017:365.7", s)
# Date from DOY 2017:365.7: 2017/12/31.7
t = Epoch.doy2date(-4, 60)
s = str(t[0]) + "/" + str(t[1]) + "/" + str(round(t[2], 2))
print_me("Date from DOY -4:60", s)
# Date from DOY -4:60: -4/2/29.0
There is an internal table which we can use to get the leap seconds::
print_me("Number of leap seconds applied up to July 1983", Epoch.leap_seconds(1983, 7))
# Number of leap seconds applied up to July 1983: 12
We can convert the internal JDE value back to a date::
e = Epoch(2436116.31)
y, m, d = e.get_date()
s = str(y) + "/" + str(m) + "/" + str(round(d, 2))
print_me("Date from JDE 2436116.31", s)
# Date from JDE 2436116.31: 1957/10/4.81
It is possible to get the day of the week corresponding to a given date::
e = Epoch(2018, 'Feb', 15)
print_me("The day of week of 2018/2/15 is", e.dow(as_string=True))
# The day of week of 2018/2/15 is: Thursday
In some cases it is useful to get the Modified Julian Day (MJD)::
e = Epoch(1923, 'August', 23)
print_me("Modified Julian Day for 1923/8/23", round(e.mjd(), 2))
# Modified Julian Day for 1923/8/23: 23654.0
If your system is appropriately configured, you can get the difference in seconds between your local time and UTC::
print_me("From local system time to UTC you must add/subtract" +
" this amount of seconds", Epoch.utc2local())
# From local system time to UTC you must add/subtract this amount of seconds: 7200.0
Compute DeltaT = TT - UT differences for various dates::
print_me("DeltaT (TT - UT) for Feb/333", round(Epoch.tt2ut(333, 2), 1))
# DeltaT (TT - UT) for Feb/333: 7358.5
print_me("DeltaT (TT - UT) for Jan/1642", round(Epoch.tt2ut(1642, 1), 1))
# DeltaT (TT - UT) for Jan/1642: 62.1
print_me("DeltaT (TT - UT) for Feb/1928", round(Epoch.tt2ut(1928, 1), 1))
# DeltaT (TT - UT) for Feb/1928: 24.2
print_me("DeltaT (TT - UT) for Feb/1977", round(Epoch.tt2ut(1977, 2), 1))
# DeltaT (TT - UT) for Feb/1977: 47.7
print_me("DeltaT (TT - UT) for Jan/1998", round(Epoch.tt2ut(1998, 1), 1))
# DeltaT (TT - UT) for Jan/1998: 63.0
The difference between civil day and sidereal day is almost 4 minutes::
e = Epoch(1987, 4, 10)
st1 = round(e.mean_sidereal_time(), 9)
e = Epoch(1987, 4, 11)
st2 = round(e.mean_sidereal_time(), 9)
ds = (st2 - st1)*DAY2MIN
msg = "{}m {}s".format(INT(ds), (ds % 1)*60.0)
print_me("Difference between sidereal time 1987/4/11 and 1987/4/10", msg)
# Difference between sidereal time 1987/4/11 and 1987/4/10: 3m 56.555424s
When correcting for nutation-related effects, we get the **apparent** sidereal time::
e = Epoch(1987, 4, 10)
print_me("e.apparent_sidereal_time(23.44357, (-3.788)/3600.0)",
e.apparent_sidereal_time(23.44357, (-3.788)/3600.0))
# e.apparent_sidereal_time(23.44357, (-3.788)/3600.0): 0.549145082637
Epoch class can also provide the date of Easter for a given year. Let's spice up the output a little bit, calling ``dow()`` and ``get_month()``::
month, day = Epoch.easter(2019)
e = Epoch(2019, month, day)
s = e.dow(as_string=True) + ", " + str(day) + get_ordinal_suffix(day) + \
" of " + Epoch.get_month(month, as_string=True)
print_me("Easter day for 2019", s)
# Easter day for 2019: Sunday, 21st of April
Compute the date of the Jewish Easter (Pesach) for a given year::
month, day = Epoch.jewish_pesach(1990)
s = str(day) + get_ordinal_suffix(day) + " of " + Epoch.get_month(month, as_string=True)
print_me("Jewish Pesach day for 1990", s)
# Jewish Pesach day for 1990: 10th of April
Now, let's convert a date in the Moslem calendar to the Gregorian calendar::
y, m, d = Epoch.moslem2gregorian(1421, 1, 1)
print_me("The date 1421/1/1 in the Moslem calendar is, in Gregorian " +
"calendar", "{}/{}/{}".format(y, m, d))
# The date 1421/1/1 in the Moslem calendar is, in Gregorian calendar: 2000/4/6
y, m, d = Epoch.moslem2gregorian(1439, 9, 1)
print_me("The start of Ramadan month (9/1) for Gregorian year 2018 is",
"{}/{}/{}".format(y, m, d))
# The start of Ramadan month (9/1) for Gregorian year 2018 is: 2018/5/16
We can go from the Gregorian calendar back to the Moslem calendar too::
print_me("Date 1991/8/13 in Gregorian calendar is, in Moslem calendar",
"{}/{}/{}".format(*Epoch.gregorian2moslem(1991, 8, 13)))
# Date 1991/8/13 in Gregorian calendar is, in Moslem calendar: 1412/2/2
.. note:: The ``*`` before ``Epoch`` will **unpack** the tuple into components
It is possible to carry out some algebraic operations with Epochs.
- Add 10000 days to a given date::
a = Epoch(1991, 7, 11)
b = a + 10000
y, m, d = b.get_date()
s = str(y) + "/" + str(m) + "/" + str(round(d, 2))
print_me("1991/7/11 plus 10000 days is", s)
# 1991/7/11 plus 10000 days is: 2018/11/26.0
- Subtract two Epochs to find the number of days between them::
a = Epoch(1986, 2, 9.0)
b = Epoch(1910, 4, 20.0)
print_me("The number of days between 1986/2/9 and 1910/4/20 is", round(a - b, 2))
# The number of days between 1986/2/9 and 1910/4/20 is: 27689.0
- We can also subtract a given amount of days from an Epoch::
a = Epoch(2003, 12, 31.0)
b = a - 365.5
y, m, d = b.get_date()
s = str(y) + "/" + str(m) + "/" + str(round(d, 2))
print_me("2003/12/31 minus 365.5 days is", s)
# 2003/12/31 minus 365.5 days is: 2002/12/30.5
- Accumulative addition and subtraction of days is also allowed::
a = Epoch(2003, 12, 31.0)
a += 32.5
y, m, d = a.get_date()
s = str(y) + "/" + str(m) + "/" + str(round(d, 2))
print_me("2003/12/31 plus 32.5 days is", s)
# 2003/12/31 plus 32.5 days is: 2004/2/1.5
a = Epoch(2001, 12, 31.0)
a -= 2*365
y, m, d = a.get_date()
s = str(y) + "/" + str(m) + "/" + str(round(d, 2))
print_me("2001/12/31 minus 2*365 days is", s)
# 2001/12/31 minus 2*365 days is: 2000/1/1.0
- It is also possible to add days from the right::
a = Epoch(2004, 2, 27.8)
b = 2.2 + a
y, m, d = b.get_date()
s = str(y) + "/" + str(m) + "/" + str(round(d, 2))
print_me("2.2 days plus 2004/2/27.8 is", s)
# 2.2 days plus 2004/2/27.8 is: 2004/3/1.0
- Comparison operadors between epochs are also defined::
a = Epoch(2007, 5, 20.0)
b = Epoch(2007, 5, 20.000001)
print_me("2007/5/20.0 == 2007/5/20.000001", a == b)
# 2007/5/20.0 == 2007/5/20.000001: False
print_me("2007/5/20.0 != 2007/5/20.000001", a != b)
# 2007/5/20.0 != 2007/5/20.000001: True
print_me("2007/5/20.0 > 2007/5/20.000001", a > b)
# 2007/5/20.0 > 2007/5/20.000001: False
print_me("2007/5/20.0 <= 2007/5/20.000001", a <= b)
# 2007/5/20.0 <= 2007/5/20.000001: True
- Compute the time of rise and setting of the Sun in a given day::
e = Epoch(2018, 5, 2)
print("On May 2nd, 2018, Sun rising/setting times in Munich were (UTC):")
latitude = Angle(48, 8, 0)
longitude = Angle(11, 34, 0)
altitude = 520.0
rising, setting = e.rise_set(latitude, longitude, altitude)
y, m, d, h, mi, s = rising.get_full_date()
print("Rising time: {}:{}".format(h, mi))
# Rising time: 3:50
y, m, d, h, mi, s = setting.get_full_date()
print("Setting time: {}:{}".format(h, mi))
# Setting time: 18:33
pymeeus-0.3.6/docs/source/ex-Interpolation.rst 0000664 0000000 0000000 00000006272 13555455377 0021464 0 ustar 00root root 0000000 0000000 Interpolation examples
**********************
Let's define a small helper function::
def print_me(msg, val):
print("{}: {}".format(msg, val))
Declare an Interpolation object::
i = Interpolation([5, 3, 6, 1, 2, 4, 9], [10, 6, 12, 2, 4, 8])
print(i)
# X: [1, 2, 3, 4, 5, 6]
# Y: [2, 4, 6, 8, 10, 12]
.. note::
a. They are ordered in 'x'
b. The extra value in 'x' was dropped
Use the copy constructor. We can easily make a copy of an Interpolation object::
j = Interpolation(i)
print(j)
# X: [1, 2, 3, 4, 5, 6]
# Y: [2, 4, 6, 8, 10, 12]
j = Interpolation([0.0, 1.0, 3.0], [-1.0, -2.0, 2.0])
print(j)
# X: [0.0, 1.0, 3.0]
# Y: [-1.0, -2.0, 2.0]
print_me("j(2)", j(2))
# j(2): -1.0
print_me("j(0.5)", j(0.5))
# j(0.5): -1.75
- Test with a value already in the data table::
print_me("j(1)", j(1))
# j(1): -2.0
Get the number of interpolation points internally stored::
print_me("Number or interpolation points in 'j'", len(j))
# Number or interpolation points in 'j': 3
We can interpolate Angles too::
k = Interpolation([27.0, 27.5, 28.0, 28.5, 29.0],
[Angle(0, 54, 36.125), Angle(0, 54, 24.606),
Angle(0, 54, 15.486), Angle(0, 54, 8.694),
Angle(0, 54, 4.133)])
print_me("k(28.278)", Angle(k(28.278)).dms_str())
# k(28.278): 54' 11.4279073579''
Let's work with a new Interpolation object::
m = Interpolation([-1.0, 0.0, 1.0], [-2.0, 3.0, 2.0])
print(m)
# X: [-1.0, 0.0, 1.0]
# Y: [-2.0, 3.0, 2.0]
- Get some interpolated values::
print_me("m(-0.5)", m(-0.5))
# m(-0.5): 1.25
print_me("m(0.5)", m(0.5))
# m(0.5): 3.25
- Get derivatives::
print_me("m'(-1.0)", m.derivative(-1.0))
# m'(-1.0): 8.0
print_me("m'(-0.5)", m.derivative(-0.5))
# m'(-0.5): 5.0
print_me("m'(0.0)", m.derivative(0.0))
# m'(0.0): 2.0
print_me("m'(0.5)", m.derivative(0.5))
# m'(0.5): -1.0
print_me("m'(1.0)", m.derivative(1.0))
# m'(1.0): -4.0
- Get the root within the interval::
print_me("m.root()", m.root())
# m.root(): -0.720759220056
- Get the extremum within the interval::
print_me("m.minmax()", m.minmax())
# m.minmax(): 0.333333333333
Let's work now with the interpolation of sine function::
m = Interpolation([29.43, 30.97, 27.69, 28.11, 31.58, 33.05],
[0.4913598528, 0.5145891926, 0.4646875083,
0.4711658342, 0.5236885653, 0.5453707057])
print_me("sin(29.5)\t", m(29.5))
# sin(29.5) : 0.492423560118
print_me("sin(30.0)\t", m(30.0))
# sin(30.0) : 0.500000000018
print_me("sin(30.5)\t", m(30.5))
# sin(30.5) : 0.507538362978
Derivatives must be adjusted because degrees were used instead of radians::
print_me("sin'(29.5)\t", degrees(m.derivative(29.5)))
# sin'(29.5) : 0.870355696916
print_me("sin'(30.0)\t", degrees(m.derivative(30.0)))
# sin'(30.0) : 0.866025403791
print_me("sqrt(3.0)/2.0\t", sqrt(3.0)/2.0)
# sqrt(3.0)/2.0 : 0.866025403784
print_me("sin'(30.5)\t", degrees(m.derivative(30.5)))
# sin'(30.5) : 0.861629160353
pymeeus-0.3.6/docs/source/ex-Jupiter.rst 0000664 0000000 0000000 00000007614 13555455377 0020260 0 ustar 00root root 0000000 0000000 Jupiter examples
****************
Let's define a small helper function::
def print_me(msg, val):
print("{}: {}".format(msg, val))
We can compute the geometric heliocentric position for a given epoch::
epoch = Epoch(2018, 10, 27.0)
lon, lat, r = Jupiter.geometric_heliocentric_position(epoch)
print_me("Geometric Heliocentric Longitude", lon.to_positive())
# Geometric Heliocentric Longitude: 241.5873
print_me("Geometric Heliocentric Latitude", lat)
# Geometric Heliocentric Latitude: 0.8216
print_me("Radius vector", r)
# Radius vector: 5.36848
Compute the geocentric position for 1992/12/20::
epoch = Epoch(1992, 12, 20.0)
ra, dec, elon = Jupiter.geocentric_position(epoch)
print_me("Right ascension", ra.ra_str(n_dec=1))
# Right ascension: 12h 47' 9.6''
print_me("Declination", dec.dms_str(n_dec=1))
# Declination: -3d 41' 55.3''
print_me("Elongation", elon.dms_str(n_dec=1))
# Elongation: 76d 2' 26.0''
Print mean orbital elements for Jupiter at 2065.6.24::
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Jupiter.orbital_elements_mean_equinox(epoch)
print_me("Mean longitude of the planet", round(l, 6))
# Mean longitude of the planet: 222.433723
print_me("Semimajor axis of the orbit (UA)", round(a, 8))
# Semimajor axis of the orbit (UA): 5.20260333
print_me("Eccentricity of the orbit", round(e, 7))
# Eccentricity of the orbit: 0.0486046
print_me("Inclination on plane of the ecliptic", round(i, 6))
# Inclination on plane of the ecliptic: 1.29967
print_me("Longitude of the ascending node", round(ome, 5))
# Longitude of the ascending node: 101.13309
print_me("Argument of the perihelion", round(arg, 6))
# Argument of the perihelion: -85.745532
Compute the time of the conjunction close to 1993/10/1::
epoch = Epoch(1993, 10, 1.0)
conj = Jupiter.conjunction(epoch)
y, m, d = conj.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Conjunction date", date)
# Conjunction date: 1993/10/18.3341
Compute the time of the opposition close to -6/9/1::
epoch = Epoch(-6, 9, 1.0)
oppo = Jupiter.opposition(epoch)
y, m, d = oppo.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Opposition date", date)
# Opposition date: -6/9/15.2865
Compute the time of the station in longitude #1 close to 2018/11/1::
epoch = Epoch(2018, 11, 1.0)
sta1 = Jupiter.station_longitude_1(epoch)
y, m, d = sta1.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Date of station in longitude #1", date)
# Date of station in longitude #1: 2018/3/9.1288
Compute the time of the station in longitude #2 close to 2018/11/1::
epoch = Epoch(2018, 11, 1.0)
sta2 = Jupiter.station_longitude_2(epoch)
y, m, d = sta2.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Date of station in longitude #2", date)
# Date of station in longitude #2: 2018/7/10.6679
Find the epoch of the Aphelion closer to 1981/6/1::
epoch = Epoch(1981, 6, 1.0)
e = Jupiter.perihelion_aphelion(epoch, perihelion=False)
y, m, d, h, mi, s = e.get_full_date()
peri = str(y) + '/' + str(m) + '/' + str(d) + ' at ' + str(h) + ' hours'
print_me("The Aphelion closest to 1981/6/1 will happen on", peri)
# The Aphelion closest to 1981/6/1 will happen on: 1981/7/28 at 6 hours
Compute the time of passage through an ascending node::
epoch = Epoch(2019, 1, 1)
time, r = Jupiter.passage_nodes(epoch)
y, m, d = time.get_date()
d = round(d, 1)
print("Time of passage through ascending node: {}/{}/{}".format(y, m, d))
# Time of passage through ascending node: 2025/9/15.6
print("Radius vector at ascending node: {}".format(round(r, 4)))
# Radius vector at ascending node: 5.1729
pymeeus-0.3.6/docs/source/ex-Mars.rst 0000664 0000000 0000000 00000007554 13555455377 0017543 0 ustar 00root root 0000000 0000000 Mars examples
*************
Let's define a small helper function::
def print_me(msg, val):
print("{}: {}".format(msg, val))
We can compute the geometric heliocentric position for a given epoch::
epoch = Epoch(2018, 10, 27.0)
lon, lat, r = Mars.geometric_heliocentric_position(epoch)
print_me("Geometric Heliocentric Longitude", lon.to_positive())
# Geometric Heliocentric Longitude: 2.0015
print_me("Geometric Heliocentric Latitude", lat)
# Geometric Heliocentric Latitude: -1.3683
print_me("Radius vector", r)
# Radius vector: 1.39306
Compute the geocentric position for 1992/12/20::
epoch = Epoch(1992, 12, 20.0)
ra, dec, elon = Mars.geocentric_position(epoch)
print_me("Right ascension", ra.ra_str(n_dec=1))
# Right ascension: 7h 48' 35.4''
print_me("Declination", dec.dms_str(n_dec=1))
# Declination: 24d 35' 33.9''
print_me("Elongation", elon.dms_str(n_dec=1))
# Elongation: 153d 35' 1.6''
Print mean orbital elements for Mars at 2065.6.24::
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Mars.orbital_elements_mean_equinox(epoch)
print_me("Mean longitude of the planet", round(l, 6))
# Mean longitude of the planet: 288.855211
print_me("Semimajor axis of the orbit (UA)", round(a, 8))
# Semimajor axis of the orbit (UA): 1.52367934
print_me("Eccentricity of the orbit", round(e, 7))
# Eccentricity of the orbit: 0.0934599
print_me("Inclination on plane of the ecliptic", round(i, 6))
# Inclination on plane of the ecliptic: 1.849338
print_me("Longitude of the ascending node", round(ome, 5))
# Longitude of the ascending node: 50.06365
print_me("Argument of the perihelion", round(arg, 6))
# Argument of the perihelion: 287.202108
Compute the time of the conjunction close to 1993/10/1::
epoch = Epoch(1993, 10, 1.0)
conj = Mars.conjunction(epoch)
y, m, d = conj.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Conjunction date", date)
# Conjunction date: 1993/12/27.0898
Compute the time of the opposition close to 2729/10/1::
epoch = Epoch(2729, 10, 1.0)
oppo = Mars.opposition(epoch)
y, m, d = oppo.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Opposition date", date)
# Opposition date: 2729/9/9.1412
Compute the time of the station in longitude #1 close to 1997/3/1::
epoch = Epoch(1997, 3, 1.0)
sta1 = Mars.station_longitude_1(epoch)
y, m, d = sta1.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Date of station in longitude #1", date)
# Date of station in longitude #1: 1997/2/6.033
Compute the time of the station in longitude #2 close to 1997/3/1::
epoch = Epoch(1997, 3, 1.0)
sta2 = Mars.station_longitude_2(epoch)
y, m, d = sta2.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Date of station in longitude #2", date)
# Date of station in longitude #2: 1997/4/27.7553
Find the epoch of the Aphelion closer to 2032/1/1::
epoch = Epoch(2032, 1, 1.0)
e = Mars.perihelion_aphelion(epoch, perihelion=False)
y, m, d, h, mi, s = e.get_full_date()
peri = str(y) + '/' + str(m) + '/' + str(d) + ' at ' + str(h) + ' hours'
print_me("The Aphelion closest to 2032/1/1 will happen on", peri)
# The Aphelion closest to 2032/1/1 will happen on: 2032/10/24 at 22 hours
Compute the time of passage through an ascending node::
epoch = Epoch(2019, 1, 1)
time, r = Mars.passage_nodes(epoch)
y, m, d = time.get_date()
d = round(d, 1)
print("Time of passage through ascending node: {}/{}/{}".format(y, m, d))
# Time of passage through ascending node: 2019/1/15.2
print("Radius vector at ascending node: {}".format(round(r, 4)))
# Radius vector at ascending node: 1.4709
pymeeus-0.3.6/docs/source/ex-Mercury.rst 0000664 0000000 0000000 00000011712 13555455377 0020256 0 ustar 00root root 0000000 0000000 Mercury examples
****************
Let's define a small helper function::
def print_me(msg, val):
print("{}: {}".format(msg, val))
We can compute the geometric heliocentric position for a given epoch::
epoch = Epoch(2018, 10, 27.0)
lon, lat, r = Mercury.geometric_heliocentric_position(epoch)
print_me("Geometric Heliocentric Longitude", lon.to_positive())
# Geometric Heliocentric Longitude: 287.4887
print_me("Geometric Heliocentric Latitude", lat)
# Geometric Heliocentric Latitude: -6.0086
print_me("Radius vector", r)
# Radius vector: 0.45113
Compute the geocentric position for 1992/12/20::
epoch = Epoch(1992, 12, 20.0)
ra, dec, elon = Mercury.geocentric_position(epoch)
print_me("Right ascension", ra.ra_str(n_dec=1))
# Right ascension: 16h 33' 59.3''
print_me("Declination", dec.dms_str(n_dec=1))
# Declination: -20d 53' 31.6''
print_me("Elongation", elon.dms_str(n_dec=1))
# Elongation: 18d 24' 29.8''
Print mean orbital elements for Mercury at 2065.6.24::
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Mercury.orbital_elements_mean_equinox(epoch)
print_me("Mean longitude of the planet", round(l, 6))
# Mean longitude of the planet: 203.494701
print_me("Semimajor axis of the orbit (UA)", round(a, 8))
# Semimajor axis of the orbit (UA): 0.38709831
print_me("Eccentricity of the orbit", round(e, 7))
# Eccentricity of the orbit: 0.2056451
print_me("Inclination on plane of the ecliptic", round(i, 6))
# Inclination on plane of the ecliptic: 7.006171
print_me("Longitude of the ascending node", round(ome, 5))
# Longitude of the ascending node: 49.10765
print_me("Argument of the perihelion", round(arg, 6))
# Argument of the perihelion: 29.367732
Compute the time of the inferior conjunction close to 1993/10/1::
epoch = Epoch(1993, 10, 1.0)
conjunction = Mercury.inferior_conjunction(epoch)
y, m, d = conjunction.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Inferior conjunction date", date)
# Inferior conjunction date: 1993/11/6.1449
Compute the time of the superior conjunction close to 1993/10/1::
epoch = Epoch(1993, 10, 1.0)
conjunction = Mercury.superior_conjunction(epoch)
y, m, d = conjunction.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Superior conjunction date", date)
# Superior conjunction date: 1993/8/29.3301
Compute the time and angle of the western elongation close to 1993/11/1::
epoch = Epoch(1993, 11, 1.0)
time, elongation = Mercury.western_elongation(epoch)
y, m, d = time.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Western elongation date", date)
# Western elongation date: 1993/11/22.6386
elong = round(elongation, 4)
print_me("Maximum western elongation angle", elong)
# Maximum western elongation angle: 19.7506
Compute the time and angle of the eastern elongation close to 1990/8/1::
epoch = Epoch(1990, 8, 1.0)
time, elongation = Mercury.eastern_elongation(epoch)
y, m, d = time.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Eastern elongation date", date)
# Eastern elongation date: 1990/8/11.8514
elong = round(elongation, 4)
print_me("Maximum eastern elongation angle", elong)
# Maximum eastern elongation angle: 27.4201
Compute the time of the station in longitude #1 close to 1993/10/1::
epoch = Epoch(1993, 10, 1.0)
sta1 = Mercury.station_longitude_1(epoch)
y, m, d = sta1.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Date of station in longitude #1", date)
# Date of station in longitude #1: 1993/10/25.9358
Compute the time of the station in longitude #2 close to 1993/10/1::
epoch = Epoch(1993, 10, 1.0)
sta2 = Mercury.station_longitude_2(epoch)
y, m, d = sta2.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Date of station in longitude #2", date)
# Date of station in longitude #2: 1993/11/15.0724
Find the epoch of the Perihelion closer to 2000/01/01::
epoch = Epoch(2000, 1, 1.0)
e = Mercury.perihelion_aphelion(epoch)
y, m, d, h, mi, s = e.get_full_date()
peri = str(y) + '/' + str(m) + '/' + str(d) + ' at ' + str(h) + ' hours'
print_me("The Perihelion closest to 2000/1/1 happened on", peri)
# The Perihelion closest to 2000/1/1 happened on: 2000/2/15 at 18 hours
Compute the time of passage through an ascending node::
epoch = Epoch(2019, 1, 1)
time, r = Mercury.passage_nodes(epoch)
y, m, d = time.get_date()
d = round(d, 1)
print("Time of passage through ascending node: {}/{}/{}".format(y, m, d))
# Time of passage through ascending node: 2018/11/24.7
print("Radius vector at ascending node: {}".format(round(r, 4)))
# Radius vector at ascending node: 0.3143
pymeeus-0.3.6/docs/source/ex-Minor.rst 0000664 0000000 0000000 00000002545 13555455377 0017720 0 ustar 00root root 0000000 0000000 Minor examples
**************
Let's define a small helper function::
def print_me(msg, val):
print("{}: {}".format(msg, val))
Let's compute the equatorial coordinates of comet Encke::
a = 2.2091404
e = 0.8502196
q = a * (1.0 - e)
i = Angle(11.94524)
omega = Angle(334.75006)
w = Angle(186.23352)
t = Epoch(1990, 10, 28.54502)
epoch = Epoch(1990, 10, 6.0)
minor = Minor(q, e, i, omega, w, t)
ra, dec, elong = minor.geocentric_position(epoch)
print_me("Right ascension", ra.ra_str(n_dec=1))
# Right ascension: 10h 34' 13.7''
print_me("Declination", dec.dms_str(n_dec=0))
# Declination: 19d 9' 32.0''
print_me("Elongation", round(elong, 2))
# Elongation: 40.51
Now compute the heliocentric ecliptical coordinates::
a = 2.2091404
e = 0.8502196
q = a * (1.0 - e)
i = Angle(11.94524)
omega = Angle(334.75006)
w = Angle(186.23352)
t = Epoch(1990, 10, 28.54502)
epoch = Epoch(1990, 10, 6.0)
minor = Minor(q, e, i, omega, w, t)
lon, lat = minor.heliocentric_ecliptical_position(epoch)
print_me("Heliocentric ecliptical longitude", lon.dms_str(n_dec=1))
# Heliocentric ecliptical longitude: 66d 51' 57.8''
print_me("Heliocentric ecliptical latitude", lat.dms_str(n_dec=1))
# Heliocentric ecliptical latitude: 11d 56' 14.4''
pymeeus-0.3.6/docs/source/ex-Neptune.rst 0000664 0000000 0000000 00000004576 13555455377 0020260 0 ustar 00root root 0000000 0000000 Neptune examples
****************
Let's define a small helper function::
def print_me(msg, val):
print("{}: {}".format(msg, val))
We can compute the geometric heliocentric position for a given epoch::
epoch = Epoch(2018, 10, 27.0)
lon, lat, r = Neptune.geometric_heliocentric_position(epoch)
print_me("Geometric Heliocentric Longitude", lon.to_positive())
# Geometric Heliocentric Longitude: 345.3776
print_me("Geometric Heliocentric Latitude", lat)
# Geometric Heliocentric Latitude: -0.9735
print_me("Radius vector", r)
# Radius vector: 29.93966
Compute the geocentric position for 1992/12/20::
epoch = Epoch(1992, 12, 20.0)
ra, dec, elon = Neptune.geocentric_position(epoch)
print_me("Right ascension", ra.ra_str(n_dec=1))
# Right ascension: 19h 17' 14.5''
print_me("Declination", dec.dms_str(n_dec=1))
# Declination: -21d 34' 15.1''
print_me("Elongation", elon.dms_str(n_dec=1))
# Elongation: 19d 44' 59.6''
Print mean orbital elements for Neptune at 2065.6.24::
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Neptune.orbital_elements_mean_equinox(epoch)
print_me("Mean longitude of the planet", round(l, 6))
# Mean longitude of the planet: 88.321947
print_me("Semimajor axis of the orbit (UA)", round(a, 8))
# Semimajor axis of the orbit (UA): 30.11038676
print_me("Eccentricity of the orbit", round(e, 7))
# Eccentricity of the orbit: 0.0094597
print_me("Inclination on plane of the ecliptic", round(i, 6))
# Inclination on plane of the ecliptic: 1.763855
print_me("Longitude of the ascending node", round(ome, 5))
# Longitude of the ascending node: 132.46986
print_me("Argument of the perihelion", round(arg, 6))
# Argument of the perihelion: -83.415521
Compute the time of the conjunction close to 1993/10/1::
epoch = Epoch(1993, 10, 1.0)
conj = Neptune.conjunction(epoch)
y, m, d = conj.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Conjunction date", date)
# Conjunction date: 1994/1/11.3057
Compute the time of the opposition close to 1846/8/1::
epoch = Epoch(1846, 8, 1)
oppo = Neptune.opposition(epoch)
y, m, d = oppo.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Opposition date", date)
# Opposition date: 1846/8/20.1623
pymeeus-0.3.6/docs/source/ex-Pluto.rst 0000664 0000000 0000000 00000001642 13555455377 0017734 0 ustar 00root root 0000000 0000000 Pluto examples
**************
Let's define a small helper function::
def print_me(msg, val):
print("{}: {}".format(msg, val))
We can compute the geometric heliocentric position for a given epoch::
epoch = Epoch(2018, 10, 27.0)
lon, lat, r = Pluto.geometric_heliocentric_position(epoch)
print_me("Geometric Heliocentric Longitude", lon.to_positive())
# Geometric Heliocentric Longitude: 232.740711423
print_me("Geometric Heliocentric Latitude", lat)
# Geometric Heliocentric Latitude: 14.5878173017
print_me("Radius vector", r)
# Radius vector: 29.711110981
Compute the geocentric position for 1992/12/20::
epoch = Epoch(1992, 12, 20.0)
ra, dec, elon = Pluto.geocentric_position(epoch)
print_me("Right ascension", ra.ra_str(n_dec=1))
# Right ascension: 15h 31' 43.7''
print_me("Declination", dec.dms_str(n_dec=1))
# Declination: -4d 27' 28.8''
pymeeus-0.3.6/docs/source/ex-Saturn.rst 0000664 0000000 0000000 00000007561 13555455377 0020113 0 ustar 00root root 0000000 0000000 Saturn examples
***************
Let's define a small helper function::
def print_me(msg, val):
print("{}: {}".format(msg, val))
We can compute the geometric heliocentric position for a given epoch::
epoch = Epoch(2018, 10, 27.0)
lon, lat, r = Saturn.geometric_heliocentric_position(epoch)
print_me("Geometric Heliocentric Longitude", lon.to_positive())
# Geometric Heliocentric Longitude: 279.5108
print_me("Geometric Heliocentric Latitude", lat)
# Geometric Heliocentric Latitude: 0.6141
print_me("Radius vector", r)
# Radius vector: 10.06266
Compute the geocentric position for 1992/12/20::
epoch = Epoch(1992, 12, 20.0)
ra, dec, elon = Saturn.geocentric_position(epoch)
print_me("Right ascension", ra.ra_str(n_dec=1))
# Right ascension: 21h 11' 41.8''
print_me("Declination", dec.dms_str(n_dec=1))
# Declination: -17d 15' 40.8''
print_me("Elongation", elon.dms_str(n_dec=1))
# Elongation: 46d 51' 47.7''
Print mean orbital elements for Saturn at 2065.6.24::
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Saturn.orbital_elements_mean_equinox(epoch)
print_me("Mean longitude of the planet", round(l, 6))
# Mean longitude of the planet: 131.196871
print_me("Semimajor axis of the orbit (UA)", round(a, 8))
# Semimajor axis of the orbit (UA): 9.55490779
print_me("Eccentricity of the orbit", round(e, 7))
# Eccentricity of the orbit: 0.0553209
print_me("Inclination on plane of the ecliptic", round(i, 6))
# Inclination on plane of the ecliptic: 2.486426
print_me("Longitude of the ascending node", round(ome, 5))
# Longitude of the ascending node: 114.23974
print_me("Argument of the perihelion", round(arg, 6))
# Argument of the perihelion: -19.896331
Compute the time of the conjunction close to 2125/6/1::
epoch = Epoch(2125, 6, 1.0)
conj = Saturn.conjunction(epoch)
y, m, d = conj.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Conjunction date", date)
# Conjunction date: 2125/8/26.4035
Compute the time of the opposition close to -6/9/1::
epoch = Epoch(-6, 9, 1.0)
oppo = Saturn.opposition(epoch)
y, m, d = oppo.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Opposition date", date)
# Opposition date: -6/9/14.3709
Compute the time of the station in longitude #1 close to 2018/11/1::
epoch = Epoch(2018, 11, 1.0)
sta1 = Saturn.station_longitude_1(epoch)
y, m, d = sta1.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Date of station in longitude #1", date)
# Date of station in longitude #1: 2018/4/17.9433
Compute the time of the station in longitude #2 close to 2018/11/1::
epoch = Epoch(2018, 11, 1.0)
sta2 = Saturn.station_longitude_2(epoch)
y, m, d = sta2.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Date of station in longitude #2", date)
# Date of station in longitude #2: 2018/9/6.4175
Find the epoch of the Perihelion closer to 2000/1/1::
epoch = Epoch(2000, 1, 1.0)
e = Saturn.perihelion_aphelion(epoch)
y, m, d, h, mi, s = e.get_full_date()
peri = str(y) + '/' + str(m) + '/' + str(d) + ' at ' + str(h) + ' hours'
print_me("The Perihelion closest to 2000/1/1 happened on", peri)
# The Perihelion closest to 2000/1/1 happened on: 2003/7/26 at 15 hours
Compute the time of passage through an ascending node::
epoch = Epoch(2019, 1, 1)
time, r = Saturn.passage_nodes(epoch)
y, m, d = time.get_date()
d = round(d, 1)
print("Time of passage through ascending node: {}/{}/{}".format(y, m, d))
# Time of passage through ascending node: 2034/5/30.2
print("Radius vector at ascending node: {}".format(round(r, 4)))
# Radius vector at ascending node: 9.0546
pymeeus-0.3.6/docs/source/ex-Sun.rst 0000664 0000000 0000000 00000011406 13555455377 0017375 0 ustar 00root root 0000000 0000000 Sun examples
************
Let's define a small helper function::
def print_me(msg, val):
print("{}: {}".format(msg, val))
It is possible to compute an approximation of the Sun's **true** ecliptical longitude::
epoch = Epoch(1992, 10, 13)
true_lon, r = Sun.true_longitude_coarse(epoch)
print_me("Sun's approximate true longitude", true_lon.dms_str(n_dec=0))
# Sun's approximate true longitude: 199d 54' 36.0''
print_me("Sun's radius vector", round(r, 5))
# Sun's radius vector: 0.99766
Now let's compute the Sun's approximate **apparent** ecliptical longitude::
epoch = Epoch(1992, 10, 13)
app_lon, r = Sun.apparent_longitude_coarse(epoch)
print_me("Sun's approximate apparent longitude", app_lon.dms_str(n_dec=0))
# Sun's approximate apparent longitude: 199d 54' 32.0''
And now is the turn for the **apparent** right ascension and declination::
epoch = Epoch(1992, 10, 13)
ra, delta, r = Sun.apparent_rightascension_declination_coarse(epoch)
print_me("Sun's apparent right ascension", ra.ra_str(n_dec=1))
# Sun's apparent right ascension: 13h 13' 31.4''
print_me("Sun's apparent declination", delta.dms_str(n_dec=0))
# Sun's apparent declination: -7d 47' 6.0''
Now, let's compute Sun's true (**geometric**) position again, but more accurately::
epoch = Epoch(1992, 10, 13.0)
l, b, r = Sun.geometric_geocentric_position(epoch, toFK5=False)
print_me("Geometric Geocentric Longitude", round(l.to_positive(), 6))
# Geometric Geocentric Longitude: 199.907297
print_me("Geometric Geocentric Latitude", b.dms_str(n_dec=3))
# Geometric Geocentric Latitude: 0.744''
print_me("Radius vector", round(r, 8))
# Radius vector: 0.99760852
Compute Sun's **apparent** postion accurately::
epoch = Epoch(1992, 10, 13.0)
l, b, r = Sun.apparent_geocentric_position(epoch)
print_me("Apparent Geocentric Longitude", l.to_positive().dms_str(n_dec=3))
# Apparent Geocentric Longitude: 199d 54' 21.548''
print_me("Apparent Geocentric Latitude", b.dms_str(n_dec=3))
# Apparent Geocentric Latitude; 0.721''
print_me("Radius vector", round(r, 8))
# Radius vector: 0.99760852
We can compute rectangular coordinates referred to mean equinox of date::
epoch = Epoch(1992, 10, 13.0)
x, y, z = Sun.rectangular_coordinates_mean_equinox(epoch)
print_me("X", round(x, 7))
# X: -0.9379963
print_me("Y", round(y, 6))
# Y: -0.311654
print_me("Z", round(z, 7))
# Z: -0.1351207
Now, compute rectangular coordinates w.r.t. standard equinox J2000.0::
epoch = Epoch(1992, 10, 13.0)
x, y, z = Sun.rectangular_coordinates_j2000(epoch)
print_me("X", round(x, 8))
# X: -0.93740485
print_me("Y", round(y, 8))
# Y: -0.3131474
print_me("Z", round(z, 8))
# Z: -0.12456646
Compute rectangular coordinates w.r.t. mean equinox of B1950.0::
epoch = Epoch(1992, 10, 13.0)
x, y, z = Sun.rectangular_coordinates_b1950(epoch)
print_me("X", round(x, 8))
# X: -0.94149557
print_me("Y", round(y, 8))
# Y: -0.30259922
print_me("Z", round(z, 8))
# Z: -0.11578695
And compute rectangular coordinates w.r.t. an arbitrary mean equinox::
epoch = Epoch(1992, 10, 13.0)
e_equinox = Epoch(2467616.0)
x, y, z = Sun.rectangular_coordinates_equinox(epoch, e_equinox)
print_me("X", round(x, 8))
# X: -0.93373777
print_me("Y", round(y, 8))
# Y: -0.32235109
print_me("Z", round(z, 8))
# Z: -0.12856709
It is possible to compute the date of equinoxes and solstices::
epoch = Sun.get_equinox_solstice(1962, target="summer")
y, m, d, h, mi, s = epoch.get_full_date()
print("The summer solstice of 1962:")
print("{}/{}/{} {}:{}:{}".format(y, m, d, h, mi, round(s, 0)))
# 1962/6/21 21:24:42.0
The equation of time, i.e., the difference between apparent and mean time, can be easily computed::
epoch = Epoch(1992, 10, 13.0)
m, s = Sun.equation_of_time(epoch)
print("Equation of time difference: {} min {} secs".format(m, round(s, 1)))
# Equation of time difference: 13 min 42.6 secs
Compute the ephemeris of physical observations of the Sun using Carrington's formulas::
epoch = Epoch(1992, 10, 13)
p, b0, l0 = Sun.ephemeris_physical_observations(epoch)
print("Ephemeris of physical observations of the Sun:")
print_me("P ", round(p, 2))
# P : 26.27
print_me("B0", round(b0, 2))
# B0: 5.99
print_me("L0", round(l0, 2))
# L0: 238.63
Get the epoch when the Carrington's synodic rotation No. 'number' starts::
epoch = Sun.beginning_synodic_rotation(1699)
print_me("Epoch for Carrington's synodic rotation No. 1699", round(epoch(), 3))
# Epoch for Carrington's synodic rotation No. 1699: 2444480.723
pymeeus-0.3.6/docs/source/ex-Uranus.rst 0000664 0000000 0000000 00000006213 13555455377 0020105 0 ustar 00root root 0000000 0000000 Uranus examples
***************
Let's define a small helper function::
def print_me(msg, val):
print("{}: {}".format(msg, val))
We can compute the geometric heliocentric position for a given epoch::
epoch = Epoch(2018, 10, 27.0)
lon, lat, r = Uranus.geometric_heliocentric_position(epoch)
print_me("Geometric Heliocentric Longitude", lon.to_positive())
# Geometric Heliocentric Longitude: 30.5888
print_me("Geometric Heliocentric Latitude", lat)
# Geometric Heliocentric Latitude: -0.5315
print_me("Radius vector", r)
# Radius vector: 19.86964
Compute the geocentric position for 1992/12/20::
epoch = Epoch(1992, 12, 20.0)
ra, dec, elon = Uranus.geocentric_position(epoch)
print_me("Right ascension", ra.ra_str(n_dec=1))
# Right ascension: 19h 13' 48.7''
print_me("Declination", dec.dms_str(n_dec=1))
# Declination: -22d 46' 13.0''
print_me("Elongation", elon.dms_str(n_dec=1))
# Elongation: 18d 44' 18.7''
Print mean orbital elements for Uranus at 2065.6.24::
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Uranus.orbital_elements_mean_equinox(epoch)
print_me("Mean longitude of the planet", round(l, 6))
# Mean longitude of the planet: 235.517526
print_me("Semimajor axis of the orbit (UA)", round(a, 8))
# Semimajor axis of the orbit (UA): 19.21844604
print_me("Eccentricity of the orbit", round(e, 7))
# Eccentricity of the orbit: 0.0463634
print_me("Inclination on plane of the ecliptic", round(i, 6))
# Inclination on plane of the ecliptic: 0.77372
print_me("Longitude of the ascending node", round(ome, 5))
# Longitude of the ascending node: 74.34776
print_me("Argument of the perihelion", round(arg, 6))
# Argument of the perihelion: 99.630865
Compute the time of the conjunction close to 1993/10/1::
epoch = Epoch(1993, 10, 1.0)
conj = Uranus.conjunction(epoch)
y, m, d = conj.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Conjunction date", date)
# Conjunction date: 1994/1/12.7365
Compute the time of the opposition close to 1780/12/1::
epoch = Epoch(1780, 12, 1.0)
oppo = Uranus.opposition(epoch)
y, m, d = oppo.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Opposition date", date)
# Opposition date: 1780/12/17.5998
Find the epoch of the Perihelion closer to 1780/1/1::
epoch = Epoch(1780, 1, 1.0)
e = Uranus.perihelion_aphelion(epoch)
y, m, d = e.get_date()
peri = str(y) + '/' + str(m) + '/' + str(int(d))
print_me("The Perihelion closest to 1780/1/1 happened on", peri)
# The Perihelion closest to 1780/1/1 happened on: 1798/2/26
Compute the time of passage through an ascending node::
epoch = Epoch(2019, 1, 1)
time, r = Uranus.passage_nodes(epoch)
y, m, d = time.get_date()
d = round(d, 1)
print("Time of passage through ascending node: {}/{}/{}".format(y, m, d))
# Time of passage through ascending node: 2028/8/23.2
print("Radius vector at ascending node: {}".format(round(r, 4)))
# Radius vector at ascending node: 19.3201
pymeeus-0.3.6/docs/source/ex-Venus.rst 0000664 0000000 0000000 00000012745 13555455377 0017737 0 ustar 00root root 0000000 0000000 Venus examples
**************
Let's define a small helper function::
def print_me(msg, val):
print("{}: {}".format(msg, val))
We can compute the geometric heliocentric position for a given epoch::
epoch = Epoch(1992, 12, 20.0)
lon, lat, r = Venus.geometric_heliocentric_position(epoch)
print_me("Geometric Heliocentric Longitude", round(lon.to_positive(), 5))
# Geometric Heliocentric Longitude: 26.11428
print_me("Geometric Heliocentric Latitude", round(lat, 4))
# Geometric Heliocentric Latitude: -2.6207
print_me("Radius vector", round(r, 6))
# Radius vector: 0.724603
Compute the geocentric position for 1992/12/20::
epoch = Epoch(1992, 12, 20.0)
ra, dec, elon = Venus.geocentric_position(epoch)
print_me("Right ascension", ra.ra_str(n_dec=1))
# Right ascension: 21h 4' 41.5''
print_me("Declination", dec.dms_str(n_dec=1))
# Declination: -18d 53' 16.8''
print_me("Elongation", elon.dms_str(n_dec=1))
# Elongation: 44d 46' 8.9''
Print mean orbital elements for Venus at 2065.6.24::
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Venus.orbital_elements_mean_equinox(epoch)
print_me("Mean longitude of the planet", round(l, 6))
# Mean longitude of the planet: 338.646306
print_me("Semimajor axis of the orbit (UA)", round(a, 8))
# Semimajor axis of the orbit (UA): 0.72332982
print_me("Eccentricity of the orbit", round(e, 7))
# Eccentricity of the orbit: 0.0067407
print_me("Inclination on plane of the ecliptic", round(i, 6))
# Inclination on plane of the ecliptic: 3.395319
print_me("Longitude of the ascending node", round(ome, 5))
# Longitude of the ascending node: 77.27012
print_me("Argument of the perihelion", round(arg, 6))
# Argument of the perihelion: 55.211257
Compute the time of the inferior conjunction close to 1882/12/1.0::
epoch = Epoch(1882, 12, 1.0)
conjunction = Venus.inferior_conjunction(epoch)
y, m, d = conjunction.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Inferior conjunction date", date)
# Inferior conjunction date: 1882/12/6.6912
Compute the time of the superior conjunction close to 1993/10/1::
epoch = Epoch(1993, 10, 1.0)
conjunction = Venus.superior_conjunction(epoch)
y, m, d = conjunction.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Superior conjunction date", date)
# Superior conjunction date: 1994/1/17.0465
Compute the time and angle of the western elongation close to 2019/1/1::
epoch = Epoch(2019, 1, 1.0)
time, elongation = Venus.western_elongation(epoch)
y, m, d = time.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Western elongation date", date)
# Western elongation date: 2019/1/6.1895
elong = round(elongation, 4)
print_me("Maximum western elongation angle", elong)
# Maximum western elongation angle: 46.9571
Compute the time and angle of the eastern elongation close to 2019/10/1::
epoch = Epoch(2019, 10, 1.0)
time, elongation = Venus.eastern_elongation(epoch)
y, m, d = time.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Eastern elongation date", date)
# Eastern elongation date: 2020/3/24.9179
elong = round(elongation, 4)
print_me("Maximum eastern elongation angle", elong)
# Maximum eastern elongation angle: 46.078
Compute the time of the station in longitude #1 close to 2018/12/1::
epoch = Epoch(2018, 12, 1.0)
sta1 = Venus.station_longitude_1(epoch)
y, m, d = sta1.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Date of station in longitude #1", date)
# Date of station in longitude #1: 2018/10/5.7908
Compute the time of the station in longitude #2 close to 2018/12/1::
epoch = Epoch(2018, 12, 1.0)
sta2 = Venus.station_longitude_2(epoch)
y, m, d = sta2.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Date of station in longitude #2", date)
# Date of station in longitude #2: 2018/11/16.439
Find the epoch of the Perihelion closer to 1978/10/15::
epoch = Epoch(1978, 10, 15.0)
e = Venus.perihelion_aphelion(epoch)
y, m, d, h, mi, s = e.get_full_date()
peri = str(y) + '/' + str(m) + '/' + str(d) + ' at ' + str(h) + ' hours'
print_me("The Perihelion closest to 1978/10/15 happened on", peri)
# The Perihelion closest to 1978/10/15 happened on: 1978/12/31 at 4 hours
Compute the time of passage through an ascending node::
epoch = Epoch(1979, 1, 1)
time, r = Venus.passage_nodes(epoch)
y, m, d = time.get_date()
d = round(d, 1)
print("Time of passage through ascending node: {}/{}/{}".format(y, m, d))
# Time of passage through ascending node: 1978/11/27.4
print("Radius vector at ascending node: {}".format(round(r, 4)))
# Radius vector at ascending node: 0.7205
Compute the (approximate) illuminated fraction of Venus disk for an Epoch::
epoch = Epoch(1992, 12, 20)
k = Venus.illuminated_fraction(epoch)
print_me("Approximate illuminated fraction of Venus", round(k, 2))
# Approximate illuminated fraction of Venus: 0.64
Compute the magnitude of Venus::
sun_dist = 0.724604
earth_dist = 0.910947
phase_angle = Angle(72.96)
m = Venus.magnitude(sun_dist, earth_dist, phase_angle)
print_me("Venus' magnitude", round(m, 1))
# Venus' magnitude: -3.8
pymeeus-0.3.6/docs/source/ex-base.rst 0000664 0000000 0000000 00000001534 13555455377 0017543 0 ustar 00root root 0000000 0000000 Base examples
*************
Let's define a small helper function::
def print_me(msg, val):
print("{}: {}".format(msg, val))
Let's print the tolerance::
print_me("The default value for the tolerance is", TOL)
The default value for the tolerance is: 1e-10
Find the accuracy of this computer::
j, d = machine_accuracy()
print_me("Number of significant BITS in the mantissa\t", j)
Number of significant BITS in the mantissa : 52.0
print_me("Number of significant DIGITS in a decimal number", d)
Number of significant DIGITS in a decimal number: 15
Print the suffixes for some ordinal numbers::
print_me("The suffix for ordinal 2 is", get_ordinal_suffix(2))
The suffix for ordinal 2 is: nd
print_me("The suffix for ordinal 16 is", get_ordinal_suffix(16))
The suffix for ordinal 16 is: th
pymeeus-0.3.6/docs/source/index.rst 0000664 0000000 0000000 00000001525 13555455377 0017326 0 ustar 00root root 0000000 0000000 .. PyMeeus documentation master file, created by
sphinx-quickstart on Wed Jun 27 23:07:31 2018.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
.. include:: ../../README.rst
.. toctree::
:maxdepth: 2
:caption: API:
base
Angle
Coordinates
CurveFitting
Earth
Epoch
Interpolation
Jupiter
Mars
Mercury
Minor
Neptune
Pluto
Saturn
Sun
Uranus
Venus
.. toctree::
:maxdepth: 2
:caption: Examples:
ex-base
ex-Angle
ex-Coordinates
ex-CurveFitting
ex-Earth
ex-Epoch
ex-Interpolation
ex-Jupiter
ex-Mars
ex-Mercury
ex-Minor
ex-Neptune
ex-Pluto
ex-Saturn
ex-Sun
ex-Uranus
ex-Venus
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
pymeeus-0.3.6/pymeeus/ 0000775 0000000 0000000 00000000000 13555455377 0014721 5 ustar 00root root 0000000 0000000 pymeeus-0.3.6/pymeeus/Angle.py 0000664 0000000 0000000 00000117377 13555455377 0016341 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from math import pi, degrees, radians
from pymeeus.base import TOL
"""
.. module:: Angle
:synopsis: Class to handle angles
:license: GNU Lesser General Public License v3 (LGPLv3)
.. moduleauthor:: Dagoberto Salazar
"""
class Angle(object):
"""
Class Angle deals with angles in either decimal format (d.dd) or in
sexagesimal format (d m' s'').
It provides methods to handle an Angle object like it were a simple float,
but adding the functionality associated with an angle.
The constructor takes decimals and sexagesimal input. The sexagesimal
angles can be given as separate degree, minutes, seconds values, or as
tuples or lists. It is also possible to provide another Angle object as
input.
Also, if **radians=True** is passed to the constructor, then the input
value is considered as in radians, and converted to degrees.
"""
def __init__(self, *args, **kwargs):
"""Angle constructor.
It takes decimals and sexagesimal input. The sexagesimal angles can be
given as separate degree, minutes, seconds values, or as tuples or
lists. It is also possible to provide another Angle object as input.
If **radians=True** is passed, then the input value is converted from
radians to degrees.
If **ra=True** is passed, then the input value is converted from Right
Ascension to degrees
:param args: Input angle, in decimal or sexagesimal format, or Angle
:type args: int, float, list, tuple, :py:class:`Angle`
:param radians: If True, input angle is in radians. False by default.
:type radians: bool
:param ra: If True, input angle is in Right Ascension. False by default
:type ra: bool
:returns: Angle object.
:rtype: :py:class:`Angle`
:raises: TypeError if input values are of wrong type.
>>> a = Angle(-13, 30, 0.0)
>>> print(a)
-13.5
>>> b = Angle(a)
>>> print(b)
-13.5
"""
self._deg = 0.0 # Angle value is stored here in decimal format
self._tol = TOL
self.set(*args, **kwargs) # Let's use 'set()' method to set angle
@staticmethod
def reduce_deg(deg):
"""Takes a degree value in decimal format and converts it to a float
value in the +/-[0:360) range.
:param deg: Input degree angle in decimal format.
:type deg: int, float, :py:class:`Angle`
:returns: Float value of the angle in the +/-[0:360) range.
:rtype: float
>>> a = 386.3
>>> b = Angle.reduce_deg(a)
>>> print(round(b, 1))
26.3
"""
if abs(deg) >= 360.0:
# Extract the sign
sign = 1.0 if deg >= 0 else -1.0
frac = abs(deg) % 1 # Separate the fractional part
deg = int(abs(deg)) % 360 # Reduce to [0:360) range
deg = sign * (deg + frac) # Rebuild the value
return float(deg)
@staticmethod
def reduce_dms(degrees, minutes, seconds=0.0):
"""Takes a degree value in sexagesimal format and converts it to a
value in the +/-[0:360) range (degrees) and [0:60) range (minutes and
seconds). It also takes care of fractional degrees and minutes.
:param degrees: Degrees.
:type degrees: int, float
:param minutes: Minutes.
:type minutes: int, float
:param seconds: Seconds. 0.0 by default.
:type seconds: int, float
:returns: Angle in sexagesimal format, with ranges properly adjusted.
:rtype: tuple
>>> print(Angle.reduce_dms(-743.0, 26.0, 49.6))
(23, 26, 49.6, -1.0)
"""
# If any of the input values is negative, the sign is negative
sign = -1.0 if (degrees < 0) or (minutes < 0) or (seconds < 0) else 1.0
degrees = abs(degrees)
minutes = abs(minutes)
seconds = abs(seconds)
# We need to work first from degrees to seconds
if degrees % 1 > 0.0:
# The degrees value has decimals, push them to minutes
minutes += (degrees % 1) * 60.0
degrees = int(degrees) # Keep the integer part
if minutes % 1 > 0.0:
# The minutes value has decimals, push them to seconds
seconds += (minutes % 1) * 60.0
minutes = int(minutes)
# We now need to work from seconds to degrees, because of overflow
if seconds >= 60.0:
minutes += int(seconds / 60.0) # Push the excess to minutes
seconds = seconds % 60 # Keep the rest
if minutes >= 60.0:
degrees += int(minutes / 60.0) # Push the excess to degrees
minutes = minutes % 60 # Keep the rest
degrees = degrees % 360 # Keep degrees in [0:360) range
return (degrees, minutes, seconds, sign)
@staticmethod
def deg2dms(deg):
"""Converts input from decimal to sexagesimal angle format.
:param deg: Degrees decimal format.
:type deg: int, float
:returns: Angle in sexagesimal format, with ranges adjusted.
:rtype: tuple
.. note:: The output format is (Degrees, Minutes, Seconds, sign)
>>> print(Angle.deg2dms(23.44694444))
(23, 26, 48.999983999997596, 1.0)
"""
deg = Angle.reduce_deg(deg) # Reduce the degrees to the [0:360) range
# Extract the sign
sign = 1.0 if deg >= 0 else -1.0
# We have the sign, now let's work with positive numbers
deg = abs(deg)
mi = (deg % 1) * 60.0 # Get the minutes, with decimals
de = int(deg) # Get the integer part of the degrees
se = (mi % 1) * 60.0 # Get the seconds
mi = int(mi)
return (de, mi, se, sign)
@staticmethod
def dms2deg(degrees, minutes, seconds=0.0):
"""Converts an angle from sexagesimal to decimal format.
:param degrees: Degrees.
:type degrees: int, float
:param minutes: Minutes.
:type minutes: int, float
:param seconds: Seconds. 0.0 by default.
:type seconds: int, float
:returns: Angle in decimal format, within +/-[0:360) range.
:rtype: float
>>> print(Angle.dms2deg(-23, 26, 48.999983999997596))
-23.44694444
"""
(de, mi, se, sign) = Angle.reduce_dms(degrees, minutes, seconds)
deg = sign * (de + mi / 60.0 + se / 3600.0)
return float(deg)
def get_tolerance(self):
"""Gets the internal tolerance value used to compare Angles.
.. note:: The default tolerance value is **base.TOL**.
:returns: Internal tolerance.
:rtype: float
"""
return self._tol
def set_tolerance(self, tol):
"""Changes the internal tolerance value used to compare Angles.
:param tol: New tolerance value.
:type tol: int, float
:returns: None
:rtype: None
"""
self._tol = tol
return
def __call__(self):
"""Method used when object is called only with parenthesis.
:returns: The internal value of the Angle object.
:rtype: int, float
>>> a = Angle(54.6)
>>> print(a())
54.6
"""
return self._deg
def __str__(self):
"""Method used when trying to print the object.
:returns: Angle as string.
:rtype: string
>>> a = Angle(12.5)
>>> print(a)
12.5
"""
return str(self._deg)
def __repr__(self):
"""Method providing the 'official' string representation of the object.
It provides a valid expression that could be used to recreate the
object.
:returns: As string with a valid expression to recreate the object
:rtype: string
>>> a = Angle(12.5)
>>> repr(a)
'Angle(12.5)'
"""
return "{}({})".format(self.__class__.__name__, self._deg)
def set(self, *args, **kwargs):
"""Method used to define the value of the Angle object.
It takes decimals and sexagesimal input. The sexagesimal angles can be
given as separate degree, minutes, seconds values, or as tuples or
lists. It is also possible to provide another Angle object as input.
If **radians=True** is passed, then the input value is converted from
radians to degrees
If **ra=True** is passed, then the input value is converted from Right
Ascension to degrees
:param args: Input angle, in decimal or sexagesimal format, or Angle
:type args: int, float, list, tuple, :py:class:`Angle`
:param radians: If True, input angle is in radians. False by default.
:type radians: bool
:param ra: If True, input angle is in Right Ascension. False by default
:type ra: bool
:returns: None.
:rtype: None
:raises: TypeError if input values are of wrong type.
"""
if "ra" in kwargs:
if kwargs["ra"]:
# Input values are a Right Ascension
self.set_ra(*args)
return
# If no arguments are given, internal angle is set to zero
if len(args) == 0:
self._deg = 0.0
return
# If we have only one argument, it can be a single value, a tuple/list
# or an Angle
elif len(args) == 1:
deg = args[0]
if isinstance(deg, Angle): # Copy constructor
self._deg = deg._deg
self._tol = deg._tol
return
if isinstance(deg, (int, float)):
if "radians" in kwargs:
if kwargs["radians"]:
# Input value is in radians. Convert to degrees
deg = degrees(deg)
# This works for ints, floats and Angles
self._deg = Angle.reduce_deg(deg)
return
elif isinstance(deg, (list, tuple)):
if len(deg) == 0:
raise TypeError("Invalid input value")
elif len(deg) == 1:
# This is a single value
if "radians" in kwargs:
if kwargs["radians"]:
# Input value is in radians. Convert to degrees
deg[0] = degrees(deg[0])
self._deg = Angle.reduce_deg(deg[0])
return
elif len(deg) == 2:
# Seconds value is set to zero
self._deg = Angle.dms2deg(deg[0], deg[1])
return
elif len(deg) == 3:
# The first three values are taken into account
self._deg = Angle.dms2deg(deg[0], deg[1], deg[2])
return
else:
# Only the first four values are taken into account
sign = (
-1.0
if deg[0] < 0 or deg[1] < 0 or deg[2] < 0 or deg[3] < 0
else 1.0
)
# If sign < 0, make all values negative, to be sure
deg0 = sign * abs(deg[0])
deg1 = sign * abs(deg[1])
deg2 = sign * abs(deg[2])
self._deg = Angle.dms2deg(deg0, deg1, deg2)
return
else:
raise TypeError("Invalid input value")
elif len(args) == 2:
# Seconds value is set to zero
self._deg = Angle.dms2deg(args[0], args[1])
return
elif len(args) == 3:
# The first three values are taken into account
self._deg = Angle.dms2deg(args[0], args[1], args[2])
return
else:
# Only the first four values are taken into account
sign = (
-1.0
if args[0] < 0 or args[1] < 0 or args[2] < 0 or args[3] < 0
else 1.0
)
# If sign < 0, make all values negative, to be sure
args0 = sign * abs(args[0])
args1 = sign * abs(args[1])
args2 = sign * abs(args[2])
self._deg = Angle.dms2deg(args0, args1, args2)
return
def set_radians(self, rads):
"""Method to define the value of the Angle object from radians.
:param rads: Input angle, in radians.
:type rads: int, float
:returns: None.
:rtype: None
:raises: TypeError if input value is of wrong type.
>>> a = Angle()
>>> a.set_radians(pi)
>>> print(a)
180.0
"""
self.set(rads, radians=True)
return
def set_ra(self, *args):
"""Define the value of the Angle object from a Right Ascension.
It takes decimals and sexagesimal input. The sexagesimal Right
Ascensions can be given as separate hours, minutes, seconds values, or
as tuples or lists.
:param args: Input Right Ascension, in decimal or sexagesimal format.
:type args: int, float, list, tuple
:returns: None.
:rtype: None
:raises: TypeError if input values are of wrong type.
>>> a = Angle()
>>> a.set_ra(9, 14, 55.8)
>>> print(a)
138.7325
"""
self.set(*args) # Carry out a standard set(), without *kwargs
self._deg *= 15.0 # Multipy Right Ascension by 15.0 to get degrees
return
def dms_str(self, fancy=True, n_dec=-1):
"""Returns the Angle value as a sexagesimal string.
The parameter **fancy** allows to print in "Dd M' S''" format if True,
and in "D:M:S" (easier to parse) if False. On the other hand, the
**n_dec** parameter sets the number of decimals used to print the
seconds. Set to a negative integer to disable (default).
:param fancy: Format of output string. True by default.
:type fancy: bool
:param n_dec: Number of decimals used to print the seconds
:type fancy: int
:returns: Angle value as string in sexagesimal format.
:rtype: string
:raises: TypeError if input value is of wrong type.
>>> a = Angle(42.75)
>>> print(a.dms_str())
42d 45' 0.0''
>>> print(a.dms_str(fancy=False))
42:45:0.0
>>> a = Angle(49, 13, 42.4817)
>>> print(a.dms_str(n_dec=2))
49d 13' 42.48''
"""
if not isinstance(n_dec, int):
raise TypeError("Invalid input value")
d, m, s, sign = Angle.deg2dms(self._deg)
if n_dec >= 0:
s = round(s, n_dec)
if abs(s - 60.0) < TOL:
s = 0.0
m += 1
if abs(m - 60.0) < TOL:
m = 0
d += 1.0
if d >= 360.0:
d -= 360.0
if fancy:
if d != 0:
return "{}d {}' {}''".format(int(sign * d), m, s)
elif m != 0:
return "{}' {}''".format(int(sign * m), s)
elif s != 0.0:
return "{}''".format(sign * s)
else:
return "0d 0' 0.0''"
else:
if d != 0:
return "{}:{}:{}".format(int(sign * d), m, s)
elif m != 0:
return "0:{}:{}".format(int(sign * m), s)
elif s != 0.0:
return "0:0:{}".format(sign * s)
else:
return "0:0:0.0"
def get_ra(self):
"""Returns the Angle value as a Right Ascension in float format
:returns: The internal value of the Angle object as Right Ascension.
:rtype: int, float
>>> a = Angle(138.75)
>>> print(a.get_ra())
9.25
"""
return self._deg / 15.0
def ra_str(self, fancy=True, n_dec=-1):
"""Returns the Angle value as a sexagesimal string in Right Ascension.
The parameter **fancy** allows to print in "Hh M' S''" format if True,
and in "H:M:S" (easier to parse) if False. On the other hand, the
**n_dec** parameter sets the number of decimals used to print the
seconds. Set to a negative integer to disable (default).
:param fancy: Format of output string. True by default.
:type fancy: bool
:param n_dec: Number of decimals used to print the seconds
:type fancy: int
:returns: Angle value as Right Ascension in sexagesimal format.
:rtype: string
:raises: TypeError if input value is of wrong type.
>>> a = Angle(138.75)
>>> print(a.ra_str())
9h 15' 0.0''
>>> print(a.ra_str(fancy=False))
9:15:0.0
>>> a = Angle(2, 44, 11.98581, ra=True)
>>> print(a.ra_str(n_dec=3))
2h 44' 11.986''
"""
a = Angle(self()) / 15.0
s = a.dms_str(fancy, n_dec)
if fancy:
s = s.replace("d", "h")
return s
def rad(self):
"""Returns the Angle value in radians.
:returns: Angle value in radians.
:rtype: float
>>> a = Angle(47.762)
>>> print(round(a.rad(), 8))
0.83360416
"""
return radians(self._deg)
def dms_tuple(self):
"""Returns the Angle as a tuple containing (degrees, minutes, seconds,
sign).
:returns: Angle value as (degrees, minutes, seconds, sign).
:rtype: tuple
"""
return Angle.deg2dms(self())
def ra_tuple(self):
"""Returns the Angle in Right Ascension format as a tuple containing
(hours, minutes, seconds, sign).
:returns: Angle value as RA in (hours, minutes, seconds, sign) format.
:rtype: tuple
"""
return Angle.deg2dms(self() / 15.0)
def to_positive(self):
"""Converts the internal angle value from negative to positive.
:returns: This angle object.
:rtype: :py:class:`Angle`
>>> a = Angle(-87.32)
>>> print(a.to_positive())
272.68
"""
if self._deg < 0:
self._deg = 360.0 - abs(self._deg)
return self
def __eq__(self, b):
"""This method defines the 'is equal' operator between Angles.
.. note:: For the comparison, the internal tolerance value is used.
:returns: A boolean.
:rtype: bool
:raises: TypeError if input values are of wrong type.
>>> a = Angle(172.01)
>>> b = Angle(172.009)
>>> a == b
False
"""
if isinstance(b, (int, float)):
return abs(self._deg - float(b)) < self._tol
elif isinstance(b, Angle):
return abs(self._deg - b._deg) < self._tol
else:
raise TypeError("Wrong operand type")
def __ne__(self, b):
"""This method defines the 'is not equal' operator between Angles.
.. note:: For the comparison, the internal tolerance value is used.
:returns: A boolean.
:rtype: bool
>>> a = Angle(11.200001)
>>> b = Angle(11.200000)
>>> a != b
True
"""
return not self.__eq__(b) # '!=' == 'not(==)'
def __lt__(self, b):
"""This method defines the 'is less than' operator between Angles.
:returns: A boolean.
:rtype: bool
:raises: TypeError if input values are of wrong type.
>>> a = Angle(72.0)
>>> b = Angle(72.0)
>>> a < b
False
"""
if isinstance(b, (int, float)):
return self._deg < float(b)
elif isinstance(b, Angle):
return self._deg < b._deg
else:
raise TypeError("Wrong operand type")
def __ge__(self, b):
"""This method defines 'is equal or greater' operator between Angles.
:returns: A boolean.
:rtype: bool
:raises: TypeError if input values are of wrong type.
>>> a = Angle(172.01)
>>> b = Angle(172.009)
>>> a >= b
True
"""
return not self.__lt__(b) # '>=' == 'not(<)'
def __gt__(self, b):
"""This method defines the 'is greater than' operator between Angles.
:returns: A boolean.
:rtype: bool
:raises: TypeError if input values are of wrong type.
>>> a = Angle(172.01)
>>> b = Angle(172.009)
>>> a > b
True
"""
if isinstance(b, (int, float)):
return self._deg > float(b)
elif isinstance(b, Angle):
return self._deg > b._deg
else:
raise TypeError("Wrong operand type")
def __le__(self, b):
"""This method defines 'is equal or less' operator between Angles.
:returns: A boolean.
:rtype: bool
:raises: TypeError if input values are of wrong type.
>>> a = Angle(72.0)
>>> b = Angle(72.0)
>>> a <= b
True
"""
return not self.__gt__(b) # '<=' == 'not(>)'
def __neg__(self):
"""This method is used to obtain the negative version of this Angle.
:returns: A new Angle object.
:rtype: :py:class:`Angle`
>>> a = Angle(-11.2)
>>> print(-a)
11.2
"""
return Angle(-self._deg)
def __abs__(self):
"""This method is used to obtain the absolute value of this Angle.
:returns: A new Angle object.
:rtype: :py:class:`Angle`
>>> a = Angle(-303.67)
>>> print(abs(a))
303.67
"""
return Angle(abs(self._deg))
def __mod__(self, b):
"""This method is used to obtain the module b of this Angle.
:returns: A new Angle object.
:rtype: :py:class:`Angle`
:raises: TypeError if input values are of wrong type.
>>> a = Angle(333.0)
>>> b = Angle(72.0)
>>> print(a % b)
45.0
"""
# Negative values will be treated as if they were positive
sign = 1.0 if self._deg >= 0.0 else -1.0
if isinstance(b, (int, float)):
return Angle(sign * (abs(self._deg) % b))
elif isinstance(b, Angle):
return Angle(sign * (abs(self._deg) % b._deg))
else:
raise TypeError("Wrong operand type")
def __add__(self, b):
"""This method defines the addition between Angles.
:returns: A new Angle object.
:rtype: :py:class:`Angle`
:raises: TypeError if input values are of wrong type.
>>> a = Angle(83.1)
>>> b = Angle(18.4)
>>> print(a + b)
101.5
"""
if isinstance(b, (int, float)):
return Angle(self._deg + float(b))
elif isinstance(b, Angle):
return Angle(self._deg + b._deg)
else:
raise TypeError("Wrong operand type")
def __sub__(self, b):
"""This method defines the subtraction between Angles.
:returns: A new Angle object.
:rtype: :py:class:`Angle`
:raises: TypeError if input values are of wrong type.
>>> a = Angle(25.4)
>>> b = Angle(10.2)
>>> print(a - b)
15.2
"""
return self.__add__(-b)
def __mul__(self, b):
"""This method defines the multiplication between Angles.
:returns: A new Angle object.
:rtype: :py:class:`Angle`
:raises: TypeError if input values are of wrong type.
>>> a = Angle(33.0)
>>> b = Angle(72.0)
>>> print(a * b)
216.0
"""
if isinstance(b, (int, float)):
return Angle(self._deg * float(b))
elif isinstance(b, Angle):
return Angle(self._deg * b._deg)
else:
raise TypeError("Wrong operand type")
def __div__(self, b):
"""This method defines the division between Angles.
:returns: A new Angle object.
:rtype: :py:class:`Angle`
:raises: ZeroDivisionError if divisor is zero.
:raises: TypeError if input values are of wrong type.
>>> a = Angle(172.0)
>>> b = Angle(86.0)
>>> print(a/b)
2.0
"""
if b == 0.0:
raise ZeroDivisionError("Division by zero is not allowed")
if isinstance(b, (int, float)):
return Angle(self._deg / float(b))
elif isinstance(b, Angle):
return Angle(self._deg / b._deg)
else:
raise TypeError("Wrong operand type")
def __truediv__(self, b):
"""This method defines the division between Angles (Python 3).
:returns: A new Angle object.
:rtype: :py:class:`Angle`
:raises: ZeroDivisionError if divisor is zero.
:raises: TypeError if input values are of wrong type.
:see: __div__
"""
return self.__div__(b)
def __pow__(self, b):
"""This method defines the power operation for Angles.
:returns: A new Angle object.
:rtype: :py:class:`Angle`
:raises: TypeError if input values are of wrong type.
>>> a = Angle(12.5)
>>> b = Angle(4.0)
>>> print(a ** b)
294.0625
"""
if isinstance(b, (int, float)):
return Angle(self._deg ** b)
elif isinstance(b, Angle):
return Angle(self._deg ** b._deg)
else:
raise TypeError("Wrong operand type")
def __imod__(self, b):
"""This method defines the accumulative module b of this Angle.
:returns: This Angle.
:rtype: :py:class:`Angle`
>>> a = Angle(330.0)
>>> b = Angle(45.0)
>>> a %= b
>>> print(a)
15.0
"""
# Negative values will be treated as if they were positive
self = self % b
return self
def __iadd__(self, b):
"""This method defines the accumulative addition to this Angle.
:returns: This Angle.
:rtype: :py:class:`Angle`
>>> a = Angle(172.1)
>>> b = Angle(54.6)
>>> a += b
>>> print(a)
226.7
"""
self = self + b
return self
def __isub__(self, b):
"""This method defines the accumulative subtraction to this Angle.
:returns: This Angle.
:rtype: :py:class:`Angle`
>>> a = Angle(97.0)
>>> b = Angle(39.0)
>>> a -= b
>>> print(a)
58.0
"""
self = self - b
return self
def __imul__(self, b):
"""This method defines the accumulative multiplication to this Angle.
:returns: This Angle.
:rtype: :py:class:`Angle`
>>> a = Angle(30.0)
>>> b = Angle(55.0)
>>> a *= b
>>> print(a)
210.0
"""
self = self * b
return self
def __idiv__(self, b):
"""This method defines the accumulative division to this Angle.
:returns: This Angle.
:rtype: :py:class:`Angle`
:raises: ZeroDivisionError if divisor is zero.
:raises: TypeError if input values are of wrong type.
>>> a = Angle(330.0)
>>> b = Angle(30.0)
>>> a /= b
>>> print(a)
11.0
"""
if b == 0.0:
raise ZeroDivisionError("Division by zero is not allowed")
if not isinstance(b, (int, float, Angle)):
raise TypeError("Wrong operand type")
self = self / b
return self
def __itruediv__(self, b):
"""This method defines accumulative division to this Angle (Python3).
:returns: This Angle.
:rtype: :py:class:`Angle`
:raises: ZeroDivisionError if divisor is zero.
:raises: TypeError if input values are of wrong type.
:see: __idiv__
"""
return self.__idiv__(b)
def __ipow__(self, b):
"""This method defines the accumulative power to this Angle.
:returns: This Angle.
:rtype: :py:class:`Angle`
>>> a = Angle(37.0)
>>> b = Angle(3.0)
>>> a **= b
>>> print(a)
253.0
"""
self = self ** b
return self
def __rmod__(self, b):
"""This method defines module operation between Angles by the right.
:returns: A new Angle object.
:rtype: :py:class:`Angle`
>>> a = Angle(80.0)
>>> print(350 % a)
30.0
"""
if isinstance(b, (int, float)):
b = Angle(b)
# Negative values will be treated as if they were positive
sign = 1.0 if b._deg >= 0.0 else -1.0
return Angle(sign * (abs(b._deg) % self._deg))
def __radd__(self, b):
"""This method defines the addition between Angles by the right
:returns: A new Angle object.
:rtype: :py:class:`Angle`
>>> a = Angle(83.1)
>>> print(8.5 + a)
91.6
"""
return self.__add__(b) # In this case, it is the same as by the left
def __rsub__(self, b):
"""This method defines the subtraction between Angles by the right.
:returns: A new Angle object.
:rtype: :py:class:`Angle`
:raises: TypeError if input values are of wrong type.
>>> a = Angle(25.0)
>>> print(24.0 - a)
-1.0
"""
return -self.__sub__(b) # b - a = -(a - b)
def __rmul__(self, b):
"""This method defines multiplication between Angles by the right.
:returns: A new Angle object.
:rtype: :py:class:`Angle`
:raises: TypeError if input values are of wrong type.
>>> a = Angle(11.0)
>>> print(250.0 * a)
230.0
"""
return self.__mul__(b) # In this case, it is the same as by the left
def __rdiv__(self, b):
"""This method defines division between Angles by the right.
:returns: A new Angle object.
:rtype: :py:class:`Angle`
:raises: ZeroDivisionError if divisor is zero.
:raises: TypeError if input values are of wrong type.
>>> a = Angle(80.0)
>>> print(350 / a)
4.375
"""
if self == 0.0:
raise ZeroDivisionError("Division by zero is not allowed")
if isinstance(b, (int, float)):
return Angle(float(b) / self._deg)
elif isinstance(b, Angle):
return Angle(b._deg / self._deg)
else:
raise TypeError("Wrong operand type")
def __rtruediv__(self, b):
"""This method defines division between Angle by the right (Python3).
:returns: A new Angle object.
:rtype: :py:class:`Angle`
:raises: ZeroDivisionError if divisor is zero.
:raises: TypeError if input values are of wrong type.
:see: __rdiv__
"""
return self.__rdiv__(b)
def __rpow__(self, b):
"""This method defines the power operation for Angles by the right.
:returns: A new Angle object.
:rtype: :py:class:`Angle`
:raises: TypeError if input values are of wrong type.
>>> a = Angle(5.0)
>>> print(24.0 ** a)
144.0
"""
if isinstance(b, (int, float)):
return Angle(b ** self._deg)
elif isinstance(b, Angle):
return Angle(b._deg ** self._deg)
else:
raise TypeError("Wrong operand type")
def __float__(self):
"""This method returns Angle value as a float.
:returns: Internal angle value as a float.
:rtype: float
>>> a = Angle(213.8)
>>> float(a)
213.8
"""
return float(self._deg)
def __int__(self):
"""This method returns Angle value as an int.
:returns: Internal angle value as an int.
:rtype: int
>>> a = Angle(213.8)
>>> int(a)
213
"""
return int(self._deg)
def __round__(self, n=0):
"""This method returns an Angle with content rounded to 'n' decimal.
:returns: A new Angle object.
:rtype: :py:class:`Angle`
>>> a = Angle(11.4361)
>>> print(round(a, 2))
11.44
"""
# NOTE: This method is only called in Python 3
return Angle(round(self._deg, n))
def main():
# Let's define a small helper function
def print_me(msg, val):
print("{}: {}".format(msg, val))
# Let's show some uses of Angle class
print("\n" + 35 * "*")
print("*** Use of Angle class")
print(35 * "*" + "\n")
# Create an Angle object, providing degrees, minutes and seconds
a = Angle(-23.0, 26.0, 48.999983999)
print("a = Angle(-23.0, 26.0, 48.999983999)")
# First we print using the __call__ method (note the extra parentheses)
print_me("The angle 'a()' is", a()) # -23.44694444
# Second we print using the __str__ method (no extra parentheses needed)
print_me("The angle 'a' is", a) # -23.44694444
print("")
# Use the copy constructor
b = Angle(a)
print_me("Angle 'b', which is a copy of 'a', is", b)
print("")
# Use the static 'deg2dms()' method to carry out conversions
d, m, s, sign = Angle.deg2dms(23.44694444)
val = "{}d {}' {}''".format(int(sign * d), m, s)
print_me("{Deg}d {Min}' {Sec}''", val) # 23d 26' 48.999984''
# We can print Angle 'a' directly in sexagesimal format
# In 'fancy' format: # -23d 26' 48.999984''
print_me("{Deg}d {Min}' {Sec}''", a.dms_str(n_dec=6))
# In plain format:
print_me("{Deg}:{Min}:{Sec}", a.dms_str(False, 6)) # -23:26:48.999983999
print("")
# Print directly as a tuple
a = Angle(23.44694444)
print_me("a.dms_tuple()", a.dms_tuple())
print_me("a.ra_tuple()", a.ra_tuple())
print("")
# Redefine Angle 'a' several times
a.set(-0.44694444)
print("a.set(-0.44694444)")
print_me(" a.dms_str()", a.dms_str()) # -26' 48.999984''
a.set(0, 0, -46.31)
print("a.set(0, 0, -46.31)")
print_me(" a.dms_str(False)", a.dms_str(False)) # 0:0:-46.31
print("")
# We can use decimals in degrees/minutes. They are converted automatically
a.set(0, -46.25, 0.0)
print("a.set(0, -46.25, 0.0)")
print_me(" a.dms_str()", a.dms_str()) # -46' 15.0''
a.set(0, 0, 0.0)
print("a.set(0, 0, 0.0)")
print_me(" a.dms_str()", a.dms_str()) # 0d 0' 0.0''
print("")
# We can define the angle as in radians. It will be converted to degrees
b = Angle(pi, radians=True)
print_me("b = Angle(pi, radians=True); print(b)", b) # 180.0
# And we can easily carry out the 'degrees to radians' conversion
print_me("print(b.rad())", b.rad()) # 3.14159265359
print("")
# We can also specify the angle as a Right Ascension
print("Angle can be given as a Right Ascension: Hours, Minutes, Seconds")
a.set_ra(9, 14, 55.8)
print("a.set_ra(9, 14, 55.8)")
print_me(" print(a)", a)
b = Angle(9, 14, 55.8, ra=True)
print("b = Angle(9, 14, 55.8, ra=True)")
print_me(" print(b)", b)
print("")
# We can print the Angle as Right Ascension, as a float and as string
a = Angle(138.75)
print("a = Angle(138.75)")
print_me(" print(a.get_ra())", a.get_ra())
print_me(" print(a.ra_str())", a.ra_str())
print_me(" print(a.ra_str(False))", a.ra_str(False))
print("")
# Use the 'to_positive()' method to get the positive version of an angle
a = Angle(-87.32) # 272.68
print("a = Angle(-87.32)")
print_me(" print(a.to_positive())", a.to_positive())
print("")
# Call the __repr__() method to get a string defining the current object
# This string can then be fed to 'eval()' function to generate the object
print_me("print(b.__repr__())", b.__repr__()) # Angle(138.7325)
c = eval(repr(b))
print_me("c = eval(repr(b)); print(c)", c) # 138.7325
print("")
print_me("c", c) # 138.7325
# Negate an angle
d = Angle(13, 30)
print_me("d", d) # 13.5
e = -d
print_me(" e = -d", e) # -13.5
# Get the absolute value of an angle
e = abs(e)
print_me(" e = abs(e)", e) # 13.5
# Module operation on an angle
d = Angle(17.0)
print_me("d", d) # 17.0
e = c % d
print_me(" e = c % d", e) # 10.0
print("")
# Convert the angle to an integer
d = Angle(13.95)
print_me("d", d) # 13.95
print_me(" int(d)", int(d)) # 13.0
d = Angle(-4.95)
print_me("d", d) # -4.95
print_me(" int(d)", int(d)) # -4.0
# Convert the angle to a float
print_me(" float(d)", float(d)) # -4.95
# Round the angle to a float
e = Angle(-4.951648)
print_me("e", e) # -4.951648
print_me(" round(e)", round(e)) # -5.0
print_me(" round(e, 2)", round(e, 2)) # -4.95
print_me(" round(e, 3)", round(e, 3)) # -4.952
print_me(" round(e, 4)", round(e, 4)) # -4.9516
print("")
# Comparison operators
print_me(" d == e", d == e) # False
print_me(" d != e", d != e) # True
print_me(" d > e", d > e) # True
print_me(" c >= 180.0", c >= 180.0) # False
print_me(" c < 180.0", c < 180.0) # True
print_me(" c <= 180.0", c <= 180.0) # True
print("")
# It is very easy to add Angles to obtain a new Angle
e = c + d
print_me(" c + d", e) # 133.7825
# We can also directly add a decimal angle
e = c + 11.5
print_me(" c + 11.5", e) # 150.2325
print("")
# Types allowed are int, float and Angle
print('e = c + "32.5"')
try:
e = c + "32.5"
except TypeError:
print("TypeError!: Valid types are int, float, and Angle, not string!")
print("")
# Subtraction
e = c - d
print_me(" c - d", e) # 143.6825
# Multiplication
c.set(150.0)
d.set(5.0)
print_me("c", c) # 150.0
print_me("d", d) # 5.0
e = c * d
print_me(" c * d", e) # 30.0
# Division
c.set(150.0)
d.set(6.0)
print_me("d", d) # 6.0
e = c / d
print_me(" c / d", e) # 25.0
print("")
# Division by zero is not allowed
d.set(0.0)
print_me("d", d) # 0.0
print("e = c / d")
try:
e = c / d
except ZeroDivisionError:
print("ZeroDivisionError!: Division by zero is not allowed!")
print("")
# Power
d.set(2.2)
print_me("d", d) # 2.2
e = c ** d
print_me(" c ** d", e) # 91.57336709992524
print("")
# Accumulative module operation
d.set(17.0)
print_me("d", d) # 17.0
e %= d
print_me(" e %= d", e) # 6.573367099925235
# Accumulative addition
c += d
print_me(" c += d", c) # 167.0
# Accumulative subtraction
print_me("b", b) # 138.7325
c -= b
print_me(" c -= b", c) # 28.2675
# Accumulative multiplication
print_me("b", b) # 138.7325
c *= b
print_me(" c *= b", c) # 321.62094375
# Accumulative division
print_me("b", b) # 138.7325
d.set(6.0)
print_me("d", d) # 6.0
b /= d
print_me(" b /= d", b) # 23.1220833333
# Accumulative power
d.set(2.2)
print_me("d", d) # 2.2
c = abs(c)
print_me(" c = abs(c)", c) # 321.62094375
c **= d
print_me(" c **= d", c) # 254.307104203
print("")
# The same operation, but by the right side
e = 3.5 + b
print_me(" e = 3.5 + b", e) # 26.6220833333
e = 3.5 - b
print_me(" e = 3.5 - b", e) # -19.6220833333
e = 3.5 * b
print_me(" e = 3.5 * b", e) # 80.9272916667
e = 3.5 / b
print_me(" e = 3.5 / b", e) # 0.151370443119
e = 3.5 ** b
print_me(" e = 3.5 ** b", e) # 260.783691406
if __name__ == "__main__":
main()
pymeeus-0.3.6/pymeeus/Coordinates.py 0000664 0000000 0000000 00000414046 13555455377 0017556 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from math import (
sqrt, sin, cos, tan, atan, atan2, asin, acos, radians, pi, copysign,
degrees
)
from pymeeus.base import TOL, iint
from pymeeus.Angle import Angle
from pymeeus.Epoch import Epoch, JDE2000
from pymeeus.Interpolation import Interpolation
"""
.. module:: Coordinates
:synopsis: Module including different functions to handle coordinates
:license: GNU Lesser General Public License v3 (LGPLv3)
.. moduleauthor:: Dagoberto Salazar
"""
NUTATION_ARG_TABLE = [
[0, 0, 0, 0, 1],
[-2, 0, 0, 2, 2],
[0, 0, 0, 2, 2],
[0, 0, 0, 0, 2],
[0, 1, 0, 0, 0],
[0, 0, 1, 0, 0],
[-2, 1, 0, 2, 2],
[0, 0, 0, 2, 1],
[0, 0, 1, 2, 2],
[-2, -1, 0, 2, 2],
[-2, 0, 1, 0, 0],
[-2, 0, 0, 2, 1],
[0, 0, -1, 2, 2],
[2, 0, 0, 0, 0],
[0, 0, 1, 0, 1],
[2, 0, -1, 2, 2],
[0, 0, -1, 0, 1],
[0, 0, 1, 2, 1],
[-2, 0, 2, 0, 0],
[0, 0, -2, 2, 1],
[2, 0, 0, 2, 2],
[0, 0, 2, 2, 2],
[0, 0, 2, 0, 0],
[-2, 0, 1, 2, 2],
[0, 0, 0, 2, 0],
[-2, 0, 0, 2, 0],
[0, 0, -1, 2, 1],
[0, 2, 0, 0, 0],
[2, 0, -1, 0, 1],
[-2, 2, 0, 2, 2],
[0, 1, 0, 0, 1],
[-2, 0, 1, 0, 1],
[0, -1, 0, 0, 1],
[0, 0, 2, -2, 0],
[2, 0, -1, 2, 1],
[2, 0, 1, 2, 2],
[0, 1, 0, 2, 2],
[-2, 1, 1, 0, 0],
[0, -1, 0, 2, 2],
[2, 0, 0, 2, 1],
[2, 0, 1, 0, 0],
[-2, 0, 2, 2, 2],
[-2, 0, 1, 2, 1],
[2, 0, -2, 0, 1],
[2, 0, 0, 0, 1],
[0, -1, 1, 0, 0],
[-2, -1, 0, 2, 1],
[-2, 0, 0, 0, 1],
[0, 0, 2, 2, 1],
[-2, 0, 2, 0, 1],
[-2, 1, 0, 2, 1],
[0, 0, 1, -2, 0],
[-1, 0, 1, 0, 0],
[-2, 1, 0, 0, 0],
[1, 0, 0, 0, 0],
[0, 0, 1, 2, 0],
[0, 0, -2, 2, 2],
[-1, -1, 1, 0, 0],
[0, 1, 1, 0, 0],
[0, -1, 1, 2, 2],
[2, -1, -1, 2, 2],
[0, 0, 3, 2, 2],
[2, -1, 0, 2, 2],
]
"""This table contains the periodic terms for the argument of the nutation. In
Meeus' book this is Table 22.A and can be found in pages 145-146."""
NUTATION_SINE_COEF_TABLE = [
[-171996.0, -174.2],
[-13187.0, -1.6],
[-2274.0, -0.2],
[2062.0, 0.2],
[1426.0, -3.4],
[712.0, 0.1],
[-517.0, 1.2],
[-386.0, -0.4],
[-301.0, 0.0],
[217.0, -0.5],
[-158.0, 0.0],
[129.0, 0.1],
[123.0, 0.0],
[63.0, 0.0],
[63.0, 0.1],
[-59.0, 0.0],
[-58.0, -0.1],
[-51.0, 0.0],
[48.0, 0.0],
[46.0, 0.0],
[-38.0, 0.0],
[-31.0, 0.0],
[29.0, 0.0],
[29.0, 0.0],
[26.0, 0.0],
[-22.0, 0.0],
[21.0, 0.0],
[17.0, -0.1],
[16.0, 0.0],
[-16.0, 0.1],
[-15.0, 0.0],
[-13.0, 0.0],
[-12.0, 0.0],
[11.0, 0.0],
[-10.0, 0.0],
[-8.0, 0.0],
[7.0, 0.0],
[-7.0, 0.0],
[-7.0, 0.0],
[-7.0, 0.0],
[6.0, 0.0],
[6.0, 0.0],
[6.0, 0.0],
[-6.0, 0.0],
[-6.0, 0.0],
[5.0, 0.0],
[-5.0, 0.0],
[-5.0, 0.0],
[-5.0, 0.0],
[4.0, 0.0],
[4.0, 0.0],
[4.0, 0.0],
[-4.0, 0.0],
[-4.0, 0.0],
[-4.0, 0.0],
[3.0, 0.0],
[-3.0, 0.0],
[-3.0, 0.0],
[-3.0, 0.0],
[-3.0, 0.0],
[-3.0, 0.0],
[-3.0, 0.0],
[-3.0, 0.0],
]
"""This table contains the periodic terms for the coefficients of the sine of
the argument of the nutation, and they are used to compute Delta psi. Units are
in 0.0001''. In Meeus' book this is Table 22.A and can be found in pages
145-146."""
NUTATION_COSINE_COEF_TABLE = [
[92025.0, 8.9],
[5736.0, -3.1],
[977.0, -0.5],
[-895.0, 0.5],
[54.0, -0.1],
[-7.0, 0.0],
[224.0, -0.6],
[200.0, 0.0],
[129.0, -0.1],
[-95.0, 0.3],
[0.0, 0.0],
[-70.0, 0.0],
[-53.0, 0.0],
[0.0, 0.0],
[-33.0, 0.0],
[26.0, 0.0],
[32.0, 0.0],
[27.0, 0.0],
[0.0, 0.0],
[-24.0, 0.0],
[16.0, 0.0],
[13.0, 0.0],
[0.0, 0.0],
[-12.0, 0.0],
[0.0, 0.0],
[0.0, 0.0],
[-10.0, 0.0],
[0.0, 0.0],
[-8.0, 0.0],
[7.0, 0.0],
[9.0, 0.0],
[7.0, 0.0],
[6.0, 0.0],
[0.0, 0.0],
[5.0, 0.0],
[3.0, 0.0],
[-3.0, 0.0],
[0.0, 0.0],
[3.0, 0.0],
[3.0, 0.0],
[0.0, 0.0],
[-3.0, 0.0],
[-3.0, 0.0],
[3.0, 0.0],
[3.0, 0.0],
[0.0, 0.0],
[3.0, 0.0],
[3.0, 0.0],
[3.0, 0.0],
]
"""This table contains the periodic terms for the coefficients of the cosine of
the argument of the nutation, and they are used to compute Delta epsilon. Units
are in 0.0001''. In Meeus' book this is Table 22.A and can be found in pages
145-146."""
def mean_obliquity(*args, **kwargs):
"""This function computes the mean obliquity (epsilon0) at the provided
date.
This function internally uses an :class:`Epoch` object, and the **utc**
argument then controls the way the UTC->TT conversion is handled for that
object. If **leap_seconds** argument is set to a value different than zero,
then that value will be used for the UTC->TAI conversion, and the internal
leap seconds table will be bypassed.
:param args: Either :class:`Epoch`, date, datetime or year, month,
day values, by themselves or inside a tuple or list
:type args: int, float, :py:class:`Epoch`, datetime, date, tuple,
list
:param utc: Whether the provided epoch is a civil time (UTC) or TT
:type utc: bool
:param leap_seconds: This is the value to be used in the UTC->TAI
conversion, instead of taking it from internal leap seconds table.
:type leap_seconds: int, float
:returns: The mean obliquity of the ecliptic, as an :class:`Angle`
:rtype: :class:`Angle`
:raises: ValueError if input values are in the wrong range.
:raises: TypeError if input values are of wrong type.
>>> e0 = mean_obliquity(1987, 4, 10)
>>> a = e0.dms_tuple()
>>> a[0]
23
>>> a[1]
26
>>> round(a[2], 3)
27.407
"""
# Get the Epoch object corresponding to input parameters
t = Epoch.check_input_date(*args, **kwargs)
# Let's redefine u in units of 100 Julian centuries from Epoch J2000.0
u = (t.jde() - 2451545.0) / 3652500.0
epsilon0 = Angle(23, 26, 21.448)
delta = u * (
-4680.93
+ u
* (
-1.55
+ u
* (
1999.25
+ u
* (
-51.38
+ u
* (
-249.67
+ u
* (-39.05 + u * (7.12 + u *
(27.87 + u * (5.79 + u * 2.45))))
)
)
)
)
)
delta = Angle(0, 0, delta)
epsilon0 += delta
return epsilon0
def true_obliquity(*args, **kwargs):
"""This function computes the true obliquity (epsilon) at the provided
date. The true obliquity is the mean obliquity (epsilon0) plus the
correction provided by the nutation in obliquity (Delta epsilon).
This function internally uses an :class:`Epoch` object, and the **utc**
argument then controls the way the UTC->TT conversion is handled for that
object. If **leap_seconds** argument is set to a value different than zero,
then that value will be used for the UTC->TAI conversion, and the internal
leap seconds table will be bypassed.
:param args: Either :class:`Epoch`, date, datetime or year, month,
day values, by themselves or inside a tuple or list
:type args: int, float, :py:class:`Epoch`, datetime, date, tuple,
list
:param utc: Whether the provided epoch is a civil time (UTC) or TT
:type utc: bool
:param leap_seconds: This is the value to be used in the UTC->TAI
conversion, instead of taking it from internal leap seconds table.
:type leap_seconds: int, float
:returns: The true obliquity of the ecliptic, as an Angle
:rtype: :class:`Angle`
:raises: ValueError if input values are in the wrong range.
:raises: TypeError if input values are of wrong type.
>>> epsilon = true_obliquity(1987, 4, 10)
>>> a = epsilon.dms_tuple()
>>> a[0]
23
>>> a[1]
26
>>> round(a[2], 3)
36.849
"""
epsilon0 = mean_obliquity(*args, **kwargs)
delta_epsilon = nutation_obliquity(*args, **kwargs)
return epsilon0 + delta_epsilon
def nutation_longitude(*args, **kwargs):
"""This function computes the nutation in longitude (Delta psi) at the
provided date.
This function internally uses an :class:`Epoch` object, and the **utc**
argument then controls the way the UTC->TT conversion is handled for that
object. If **leap_seconds** argument is set to a value different than zero,
then that value will be used for the UTC->TAI conversion, and the internal
leap seconds table will be bypassed.
:param args: Either :class:`Epoch`, date, datetime or year, month,
day values, by themselves or inside a tuple or list
:type args: int, float, :py:class:`Epoch`, datetime, date, tuple,
list
:param utc: Whether the provided epoch is a civil time (UTC) or TT
:type utc: bool
:param leap_seconds: This is the value to be used in the UTC->TAI
conversion, instead of taking it from internal leap seconds table.
:type leap_seconds: int, float
:returns: The nutation in longitude (Delta psi), as an Angle
:rtype: :class:`Angle`
:raises: ValueError if input values are in the wrong range.
:raises: TypeError if input values are of wrong type.
>>> dpsi = nutation_longitude(1987, 4, 10)
>>> a = dpsi.dms_tuple()
>>> a[0]
0
>>> a[1]
0
>>> round(a[2], 3)
3.788
>>> a[3]
-1.0
"""
# Get the Epoch object corresponding to input parameters
t = Epoch.check_input_date(*args, **kwargs)
# Let's redefine t in units of Julian centuries from Epoch J2000.0
t = (t.jde() - 2451545.0) / 36525.0
# Let's compute the mean elongation of the Moon from the Sun
d = 297.85036 + t * (445267.111480 + t * (-0.0019142 + t / 189474.0))
d = Angle(d) # Convert into an Angle: It is easier to handle
# Compute the mean anomaly of the Sun (from Earth)
m = 357.52772 + t * (35999.050340 + t * (-0.0001603 - t / 300000.0))
m = Angle(m)
# Compute the mean anomaly of the Moon
mprime = 134.96298 + t * (477198.867398 + t * (0.0086972 + t / 56250.0))
mprime = Angle(mprime)
# Now, let's compute the Moon's argument of latitude
f = 93.27191 + t * (483202.017538 + t * (-0.0036825 + t / 327270.0))
f = Angle(f)
# And finally, the longitude of the ascending node of the Moon's mean
# orbit on the ecliptic, measured from the mean equinox of date
omega = 125.04452 + t * (-1934.136261 + t * (0.0020708 + t / 450000.0))
omega = Angle(omega)
# Let's store this results in a list, in preparation for using tables
arguments = [d, m, mprime, f, omega]
# Now is time of using the nutation tables
deltapsi = 0.0
for i, value in enumerate(NUTATION_SINE_COEF_TABLE):
argument = Angle()
coeff = 0.0
for j in range(5):
if NUTATION_ARG_TABLE[i][j]: # Avoid multiplications by zero
argument += NUTATION_ARG_TABLE[i][j] * arguments[j]
coeff = value[0]
if value[1]:
coeff += value[1] * t
deltapsi += (coeff * sin(argument.rad())) / 10000.0
return Angle(0, 0, deltapsi)
def nutation_obliquity(*args, **kwargs):
"""This function computes the nutation in obliquity (Delta epsilon) at
the provided date.
This function internally uses an :class:`Epoch` object, and the **utc**
argument then controls the way the UTC->TT conversion is handled for that
object. If **leap_seconds** argument is set to a value different than zero,
then that value will be used for the UTC->TAI conversion, and the internal
leap seconds table will be bypassed.
:param args: Either :class:`Epoch`, date, datetime or year, month,
day values, by themselves or inside a tuple or list
:type args: int, float, :py:class:`Epoch`, datetime, date, tuple,
list
:param utc: Whether the provided epoch is a civil time (UTC) or TT
:type utc: bool
:param leap_seconds: This is the value to be used in the UTC->TAI
conversion, instead of taking it from internal leap seconds table.
:type leap_seconds: int, float
:returns: The nutation in obliquity (Delta epsilon), as an
:class:`Angle`
:rtype: :class:`Angle`
:raises: ValueError if input values are in the wrong range.
:raises: TypeError if input values are of wrong type.
>>> depsilon = nutation_obliquity(1987, 4, 10)
>>> a = depsilon.dms_tuple()
>>> a[0]
0
>>> a[1]
0
>>> round(a[2], 3)
9.443
>>> a[3]
1.0
"""
# Get the Epoch object corresponding to input parameters
t = Epoch.check_input_date(*args, **kwargs)
# Let's redefine t in units of Julian centuries from Epoch J2000.0
t = (t.jde() - 2451545.0) / 36525.0
# Let's compute the mean elongation of the Moon from the Sun
d = 297.85036 + t * (445267.111480 + t * (-0.0019142 + t / 189474.0))
d = Angle(d) # Convert into an Angle: It is easier to handle
# Compute the mean anomaly of the Sun (from Earth)
m = 357.52772 + t * (35999.050340 + t * (-0.0001603 - t / 300000.0))
m = Angle(m)
# Compute the mean anomaly of the Moon
mprime = 134.96298 + t * (477198.867398 + t * (0.0086972 + t / 56250.0))
mprime = Angle(mprime)
# Now, let's compute the Moon's argument of latitude
f = 93.27191 + t * (483202.017538 + t * (-0.0036825 + t / 327270.0))
f = Angle(f)
# And finally, the longitude of the ascending node of the Moon's mean
# orbit on the ecliptic, measured from the mean equinox of date
omega = 125.04452 + t * (-1934.136261 + t * (0.0020708 + t / 450000.0))
omega = Angle(omega)
# Let's store this results in a list, in preparation for using tables
arguments = [d, m, mprime, f, omega]
# Now is time of using the nutation tables
deltaepsilon = 0.0
for i, value in enumerate(NUTATION_COSINE_COEF_TABLE):
argument = Angle()
coeff = 0.0
for j in range(5):
if NUTATION_ARG_TABLE[i][j]: # Avoid multiplications by zero
argument += NUTATION_ARG_TABLE[i][j] * arguments[j]
coeff = value[0]
if value[1]:
coeff += value[1] * t
deltaepsilon += (coeff * cos(argument.rad())) / 10000.0
return Angle(0, 0, deltaepsilon)
def precession_equatorial(
start_epoch, final_epoch, start_ra, start_dec, p_motion_ra=0.0,
p_motion_dec=0.0
):
"""This function converts the equatorial coordinates (right ascension and
declination) given for an epoch and a equinox, to the corresponding
values for another epoch and equinox. Only the **mean** positions, i.e.
the effects of precession and proper motion, are considered here.
:param start_epoch: Initial epoch when initial coordinates are given
:type start_epoch: :py:class:`Epoch`
:param final_epoch: Final epoch for when coordinates are going to be
computed
:type final_epoch: :py:class:`Epoch`
:param start_ra: Initial right ascension
:type start_ra: :py:class:`Angle`
:param start_dec: Initial declination
:type start_dec: :py:class:`Angle`
:param p_motion_ra: Proper motion in right ascension, in degrees per
year. Zero by default.
:type p_motion_ra: :py:class:`Angle`
:param p_motion_dec: Proper motion in declination, in degrees per year.
Zero by default.
:type p_motion_dec: :py:class:`Angle`
:returns: Equatorial coordinates (right ascension, declination, in that
order) corresponding to the final epoch, given as two objects
:class:`Angle` inside a tuple
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> start_epoch = JDE2000
>>> final_epoch = Epoch(2028, 11, 13.19)
>>> alpha0 = Angle(2, 44, 11.986, ra=True)
>>> delta0 = Angle(49, 13, 42.48)
>>> pm_ra = Angle(0, 0, 0.03425, ra=True)
>>> pm_dec = Angle(0, 0, -0.0895)
>>> alpha, delta = precession_equatorial(start_epoch, final_epoch, alpha0,
... delta0, pm_ra, pm_dec)
>>> print(alpha.ra_str(False, 3))
2:46:11.331
>>> print(delta.dms_str(False, 2))
49:20:54.54
"""
# First check that input values are of correct types
if not (
isinstance(start_epoch, Epoch)
and isinstance(final_epoch, Epoch)
and isinstance(start_ra, Angle)
and isinstance(start_dec, Angle)
):
raise TypeError("Invalid input types")
if isinstance(p_motion_ra, (int, float)):
p_motion_ra = Angle(p_motion_ra)
if isinstance(p_motion_dec, (int, float)):
p_motion_dec = Angle(p_motion_dec)
if not (isinstance(p_motion_ra, Angle) and
isinstance(p_motion_dec, Angle)):
raise TypeError("Invalid input types")
tt = (start_epoch - JDE2000) / 36525.0
t = (final_epoch - start_epoch) / 36525.0
# Correct starting coordinates by proper motion
start_ra += p_motion_ra * t * 100.0
start_dec += p_motion_dec * t * 100.0
# Compute the conversion parameters
zeta = t * (
(2306.2181 + tt * (1.39656 - 0.000139 * tt))
+ t * ((0.30188 - 0.000344 * tt) + 0.017998 * t)
)
z = t * (
(2306.2181 + tt * (1.39656 - 0.000139 * tt))
+ t * ((1.09468 + 0.000066 * tt) + 0.018203 * t)
)
theta = t * (
2004.3109
+ tt * (-0.85330 - 0.000217 * tt)
+ t * (-(0.42665 + 0.000217 * tt) - 0.041833 * t)
)
# Redefine the former values as Angles
zeta = Angle(0, 0, zeta)
z = Angle(0, 0, z)
theta = Angle(0, 0, theta)
a = cos(start_dec.rad()) * sin(start_ra.rad() + zeta.rad())
b = cos(theta.rad()) * cos(start_dec.rad()) * cos(
start_ra.rad() + zeta.rad()
) - sin(theta.rad()) * sin(start_dec.rad())
c = sin(theta.rad()) * cos(start_dec.rad()) * cos(
start_ra.rad() + zeta.rad()
) + cos(theta.rad()) * sin(start_dec.rad())
final_ra = atan2(a, b) + z.rad()
if start_dec > 85.0: # Coordinates are close to the pole
final_dec = sqrt(a * a + b * b)
else:
final_dec = asin(c)
# Convert results to Angles. Please note results are in radians
final_ra = Angle(final_ra, radians=True)
final_dec = Angle(final_dec, radians=True)
return (final_ra, final_dec)
def precession_ecliptical(
start_epoch, final_epoch, start_lon, start_lat, p_motion_lon=0.0,
p_motion_lat=0.0
):
"""This function converts the ecliptical coordinates (longitude and
latitude) given for an epoch and a equinox, to the corresponding
values for another epoch and equinox. Only the **mean** positions, i.e.
the effects of precession and proper motion, are considered here.
:param start_epoch: Initial epoch when initial coordinates are given
:type start_epoch: :py:class:`Epoch`
:param final_epoch: Final epoch for when coordinates are going to be
computed
:type final_epoch: :py:class:`Epoch`
:param start_lon: Initial longitude
:type start_lon: :py:class:`Angle`
:param start_lat: Initial latitude
:type start_lat: :py:class:`Angle`
:param p_motion_lon: Proper motion in longitude, in degrees per year.
Zero by default.
:type p_motion_lon: :py:class:`Angle`
:param p_motion_lat: Proper motion in latitude, in degrees per year.
Zero by default.
:type p_motion_lat: :py:class:`Angle`
:returns: Ecliptical coordinates (longitude, latitude, in that order)
corresponding to the final epoch, given as two :class:`Angle`
objects inside a tuple
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> start_epoch = JDE2000
>>> final_epoch = Epoch(-214, 6, 30.0)
>>> lon0 = Angle(149.48194)
>>> lat0 = Angle(1.76549)
>>> lon, lat = precession_ecliptical(start_epoch, final_epoch, lon0, lat0)
>>> print(round(lon(), 3))
118.704
>>> print(round(lat(), 3))
1.615
"""
# First check that input values are of correct types
if not (
isinstance(start_epoch, Epoch)
and isinstance(final_epoch, Epoch)
and isinstance(start_lon, Angle)
and isinstance(start_lat, Angle)
):
raise TypeError("Invalid input types")
if isinstance(p_motion_lon, (int, float)):
p_motion_lon = Angle(p_motion_lon)
if isinstance(p_motion_lat, (int, float)):
p_motion_lat = Angle(p_motion_lat)
if not (isinstance(p_motion_lon, Angle) and
isinstance(p_motion_lat, Angle)):
raise TypeError("Invalid input types")
tt = (start_epoch - JDE2000) / 36525.0
t = (final_epoch - start_epoch) / 36525.0
# Correct starting coordinates by proper motion
start_lon += p_motion_lon * t * 100.0
start_lat += p_motion_lat * t * 100.0
# Compute the conversion parameters
eta = t * (
(47.0029 + tt * (-0.06603 + 0.000598 * tt))
+ t * ((-0.03302 + 0.000598 * tt) + 0.00006 * t)
)
pie = tt * (3289.4789 + 0.60622 * tt) + t * (
-(869.8089 + 0.50491 * tt) + 0.03536 * t
)
p = t * (
5029.0966
+ tt * (2.22226 - 0.000042 * tt)
+ t * (1.11113 - 0.000042 * tt - 0.000006 * t)
)
eta = Angle(0, 0, eta)
pie = Angle(0, 0, pie)
p = Angle(0, 0, p)
# But beware!: There is still a missing constant for pie. We didn't add
# it before because of the mismatch between degrees and seconds
pie += 174.876384
a = (cos(eta.rad()) * cos(start_lat.rad()) *
sin(pie.rad() - start_lon.rad()) - sin(eta.rad()) *
sin(start_lat.rad()))
b = cos(start_lat.rad()) * cos(pie.rad() - start_lon.rad())
c = cos(eta.rad()) * sin(start_lat.rad()) + sin(eta.rad()) * cos(
start_lat.rad()
) * sin(pie.rad() - start_lon.rad())
final_lon = p.rad() + pie.rad() - atan2(a, b)
final_lat = asin(c)
# Convert results to Angles. Please note results are in radians
final_lon = Angle(final_lon, radians=True)
final_lat = Angle(final_lat, radians=True)
return (final_lon, final_lat)
def p_motion_equa2eclip(p_motion_ra, p_motion_dec, ra, dec, lat, epsilon):
"""It is usual that proper motions are given in equatorial coordinates,
not in ecliptical ones. Therefore, this function converts the provided
proper motions in equatorial coordinates to the corresponding ones in
ecliptical coordinates.
:param p_motion_ra: Proper motion in right ascension, in degrees per
year, as an :class:`Angle` object
:type p_motion_ra: :py:class:`Angle`
:param p_motion_dec: Proper motion in declination, in degrees per year,
as an :class:`Angle` object
:type p_motion_dec: :py:class:`Angle`
:param ra: Right ascension of the astronomical object, as degrees in an
:class:`Angle` object
:type ra: :py:class:`Angle`
:param dec: Declination of the astronomical object, as degrees in an
:class:`Angle` object
:type dec: :py:class:`Angle`
:param lat: Ecliptical latitude of the astronomical object, as degrees
in an :class:`Angle` object
:type lat: :py:class:`Angle`
:param epsilon: Obliquity of the ecliptic
:type epsilon: :py:class:`Angle`
:returns: Proper motions in ecliptical longitude and latitude (in that
order), given as two :class:`Angle` objects inside a tuple
:rtype: tuple
:raises: TypeError if input values are of wrong type.
"""
# First check that input values are of correct types
if not (
isinstance(p_motion_ra, Angle)
and isinstance(p_motion_dec, Angle)
and isinstance(ra, Angle)
and isinstance(dec, Angle)
and isinstance(lat, Angle)
and isinstance(epsilon, Angle)
):
raise TypeError("Invalid input types")
pm_ra = p_motion_ra.rad()
pm_dec = p_motion_dec.rad()
s_eps = sin(epsilon.rad())
c_eps = cos(epsilon.rad())
s_ra = sin(ra.rad())
c_ra = cos(ra.rad())
s_dec = sin(dec.rad())
c_dec = cos(dec.rad())
c_lat = cos(lat.rad())
se_ca = s_eps * c_ra
se_sd_sa = s_eps * s_dec * s_ra
pa_cd = pm_ra * c_dec
ce_cd = c_eps * c_dec
cl2 = c_lat * c_lat
p_motion_lon = (pm_dec * se_ca + pa_cd * (ce_cd + se_sd_sa)) / cl2
p_motion_lat = (pm_dec * (ce_cd + se_sd_sa) - pa_cd * se_ca) / c_lat
return (p_motion_lon, p_motion_lat)
def precession_newcomb(
start_epoch, final_epoch, start_ra, start_dec, p_motion_ra=0.0,
p_motion_dec=0.0
):
"""This function implements the Newcomb precessional equations used in
the old FK4 system. It takes equatorial coordinates (right ascension
and declination) given for an epoch and a equinox, and converts them to
the corresponding values for another epoch and equinox. Only the
**mean** positions, i.e. the effects of precession and proper motion,
are considered here.
:param start_epoch: Initial epoch when initial coordinates are given
:type start_epoch: :py:class:`Epoch`
:param final_epoch: Final epoch for when coordinates are going to be
computed
:type final_epoch: :py:class:`Epoch`
:param start_ra: Initial right ascension
:type start_ra: :py:class:`Angle`
:param start_dec: Initial declination
:type start_dec: :py:class:`Angle`
:param p_motion_ra: Proper motion in right ascension, in degrees per
year. Zero by default.
:type p_motion_ra: :py:class:`Angle`
:param p_motion_dec: Proper motion in declination, in degrees per year.
Zero by default.
:type p_motion_dec: :py:class:`Angle`
:returns: Equatorial coordinates (right ascension, declination, in that
order) corresponding to the final epoch, given as two objects
:class:`Angle` inside a tuple
:rtype: tuple
:raises: TypeError if input values are of wrong type.
"""
# First check that input values are of correct types
if not (
isinstance(start_epoch, Epoch)
and isinstance(final_epoch, Epoch)
and isinstance(start_ra, Angle)
and isinstance(start_dec, Angle)
):
raise TypeError("Invalid input types")
if isinstance(p_motion_ra, (int, float)):
p_motion_ra = Angle(p_motion_ra)
if isinstance(p_motion_dec, (int, float)):
p_motion_dec = Angle(p_motion_dec)
if not (isinstance(p_motion_ra, Angle) and
isinstance(p_motion_dec, Angle)):
raise TypeError("Invalid input types")
tt = (start_epoch - 2415020.3135) / 36524.2199
t = (final_epoch - start_epoch) / 36524.2199
# Correct starting coordinates by proper motion
start_ra += p_motion_ra * t * 100.0
start_dec += p_motion_dec * t * 100.0
# Compute the conversion parameters
zeta = t * (2304.25 + 1.396 * tt + t * (0.302 + 0.018 * t))
z = zeta + t * t * (0.791 + 0.001 * t)
theta = t * (2004.682 - 0.853 * tt - t * (0.426 + 0.042 * t))
# Redefine the former values as Angles
zeta = Angle(0, 0, zeta)
z = Angle(0, 0, z)
theta = Angle(0, 0, theta)
a = cos(start_dec.rad()) * sin(start_ra.rad() + zeta.rad())
b = cos(theta.rad()) * cos(start_dec.rad()) * cos(
start_ra.rad() + zeta.rad()
) - sin(theta.rad()) * sin(start_dec.rad())
c = sin(theta.rad()) * cos(start_dec.rad()) * cos(
start_ra.rad() + zeta.rad()
) + cos(theta.rad()) * sin(start_dec.rad())
final_ra = atan2(a, b) + z.rad()
if start_dec > 85.0: # Coordinates are close to the pole
final_dec = sqrt(a * a + b * b)
else:
final_dec = asin(c)
# Convert results to Angles. Please note results are in radians
final_ra = Angle(final_ra, radians=True)
final_dec = Angle(final_dec, radians=True)
return (final_ra, final_dec)
def motion_in_space(
start_ra, start_dec, distance, velocity, p_motion_ra, p_motion_dec, time
):
"""This function computes the star's true motion through space relative
to the Sun, allowing to compute the start proper motion at a given
time.
:param start_ra: Initial right ascension
:type start_ra: :py:class:`Angle`
:param start_dec: Initial declination
:type start_dec: :py:class:`Angle`
:param distance: Star's distance to the Sun, in parsecs. If distance is
given in light-years, multipy it by 0.3066. If the star's parallax
**pie** (in arcseconds) is given, use (1.0/pie).
:type distance: float
:param velocity: Radial velocity in km/s
:type velocity: float
:param p_motion_ra: Proper motion in right ascension, in degrees per
year.
:type p_motion_ra: :py:class:`Angle`
:param p_motion_dec: Proper motion in declination, in degrees per year.
:type p_motion_dec: :py:class:`Angle`
:param time: Number of years since starting epoch, positive in the
future, negative in the past
:type time: float
:returns: Equatorial coordinates (right ascension, declination, in that
order) corresponding to the final epoch, given as two objects
:class:`Angle` inside a tuple
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> ra = Angle(6, 45, 8.871, ra=True)
>>> dec = Angle(-16.716108)
>>> pm_ra = Angle(0, 0, -0.03847, ra=True)
>>> pm_dec = Angle(0, 0, -1.2053)
>>> dist = 2.64
>>> vel = -7.6
>>> alpha, delta = motion_in_space(ra, dec, dist, vel, pm_ra, pm_dec,
... -1000.0)
>>> print(alpha.ra_str(False, 2))
6:45:47.16
>>> print(delta.dms_str(False, 1))
-16:22:56.0
>>> alpha, delta = motion_in_space(ra, dec, dist, vel, pm_ra, pm_dec,
... -4000.0)
>>> print(alpha.ra_str(False, 2))
6:47:39.91
>>> print(delta.dms_str(False, 1))
-15:23:30.6
"""
# >>> ra = Angle(101.286962)
# First check that input values are of correct types
if not (isinstance(start_ra, Angle) and isinstance(start_dec, Angle)):
raise TypeError("Invalid input types")
if isinstance(p_motion_ra, (int, float)):
p_motion_ra = Angle(p_motion_ra)
if isinstance(p_motion_dec, (int, float)):
p_motion_dec = Angle(p_motion_dec)
if not (isinstance(p_motion_ra, Angle) and
isinstance(p_motion_dec, Angle)):
raise TypeError("Invalid input types")
if not (
isinstance(distance, (int, float))
and isinstance(velocity, (int, float))
and isinstance(time, (int, float))
):
raise TypeError("Invalid input types")
dr = velocity / 977792.0
x = distance * cos(start_dec.rad()) * cos(start_ra.rad())
y = distance * cos(start_dec.rad()) * sin(start_ra.rad())
z = distance * sin(start_dec.rad())
dx = (
(x / distance) * dr
- z * p_motion_dec.rad() * cos(start_ra.rad())
- y * p_motion_ra.rad()
)
dy = (
(y / distance) * dr
- z * p_motion_dec.rad() * sin(start_ra.rad())
+ x * p_motion_ra.rad()
)
dz = ((z / distance) * dr + distance *
p_motion_dec.rad() * cos(start_dec.rad()))
xp = x + time * dx
yp = y + time * dy
zp = z + time * dz
final_ra = atan2(yp, xp)
final_dec = atan(zp / sqrt(xp * xp + yp * yp))
# Convert results to Angles. Please note results are in radians
final_ra = Angle(final_ra, radians=True)
final_dec = Angle(final_dec, radians=True)
return (final_ra, final_dec)
def equatorial2ecliptical(right_ascension, declination, obliquity):
"""This function converts from equatorial coordinated (right ascension and
declination) to ecliptical coordinates (longitude and latitude).
:param right_ascension: Right ascension, as an Angle object
:type start_epoch: :py:class:`Angle`
:param declination: Declination, as an Angle object
:type start_epoch: :py:class:`Angle`
:param obliquity: Obliquity of the ecliptic, as an Angle object
:type obliquity: :py:class:`Angle`
:returns: Ecliptical coordinates (longitude, latitude, in that order),
given as two :class:`Angle` objects inside a tuple
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> ra = Angle(7, 45, 18.946, ra=True)
>>> dec = Angle(28, 1, 34.26)
>>> epsilon = Angle(23.4392911)
>>> lon, lat = equatorial2ecliptical(ra, dec, epsilon)
>>> print(round(lon(), 5))
113.21563
>>> print(round(lat(), 5))
6.68417
"""
# First check that input values are of correct types
if not (
isinstance(right_ascension, Angle)
and isinstance(declination, Angle)
and isinstance(obliquity, Angle)
):
raise TypeError("Invalid input types")
ra = right_ascension.rad()
dec = declination.rad()
eps = obliquity.rad()
lon = atan2((sin(ra) * cos(eps) + tan(dec) * sin(eps)), cos(ra))
lat = asin(sin(dec) * cos(eps) - cos(dec) * sin(eps) * sin(ra))
lon = Angle(lon, radians=True)
lon = lon.to_positive()
lat = Angle(lat, radians=True)
return (lon, lat)
def ecliptical2equatorial(longitude, latitude, obliquity):
"""This function converts from ecliptical coordinates (longitude and
latitude) to equatorial coordinated (right ascension and declination).
:param longitude: Ecliptical longitude, as an Angle object
:type longitude: :py:class:`Angle`
:param latitude: Ecliptical latitude, as an Angle object
:type latitude: :py:class:`Angle`
:param obliquity: Obliquity of the ecliptic, as an Angle object
:type obliquity: :py:class:`Angle`
:returns: Equatorial coordinates (right ascension, declination, in that
order), given as two :class:`Angle` objects inside a tuple
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> lon = Angle(113.21563)
>>> lat = Angle(6.68417)
>>> epsilon = Angle(23.4392911)
>>> ra, dec = ecliptical2equatorial(lon, lat, epsilon)
>>> print(ra.ra_str(n_dec=3))
7h 45' 18.946''
>>> print(dec.dms_str(n_dec=2))
28d 1' 34.26''
"""
# First check that input values are of correct types
if not (
isinstance(longitude, Angle)
and isinstance(latitude, Angle)
and isinstance(obliquity, Angle)
):
raise TypeError("Invalid input types")
lon = longitude.rad()
lat = latitude.rad()
eps = obliquity.rad()
ra = atan2((sin(lon) * cos(eps) - tan(lat) * sin(eps)), cos(lon))
dec = asin(sin(lat) * cos(eps) + cos(lat) * sin(eps) * sin(lon))
ra = Angle(ra, radians=True)
ra = ra.to_positive()
dec = Angle(dec, radians=True)
return (ra, dec)
def equatorial2horizontal(hour_angle, declination, geo_latitude):
"""This function converts from equatorial coordinates (right ascension and
declination) to local horizontal coordinates (azimuth and elevation).
Following Meeus' convention, the azimuth is measured westward from the
SOUTH. If you want the azimuth to be measured from the north (common custom
between navigators and meteorologits), you should add 180 degrees.
The hour angle (H) comprises information about the sidereal time, the
observer's geodetic longitude (positive west from Greenwich) and the right
ascension. If theta is the local sidereal time, theta0 the sidereal time at
Greenwich, lon the observer's longitude and ra the right ascension, the
following expressions hold:
H = theta - ra
H = theta0 - lon - ra
:param hour_angle: Hour angle, as an Angle object
:type hour_angle: :py:class:`Angle`
:param declination: Declination, as an Angle object
:type declination: :py:class:`Angle`
:param geo_latitude: Geodetic latitude of the observer, as an Angle object
:type geo_latitude: :py:class:`Angle`
:returns: Local horizontal coordinates (azimuth, elevation, in that order),
given as two :class:`Angle` objects inside a tuple
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> lon = Angle(77, 3, 56)
>>> lat = Angle(38, 55, 17)
>>> ra = Angle(23, 9, 16.641, ra=True)
>>> dec = Angle(-6, 43, 11.61)
>>> theta0 = Angle(8, 34, 57.0896, ra=True)
>>> eps = Angle(23, 26, 36.87)
>>> delta = Angle(0, 0, ((-3.868*cos(eps.rad()))/15.0), ra=True)
>>> theta0 += delta
>>> h = theta0 - lon - ra
>>> azi, ele = equatorial2horizontal(h, dec, lat)
>>> print(round(azi, 3))
68.034
>>> print(round(ele, 3))
15.125
"""
# First check that input values are of correct types
if not (
isinstance(hour_angle, Angle)
and isinstance(declination, Angle)
and isinstance(geo_latitude, Angle)
):
raise TypeError("Invalid input types")
h = hour_angle.rad()
dec = declination.rad()
lat = geo_latitude.rad()
azi = atan2(sin(h), (cos(h) * sin(lat) - tan(dec) * cos(lat)))
ele = asin(sin(lat) * sin(dec) + cos(lat) * cos(dec) * cos(h))
azi = Angle(azi, radians=True)
ele = Angle(ele, radians=True)
return (azi, ele)
def horizontal2equatorial(azimuth, elevation, geo_latitude):
"""This function converts from local horizontal coordinates (azimuth and
elevation) to equatorial coordinates (right ascension and declination).
Following Meeus' convention, the azimuth is measured westward from the
SOUTH.
This function returns the hour angle and the declination. The hour angle
(H) comprises information about the sidereal time, the observer's geodetic
longitude (positive west from Greenwich) and the right ascension. If theta
is the local sidereal time, theta0 the sidereal time at Greenwich, lon the
observer's longitude and ra the right ascension, the following expressions
hold:
H = theta - ra
H = theta0 - lon - ra
:param azimuth: Azimuth, measured westward from south, as an Angle object
:type azimuth: :py:class:`Angle`
:param elevation: Elevation from the horizon, as an Angle object
:type elevation: :py:class:`Angle`
:param geo_latitude: Geodetic latitude of the observer, as an Angle object
:type geo_latitude: :py:class:`Angle`
:returns: Equatorial coordinates (as hour angle and declination, in that
order), given as two :class:`Angle` objects inside a tuple
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> azi = Angle(68.0337)
>>> ele = Angle(15.1249)
>>> lat = Angle(38, 55, 17)
>>> h, dec = horizontal2equatorial(azi, ele, lat)
>>> print(round(h, 4))
64.3521
>>> print(dec.dms_str(n_dec=0))
-6d 43' 12.0''
"""
# First check that input values are of correct types
if not (
isinstance(azimuth, Angle)
and isinstance(elevation, Angle)
and isinstance(geo_latitude, Angle)
):
raise TypeError("Invalid input types")
azi = azimuth.rad()
ele = elevation.rad()
lat = geo_latitude.rad()
h = atan2(sin(azi), (cos(azi) * sin(lat) + tan(ele) * cos(lat)))
dec = asin(sin(lat) * sin(ele) - cos(lat) * cos(ele) * cos(azi))
h = Angle(h, radians=True)
dec = Angle(dec, radians=True)
return (h, dec)
def equatorial2galactic(right_ascension, declination):
"""This function converts from equatorial coordinates (right ascension and
declination) to galactic coordinates (longitude and latitude).
The current galactic system of coordinates was defined by the International
Astronomical Union in 1959, using the standard equatorial system of epoch
B1950.0.
:param right_ascension: Right ascension, as an Angle object
:type right_ascension: :py:class:`Angle`
:param declination: Declination, as an Angle object
:type declination: :py:class:`Angle`
:returns: Galactic coordinates (longitude and latitude, in that order),
given as two :class:`Angle` objects inside a tuple
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> ra = Angle(17, 48, 59.74, ra=True)
>>> dec = Angle(-14, 43, 8.2)
>>> lon, lat = equatorial2galactic(ra, dec)
>>> print(round(lon, 4))
12.9593
>>> print(round(lat, 4))
6.0463
"""
# First check that input values are of correct types
if not (isinstance(right_ascension, Angle) and
isinstance(declination, Angle)):
raise TypeError("Invalid input types")
ra = right_ascension.rad()
dec = declination.rad()
c1 = Angle(192.25)
c1 = c1.rad()
c1ra = c1 - ra
c2 = Angle(27.4)
c2 = c2.rad()
x = atan2(sin(c1ra), (cos(c1ra) * sin(c2) - tan(dec) * cos(c2)))
lon = Angle(-x, radians=True)
lon = 303.0 + lon
lon = lon.to_positive()
lat = asin(sin(dec) * sin(c2) + cos(dec) * cos(c2) * cos(c1ra))
lat = Angle(lat, radians=True)
return (lon, lat)
def galactic2equatorial(longitude, latitude):
"""This function converts from galactic coordinates (longitude and latitude)
to equatorial coordinates (right ascension and declination).
The current galactic system of coordinates was defined by the International
Astronomical Union in 1959, using the standard equatorial system of epoch
B1950.0.
:param longitude: Longitude, as an Angle object
:type longitude: :py:class:`Angle`
:param latitude: Latitude, as an Angle object
:type latitude: :py:class:`Angle`
:returns: Equatorial coordinates (right ascension and declination, in that
order), given as two :class:`Angle` objects inside a tuple
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> lon = Angle(12.9593)
>>> lat = Angle(6.0463)
>>> ra, dec = galactic2equatorial(lon, lat)
>>> print(ra.ra_str(n_dec=1))
17h 48' 59.7''
>>> print(dec.dms_str(n_dec=0))
-14d 43' 8.0''
"""
# First check that input values are of correct types
if not (isinstance(longitude, Angle) and isinstance(latitude, Angle)):
raise TypeError("Invalid input types")
lon = longitude.rad()
lat = latitude.rad()
c1 = Angle(123.0)
c1 = c1.rad()
c2 = Angle(27.4)
c2 = c2.rad()
lc1 = lon - c1
y = atan2(sin(lc1), (cos(lc1) * sin(c2) - tan(lat) * cos(c2)))
y = Angle(y, radians=True)
ra = y + 12.25
ra.to_positive()
dec = asin(sin(lat) * sin(c2) + cos(lat) * cos(c2) * cos(lc1))
dec = Angle(dec, radians=True)
return (ra, dec)
def parallactic_angle(hour_angle, declination, geo_latitude):
"""This function computes the parallactic angle, an apparent rotation that
appears because celestial bodies move along parallel circles. By
convention, the parallactic angle is negative before the passage through
the southern meridian (in the north hemisphere), and positive afterwards.
Exactly on the meridian, its value is zero.
Please note that when the celestial body is exactly at the zenith, the
parallactic angle is not defined, and this function will return 'None'.
The hour angle (H) comprises information about the sidereal time, the
observer's geodetic longitude (positive west from Greenwich) and the right
ascension. If theta is the local sidereal time, theta0 the sidereal time at
Greenwich, lon the observer's longitude and ra the right ascension, the
following expressions hold:
H = theta - ra
H = theta0 - lon - ra
:param hour_angle: Hour angle, as an Angle object
:type hour_angle: :py:class:`Angle`
:param declination: Declination, as an Angle object
:type declination: :py:class:`Angle`
:param geo_latitude: Geodetic latitude of the observer, as an Angle object
:type geo_latitude: :py:class:`Angle`
:returns: Parallactic angle as an py:class:`Angle` object
:rtype: :py:class:`Angle`
:raises: TypeError if input values are of wrong type.
>>> hour_angle = Angle(0.0)
>>> declination = Angle(45.0)
>>> latitude = Angle(50.0)
>>> q = parallactic_angle(hour_angle, declination, latitude)
>>> print(q.dms_str(n_dec=1))
0d 0' 0.0''
"""
# First check that input values are of correct types
if not (
isinstance(hour_angle, Angle)
and isinstance(declination, Angle)
and isinstance(geo_latitude, Angle)
):
raise TypeError("Invalid input types")
h = hour_angle.rad()
dec = declination.rad()
lat = geo_latitude.rad()
den = tan(lat) * cos(dec) - sin(dec) * cos(h)
if abs(den) < TOL:
return None
q = atan2(sin(h), den)
q = Angle(q, radians=True)
return q
def ecliptic_horizon(local_sidereal_time, geo_latitude, obliquity):
"""This function returns the longitudes of the two points of the ecliptic
which are on the horizon, as well as the angle between the ecliptic and the
horizon.
:param local_sidereal_time: Local sidereal time, as an Angle object
:type local_sidereal_time: :py:class:`Angle`
:param geo_latitude: Geodetic latitude, as an Angle object
:type geo_latitude: :py:class:`Angle`
:param obliquity: Obliquity of the ecliptic, as an Angle object
:type obliquity: :py:class:`Angle`
:returns: Longitudes of the two points of the ecliptic which are on the
horizon, and the angle between the ecliptic and the horizon (in that
order), given as three :class:`Angle` objects inside a tuple
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> sidereal_time = Angle(5.0, ra=True)
>>> lat = Angle(51.0)
>>> epsilon = Angle(23.44)
>>> lon1, lon2, i = ecliptic_horizon(sidereal_time, lat, epsilon)
>>> print(lon1.dms_str(n_dec=1))
169d 21' 29.9''
>>> print(lon2.dms_str(n_dec=1))
349d 21' 29.9''
>>> print(round(i, 0))
62.0
"""
# First check that input values are of correct types
if not (
isinstance(local_sidereal_time, Angle)
and isinstance(geo_latitude, Angle)
and isinstance(obliquity, Angle)
):
raise TypeError("Invalid input types")
theta = local_sidereal_time.rad()
lat = geo_latitude.rad()
eps = obliquity.rad()
# First, let's compute the longitudes of the ecliptic points on the horizon
lon1 = atan2(-cos(theta), (sin(eps) * tan(lat) + cos(eps) * sin(theta)))
lon1 = Angle(lon1, radians=True)
lon1.to_positive()
# Get the second point, which is 180 degrees apart
if lon1 < 180.0:
lon2 = lon1 + 180.0
else:
lon2 = lon1
lon1 = lon2 - 180.0
# Now, compute the angle between the ecliptic and the horizon
i = acos(cos(eps) * sin(lat) - sin(eps) * cos(lat) * sin(theta))
i = Angle(i, radians=True)
return (lon1, lon2, i)
def ecliptic_equator(longitude, latitude, obliquity):
"""This function returns the angle between the direction of the northern
celestial pole and the direction of the north pole of the ecliptic, taking
as reference the point whose ecliptic longitude and latitude are given.
Please note that if we make latitude=0, the result is the angle between the
ecliptic (at the given ecliptical longitude) and the east-west direction on
the celestial sphere.
:param longitude: Ecliptical longitude, as an Angle object
:type longitude: :py:class:`Angle`
:param latitude: Ecliptical latitude, as an Angle object
:type latitude: :py:class:`Angle`
:param obliquity: Obliquity of the ecliptic, as an Angle object
:type obliquity: :py:class:`Angle`
:returns: Angle between the direction of the northern celestial pole and
the direction of the north pole of the ecliptic, given as one
:class:`Angle` object
:rtype: :class:`Angle`
:raises: TypeError if input values are of wrong type.
>>> lon = Angle(0.0)
>>> lat = Angle(0.0)
>>> eps = Angle(23.5)
>>> ang_ecl_equ = ecliptic_equator(lon, lat, eps)
>>> print(ang_ecl_equ.dms_str(n_dec=1))
156d 30' 0.0''
"""
# First check that input values are of correct types
if not (
isinstance(longitude, Angle)
and isinstance(latitude, Angle)
and isinstance(obliquity, Angle)
):
raise TypeError("Invalid input types")
lon = longitude.rad()
lat = latitude.rad()
eps = obliquity.rad()
q = (atan2((cos(lon) * tan(eps)), (sin(lat) *
sin(lon) * tan(eps) - cos(lat))))
q = Angle(q, radians=True)
return q
def diurnal_path_horizon(declination, geo_latitude):
"""This function returns the angle of the diurnal path of a celestial body
relative to the horizon at the time of its rising or setting.
:param declination: Declination, as an Angle object
:type declination: :py:class:`Angle`
:param geo_latitude: Geodetic latitude, as an Angle object
:type geo_latitude: :py:class:`Angle`
:returns: Angle of the diurnal path of the celestial body relative to the
horizon at the time of rising or setting, given as one
:class:`Angle` object
:rtype: :class:`Angle`
:raises: TypeError if input values are of wrong type.
>>> declination = Angle(23.44)
>>> latitude = Angle(40.0)
>>> path_angle = diurnal_path_horizon(declination, latitude)
>>> print(path_angle.dms_str(n_dec=1))
45d 31' 28.4''
"""
# First check that input values are of correct types
if not (isinstance(declination, Angle) and
isinstance(geo_latitude, Angle)):
raise TypeError("Invalid input types")
dec = declination.rad()
lat = geo_latitude.rad()
b = tan(dec) * tan(lat)
c = sqrt(1.0 - b * b)
j = atan2(c * cos(dec), tan(lat))
j = Angle(j, radians=True)
return j
def times_rise_transit_set(
longitude,
latitude,
alpha1,
delta1,
alpha2,
delta2,
alpha3,
delta3,
h0,
delta_t,
theta0,
):
"""This function computes the times (in Universal Time UT) of rising,
transit and setting of a given celestial body.
.. note:: If the body is circumpolar there are no rising, transit nor
setting times. In such a case a tuple with None's is returned
.. note:: Care must be taken when interpreting the results. For instance,
if the setting time is **smaller** than the rising time, it means that
it belongs to the **following** day. Also, if the rising time is
**bigger** than the setting time, it belong to the **previous** day.
The same applies to the transit time.
:param longitude: Geodetic longitude, as an Angle object. It is measured
positively west from Greenwich, and negatively to the east.
:type longitude: :py:class:`Angle`
:param latitude: Geodetic latitude, as an Angle object
:type latitude: :py:class:`Angle`
:param alpha1: Apparent right ascension the previous day at 0h TT, as an
Angle object
:type alpha1: :py:class:`Angle`
:param delta1: Apparent declination the previous day at 0h TT, as an Angle
object
:type delta1: :py:class:`Angle`
:param alpha2: Apparent right ascension the current day at 0h TT, as an
Angle object
:type alpha2: :py:class:`Angle`
:param delta2: Apparent declination the current day at 0h TT, as an Angle
object
:type delta2: :py:class:`Angle`
:param alpha3: Apparent right ascension the following day at 0h TT, as an
Angle object
:type alpha3: :py:class:`Angle`
:param delta3: Apparent declination the following day at 0h TT, as an Angle
object
:type delta3: :py:class:`Angle`
:param h0: 'Standard' altitude: the geometric altitude of the center of the
body at the time of apparent rising or setting, as degrees in an Angle
object. It should be -0.5667 deg for stars and planets, -0.8333 deg
for the Sun, and 0.125 deg for the Moon.
:type h0: :py:class:`Angle`
:param delta_t: The difference between Terrestrial Time and Universal Time
(TT - UT) in seconds of time
:type delta_t: float
:param theta0: Apparent sidereal time at 0h TT on the current day for the
meridian of Greenwich, as degrees in an Angle object
:type theta0: :py:class:`Angle`
:returns: A tuple with the times of rising, transit and setting, in that
order, as hours in UT.
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> longitude = Angle(71, 5, 0.0)
>>> latitude = Angle(42, 20, 0.0)
>>> alpha1 = Angle(2, 42, 43.25, ra=True)
>>> delta1 = Angle(18, 2, 51.4)
>>> alpha2 = Angle(2, 46, 55.51, ra=True)
>>> delta2 = Angle(18, 26, 27.3)
>>> alpha3 = Angle(2, 51, 7.69, ra=True)
>>> delta3 = Angle(18, 49, 38.7)
>>> h0 = Angle(-0.5667)
>>> delta_t = 56.0
>>> theta0 = Angle(11, 50, 58.1, ra=True)
>>> rising, transit, setting = times_rise_transit_set(longitude, latitude,\
alpha1, delta1, \
alpha2, delta2, \
alpha3, delta3, h0, \
delta_t, theta0)
>>> print(round(rising, 4))
12.4238
>>> print(round(transit, 3))
19.675
>>> print(round(setting, 3))
2.911
"""
def check_value(m):
while m < 0 or m > 1.0:
if m < 0.0:
m += 1
elif m > 1.0:
m -= 1
return m
def interpol(n, y1, y2, y3):
a = y2 - y1
b = y3 - y2
c = b - a
return y2 + n * (a + b + n * c) / 2.0
# First check that input values are of correct types
if not (
isinstance(longitude, Angle)
and isinstance(latitude, Angle)
and isinstance(alpha1, Angle)
and isinstance(delta1, Angle)
and isinstance(alpha2, Angle)
and isinstance(delta2, Angle)
and isinstance(alpha3, Angle)
and isinstance(delta3, Angle)
and isinstance(h0, Angle)
and isinstance(theta0, Angle)
and isinstance(delta_t, (int, float))
):
raise TypeError("Invalid input types")
# Let's start computing approximate times
h = h0.rad()
lat = latitude.rad()
d2 = delta2.rad()
hh0 = (sin(h) - sin(lat) * sin(d2)) / (cos(lat) * cos(d2))
# Check if the body is circumpolar. In such case, there are no rising,
# transit nor setting times, and a tuple with None's is returned
if abs(hh0) > 1.0:
return (None, None, None)
hh0 = acos(hh0)
hh0 = Angle(hh0, radians=True)
hh0.to_positive()
m0 = (alpha2 + longitude - theta0) / 360.0
m0 = m0() # m0 is an Angle. Convert to float
m1 = m0 - hh0() / 360.0
m2 = m0 + hh0() / 360.0
m0 = check_value(m0)
m1 = check_value(m1)
m2 = check_value(m2)
# Carry out this procedure twice
for _ in range(2):
# Interpolate alpha and delta values for each (m0, m1, m2)
n = m0 + delta_t / 86400.0
transit_alpha = interpol(n, alpha1, alpha2, alpha3)
n = m1 + delta_t / 86400.0
rise_alpha = interpol(n, alpha1, alpha2, alpha3)
rise_delta = interpol(n, delta1, delta2, delta3)
n = m2 + delta_t / 86400.0
set_alpha = interpol(n, alpha1, alpha2, alpha3)
set_delta = interpol(n, delta1, delta2, delta3)
# Compute the hour angles
theta = theta0 + 360.985647 * m0
transit_ha = theta - longitude - transit_alpha
delta_transit = transit_ha / (-360.0)
theta = theta0 + 360.985647 * m1
rise_ha = theta - longitude - rise_alpha
theta = theta0 + 360.985647 * m2
set_ha = theta - longitude - set_alpha
# We need the elevations
azi, rise_ele = equatorial2horizontal(rise_ha, rise_delta, latitude)
azi, set_ele = equatorial2horizontal(set_ha, set_delta, latitude)
delta_rise = (rise_ele - h0) / (
360.0 * cos(rise_delta.rad()) * cos(lat) * sin(rise_ha.rad())
)
delta_set = (set_ele - h0) / (
360.0 * cos(set_delta.rad()) * cos(lat) * sin(set_ha.rad())
)
m0 += delta_transit()
m1 += delta_rise()
m2 += delta_set()
return (m1 * 24.0, m0 * 24.0, m2 * 24.0)
def refraction_apparent2true(apparent_elevation, pressure=1010.0,
temperature=10.0):
"""This function computes the atmospheric refraction converting from the
apparent elevation (i.e., the observed elevation through the air) to the
true, 'airless', elevation.
.. note:: This function, by default, assumes that the atmospheric pressure
is 1010 milibars, and the air temperature is 10 Celsius.
.. note:: Due to the numerous factors that may affect the atmospheric
refraction, especially near the horizon, the values given by this
function are approximate values.
:param apparent_elevation: The elevation, in degrees and as an Angle
object, of a given celestial object when observed through the
normal atmosphere
:type apparent_elevation: :py:class:`Angle`
:param pressure: Atmospheric pressure at the observation point, in milibars
:type pressure: float
:param temperature: Atmospheric temperature at the observation point, in
degrees Celsius
:type temperature: :float
:returns: An Angle object with the true, 'airless' elevation of the
celestial object
:rtype: :py:class:`Angle`
:raises: TypeError if input values are of wrong type.
>>> apparent_elevation = Angle(0, 30, 0.0)
>>> true_elevation = refraction_apparent2true(apparent_elevation)
>>> print(true_elevation.dms_str(n_dec=1))
1' 14.7''
"""
# First check that input values are of correct types
if not (
isinstance(apparent_elevation, Angle)
and isinstance(pressure, (int, float))
and isinstance(temperature, (int, float))
):
raise TypeError("Invalid input types")
x = apparent_elevation + 7.31 / (apparent_elevation + 4.4)
r = 1.0 / tan(x.rad()) + 0.0013515
r = Angle(r / 60.0) # The 'r' value is in minutes of arc
if pressure != 1010.0 or temperature != 10.0:
r = r * pressure / 1010.0 * 283.0 / (273.0 + temperature)
return apparent_elevation - r
def refraction_true2apparent(true_elevation, pressure=1010.0,
temperature=10.0):
"""This function computes the atmospheric refraction converting from the
true, 'airless', elevation (i.e., the one computed from celestial
coordinates) to the apparent elevation (the observed elevation through the
air)
.. note:: This function, by default, assumes that the atmospheric pressure
is 1010 milibars, and the air temperature is 10 Celsius.
.. note:: Due to the numerous factors that may affect the atmospheric
refraction, especially near the horizon, the values given by this
function are approximate values.
:param true_elevation: The elevation, in degrees and as an Angle
object, of a given celestial object when computed from celestial
coordinates, and assuming there is no atmospheric refraction due to the
air
:type true_elevation: :py:class:`Angle`
:param pressure: Atmospheric pressure at the observation point, in milibars
:type pressure: float
:param temperature: Atmospheric temperature at the observation point, in
degrees Celsius
:type temperature: :float
:returns: An Angle object with the aparent, 'with air' elevation of the
celestial object
:rtype: :py:class:`Angle`
:raises: TypeError if input values are of wrong type.
>>> true_elevation = Angle(0, 33, 14.76)
>>> apparent_elevation = refraction_true2apparent(true_elevation)
>>> print(apparent_elevation.dms_str(n_dec=2))
57' 51.96''
"""
# First check that input values are of correct types
if not (
isinstance(true_elevation, Angle)
and isinstance(pressure, (int, float))
and isinstance(temperature, (int, float))
):
raise TypeError("Invalid input types")
x = true_elevation + 10.3 / (true_elevation + 5.11)
r = 1.02 / tan(x.rad()) + 0.0019279
r = Angle(r / 60.0) # The 'r' value is in minutes of arc
if pressure != 1010.0 or temperature != 10.0:
r = r * pressure / 1010.0 * 283.0 / (273.0 + temperature)
return true_elevation + r
def angular_separation(alpha1, delta1, alpha2, delta2):
"""This function computes the angular distance between two celestial bodies
whose right ascensions and declinations are given.
.. note:: It is possible to use this formula with ecliptial (celestial)
longitudes and latitudes instead of right ascensions and declinations,
respectively.
:param alpha1: Right ascension of celestial body #1, as an Angle object
:type alpha1: :py:class:`Angle`
:param delta1: Declination of celestial body #1, as an Angle object
:type delta1: :py:class:`Angle`
:param alpha2: Right ascension of celestial body #2, as an Angle object
:type alpha2: :py:class:`Angle`
:param delta2: Declination of celestial body #2, as an Angle object
:type delta2: :py:class:`Angle`
:returns: An Angle object with the angular separation between the given
celestial objects
:rtype: :py:class:`Angle`
:raises: TypeError if input values are of wrong type.
>>> alpha1 = Angle(14, 15, 39.7, ra=True)
>>> delta1 = Angle(19, 10, 57.0)
>>> alpha2 = Angle(13, 25, 11.6, ra=True)
>>> delta2 = Angle(-11, 9, 41.0)
>>> sep_ang = angular_separation(alpha1, delta1, alpha2, delta2)
>>> print(round(sep_ang, 3))
32.793
"""
# Let's define an auxiliary function
def hav(theta):
"""Function to compute the haversine (hav)"""
return (1.0 - cos(theta)) / 2.0
# First check that input values are of correct types
if not (
isinstance(alpha1, Angle)
and isinstance(delta1, Angle)
and isinstance(alpha2, Angle)
and isinstance(delta2, Angle)
):
raise TypeError("Invalid input types")
dalpha = alpha1 - alpha2
dalpha = dalpha.rad()
ddelta = delta1 - delta2
ddelta = ddelta.rad()
d1 = delta1.rad()
d2 = delta2.rad()
theta = 2.0 * asin(sqrt(hav(ddelta) + cos(d1) * cos(d2) * hav(dalpha)))
theta = Angle(theta, radians=True)
return theta
def minimum_angular_separation(
alpha1_1,
delta1_1,
alpha1_2,
delta1_2,
alpha1_3,
delta1_3,
alpha2_1,
delta2_1,
alpha2_2,
delta2_2,
alpha2_3,
delta2_3,
):
"""Given the positions at three different instants of times (equidistant)
of two celestial objects, this function computes the minimum angular
distance that will be achieved within that interval of time.
.. note:: Suffix '1 _' is for the first celestial object, and '2 _' is for
the second one.
.. note:: This function provides as output the 'n' fraction of time when
the minimum angular separation is achieved. For that, the epoch in the
middle is assigned the value "n = 0". Therefore, n < 0 is for times
**before** the middle epoch, and n > 0 is for times **after** the
middle epoch.
:param alpha1_1: First right ascension of celestial body #1, as an Angle
object
:type alpha1_1: :py:class:`Angle`
:param delta1_1: First declination of celestial body #1, as an Angle object
:type delta1_1: :py:class:`Angle`
:param alpha1_2: Second right ascension of celestial body #1, as an Angle
object
:type alpha1_2: :py:class:`Angle`
:param delta1_2: Second declination of celestial body #1, as Angle object
:type delta1_2: :py:class:`Angle`
:param alpha1_3: Third right ascension of celestial body #1, as an Angle
object
:type alpha1_3: :py:class:`Angle`
:param delta1_3: Third declination of celestial body #1, as an Angle object
:type delta1_3: :py:class:`Angle`
:param alpha2_1: First right ascension of celestial body #2, as an Angle
object
:type alpha2_1: :py:class:`Angle`
:param delta2_1: First declination of celestial body #2, as an Angle object
:type delta2_1: :py:class:`Angle`
:param alpha2_2: Second right ascension of celestial body #2, as an Angle
object
:type alpha2_2: :py:class:`Angle`
:param delta2_2: Second declination of celestial body #2, as Angle object
:type delta2_2: :py:class:`Angle`
:param alpha2_3: Third right ascension of celestial body #2, as an Angle
object
:type alpha2_3: :py:class:`Angle`
:param delta2_3: Third declination of celestial body #2, as an Angle object
:type delta2_3: :py:class:`Angle`
:returns: A tuple with two components: The first component is a float
containing the 'n' fraction of time when the minimum angular separation
is achieved. The second component is an Angle object containing the
minimum angular separation between the given celestial objects
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> alpha1_1 = Angle(10, 29, 44.27, ra=True)
>>> delta1_1 = Angle(11, 2, 5.9)
>>> alpha2_1 = Angle(10, 33, 29.64, ra=True)
>>> delta2_1 = Angle(10, 40, 13.2)
>>> alpha1_2 = Angle(10, 36, 19.63, ra=True)
>>> delta1_2 = Angle(10, 29, 51.7)
>>> alpha2_2 = Angle(10, 33, 57.97, ra=True)
>>> delta2_2 = Angle(10, 37, 33.4)
>>> alpha1_3 = Angle(10, 43, 1.75, ra=True)
>>> delta1_3 = Angle(9, 55, 16.7)
>>> alpha2_3 = Angle(10, 34, 26.22, ra=True)
>>> delta2_3 = Angle(10, 34, 53.9)
>>> a = minimum_angular_separation(alpha1_1, delta1_1, alpha1_2, delta1_2,\
alpha1_3, delta1_3, alpha2_1, delta2_1,\
alpha2_2, delta2_2, alpha2_3, delta2_3)
>>> print(round(a[0], 6))
-0.370726
>>> print(a[1].dms_str(n_dec=0))
3' 44.0''
"""
# Let's define some auxiliary functions
def k_factor(d1, d_a):
"""This auxiliary function returns arcseconds, input is in radians"""
return (206264.8062 / (1.0 + sin(d1) * sin(d1) *
tan(d_a) * tan(d_a / 2.0)))
def u_factor(k, d1, d_a, d_d):
"""Input is in radians, except for k (arcseconds)"""
return -k * (1.0 - tan(d1) * sin(d_d)) * cos(d1) * tan(d_a)
def v_factor(k, d1, d_a, d_d):
"""Input is in radians, except for k (arcseconds)"""
return k * (sin(d_d) + sin(d1) * cos(d1) * tan(d_a) * tan(d_a / 2.0))
def u_prime(n, u1, u2, u3):
return (u3 - u1) / 2.0 + n * (u1 + u3 - 2.0 * u2)
def delta_n(u, u_p, v, v_p):
return -(u * u_p + v * v_p) / (u_p * u_p + v_p * v_p)
def interpol(n, y1, y2, y3):
"""This is formula 3.3 from Meeus book"""
a = y2 - y1
b = y3 - y2
c = b - a
return y2 + n * (a + b + n * c) / 2.0
# First check that input values are of correct types
if not (
isinstance(alpha1_1, Angle)
and isinstance(delta1_1, Angle)
and isinstance(alpha1_2, Angle)
and isinstance(delta1_2, Angle)
and isinstance(alpha1_3, Angle)
and isinstance(delta1_3, Angle)
and isinstance(alpha2_1, Angle)
and isinstance(delta2_1, Angle)
and isinstance(alpha2_2, Angle)
and isinstance(delta2_2, Angle)
and isinstance(alpha2_3, Angle)
and isinstance(delta2_3, Angle)
):
raise TypeError("Invalid input types")
# Let's define two dictionaries to store the intermediate results
u = {}
v = {}
# Compute intermediate results for first epoch
d1 = delta1_1.rad()
d_a = alpha2_1.rad() - alpha1_1.rad()
d_d = delta2_1.rad() - delta1_1.rad()
k = k_factor(d1, d_a)
u[1] = u_factor(k, d1, d_a, d_d)
v[1] = v_factor(k, d1, d_a, d_d)
# Compute intermediate results for second epoch
d1 = delta1_2.rad()
d_a = alpha2_2.rad() - alpha1_2.rad()
d_d = delta2_2.rad() - delta1_2.rad()
k = k_factor(d1, d_a)
u[2] = u_factor(k, d1, d_a, d_d)
v[2] = v_factor(k, d1, d_a, d_d)
# Compute intermediate results for third epoch
d1 = delta1_3.rad()
d_a = alpha2_3.rad() - alpha1_3.rad()
d_d = delta2_3.rad() - delta1_3.rad()
k = k_factor(d1, d_a)
u[3] = u_factor(k, d1, d_a, d_d)
v[3] = v_factor(k, d1, d_a, d_d)
# Iterate to find the solution
n = 0.0
dn = 999999.9
while abs(dn) > 0.000001:
uu = interpol(n, u[1], u[2], u[3])
vv = interpol(n, v[1], v[2], v[3])
up = u_prime(n, u[1], u[2], u[3])
vp = u_prime(n, v[1], v[2], v[3])
dn = delta_n(uu, up, vv, vp)
n += dn
# Let's compute the minimum distance, in arcseconds
arcsec = sqrt(uu * uu + vv * vv)
d = Angle(0, 0, arcsec) # Convert to an Angle object
return n, d
def relative_position_angle(alpha1, delta1, alpha2, delta2):
"""This function computes the position angle P of a body with respect to
another body.
:param alpha1: Right ascension of celestial body #1, as an Angle object
:type alpha1: :py:class:`Angle`
:param delta1: Declination of celestial body #1, as an Angle object
:type delta1: :py:class:`Angle`
:param alpha2: Right ascension of celestial body #2, as an Angle object
:type alpha2: :py:class:`Angle`
:param delta2: Declination of celestial body #2, as an Angle object
:type delta2: :py:class:`Angle`
:returns: An Angle object with the relative position angle between the
given celestial objects
:rtype: :py:class:`Angle`
:raises: TypeError if input values are of wrong type.
>>> alpha1 = Angle(14, 15, 39.7, ra=True)
>>> delta1 = Angle(19, 10, 57.0)
>>> alpha2 = Angle(14, 15, 39.7, ra=True)
>>> delta2 = Angle(-11, 9, 41.0)
>>> pos_ang = relative_position_angle(alpha1, delta1, alpha2, delta2)
>>> print(round(pos_ang, 1))
0.0
"""
# First check that input values are of correct types
if not (
isinstance(alpha1, Angle)
and isinstance(delta1, Angle)
and isinstance(alpha2, Angle)
and isinstance(delta2, Angle)
):
raise TypeError("Invalid input types")
da = alpha1 - alpha2
da = da.rad()
d1 = delta1.rad()
d2 = delta2.rad()
p = atan2(sin(da), (cos(d2) * tan(d1) - sin(d2) * cos(da)))
p = Angle(p, radians=True)
return p
def planetary_conjunction(alpha1_list, delta1_list, alpha2_list, delta2_list):
"""Given the positions of two planets passing near each other, this
function computes the time of conjunction in right ascension, and the
difference in declination of the two bodies at that time.
.. note:: This function provides as output the 'n' fraction of time when
the minimum angular separation is achieved. For that, the epoch in the
middle is assigned the value "n = 0". Therefore, n < 0 is for times
**before** the middle epoch, and n > 0 is for times **after** the
middle epoch.
.. note:: When the entries in the input values are more than three and
even, the last entry is discarted and an odd number of entries will be
used.
:param alpha1_list: List (or tuple) containing the right ascensions (as
Angle objects) for object #1 (minimum 3 entries)
:type alpha1_list: list, tuple of :py:class:`Angle`
:param delta1_list: List (or tuple) containing the declinations (as Angle
objects) for object #1 (minimum 3 entries)
:type delta1_list: list, tuple of :py:class:`Angle`
:param alpha2_list: List (or tuple) containing the right ascensions (as
Angle objects) for object #2 (minimum 3 entries)
:type alpha2_list: list, tuple of :py:class:`Angle`
:param delta2_list: List (or tuple) containing the declinations (as Angle
objects) for object #2 (minimum 3 entries)
:type delta2_list: list, tuple of :py:class:`Angle`
:returns: A tuple with two components: The first component is a float
containing the 'n' fraction of time when the conjunction occurs. The
second component is an Angle object containing the declination
separation between the given objects at conjunction epoch
:rtype: tuple
:raises: ValueError if input values have less than three entries or they
don't have the same number of entries.
:raises: TypeError if input values are of wrong type.
>>> alpha1_1 = Angle(10, 24, 30.125, ra=True)
>>> delta1_1 = Angle( 6, 26, 32.05)
>>> alpha1_2 = Angle(10, 25, 0.342, ra=True)
>>> delta1_2 = Angle( 6, 10, 57.72)
>>> alpha1_3 = Angle(10, 25, 12.515, ra=True)
>>> delta1_3 = Angle( 5, 57, 33.08)
>>> alpha1_4 = Angle(10, 25, 6.235, ra=True)
>>> delta1_4 = Angle( 5, 46, 27.07)
>>> alpha1_5 = Angle(10, 24, 41.185, ra=True)
>>> delta1_5 = Angle( 5, 37, 48.45)
>>> alpha2_1 = Angle(10, 27, 27.175, ra=True)
>>> delta2_1 = Angle( 4, 4, 41.83)
>>> alpha2_2 = Angle(10, 26, 32.410, ra=True)
>>> delta2_2 = Angle( 3, 55, 54.66)
>>> alpha2_3 = Angle(10, 25, 29.042, ra=True)
>>> delta2_3 = Angle( 3, 48, 3.51)
>>> alpha2_4 = Angle(10, 24, 17.191, ra=True)
>>> delta2_4 = Angle( 3, 41, 10.25)
>>> alpha2_5 = Angle(10, 22, 57.024, ra=True)
>>> delta2_5 = Angle( 3, 35, 16.61)
>>> alpha1_list = [alpha1_1, alpha1_2, alpha1_3, alpha1_4, alpha1_5]
>>> delta1_list = [delta1_1, delta1_2, delta1_3, delta1_4, delta1_5]
>>> alpha2_list = [alpha2_1, alpha2_2, alpha2_3, alpha2_4, alpha2_5]
>>> delta2_list = [delta2_1, delta2_2, delta2_3, delta2_4, delta2_5]
>>> pc = planetary_conjunction(alpha1_list, delta1_list, \
alpha2_list, delta2_list)
>>> print(round(pc[0], 5))
0.23797
>>> print(pc[1].dms_str(n_dec=1))
2d 8' 21.8''
"""
# First check that input values are of correct types
if not (
isinstance(alpha1_list, (list, tuple))
and isinstance(delta1_list, (list, tuple))
and isinstance(alpha2_list, (list, tuple))
and isinstance(delta2_list, (list, tuple))
):
raise TypeError("Invalid input types")
if (
len(alpha1_list) < 3
or len(delta1_list) < 3
or len(alpha2_list) < 3
or len(delta2_list) < 3
):
raise ValueError("Invalid number of entries")
if (
len(alpha1_list) != len(delta1_list)
or len(alpha1_list) != len(alpha2_list)
or len(alpha1_list) != len(delta2_list)
):
raise ValueError("Uneven number of entries")
n_entries = len(alpha1_list)
if n_entries % 2 != 1: # Check if number of entries is odd
alpha1_list = alpha1_list[:-1] # Drop the last entry
delta1_list = delta1_list[:-1]
alpha2_list = alpha2_list[:-1]
delta2_list = delta2_list[:-1]
n_entries = len(alpha1_list)
half_entries = n_entries // 2
# Compute the list with the time ('n') entries
n_list = [i - half_entries for i in range(n_entries)]
# Compute lists with differences between right ascensions and declinations
# for objects #1 and #2
dalpha = [alpha1_list[i] - alpha2_list[i] for i in range(n_entries)]
ddelta = [delta1_list[i] - delta2_list[i] for i in range(n_entries)]
# Build the interpolation objects
i_alpha = Interpolation(n_list, dalpha)
i_delta = Interpolation(n_list, ddelta)
# Find when the dalphas are 0 (i.e., the 'root')
n_0 = i_alpha.root()
# Now, let's find the declination difference with the newly found 'n_0'
dd = i_delta(n_0)
# We are done, let's return
return n_0, dd
def planet_star_conjunction(alpha_list, delta_list, alpha_star, delta_star):
"""Given the positions of one planet passing near a star, this function
computes the time of conjunction in right ascension, and the difference in
declination of the two bodies at that time.
.. note:: This function provides as output the 'n' fraction of time when
the minimum angular separation is achieved. For that, the epoch in the
middle is assigned the value "n = 0". Therefore, n < 0 is for times
**before** the middle epoch, and n > 0 is for times **after** the
middle epoch.
.. note:: When the entries in the input values for the planet are more than
three and pair, the last entry is discarted and an odd number of
entries will be used.
:param alpha_list: List (or tuple) containing the right ascensions (as
Angle objects) for the planet (minimum 3 entries)
:type alpha_list: list, tuple of :py:class:`Angle`
:param delta_list: List (or tuple) containing the declinations (as Angle
objects) for the planet (minimum 3 entries)
:type delta_list: list, tuple of :py:class:`Angle`
:param alpha_star: Right ascension, as an Angle object, of the star
:type alpha_star: :py:class:`Angle`
:param delta_star: Declination, as an Angle object, of the star
:type delta_star: :py:class:`Angle`
:returns: A tuple with two components: The first component is a float
containing the 'n' fraction of time when the conjunction occurs. The
second component is an Angle object containing the declination
separation between the given objects at conjunction epoch
:rtype: tuple
:raises: ValueError if input values for planet have less than three entries
or they don't have the same number of entries.
:raises: TypeError if input values are of wrong type.
>>> alpha_1 = Angle(15, 3, 51.937, ra=True)
>>> delta_1 = Angle(-8, 57, 34.51)
>>> alpha_2 = Angle(15, 9, 57.327, ra=True)
>>> delta_2 = Angle(-9, 9, 3.88)
>>> alpha_3 = Angle(15, 15, 37.898, ra=True)
>>> delta_3 = Angle(-9, 17, 37.94)
>>> alpha_4 = Angle(15, 20, 50.632, ra=True)
>>> delta_4 = Angle(-9, 23, 16.25)
>>> alpha_5 = Angle(15, 25, 32.695, ra=True)
>>> delta_5 = Angle(-9, 26, 1.01)
>>> alpha_star = Angle(15, 17, 0.446, ra=True)
>>> delta_star = Angle(-9, 22, 58.47)
>>> alpha_list = [alpha_1, alpha_2, alpha_3, alpha_4, alpha_5]
>>> delta_list = [delta_1, delta_2, delta_3, delta_4, delta_5]
>>> pc = planet_star_conjunction(alpha_list, delta_list, \
alpha_star, delta_star)
>>> print(round(pc[0], 4))
0.2551
>>> print(pc[1].dms_str(n_dec=0))
3' 38.0''
"""
# Build the corresponding lists for the star
n_entries = len(alpha_list)
alpha_star_list = [alpha_star for _ in range(n_entries)]
delta_star_list = [delta_star for _ in range(n_entries)]
# Call the 'planetary_conjunction()' function. It handles everything else
return planetary_conjunction(
alpha_list, delta_list, alpha_star_list, delta_star_list
)
def planet_stars_in_line(
alpha_list, delta_list, alpha_star1, delta_star1, alpha_star2, delta_star2
):
"""Given the positions of one planet, this function computes the time when
it is in a straight line with two other stars.
.. note:: This function provides as output the 'n' fraction of time when
the minimum angular separation is achieved. For that, the epoch in the
middle is assigned the value "n = 0". Therefore, n < 0 is for times
**before** the middle epoch, and n > 0 is for times **after** the
middle epoch.
.. note:: When the entries in the input values for the planet are more than
three and pair, the last entry is discarted and an odd number of
entries will be used.
:param alpha_list: List (or tuple) containing the right ascensions (as
Angle objects) for the planet (minimum 3 entries)
:type alpha_list: list, tuple of :py:class:`Angle`
:param delta_list: List (or tuple) containing the declinations (as Angle
objects) for the planet (minimum 3 entries)
:type delta_list: list, tuple of :py:class:`Angle`
:param alpha_star1: Right ascension, as an Angle object, of star #1
:type alpha_star1: :py:class:`Angle`
:param delta_star1: Declination, as an Angle object, of star #1
:type delta_star1: :py:class:`Angle`
:param alpha_star2: Right ascension, as an Angle object, of star #2
:type alpha_star2: :py:class:`Angle`
:param delta_star2: Declination, as an Angle object, of star #2
:type delta_star2: :py:class:`Angle`
:returns: A float containing the 'n' fraction of time when the alignment
occurs.
:rtype: float
:raises: ValueError if input values for planet have less than three entries
or they don't have the same number of entries.
:raises: TypeError if input values are of wrong type.
>>> alpha_1 = Angle( 7, 55, 55.36, ra=True)
>>> delta_1 = Angle(21, 41, 3.0)
>>> alpha_2 = Angle( 7, 58, 22.55, ra=True)
>>> delta_2 = Angle(21, 35, 23.4)
>>> alpha_3 = Angle( 8, 0, 48.99, ra=True)
>>> delta_3 = Angle(21, 29, 38.2)
>>> alpha_4 = Angle( 8, 3, 14.66, ra=True)
>>> delta_4 = Angle(21, 23, 47.5)
>>> alpha_5 = Angle( 8, 5, 39.54, ra=True)
>>> delta_5 = Angle(21, 17, 51.4)
>>> alpha_star1 = Angle( 7, 34, 16.40, ra=True)
>>> delta_star1 = Angle(31, 53, 51.2)
>>> alpha_star2 = Angle( 7, 45, 0.10, ra=True)
>>> delta_star2 = Angle(28, 2, 12.5)
>>> alpha_list = [alpha_1, alpha_2, alpha_3, alpha_4, alpha_5]
>>> delta_list = [delta_1, delta_2, delta_3, delta_4, delta_5]
>>> n = planet_stars_in_line(alpha_list, delta_list, alpha_star1, \
delta_star1, alpha_star2, delta_star2)
>>> print(round(n, 4))
0.2233
"""
# Define an auxiliary function
def straight(alpha1, delta1, alpha2, delta2, alpha3, delta3):
a1 = alpha1.rad()
d1 = delta1.rad()
a2 = alpha2.rad()
d2 = delta2.rad()
a3 = alpha3.rad()
d3 = delta3.rad()
return (tan(d1) * sin(a2 - a3) + tan(d2) * sin(a3 - a1) +
tan(d3) * sin(a1 - a2))
# First check that input values are of correct types
if not (
isinstance(alpha_list, (list, tuple))
and isinstance(delta_list, (list, tuple))
and isinstance(alpha_star1, Angle)
and isinstance(delta_star1, Angle)
and isinstance(alpha_star2, Angle)
and isinstance(delta_star2, Angle)
):
raise TypeError("Invalid input types")
if len(alpha_list) < 3 or len(delta_list) < 3:
raise ValueError("Invalid number of entries")
if len(alpha_list) != len(delta_list):
raise ValueError("Uneven number of entries")
n_entries = len(alpha_list)
if n_entries % 2 != 1: # Check if number of entries is odd
alpha_list = alpha_list[:-1] # Drop the last entry
delta_list = delta_list[:-1]
n_entries = len(alpha_list)
half_entries = n_entries // 2
# Compute the list with the time ('n') entries
n_list = [i - half_entries for i in range(n_entries)]
# Use auxiliary function 'straight()' to compute the values to interpolate
dx = [
straight(
alpha_list[i],
delta_list[i],
alpha_star1,
delta_star1,
alpha_star2,
delta_star2,
)
for i in range(n_entries)
]
# Build the interpolation objects
i = Interpolation(n_list, dx)
# Find when the dx's are 0 (i.e., the 'root')
n_0 = i.root()
return n_0
def straight_line(alpha1, delta1, alpha2, delta2, alpha3, delta3):
"""This function computes if three celestial bodies are in a straight line,
providing the angle with which the bodies differ from a great circle.
:param alpha1: Right ascension, as an Angle object, of celestial body #1
:type alpha1: :py:class:`Angle`
:param delta1: Declination, as an Angle object, of celestial body #1
:type delta1: :py:class:`Angle`
:param alpha2: Right ascension, as an Angle object, of celestial body #2
:type alpha2: :py:class:`Angle`
:param delta2: Declination, as an Angle object, of celestial body #2
:type delta2: :py:class:`Angle`
:param alpha3: Right ascension, as an Angle object, of celestial body #3
:type alpha3: :py:class:`Angle`
:param delta3: Declination, as an Angle object, of celestial body #3
:type delta3: :py:class:`Angle`
:returns: A tuple with two components. The first element is an angle (as
Angle object) with which the bodies differ from a great circle. The
second element is the Angular distance of central point to the straight
line (also as Angle object).
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> alpha1 = Angle( 5, 32, 0.40, ra=True)
>>> delta1 = Angle(0, -17, 56.9)
>>> alpha2 = Angle( 5, 36, 12.81, ra=True)
>>> delta2 = Angle(-1, 12, 7.0)
>>> alpha3 = Angle( 5, 40, 45.52, ra=True)
>>> delta3 = Angle(-1, 56, 33.3)
>>> psi, om = straight_line(alpha1, delta1, alpha2, delta2, alpha3, delta3)
>>> print(psi.dms_str(n_dec=0))
7d 31' 1.0''
>>> print(om.dms_str(n_dec=0))
-5' 24.0''
"""
# First check that input values are of correct types
if not (
isinstance(alpha1, Angle)
and isinstance(delta1, Angle)
and isinstance(alpha2, Angle)
and isinstance(delta2, Angle)
and isinstance(alpha3, Angle)
and isinstance(delta3, Angle)
):
raise TypeError("Invalid input types")
# We need to order the input according to right ascension
a = [alpha1.rad(), alpha2.rad(), alpha3.rad()]
d = [delta1.rad(), delta2.rad(), delta3.rad()]
anew = []
dnew = []
amax = max(a) + 1.0
for _ in range(len(a)):
# Get the index of the minimum value
imin = a.index(min(a))
# Append the current minimum value to the new 'a' list
anew.append(a[imin])
# Store the *position* of the current minimum value to new 'd' list
dnew.append(imin)
# The current minimum value will no longer be the minimum
a[imin] = amax
# In the new 'd' list, substitute the positions by the real values
for i in range(len(a)):
dnew[i] = d[dnew[i]]
# Substitute the new values in the original list
a = anew
d = dnew
# Compute the parameters
a1 = cos(d[0]) * cos(a[0])
a2 = cos(d[1]) * cos(a[1])
a3 = cos(d[2]) * cos(a[2])
b1 = cos(d[0]) * sin(a[0])
b2 = cos(d[1]) * sin(a[1])
b3 = cos(d[2]) * sin(a[2])
c1 = sin(d[0])
c2 = sin(d[1])
c3 = sin(d[2])
l1 = b1 * c2 - b2 * c1
l2 = b2 * c3 - b3 * c2
l3 = b1 * c3 - b3 * c1
m1 = c1 * a2 - c2 * a1
m2 = c2 * a3 - c3 * a2
m3 = c1 * a3 - c3 * a1
n1 = a1 * b2 - a2 * b1
n2 = a2 * b3 - a3 * b2
n3 = a1 * b3 - a3 * b1
psi = acos(
(l1 * l2 + m1 * m2 + n1 * n2)
/ (sqrt(l1 * l1 + m1 * m1 + n1 * n1) *
sqrt(l2 * l2 + m2 * m2 + n2 * n2)))
omega = asin(
(a2 * l3 + b2 * m3 + c2 * n3)
/ (sqrt(a2 * a2 + b2 * b2 + c2 * c2) *
sqrt(l3 * l3 + m3 * m3 + n3 * n3)))
return Angle(psi, radians=True), Angle(omega, radians=True)
def circle_diameter(alpha1, delta1, alpha2, delta2, alpha3, delta3):
"""This function computes the diameter of the smallest circle that contains
three celestial bodies.
:param alpha1: Right ascension, as an Angle object, of celestial body #1
:type alpha1: :py:class:`Angle`
:param delta1: Declination, as an Angle object, of celestial body #1
:type delta1: :py:class:`Angle`
:param alpha2: Right ascension, as an Angle object, of celestial body #2
:type alpha2: :py:class:`Angle`
:param delta2: Declination, as an Angle object, of celestial body #2
:type delta2: :py:class:`Angle`
:param alpha3: Right ascension, as an Angle object, of celestial body #3
:type alpha3: :py:class:`Angle`
:param delta3: Declination, as an Angle object, of celestial body #3
:type delta3: :py:class:`Angle`
:returns: The diameter (as an Angle object) of the smallest circle
containing the three bodies.
:rtype: :py:class:`Angle`
:raises: TypeError if input values are of wrong type.
>>> alpha1 = Angle(12, 41, 8.63, ra=True)
>>> delta1 = Angle(-5, 37, 54.2)
>>> alpha2 = Angle(12, 52, 5.21, ra=True)
>>> delta2 = Angle(-4, 22, 26.2)
>>> alpha3 = Angle(12, 39, 28.11, ra=True)
>>> delta3 = Angle(-1, 50, 3.7)
>>> d = circle_diameter(alpha1, delta1, alpha2, delta2, alpha3, delta3)
>>> print(d.dms_str(n_dec=0))
4d 15' 49.0''
>>> alpha1 = Angle(9, 5, 41.44, ra=True)
>>> delta1 = Angle(18, 30, 30.0)
>>> alpha2 = Angle(9, 9, 29.0, ra=True)
>>> delta2 = Angle(17, 43, 56.7)
>>> alpha3 = Angle(8, 59, 47.14, ra=True)
>>> delta3 = Angle(17, 49, 36.8)
>>> d = circle_diameter(alpha1, delta1, alpha2, delta2, alpha3, delta3)
>>> print(d.dms_str(n_dec=0))
2d 18' 38.0''
"""
# First check that input values are of correct types
if not (
isinstance(alpha1, Angle)
and isinstance(delta1, Angle)
and isinstance(alpha2, Angle)
and isinstance(delta2, Angle)
and isinstance(alpha3, Angle)
and isinstance(delta3, Angle)
):
raise TypeError("Invalid input types")
d12 = angular_separation(alpha1, delta1, alpha2, delta2)
d13 = angular_separation(alpha1, delta1, alpha3, delta3)
d23 = angular_separation(alpha2, delta2, alpha3, delta3)
if d12 >= d13 and d12 >= d23:
a = d12()
b = d13()
c = d23()
elif d13 >= d12 and d13 >= d23:
a = d13()
b = d12()
c = d23()
else:
a = d23()
b = d12()
c = d13()
if a >= sqrt(b * b + c * c):
d = a
else:
d = (2.0 * a * b * c) / sqrt(
(a + b + c) * (a + b - c) * (b + c - a) * (a + c - b)
)
return Angle(d)
def vsop_pos(epoch, vsop_l, vsop_b, vsop_r):
"""This function computes the position of a celestial body at a given epoch
when its VSOP87 periodic term tables are provided.
:param epoch: Epoch to compute the position, given as an :class:`Epoch`
object
:type epoch: :py:class:`Epoch`
:param vsop_l: Table of VSOP87 terms for the heliocentric longitude
:type vsop_l: list
:param vsop_b: Table of VSOP87 terms for the heliocentric latitude
:type vsop_b: list
:param vsop_r: Table of VSOP87 terms for the radius vector
:type vsop_r: list
:returns: A tuple with the heliocentric longitude and latitude (as
:py:class:`Angle` objects), and the radius vector (as a float,
in astronomical units), in that order
:rtype: tuple
:raises: TypeError if input values are of wrong type.
"""
# First check that input values are of correct types
if not (
isinstance(epoch, Epoch)
and isinstance(vsop_l, list)
and isinstance(vsop_b, list)
and isinstance(vsop_r, list)
):
raise TypeError("Invalid input types")
# Let's redefine u in units of 100 Julian centuries from Epoch J2000.0
t = (epoch.jde() - 2451545.0) / 365250.0
sum_list = []
for i in range(len(vsop_l)):
s = 0.0
for k in range(len(vsop_l[i])):
s += vsop_l[i][k][0] * cos(vsop_l[i][k][1] + vsop_l[i][k][2] * t)
sum_list.append(s)
lon = 0.0
# Sum the longitude terms, while multiplying by 't' at the same time
for i in range(len(sum_list) - 1, 0, -1):
lon = (lon + sum_list[i]) * t
# Add the L0 term, which is NOT multiplied by 't'
lon += sum_list[0]
lon /= 1e8
lon = Angle(lon, radians=True)
lon = lon.to_positive()
sum_list = []
for i in range(len(vsop_b)):
s = 0.0
for k in range(len(vsop_b[i])):
s += vsop_b[i][k][0] * cos(vsop_b[i][k][1] + vsop_b[i][k][2] * t)
sum_list.append(s)
lat = 0.0
# Sum the latitude terms, while multiplying by 't' at the same time
for i in range(len(sum_list) - 1, 0, -1):
lat = (lat + sum_list[i]) * t
# Add the B0 term, which is NOT multiplied by 't'
lat += sum_list[0]
lat /= 1e8
lat = Angle(lat, radians=True)
sum_list = []
for i in range(len(vsop_r)):
s = 0.0
for k in range(len(vsop_r[i])):
s += vsop_r[i][k][0] * cos(vsop_r[i][k][1] + vsop_r[i][k][2] * t)
sum_list.append(s)
r = 0.0
# Sum the radius vector terms, while multiplying by 't' at the same time
for i in range(len(sum_list) - 1, 0, -1):
r = (r + sum_list[i]) * t
# Add the R0 term, which is NOT multiplied by 't'
r += sum_list[0]
r /= 1e8
return (lon, lat, r)
def geometric_vsop_pos(epoch, vsop_l, vsop_b, vsop_r, tofk5=True):
"""This function computes the geometric position of a celestial body at a
given epoch when its VSOP87 periodic term tables are provided. The small
correction to convert to the FK5 system may or not be included.
:param epoch: Epoch to compute the position, given as an :class:`Epoch`
object
:type epoch: :py:class:`Epoch`
:param vsop_l: Table of VSOP87 terms for the heliocentric longitude
:type vsop_l: list
:param vsop_b: Table of VSOP87 terms for the heliocentric latitude
:type vsop_b: list
:param vsop_r: Table of VSOP87 terms for the radius vector
:type vsop_r: list
:param tofk5: Whether or not the small correction to convert to the FK5
system will be applied
:type tofk5: bool
:returns: A tuple with the geometric heliocentric longitude and latitude
(as :py:class:`Angle` objects), and the radius vector (as a float,
in astronomical units), in that order
:rtype: tuple
:raises: TypeError if input values are of wrong type.
"""
# First check that input values are of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input types")
# Second, call the auxiliary function in charge of computations
lon, lat, r = vsop_pos(epoch, vsop_l, vsop_b, vsop_r)
if tofk5:
# Apply the small correction for conversion to the FK5 system
t = (epoch.jde() - 2451545.0) / 36525.0
lambda_p = lon - t * (1.397 + 0.00031 * t)
delta_lon = Angle(0, 0, -0.09033)
a = 0.03916 * (cos(lambda_p.rad()) + sin(lambda_p.rad()))
a = a * tan(lat.rad())
delta_lon += Angle(0, 0, a)
delta_beta = 0.03916 * (cos(lambda_p.rad()) - sin(lambda_p.rad()))
delta_beta = Angle(0, 0, delta_beta)
lon += delta_lon
lat += delta_beta
return lon, lat, r
def apparent_vsop_pos(epoch, vsop_l, vsop_b, vsop_r, nutation=True):
"""This function computes the apparent position of a celestial body at a
given epoch when its VSOP87 periodic term tables are provided. The small
correction to convert to the FK5 system is always included.
:param epoch: Epoch to compute the position, given as an :class:`Epoch`
object
:type epoch: :py:class:`Epoch`
:param vsop_l: Table of VSOP87 terms for the heliocentric longitude
:type vsop_l: list
:param vsop_b: Table of VSOP87 terms for the heliocentric latitude
:type vsop_b: list
:param vsop_r: Table of VSOP87 terms for the radius vector
:type vsop_r: list
:param nutation: Whether the nutation correction will be applied
:type tofk5: bool
:returns: A tuple with the geometric heliocentric longitude and latitude
(as :py:class:`Angle` objects), and the radius vector (as a float,
in astronomical units), in that order
:rtype: tuple
:raises: TypeError if input values are of wrong type.
"""
# First check that input values are of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input types")
# Second, call auxiliary function in charge of computations
lon, lat, r = geometric_vsop_pos(epoch, vsop_l, vsop_b, vsop_r)
if nutation:
lon += nutation_longitude(epoch)
delta = -20.4898 / r
delta = Angle(0, 0, delta)
lon += delta
return lon, lat, r
def apparent_position(epoch, alpha, delta, sun_lon):
"""This function computes the apparent position of a star, correcting by
nutation and aberration effects.
:param epoch: Epoch to compute the apparent position for
:type epoch: :py:class:`Epoch`
:param alpha: Right ascension of the star, as an Angle object
:type alpha: :py:class:`Angle`
:param delta: Declination of the star, as an Angle object
:type delta: :py:class:`Angle`
:param sun_lon: True (geometric) longitude of the Sun
:type sun_lon: :py:class:`Angle`
:returns: A tuple with two Angle objects: Apparent right ascension, and
aparent declination
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(2028, 11, 13.19)
>>> alpha = Angle(2, 46, 11.331, ra=True)
>>> delta = Angle(49, 20, 54.54)
>>> sun_lon = Angle(231.328)
>>> app_alpha, app_delta = apparent_position(epoch, alpha, delta, sun_lon)
>>> print(app_alpha.ra_str(n_dec=2))
2h 46' 14.39''
>>> print(app_delta.dms_str(n_dec=2))
49d 21' 7.45''
"""
# First check that input values are of correct types
if not (
isinstance(epoch, Epoch)
and isinstance(alpha, Angle)
and isinstance(delta, Angle)
and isinstance(sun_lon, Angle)
):
raise TypeError("Invalid input types")
# Proceed to compute the true obliquity, nutation in longitude and nutation
# in obliquity
epsilon = true_obliquity(epoch)
dpsi = nutation_longitude(epoch)
depsilon = nutation_obliquity(epoch)
# Convert the angles to radians
a = alpha.rad()
d = delta.rad()
eps = epsilon.rad()
# Compute corrections due to nutation
dalpha1 = ((cos(eps) + sin(eps) * sin(a) * tan(d)) * dpsi -
(cos(a) * tan(d)) * depsilon)
ddelta1 = (sin(eps) * cos(a)) * dpsi + sin(a) * depsilon
dalpha1 = Angle(dalpha1)
ddelta1 = Angle(ddelta1)
# Now, let's compute the aberration effect
t = (epoch - JDE2000) / 36525
e = 0.016708634 + t * (-0.000042037 - t * 0.0000001267)
pie = 102.93735 + t * (1.71946 + t * 0.00046)
pie = radians(pie)
lon = sun_lon.rad()
k = 20.49552 # The constant of aberration
dalpha2 = k * (-(cos(a) * cos(lon) * cos(eps) + sin(a) * sin(lon)) / cos(d)
+ e * (cos(a) * cos(pie) * cos(eps) +
sin(a) * sin(pie)) / cos(d))
ddelta2 = k * (-(cos(lon) * cos(eps) *
(tan(eps) * cos(d) - sin(a) * sin(d)) +
cos(a) * sin(d) * sin(lon)) +
e * (cos(pie) * cos(eps) * (tan(eps) * cos(d) -
sin(a) * sin(d))
+ cos(a) * sin(d) * sin(pie)))
dalpha2 = Angle(0, 0, dalpha2)
ddelta2 = Angle(0, 0, ddelta2)
# Add the two corrections to the original values
r_alpha = alpha + dalpha1 + dalpha2
r_delta = delta + ddelta1 + ddelta2
return r_alpha, r_delta
def orbital_equinox2equinox(epoch0, epoch, i0, arg0, lon0):
"""This function reduces the orbital elements of a celestial object from
one equinox to another.
:param epoch0: Initial epoch
:type epoch0: :py:class:`Epoch`
:param epoch: Final epoch
:type epoch: :py:class:`Epoch`
:param i0: Initial inclination, as an Angle object
:type i0: :py:class:`Angle`
:param arg0: Initial argument of perihelion, as an Angle object
:type arg0: :py:class:`Angle`
:param lon0: Initial longitude of ascending node, as an Angle object
:type lon0: :py:class:`Angle`
:returns: A tuple with three Angle objects: Final inclination, argument of
perihelion and longitude of ascending node, in that order
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch0 = Epoch(2358042.5305)
>>> epoch = Epoch(2433282.4235)
>>> i0 = Angle(47.122)
>>> arg0 = Angle(151.4486)
>>> lon0 = Angle(45.7481)
>>> i1, arg1, lon1 = orbital_equinox2equinox(epoch0, epoch, i0, arg0, lon0)
>>> print(round(i1(), 3))
47.138
>>> print(round(arg1(), 4))
151.4782
>>> print(round(lon1(), 4))
48.6037
"""
# First check that input values are of correct types
if not (
isinstance(epoch0, Epoch)
and isinstance(epoch, Epoch)
and isinstance(i0, Angle)
and isinstance(arg0, Angle)
and isinstance(lon0, Angle)
):
raise TypeError("Invalid input types")
# Compute the auxiliary angles
tt = (epoch0 - JDE2000) / 36525.0
t = (epoch - epoch0) / 36525.0
# Compute the conversion parameters
eta = t * (
(47.0029 + tt * (-0.06603 + 0.000598 * tt))
+ t * ((-0.03302 + 0.000598 * tt) + 0.00006 * t)
)
pie = tt * (3289.4789 + 0.60622 * tt) + t * (
-(869.8089 + 0.50491 * tt) + 0.03536 * t
)
p = t * (
5029.0966
+ tt * (2.22226 - 0.000042 * tt)
+ t * (1.11113 - 0.000042 * tt - 0.000006 * t)
)
eta = Angle(0, 0, eta)
pie = Angle(0, 0, pie)
# But beware!: There is still a missing constant for pie. We didn't add
# it before because of the mismatch between degrees and seconds
pie += 174.876384
p = Angle(0, 0, p)
i0r = i0.rad()
etar = eta.rad()
lon0r = lon0.rad()
pir = pie.rad()
# If i0 is very small, the procedure is different
if i0 < 1.0:
i1 = eta
lon1 = pie + p + 180.0
else:
a = sin(i0r) * sin(lon0r - pir)
b = -sin(etar) * cos(i0r) + cos(etar) * sin(i0r) * cos(lon0r - pir)
i1 = asin(sqrt(a*a + b*b))
i1 = Angle(i1, radians=True)
omegapsi = atan2(a, b)
omegapsi = Angle(omegapsi, radians=True)
lon1 = omegapsi + pie + p
domega = atan2(-sin(etar) * sin(lon0r - pir),
sin(i0r) * cos(etar) -
cos(i0r) * sin(etar) * cos(lon0r - pir))
domega = Angle(domega, radians=True)
arg1 = arg0 + domega
return i1, arg1, lon1
def kepler_equation(eccentricity, mean_anomaly):
"""This function computes the eccentric and true anomalies taking as input
the mean anomaly and the eccentricity.
:param eccentricity: Orbit's eccentricity
:type eccentricity: int, float
:param mean_anomaly: Mean anomaly, as an Angle object
:type mean_anomaly: :py:class:`Angle`
:returns: A tuple with two Angle objects: Eccentric and true anomalies
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> eccentricity = 0.1
>>> mean_anomaly = Angle(5.0)
>>> e, v = kepler_equation(eccentricity, mean_anomaly)
>>> print(round(e(), 6))
5.554589
>>> print(round(v(), 6))
6.139762
>>> eccentricity = 0.99
>>> mean_anomaly = Angle(2.0)
>>> e, v = kepler_equation(eccentricity, mean_anomaly)
>>> print(round(e(), 6))
32.361007
>>> print(round(v(), 6))
152.542134
>>> eccentricity = 0.99
>>> mean_anomaly = Angle(5.0)
>>> e, v = kepler_equation(eccentricity, mean_anomaly)
>>> print(round(e(), 6))
45.361023
>>> print(round(v(), 6))
160.745616
>>> eccentricity = 0.99
>>> mean_anomaly = Angle(1.0)
>>> e, v = kepler_equation(eccentricity, mean_anomaly)
>>> print(round(e(), 6))
24.725822
>>> print(round(v(), 6))
144.155952
>>> e, v = kepler_equation(0.999, Angle(7.0))
>>> print(round(e(), 7))
52.2702615
>>> print(round(v(), 6))
174.780018
>>> e, v = kepler_equation(0.99, Angle(0.2, radians=True))
>>> print(round(e(), 8))
61.13444578
>>> print(round(v(), 6))
166.311977
"""
# First check that input values are of correct types
if not (
isinstance(eccentricity, (int, float))
and isinstance(mean_anomaly, Angle)
):
raise TypeError("Invalid input types")
# Let's implement the third method (from Roger Sinnot), page 206
# First, compute the eccentric anomaly
m = mean_anomaly.rad()
ecc = eccentricity
f = copysign(1.0, m)
m = abs(m) / (2.0 * pi)
m = (m - iint(m)) * 2.0 * pi * f
if m < 0.0:
m += 2.0 * pi
f = 1.0
if m > pi:
f = -1
m = 2.0 * pi - m
e0 = pi / 2.0
d = pi / 4.0
ef = 0.0
while abs(e0 - ef) > TOL:
ef = e0
m1 = e0 - ecc * sin(e0)
s = copysign(1.0, m - m1)
e0 += d * s
d /= 2.0
e = Angle(e0 * f, radians=True)
# Now, compute the true anomaly
er = e.rad()
v = 2.0 * atan(sqrt((1.0 + ecc) / (1.0 - ecc)) * tan(er / 2.0))
return e, Angle(v, radians=True)
def orbital_elements(epoch, parameters1, parameters2):
"""This function computes the orbital elements for a given epoch, according
to the parameters beeing passed as arguments.
:param epoch: Epoch to compute orbital elements, as an Epoch object
:type epoch: :py:class:`Epoch`
:param parameters1: First set of parameters
:type parameters1: list
:param parameters2: Second set of parameters
:type parameters2: list
:returns: A tuple containing the following six orbital elements:
- Mean longitude of the planet (Angle)
- Semimajor axis of the orbit (float, astronomical units)
- eccentricity of the orbit (float)
- inclination on the plane of the ecliptic (Angle)
- longitude of the ascending node (Angle)
- argument of the perihelion (Angle)
:rtype: tuple
:raises: TypeError if input values are of wrong type.
"""
# First check that input values are of correct types
if not (isinstance(epoch, Epoch) and isinstance(parameters1, list) and
isinstance(parameters2, list)):
raise TypeError("Invalid input types")
# Define an auxiliary function
def compute_element(t, param):
return param[0] + t * (param[1] + t * (param[2] + t * param[3]))
# Compute the time parameter
t = (epoch - JDE2000) / 36525.0
# Compute the orbital elements
ll = compute_element(t, parameters2[0])
a = compute_element(t, parameters1[1])
e = compute_element(t, parameters1[2])
if len(parameters2) == 4:
i = compute_element(t, parameters2[1])
omega = compute_element(t, parameters2[2])
pie = compute_element(t, parameters2[3])
else:
i = compute_element(t, parameters2[3])
omega = compute_element(t, parameters2[4])
pie = compute_element(t, parameters2[5])
arg = pie - omega
ll = Angle(ll)
i = Angle(i)
omega = Angle(omega)
arg = Angle(arg)
return ll, a, e, i, omega, arg
def velocity(r, a):
"""This function computes the instantaneous velocity of the moving body, in
kilometers per second, for an unperturbed elliptic orbit.
:param r: Distance of the body to the Sun, in Astronomical Units
:type r: float
:param a: Semimajor axis of the orbit, in Astronomical Units
:type a: float
:returns: Velocity of the body, in kilometers per second
:rtype: float
:raises: TypeError if input values are of wrong type.
>>> r = 1.0
>>> a = 17.9400782
>>> v = velocity(r, a)
>>> print(round(v, 2))
41.53
"""
if not (isinstance(r, float) and isinstance(a, float)):
raise TypeError("Invalid input types")
return 42.1218 * sqrt((1.0 / r) - (1.0 / (2.0 * a)))
def velocity_perihelion(e, a):
"""This function computes the velocity of the moving body at perihelion, in
kilometers per second, for an unperturbed elliptic orbit.
:param e: Orbital eccentricity
:type e: float
:param a: Semimajor axis of the orbit, in Astronomical Units
:type a: float
:returns: Velocity of the body at perihelion, in kilometers per second
:rtype: float
:raises: TypeError if input values are of wrong type.
>>> a = 17.9400782
>>> e = 0.96727426
>>> vp = velocity_perihelion(e, a)
>>> print(round(vp, 2))
54.52
"""
if not (isinstance(e, float) and isinstance(a, float)):
raise TypeError("Invalid input types")
temp = sqrt((1.0 + e) / (1.0 - e))
return 29.7847 * temp / sqrt(a)
def velocity_aphelion(e, a):
"""This function computes the velocity of the moving body at aphelion, in
kilometers per second, for an unperturbed elliptic orbit.
:param e: Orbital eccentricity
:type e: float
:param a: Semimajor axis of the orbit, in Astronomical Units
:type a: float
:returns: Velocity of the body at aphelion, in kilometers per second
:rtype: float
:raises: TypeError if input values are of wrong type.
>>> a = 17.9400782
>>> e = 0.96727426
>>> va = velocity_aphelion(e, a)
>>> print(round(va, 2))
0.91
"""
if not (isinstance(e, float) and isinstance(a, float)):
raise TypeError("Invalid input types")
temp = sqrt((1.0 - e) / (1.0 + e))
return 29.7847 * temp / sqrt(a)
def length_orbit(e, a):
"""This function computes the length of an elliptic orbit given its
eccentricity and semimajor axis.
:param e: Orbital eccentricity
:type e: float
:param a: Semimajor axis of the orbit, in Astronomical Units
:type a: float
:returns: Length of the orbit in Astronomical Units
:rtype: float
:raises: TypeError if input values are of wrong type.
>>> a = 17.9400782
>>> e = 0.96727426
>>> length = length_orbit(e, a)
>>> print(round(length, 2))
77.06
"""
if not (isinstance(e, float) and isinstance(a, float)):
raise TypeError("Invalid input types")
# Let's start computing the semi-minor axis
b = a * sqrt(1.0 - e * e)
# Use one formula or another depending on eccentricity
if e < 0.95:
aa = (a + b) / 2.0
gg = sqrt(a * b)
hh = (2.0 * a * b) / (a + b)
length = pi * (21.0 * aa - 2.0 * gg - 3.0 * hh) / 8.0
else:
length = pi * (3.0 * (a + b) - sqrt((a + 3.0 * b) * (3.0 * a + b)))
return length
def passage_nodes_elliptic(omega, e, a, t, ascending=True):
"""This function computes the time of passage by the nodes (ascending or
descending) of a given celestial object with an elliptic orbit.
:param omega: Argument of the perihelion
:type omega: :py:class:`Angle`
:param e: Orbital eccentricity
:type e: float
:param a: Semimajor axis of the orbit, in Astronomical Units
:type a: float
:param t: Time of perihelion passage
:type t: :py:class:`Epoch`
:param ascending: Whether the time of passage by the ascending (True) or
descending (False) node will be computed
:type ascending: bool
:returns: Tuple containing:
- Time of passage through the node (:py:class:`Epoch`)
- Radius vector when passing through the node (in AU, float)
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> omega = Angle(111.84644)
>>> e = 0.96727426
>>> a = 17.9400782
>>> t = Epoch(1986, 2, 9.45891)
>>> time, r = passage_nodes_elliptic(omega, e, a, t)
>>> year, month, day = time.get_date()
>>> print(year)
1985
>>> print(month)
11
>>> print(round(day, 2))
9.16
>>> print(round(r, 4))
1.8045
>>> time, r = passage_nodes_elliptic(omega, e, a, t, ascending=False)
>>> year, month, day = time.get_date()
>>> print(year)
1986
>>> print(month)
3
>>> print(round(day, 2))
10.37
>>> print(round(r, 4))
0.8493
"""
if not (isinstance(omega, Angle) and isinstance(e, float) and
isinstance(a, float) and isinstance(t, Epoch)):
raise TypeError("Invalid input types")
# First, get the true anomaly
if ascending:
v = 360.0 - omega
else:
v = 180.0 - omega
# Compute the eccentric anomaly
ee = 2.0 * atan(sqrt((1.0 - e)/(1.0 + e)) * tan(v.rad() / 2.0))
# Now compute the mean anomaly
m = ee - e * sin(ee)
# We need the mean motion, in degrees/day
n = 0.9856076686/(a * sqrt(a))
# The time of passage will be
tt = t + degrees(m) / n
# And the corresponding radius vector is
r = a * (1.0 - e * cos(ee))
return tt, r
def passage_nodes_parabolic(omega, q, t, ascending=True):
"""This function computes the time of passage by the nodes (ascending or
descending) of a given celestial object with a parabolic orbit.
:param omega: Argument of the perihelion
:type omega: :py:class:`Angle`
:param q: Perihelion distance, in Astronomical Units
:type q: float
:param t: Time of perihelion passage
:type t: :py:class:`Epoch`
:param ascending: Whether the time of passage by the ascending (True) or
descending (False) node will be computed
:type ascending: bool
:returns: Tuple containing:
- Time of passage through the node (:py:class:`Epoch`)
- Radius vector when passing through the node (in AU, float)
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> omega = Angle(154.9103)
>>> q = 1.324502
>>> t = Epoch(1989, 8, 20.291)
>>> time, r = passage_nodes_parabolic(omega, q, t)
>>> year, month, day = time.get_date()
>>> print(year)
1977
>>> print(month)
9
>>> print(round(day, 2))
17.64
>>> print(round(r, 4))
28.0749
>>> time, r = passage_nodes_parabolic(omega, q, t, ascending=False)
>>> year, month, day = time.get_date()
>>> print(year)
1989
>>> print(month)
9
>>> print(round(day, 3))
17.636
>>> print(round(r, 4))
1.3901
"""
if not (isinstance(omega, Angle) and isinstance(q, float) and
isinstance(t, Epoch)):
raise TypeError("Invalid input types")
# First, get the true anomaly
if ascending:
v = 360.0 - omega
else:
v = 180.0 - omega
# Compute an auxiliary value
s = tan(v.rad() / 2.0)
s2 = s * s
# Compute time of passage
tt = t + 27.403895 * s * (s2 + 3.0) * q * sqrt(q)
# Compute radius vector
r = q * (1.0 + s2)
return tt, r
def phase_angle(sun_dist, earth_dist, sun_earth_dist):
"""This function computes the phase angle, i.e., the angle Sun-planet-Earth
from the corresponding distances.
:param sun_dist: Planet's distance to the Sun, in Astronomical Units
:type sun_dist: float
:param earth_dist: Distance from planet to Earth, in Astronomical Units
:type earth_dist: float
:param sun_earth_dist: Distance Sun-Earth, in Astronomical Units
:type sun_earth_dist: float
:returns: The phase angle, as an Angle object
:rtype: :py:class:`Angle`
:raises: TypeError if input values are of wrong type.
>>> sun_dist = 0.724604
>>> earth_dist = 0.910947
>>> sun_earth_dist = 0.983824
>>> angle = phase_angle(sun_dist, earth_dist, sun_earth_dist)
>>> print(round(angle, 2))
72.96
"""
if not (isinstance(sun_dist, float) and isinstance(earth_dist, float) and
isinstance(sun_earth_dist, float)):
raise TypeError("Invalid input types")
angle = acos((sun_dist * sun_dist + earth_dist * earth_dist -
sun_earth_dist * sun_earth_dist) /
(2.0 * sun_dist * earth_dist))
angle = Angle(angle, radians=True)
return angle
def illuminated_fraction(sun_dist, earth_dist, sun_earth_dist):
"""This function computes the illuminated fraction of the disk of a planet,
as seen from the Earth.
:param sun_dist: Planet's distance to the Sun, in Astronomical Units
:type sun_dist: float
:param earth_dist: Distance from planet to Earth, in Astronomical Units
:type earth_dist: float
:param sun_earth_dist: Distance Sun-Earth, in Astronomical Units
:type sun_earth_dist: float
:returns: The illuminated fraction of the disc of a planet
:rtype: float
:raises: TypeError if input values are of wrong type.
>>> sun_dist = 0.724604
>>> earth_dist = 0.910947
>>> sun_earth_dist = 0.983824
>>> k = illuminated_fraction(sun_dist, earth_dist, sun_earth_dist)
>>> print(round(k, 3))
0.647
"""
if not (isinstance(sun_dist, float) and isinstance(earth_dist, float) and
isinstance(sun_earth_dist, float)):
raise TypeError("Invalid input types")
k = ((sun_dist + earth_dist) * (sun_dist + earth_dist) -
sun_earth_dist * sun_earth_dist) / (4.0 * sun_dist * earth_dist)
return k
def main():
# Let's define a small helper function
def print_me(msg, val):
print("{}: {}".format(msg, val))
# Let's show some uses of Coordinate functions
print("\n" + 35 * "*")
print("*** Use of Coordinate functions")
print(35 * "*" + "\n")
# Here follows a series of important parameters related to the angle
# between Earth's rotation axis and the ecliptic
e0 = mean_obliquity(1987, 4, 10)
print(
"The mean angle between Earth rotation axis and ecliptic axis for "
+ "1987/4/10 is:"
)
print_me("Mean obliquity", e0.dms_str(n_dec=3)) # 23d 26' 27.407''
epsilon = true_obliquity(1987, 4, 10)
print("'True' (instantaneous) angle between those axes for 1987/4/10 is:")
print_me("True obliquity", epsilon.dms_str(n_dec=3)) # 23d 26' 36.849''
epsilon = true_obliquity(2018, 7, 29)
print("'True' (instantaneous) angle between those axes for 2018/7/29 is:")
print_me("True obliquity", epsilon.dms_str(True, 4)) # 23d 26' 7.2157''
# The nutation effect is separated in two components: One parallel to the
# ecliptic (nutation in longitude) and other perpendicular to the ecliptic
# (nutation in obliquity)
print("Nutation correction in longitude for 1987/4/10:")
dpsi = nutation_longitude(1987, 4, 10)
print_me("Nutation in longitude", dpsi.dms_str(n_dec=3)) # 0d 0' -3.788''
print("Nutation correction in obliquity for 1987/4/10:")
depsilon = nutation_obliquity(1987, 4, 10) # 0d 0' 9.443''
print_me("Nutation in obliquity", depsilon.dms_str(n_dec=3))
print("")
# We can compute the effects of precession on the equatorial coordinates of
# a given star, taking also into account its proper motion
start_epoch = JDE2000
final_epoch = Epoch(2028, 11, 13.19)
alpha0 = Angle(2, 44, 11.986, ra=True)
delta0 = Angle(49, 13, 42.48) # 2h 44' 11.986''
print_me("Initial right ascension", alpha0.ra_str(n_dec=3))
print_me("Initial declination", delta0.dms_str(n_dec=2)) # 49d 13' 42.48''
pm_ra = Angle(0, 0, 0.03425, ra=True)
pm_dec = Angle(0, 0, -0.0895)
alpha, delta = precession_equatorial(
start_epoch, final_epoch, alpha0, delta0, pm_ra, pm_dec
)
print_me("Final right ascension", alpha.ra_str(n_dec=3)) # 2h 46' 11.331''
print_me("Final declination", delta.dms_str(n_dec=2)) # 49d 20' 54.54''
print("")
# Something similar can also be done with the ecliptical coordinates
start_epoch = JDE2000
final_epoch = Epoch(-214, 6, 30.0)
lon0 = Angle(149.48194)
lat0 = Angle(1.76549)
print_me("Initial ecliptical longitude", round(lon0(), 5)) # 149.48194
print_me("Initial ecliptical latitude", round(lat0(), 5)) # 1.76549
lon, lat = precession_ecliptical(start_epoch, final_epoch, lon0, lat0)
print_me("Final ecliptical longitude", round(lon(), 3)) # 118.704
print_me("Final ecliptical latitude", round(lat(), 3)) # 1.615
print("")
# It is possible to compute with relative accuracy the proper motion of the
# stars, taking into account their distance to Sun and relative velocity
ra = Angle(6, 45, 8.871, ra=True)
dec = Angle(-16.716108)
pm_ra = Angle(0, 0, -0.03847, ra=True)
pm_dec = Angle(0, 0, -1.2053)
dist = 2.64
vel = -7.6
alpha, delta = motion_in_space(ra, dec, dist, vel, pm_ra, pm_dec, -1000.0)
print_me("Right ascension, year 2000", ra.ra_str(True, 2))
print_me("Right ascension, year 1000", alpha.ra_str(True, 2))
# 6h 45' 47.16''
print_me("Declination, year 2000", dec.dms_str(True, 1))
print_me("Declination, year 1000", delta.dms_str(True, 1))
# -16d 22' 56.0''
print("")
# This module provides a series of functions to convert between equatorial,
# ecliptical, horizontal and galactic coordinates
ra = Angle(7, 45, 18.946, ra=True)
dec = Angle(28, 1, 34.26)
epsilon = Angle(23.4392911)
lon, lat = equatorial2ecliptical(ra, dec, epsilon)
print_me("Equatorial to ecliptical. Longitude", round(lon(), 5))
# 113.21563
print_me("Equatorial to ecliptical. Latitude", round(lat(), 5))
# 6.68417
print("")
lon = Angle(113.21563)
lat = Angle(6.68417)
epsilon = Angle(23.4392911)
ra, dec = ecliptical2equatorial(lon, lat, epsilon)
print_me("Ecliptical to equatorial. Right ascension", ra.ra_str(n_dec=3))
# 7h 45' 18.946''
print_me("Ecliptical to equatorial. Declination", dec.dms_str(n_dec=2))
# 28d 1' 34.26''
print("")
lon = Angle(77, 3, 56)
lat = Angle(38, 55, 17)
ra = Angle(23, 9, 16.641, ra=True)
dec = Angle(-6, 43, 11.61)
theta0 = Angle(8, 34, 57.0896, ra=True)
eps = Angle(23, 26, 36.87)
# Compute correction to convert from mean to apparent sidereal time
delta = Angle(0, 0, ((-3.868 * cos(eps.rad())) / 15.0), ra=True)
theta0 += delta
h = theta0 - lon - ra
azi, ele = equatorial2horizontal(h, dec, lat)
print_me("Equatorial to horizontal: Azimuth", round(azi, 3)) # 68.034
print_me("Equatorial to horizontal: Elevation", round(ele, 3)) # 15.125
print("")
azi = Angle(68.0337)
ele = Angle(15.1249)
lat = Angle(38, 55, 17)
h, dec = horizontal2equatorial(azi, ele, lat)
print_me("Horizontal to equatorial. Hour angle", round(h, 4)) # 64.3521
print_me("Horizontal to equatorial. Declination", dec.dms_str(n_dec=0))
# -6d 43' 12.0''
print("")
ra = Angle(17, 48, 59.74, ra=True)
dec = Angle(-14, 43, 8.2)
lon, lat = equatorial2galactic(ra, dec)
print_me("Equatorial to galactic. Longitude", round(lon, 4)) # 12.9593
print_me("Equatorial to galactic. Latitude", round(lat, 4)) # 6.0463
print("")
lon = Angle(12.9593)
lat = Angle(6.0463)
ra, dec = galactic2equatorial(lon, lat)
print_me("Galactic to equatorial. Right ascension", ra.ra_str(n_dec=1))
# 17h 48' 59.7''
print_me("Galactic to equatorial. Declination", dec.dms_str(n_dec=0))
# -14d 43' 8.0''
print("")
# Get the ecliptic longitudes of the two points of the ecliptic which are
# on the horizon, as well as the angle between the ecliptic and the horizon
sidereal_time = Angle(5.0, ra=True)
lat = Angle(51.0)
epsilon = Angle(23.44)
lon1, lon2, i = ecliptic_horizon(sidereal_time, lat, epsilon)
print_me(
"Longitude of ecliptic point #1 on the horizon", lon1.dms_str(n_dec=1)
) # 169d 21' 29.9''
print_me(
"Longitude of ecliptic point #2 on the horizon", lon2.dms_str(n_dec=1)
) # 349d 21' 29.9''
print_me("Angle between the ecliptic and the horizon", round(i, 0)) # 62.0
print("")
# Let's compute the angle of the diurnal path of a celestial body relative
# to the horizon at the time of rising and setting
dec = Angle(23.44)
lat = Angle(40.0)
j = diurnal_path_horizon(dec, lat)
print_me(
"Diurnal path vs. horizon angle at time of rising and setting",
j.dms_str(n_dec=1),
) # 45d 31' 28.4''
print("")
# There is a function to compute the times (in hours of the day) of rising,
# transit and setting of a given celestial body
longitude = Angle(71, 5, 0.0)
latitude = Angle(42, 20, 0.0)
alpha1 = Angle(2, 42, 43.25, ra=True)
delta1 = Angle(18, 2, 51.4)
alpha2 = Angle(2, 46, 55.51, ra=True)
delta2 = Angle(18, 26, 27.3)
alpha3 = Angle(2, 51, 7.69, ra=True)
delta3 = Angle(18, 49, 38.7)
h0 = Angle(-0.5667)
delta_t = 56.0
theta0 = Angle(11, 50, 58.1, ra=True)
rising, transit, setting = times_rise_transit_set(
longitude,
latitude,
alpha1,
delta1,
alpha2,
delta2,
alpha3,
delta3,
h0,
delta_t,
theta0,
)
print_me("Time of rising (hours of day)", round(rising, 4)) # 12.4238
print_me("Time of transit (hours of day)", round(transit, 3)) # 19.675
print_me("Time of setting (hours of day, next day)", round(setting, 3))
# 2.911
print("")
# The air in the atmosphere introduces an error in the elevation due to the
# refraction. We can compute the true (airless) elevation from the apparent
# elevation, and viceversa
apparent_elevation = Angle(0, 30, 0.0)
true_elevation = refraction_apparent2true(apparent_elevation)
print_me(
"True elevation for an apparent elevation of 30'",
true_elevation.dms_str(n_dec=1),
) # 1' 14.7''
true_elevation = Angle(0, 33, 14.76)
apparent_elevation = refraction_true2apparent(true_elevation)
print_me(
"Apparent elevation for a true elevation of 33' 14.76''",
apparent_elevation.dms_str(n_dec=2),
) # 57' 51.96''
print("")
# The angular separation between two celestial objects can be easily
# computed with the 'angular_separation()' function
alpha1 = Angle(14, 15, 39.7, ra=True)
delta1 = Angle(19, 10, 57.0)
alpha2 = Angle(13, 25, 11.6, ra=True)
delta2 = Angle(-11, 9, 41.0)
sep_ang = angular_separation(alpha1, delta1, alpha2, delta2)
print_me(
"Angular separation between two given celestial bodies (degrees)",
round(sep_ang, 3),
) # 32.793
print("")
# We can compute the minimum angular separation achieved between two
# celestial objects. For that, we must provide the positions at three
# equidistant epochs:
# EPOCH: Sep 13th, 1978, 0h TT:
alpha1_1 = Angle(10, 29, 44.27, ra=True)
delta1_1 = Angle(11, 2, 5.9)
alpha2_1 = Angle(10, 33, 29.64, ra=True)
delta2_1 = Angle(10, 40, 13.2)
# EPOCH: Sep 14th, 1978, 0h TT:
alpha1_2 = Angle(10, 36, 19.63, ra=True)
delta1_2 = Angle(10, 29, 51.7)
alpha2_2 = Angle(10, 33, 57.97, ra=True)
delta2_2 = Angle(10, 37, 33.4)
# EPOCH: Sep 15th, 1978, 0h TT:
alpha1_3 = Angle(10, 43, 1.75, ra=True)
delta1_3 = Angle(9, 55, 16.7)
alpha2_3 = Angle(10, 34, 26.22, ra=True)
delta2_3 = Angle(10, 34, 53.9)
a = minimum_angular_separation(
alpha1_1,
delta1_1,
alpha1_2,
delta1_2,
alpha1_3,
delta1_3,
alpha2_1,
delta2_1,
alpha2_2,
delta2_2,
alpha2_3,
delta2_3,
)
# Epoch fraction:
print_me("Minimum angular separation, epoch fraction", round(a[0], 6))
# -0.370726
# NOTE: Given that 'n' is negative, and Sep 14th is the middle epoch (n=0),
# then the minimum angular separation is achieved on Sep 13th, specifically
# at: 1.0 - 0.370726 = 0.629274 => Sep 13.629274 = Sep 13th, 15h 6' 9''
# Minimum angular separation:
print_me("Minimum angular separation", a[1].dms_str(n_dec=0)) # 3' 44.0''
print("")
# If two objects have the same right ascension, then the relative position
# angle between them must be 0 (or 180)
alpha1 = Angle(14, 15, 39.7, ra=True)
delta1 = Angle(19, 10, 57.0)
alpha2 = Angle(14, 15, 39.7, ra=True) # Same as alpha1
delta2 = Angle(-11, 9, 41.0)
pos_ang = relative_position_angle(alpha1, delta1, alpha2, delta2)
print_me("Relative position angle", round(pos_ang, 1)) # 0.0
print("")
# Planetary conjunctions may be computed with the appropriate function
alpha1_1 = Angle(10, 24, 30.125, ra=True)
delta1_1 = Angle(6, 26, 32.05)
alpha1_2 = Angle(10, 25, 0.342, ra=True)
delta1_2 = Angle(6, 10, 57.72)
alpha1_3 = Angle(10, 25, 12.515, ra=True)
delta1_3 = Angle(5, 57, 33.08)
alpha1_4 = Angle(10, 25, 6.235, ra=True)
delta1_4 = Angle(5, 46, 27.07)
alpha1_5 = Angle(10, 24, 41.185, ra=True)
delta1_5 = Angle(5, 37, 48.45)
alpha2_1 = Angle(10, 27, 27.175, ra=True)
delta2_1 = Angle(4, 4, 41.83)
alpha2_2 = Angle(10, 26, 32.410, ra=True)
delta2_2 = Angle(3, 55, 54.66)
alpha2_3 = Angle(10, 25, 29.042, ra=True)
delta2_3 = Angle(3, 48, 3.51)
alpha2_4 = Angle(10, 24, 17.191, ra=True)
delta2_4 = Angle(3, 41, 10.25)
alpha2_5 = Angle(10, 22, 57.024, ra=True)
delta2_5 = Angle(3, 35, 16.61)
alpha1_list = [alpha1_1, alpha1_2, alpha1_3, alpha1_4, alpha1_5]
delta1_list = [delta1_1, delta1_2, delta1_3, delta1_4, delta1_5]
alpha2_list = [alpha2_1, alpha2_2, alpha2_3, alpha2_4, alpha2_5]
delta2_list = [delta2_1, delta2_2, delta2_3, delta2_4, delta2_5]
pc = planetary_conjunction(alpha1_list, delta1_list, alpha2_list,
delta2_list)
print_me("Epoch fraction 'n' for planetary conjunction", round(pc[0], 5))
# 0.23797
print_me(
"Difference in declination at conjunction", pc[1].dms_str(n_dec=1)
) # 2d 8' 21.8''
print("")
# A planetary conjunction with a star is a little bit simpler
alpha_1 = Angle(15, 3, 51.937, ra=True)
delta_1 = Angle(-8, 57, 34.51)
alpha_2 = Angle(15, 9, 57.327, ra=True)
delta_2 = Angle(-9, 9, 3.88)
alpha_3 = Angle(15, 15, 37.898, ra=True)
delta_3 = Angle(-9, 17, 37.94)
alpha_4 = Angle(15, 20, 50.632, ra=True)
delta_4 = Angle(-9, 23, 16.25)
alpha_5 = Angle(15, 25, 32.695, ra=True)
delta_5 = Angle(-9, 26, 1.01)
alpha_star = Angle(15, 17, 0.446, ra=True)
delta_star = Angle(-9, 22, 58.47)
alpha_list = [alpha_1, alpha_2, alpha_3, alpha_4, alpha_5]
delta_list = [delta_1, delta_2, delta_3, delta_4, delta_5]
pc = planet_star_conjunction(alpha_list, delta_list, alpha_star,
delta_star)
print_me("Epoch fraction 'n' for planetary conjunction with star",
round(pc[0], 4)) # 0.2551
print_me("Difference in declination with star at conjunction",
pc[1].dms_str(n_dec=0)) # 3' 38.0''
print("")
# It is possible to compute when a planet and two other stars will be in a
# straight line
alpha_1 = Angle(7, 55, 55.36, ra=True)
delta_1 = Angle(21, 41, 3.0)
alpha_2 = Angle(7, 58, 22.55, ra=True)
delta_2 = Angle(21, 35, 23.4)
alpha_3 = Angle(8, 0, 48.99, ra=True)
delta_3 = Angle(21, 29, 38.2)
alpha_4 = Angle(8, 3, 14.66, ra=True)
delta_4 = Angle(21, 23, 47.5)
alpha_5 = Angle(8, 5, 39.54, ra=True)
delta_5 = Angle(21, 17, 51.4)
alpha_star1 = Angle(7, 34, 16.40, ra=True)
delta_star1 = Angle(31, 53, 51.2)
alpha_star2 = Angle(7, 45, 0.10, ra=True)
delta_star2 = Angle(28, 2, 12.5)
alpha_list = [alpha_1, alpha_2, alpha_3, alpha_4, alpha_5]
delta_list = [delta_1, delta_2, delta_3, delta_4, delta_5]
n = planet_stars_in_line(alpha_list, delta_list, alpha_star1, delta_star1,
alpha_star2, delta_star2)
print_me("Epoch fraction 'n' when bodies are in a straight line",
round(n, 4)) # 0.2233
print("")
# The function 'straight_line()' computes if three celestial bodies are in
# line providing the angle with which the bodies differ from a great circle
alpha1 = Angle(5, 32, 0.40, ra=True)
delta1 = Angle(0, -17, 56.9)
alpha2 = Angle(5, 36, 12.81, ra=True)
delta2 = Angle(-1, 12, 7.0)
alpha3 = Angle(5, 40, 45.52, ra=True)
delta3 = Angle(-1, 56, 33.3)
psi, omega = straight_line(alpha1, delta1, alpha2, delta2, alpha3, delta3)
print_me("Angle deviation from a straight line", psi.dms_str(n_dec=0))
# 7d 31' 1.0''
print_me("Angular distance of central point to the straight line",
omega.dms_str(n_dec=0)) # -5' 24.0''
print("")
# Let's compute the size of the smallest circle that contains three bodies
alpha1 = Angle(12, 41, 8.63, ra=True)
delta1 = Angle(-5, 37, 54.2)
alpha2 = Angle(12, 52, 5.21, ra=True)
delta2 = Angle(-4, 22, 26.2)
alpha3 = Angle(12, 39, 28.11, ra=True)
delta3 = Angle(-1, 50, 3.7)
d = circle_diameter(alpha1, delta1, alpha2, delta2, alpha3, delta3)
print_me(
"Diameter of smallest circle containing three celestial bodies",
d.dms_str(n_dec=0),
) # 4d 15' 49.0''
print("")
# Now, let's find the apparent position of a star (Theta Persei) for a
# given epoch
epoch = Epoch(2028, 11, 13.19)
alpha = Angle(2, 46, 11.331, ra=True)
delta = Angle(49, 20, 54.54)
sun_lon = Angle(231.328)
app_alpha, app_delta = apparent_position(epoch, alpha, delta, sun_lon)
print_me("Apparent right ascension", app_alpha.ra_str(n_dec=2))
# 2h 46' 14.39''
print_me("Apparent declination", app_delta.dms_str(n_dec=2))
# 49d 21' 7.45''
print("")
# Convert orbital elements of an object from one equinox to another
epoch0 = Epoch(2358042.5305)
epoch = Epoch(2433282.4235)
i0 = Angle(47.122)
arg0 = Angle(151.4486)
lon0 = Angle(45.7481)
i1, arg1, lon1 = orbital_equinox2equinox(epoch0, epoch, i0, arg0, lon0)
print_me("New inclination", round(i1(), 3)) # 47.138
print_me("New argument of perihelion", round(arg1(), 4)) # 151.4782
print_me("New longitude of ascending node", round(lon1(), 4)) # 48.6037
print("")
# Compute the eccentric and true anomalies using Kepler's equation
eccentricity = 0.1
mean_anomaly = Angle(5.0)
e, v = kepler_equation(eccentricity, mean_anomaly)
print_me("Eccentric anomaly, Case #1", round(e(), 6)) # 5.554589
print_me("True anomaly, Case #1", round(v(), 6)) # 6.139762
e, v = kepler_equation(0.99, Angle(0.2, radians=True))
print_me("Eccentric anomaly, Case #2", round(e(), 8)) # 61.13444578
print_me("True anomaly, Case #2", round(v(), 6)) # 166.311977
print("")
# Compute the velocity of a body in a given point of its (unperturbated
# elliptic) orbit
r = 1.0
a = 17.9400782
v = velocity(r, a)
print_me("Velocity at 1 AU", round(v, 2)) # 41.53
# Compute the velocity at perihelion
e = 0.96727426
vp = velocity_perihelion(e, a)
print_me("Velocity at perihelion", round(vp, 2)) # 54.52
# Compute the velocity at aphelion
va = velocity_aphelion(e, a)
print_me("Velocity at aphelion", round(va, 2)) # 0.91
# Calculate the length of the orbit
length = length_orbit(e, a)
print_me("Length of the orbit (AU)", round(length, 2)) # 77.06
print("")
# Passage through the nodes of an elliptic orbit
omega = Angle(111.84644)
e = 0.96727426
a = 17.9400782
t = Epoch(1986, 2, 9.45891)
time, r = passage_nodes_elliptic(omega, e, a, t)
y, m, d = time.get_date()
d = round(d, 2)
print("Time of passage through ascending node: {}/{}/{}".format(y, m, d))
# 1985/11/9.16
print("Radius vector at ascending node: {}".format(round(r, 4))) # 1.8045
# Passage through the nodes of a parabolic orbit
omega = Angle(154.9103)
q = 1.324502
t = Epoch(1989, 8, 20.291)
time, r = passage_nodes_parabolic(omega, q, t, ascending=False)
y, m, d = time.get_date()
d = round(d, 2)
print("Time of passage through descending node: {}/{}/{}".format(y, m, d))
# 1989/9/17.64
print("Radius vector at descending node: {}".format(round(r, 4))) # 1.3901
print("")
# Compute the phase angle
sun_dist = 0.724604
earth_dist = 0.910947
sun_earth_dist = 0.983824
angle = phase_angle(sun_dist, earth_dist, sun_earth_dist)
print_me("Phase angle", round(angle, 2)) # 72.96
# Now, let's compute the illuminated fraction of the disk
k = illuminated_fraction(sun_dist, earth_dist, sun_earth_dist)
print_me("Illuminated fraction of planet disk", round(k, 3)) # 0.647
if __name__ == "__main__":
main()
pymeeus-0.3.6/pymeeus/CurveFitting.py 0000664 0000000 0000000 00000054417 13555455377 0017717 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from math import sqrt, radians, fsum, sin
from pymeeus.base import TOL
from pymeeus.Angle import Angle
"""
.. module:: CurveFitting
:synopsis: Class to get the best fit of a curve to a set of (x, y) points
:license: GNU Lesser General Public License v3 (LGPLv3)
.. moduleauthor:: Dagoberto Salazar
"""
class CurveFitting(object):
"""
Class CurveFitting deals with finding the function (linear, cuadratic, etc)
that best fit a given set of points.
The constructor takes pairs of (x, y) values from the table of interest.
These pairs of values can be given as a sequence of int/floats, tuples,
lists or Angles. It is also possible to provide a CurveFitting object to
the constructor in order to get a copy.
.. note:: When using Angles, be careful with the 360-to-0 discontinuity.
If a sequence of int, floats or Angles is given, the values in the odd
positions are considered to belong to the 'x' set, while the values in the
even positions belong to the 'y' set. If only one tuple or list is
provided, it is assumed that it is the 'y' set, and the 'x' set is build
from 0 onwards with steps of length 1.
Please keep in mind that a minimum of two data pairs are needed in order to
carry out any fitting. If only one value pair is provided, a ValueError
exception will be raised.
"""
def __init__(self, *args):
"""CurveFitting constructor.
This takes pairs of (x, y) values from the table of interest. These
pairs of values can be given as a sequence of int/floats, tuples, lists
or Angles. It is also possible to provide a CurveFitting object to the
constructor in order to get a copy.
.. note:: When using Angles, be careful with the 360-to-0 discontinuity
If a sequence of int, floats or Angles is given, the values in the odd
positions are considered to belong to the 'x' set, while the values in
the even positions belong to the 'y' set. If only one tuple or list is
provided, it is assumed that it is the 'y' set, and the 'x' set is
build from 0 onwards with steps of length 1.
Please keep in mind that a minimum of two data pairs are needed in
order to carry out any interpolation. If only one value pair is
provided, a ValueError exception will be raised.
:param args: Input tabular values, or another CurveFitting object.
:type args: int, float, list, tuple, :py:class:`Angle`,
:py:class:`CurveFitting`
:returns: CurveFitting object.
:rtype: :py:class:`CurveFitting`
:raises: ValueError if not enough input data pairs are provided.
:raises: TypeError if input values are of wrong type.
>>> i = CurveFitting([5, 3, 6, 1, 2, 4, 9], [10, 6, 12, 2, 4, 8])
>>> print(i._x)
[5, 3, 6, 1, 2, 4]
>>> print(i._y)
[10, 6, 12, 2, 4, 8]
>>> j = CurveFitting([3, -8, 1, 12, 2, 5, 8])
>>> print(j._x)
[0, 1, 2, 3, 4, 5, 6]
>>> print(j._y)
[3, -8, 1, 12, 2, 5, 8]
>>> k = CurveFitting(3, -8, 1, 12, 2, 5, 8)
>>> print(k._x)
[3, 1, 2]
>>> print(k._y)
[-8, 12, 5]
>>> m = CurveFitting(k)
>>> print(m._x)
[3, 1, 2]
>>> print(m._y)
[-8, 12, 5]
"""
# Initialize data table
self._x = []
self._y = []
self.set(*args) # Let's use 'set()' method to handle the setup
def set(self, *args):
"""Method used to define the value pairs of CurveFitting object.
This takes pairs of (x, y) values from the table of interest. These
pairs of values can be given as a sequence of int/floats, tuples,
lists, or Angles. It is also possible to provide a CurveFitting object
to this method in order to get a copy.
.. note:: When using Angles, be careful with the 360-to-0 discontinuity
If a sequence of int, floats or Angles is given, the values in the odd
positions are considered to belong to the 'x' set, while the values in
the even positions belong to the 'y' set. If only one tuple or list is
provided, it is assumed that it is the 'y' set, and the 'x' set is
build from 0 onwards with steps of length 1.
Please keep in mind that a minimum of two data pairs are needed in
order to carry out any interpolation. If only one value is provided, a
ValueError exception will be raised.
:param args: Input tabular values, or another CurveFitting object.
:type args: int, float, list, tuple, :py:class:`Angle`
:returns: None.
:rtype: None
:raises: ValueError if not enough input data pairs are provided.
:raises: TypeError if input values are of wrong type.
>>> i = CurveFitting()
>>> i.set([5, 3, 6, 1, 2, 4, 9], [10, 6, 12, 2, 4, 8])
>>> print(i._x)
[5, 3, 6, 1, 2, 4]
>>> print(i._y)
[10, 6, 12, 2, 4, 8]
>>> j = CurveFitting()
>>> j.set([3, -8, 1, 12, 2, 5, 8])
>>> print(j._x)
[0, 1, 2, 3, 4, 5, 6]
>>> print(j._y)
[3, -8, 1, 12, 2, 5, 8]
>>> k = CurveFitting(3, -8, 1, 12, 2, 5, 8)
>>> print(k._x)
[3, 1, 2]
>>> print(k._y)
[-8, 12, 5]
"""
# Clean up the internal data tables and parameters
self._x = []
self._y = []
# If no arguments are given, return. Internal data tables are empty
if len(args) == 0:
return
# If we have only one argument, it can be a single value or tuple/list
elif len(args) == 1:
if isinstance(args[0], CurveFitting):
self._x = args[0]._x
self._y = args[0]._y
elif isinstance(args[0], (int, float, Angle)):
# Insuficient data for curve fitting. Raise ValueError
raise ValueError("Invalid number of input values")
elif isinstance(args[0], (list, tuple)):
seq = args[0]
if len(seq) < 2:
raise ValueError("Invalid number of input values")
else:
# Read input values into 'y', and create 'x'
i = 0
for value in seq:
self._x.append(i)
self._y.append(value)
i += 1
else:
raise TypeError("Invalid input value")
elif len(args) == 2:
if isinstance(args[0], (int, float, Angle)) or isinstance(
args[1], (int, float, Angle)
):
# Insuficient data for curve fitting. Raise ValueError
raise ValueError("Invalid number of input values")
elif isinstance(args[0], (list, tuple)) and isinstance(
args[1], (list, tuple)
):
x = args[0]
y = args[1]
# Check if they have the same length. If not, make them equal
length_min = min(len(x), len(y))
x = x[:length_min]
y = y[:length_min]
if len(x) < 2 or len(y) < 2:
raise ValueError("Invalid number of input values")
else:
# Read input values into 'x' and 'y'
for xval, yval in zip(x, y):
self._x.append(xval)
self._y.append(yval)
else:
raise TypeError("Invalid input value")
elif len(args) == 3:
# In this case, no combination of input values is valid
raise ValueError("Invalid number of input values")
else:
# If there is an odd number of arguments, drop the last one
if len(args) % 2 != 0:
args = args[:-1]
# Check that all the arguments are ints, floats or Angles
all_numbers = True
for arg in args:
all_numbers = (all_numbers and
isinstance(arg, (int, float, Angle)))
# If any of the values failed the test, raise an exception
if not all_numbers:
raise TypeError("Invalid input value")
# Now, extract the data: Odds are x's, evens are y's
for i in range(int(len(args) / 2.0)):
self._x.append(args[2 * i])
self._y.append(args[2 * i + 1])
# Compute parameters
if len(self._x) > 0:
self._compute_parameters()
def _compute_parameters(self):
"""Method to compute the intermediate parameters using for fitting."""
self._P = 0.0
self._Q = 0.0
self._R = 0.0
self._S = 0.0
self._T = 0.0
self._U = 0.0
self._V = 0.0
self._W = 0.0
self._N = len(self._x)
self._P = fsum(self._x)
self._T = fsum(self._y)
for i in range(self._N):
x2 = self._x[i] * self._x[i]
xy = self._x[i] * self._y[i]
self._Q += x2
self._R += x2 * self._x[i]
self._S += x2 * x2
self._U += xy
self._V += xy * self._x[i]
self._W += self._y[i] * self._y[i]
return
def __str__(self):
"""Method used when trying to print the object.
:returns: Internal tabular values as strings.
:rtype: string
>>> i = CurveFitting([5, 3, 6, 1, 2, 4, 9], [10, 6, 12, 2, 4, 8])
>>> print(i)
X: [5, 3, 6, 1, 2, 4]
Y: [10, 6, 12, 2, 4, 8]
"""
xstr = "X: " + str(self._x) + "\n"
ystr = "Y: " + str(self._y)
return xstr + ystr
def __repr__(self):
"""Method providing the 'official' string representation of the object.
It provides a valid expression that could be used to recreate the
object.
:returns: As string with a valid expression to recreate the object
:rtype: string
>>> i = CurveFitting([5, 3, 6, 1, 2, 4, 9], [10, 6, 12, 2, 4, 8])
>>> repr(i)
'CurveFitting([5, 3, 6, 1, 2, 4], [10, 6, 12, 2, 4, 8])'
"""
return "{}({}, {})".format(self.__class__.__name__, self._x, self._y)
def __len__(self):
"""This method returns the number of value pairs internally stored in
this object.
:returns: Number of value pairs internally stored
:rtype: int
>>> i = CurveFitting([5, 3, 6, 1, 2, 4, 9], [10, 6, 12, 2, 4, 8])
>>> len(i)
6
"""
return len(self._x)
def correlation_coeff(self):
"""This method returns the coefficient of correlation, as a float.
:returns: Coefficient of correlation.
:rtype: float
>>> cf = CurveFitting([73.0, 38.0, 35.0, 42.0, 78.0, 68.0, 74.0, 42.0,
... 52.0, 54.0, 39.0, 61.0, 42.0, 49.0, 50.0, 62.0,
... 44.0, 39.0, 43.0, 54.0, 44.0, 37.0],
... [90.4, 125.3, 161.8, 143.4, 52.5, 50.8, 71.5,
... 152.8, 131.3, 98.5, 144.8, 78.1, 89.5, 63.9,
... 112.1, 82.0, 119.8, 161.2, 208.4, 111.6, 167.1,
... 162.1])
>>> r = cf.correlation_coeff()
>>> print(round(r, 3))
-0.767
"""
n = self._N
sxy = self._U
sx = self._P
sy = self._T
sx2 = self._Q
sy2 = self._W
return ((n * sxy - sx * sy) / (sqrt(n * sx2 - sx * sx) *
sqrt(n * sy2 - sy * sy)))
def linear_fitting(self):
"""This method returns a tuple with the 'a', 'b' coefficients of the
linear equation *'y = a*x + b'* that best fits the table data, using
the least squares approach.
:returns: 'a', 'b' coefficients of best linear equation fit.
:rtype: tuple
:raises: ZeroDivisionError if input data leads to a division by zero
>>> cf = CurveFitting([73.0, 38.0, 35.0, 42.0, 78.0, 68.0, 74.0, 42.0,
... 52.0, 54.0, 39.0, 61.0, 42.0, 49.0, 50.0, 62.0,
... 44.0, 39.0, 43.0, 54.0, 44.0, 37.0],
... [90.4, 125.3, 161.8, 143.4, 52.5, 50.8, 71.5,
... 152.8, 131.3, 98.5, 144.8, 78.1, 89.5, 63.9,
... 112.1, 82.0, 119.8, 161.2, 208.4, 111.6, 167.1,
... 162.1])
>>> a, b = cf.linear_fitting()
>>> print("a = {}\tb = {}".format(round(a, 2), round(b, 2)))
a = -2.49 b = 244.18
"""
n = self._N
sxy = self._U
sx = self._P
sy = self._T
sx2 = self._Q
d = n * sx2 - sx * sx
if abs(d) < TOL:
raise ZeroDivisionError("Input data leads to a division by zero")
a = (n * sxy - sx * sy) / d
b = (sy * sx2 - sx * sxy) / d
return (a, b)
def quadratic_fitting(self):
"""This method returns a tuple with the 'a', 'b', 'c' coefficients of
the quadratic equation *'y = a*x*x + b*x + c'* that best fits the table
data, using the least squares approach.
:returns: 'a', 'b', 'c' coefficients of best quadratic equation fit.
:rtype: tuple
:raises: ZeroDivisionError if input data leads to a division by zero
>>> cf2 = CurveFitting([-2.0, -1.5, -1.0, -0.5, 0.0, 0.5, 1.0, 1.5,
... 2.0, 2.5,3.0],
... [-9.372, -3.821, 0.291, 3.730, 5.822, 8.324,
... 9.083, 6.957, 7.006, 0.365, -1.722])
>>> a, b, c = cf2.quadratic_fitting()
>>> print("a = {}; b = {}; c = {}".format(round(a, 2), round(b, 2),
... round(c, 2)))
a = -2.22; b = 3.76; c = 6.64
"""
n = self._N
p = self._P
q = self._Q
r = self._R
s = self._S
t = self._T
u = self._U
v = self._V
q2 = q * q
d = n * q * s + 2.0 * p * q * r - q2 * q - p * p * s - n * r * r
if abs(d) < TOL:
raise ZeroDivisionError("Input data leads to a division by zero")
a = (n * q * v + p * r * t + p * q * u -
q2 * t - p * p * v - n * r * u) / d
b = (n * s * u + p * q * v + q * r * t -
q2 * u - p * s * t - n * r * v) / d
c = (q * s * t + q * r * u + p * r * v -
q2 * v - p * s * u - r * r * t) / d
return (a, b, c)
def general_fitting(self, f0, f1=lambda *args: 0.0, f2=lambda *args: 0.0):
"""This method returns a tuple with the 'a', 'b', 'c' coefficients of
the general equation *'y = a*f0(x) + b*f1(x) + c*f2(x)'* that best fits
the table data, using the least squares approach.
:param f0, f1, f2: Functions used to build the general equation.
:type f0, f1, f2: function
:returns: 'a', 'b', 'c' coefficients of best general equation fit.
:rtype: tuple
:raises: ZeroDivisionError if input functions are null or input data
leads to a division by zero
>>> cf4 = CurveFitting([3, 20, 34, 50, 75, 88, 111, 129, 143, 160, 183,
... 200, 218, 230, 248, 269, 290, 303, 320, 344],
... [0.0433, 0.2532, 0.3386, 0.3560, 0.4983, 0.7577,
... 1.4585, 1.8628, 1.8264, 1.2431, -0.2043,
... -1.2431, -1.8422, -1.8726, -1.4889, -0.8372,
... -0.4377, -0.3640, -0.3508, -0.2126])
>>> def sin1(x): return sin(radians(x))
>>> def sin2(x): return sin(radians(2.0*x))
>>> def sin3(x): return sin(radians(3.0*x))
>>> a, b, c = cf4.general_fitting(sin1, sin2, sin3)
>>> print("a = {}; b = {}; c = {}".format(round(a, 2), round(b, 2),
... round(c, 2)))
a = 1.2; b = -0.77; c = 0.39
>>> cf5 = CurveFitting([0, 1.2, 1.4, 1.7, 2.1, 2.2])
>>> a, b, c = cf5.general_fitting(sqrt)
>>> print("a = {}; b = {}; c = {}".format(round(a, 3), round(b, 3),
... round(c, 3)))
a = 1.016; b = 0.0; c = 0.0
"""
m = 0
p = 0
q = 0
r = 0
s = 0
t = 0
u = 0
v = 0
w = 0
xl = list(self._x)
yl = list(self._y)
for i, value in enumerate(xl):
x = value
y = yl[i]
m += f0(x) * f0(x)
p += f0(x) * f1(x)
q += f0(x) * f2(x)
r += f1(x) * f1(x)
s += f1(x) * f2(x)
t += f2(x) * f2(x)
u += y * f0(x)
v += y * f1(x)
w += y * f2(x)
if abs(r) < TOL and abs(t) < TOL and abs(m) >= TOL:
return (u / m, 0.0, 0.0)
if abs(m * r * t) < TOL:
raise ZeroDivisionError("Invalid input functions: They are null")
d = m * r * t + 2.0 * p * q * s - m * s * s - r * q * q - t * p * p
if abs(d) < TOL:
raise ZeroDivisionError("Input data leads to a division by zero")
a = (u * (r * t - s * s) + v * (q * s - p * t) +
w * (p * s - q * r)) / d
b = (u * (s * q - p * t) + v * (m * t - q * q) +
w * (p * q - m * s)) / d
c = (u * (p * s - r * q) + v * (p * q - m * s) +
w * (m * r - p * p)) / d
return (a, b, c)
def main():
# Let's define a small helper function
def print_me(msg, val):
print("{}: {}".format(msg, val))
# Now let's work with the CurveFitting class
print("\n" + 35 * "*")
print("*** Use of CurveFitting class")
print(35 * "*" + "\n")
# Create a CurveFitting object
cf1 = CurveFitting(
[
73.0,
38.0,
35.0,
42.0,
78.0,
68.0,
74.0,
42.0,
52.0,
54.0,
39.0,
61.0,
42.0,
49.0,
50.0,
62.0,
44.0,
39.0,
43.0,
54.0,
44.0,
37.0,
],
[
90.4,
125.3,
161.8,
143.4,
52.5,
50.8,
71.5,
152.8,
131.3,
98.5,
144.8,
78.1,
89.5,
63.9,
112.1,
82.0,
119.8,
161.2,
208.4,
111.6,
167.1,
162.1,
],
)
# Let's use 'linear_fitting()'
a, b = cf1.linear_fitting()
print("Linear fitting for cf1:")
print(" a = {}\tb = {}".format(round(a, 2), round(b, 2)))
print("")
# Use the copy constructor
print("Let's make a copy:")
cf2 = CurveFitting(cf1)
print(" cf2 = CurveFitting(cf1)")
a, b = cf2.linear_fitting()
print("Linear fitting for cf2:")
print(" a = {}\tb = {}".format(round(a, 2), round(b, 2)))
print("")
# Get the number of value pairs internally stored
print_me("Number of value pairs inside 'cf2'", len(cf2)) # 22
print("")
# Compute the correlation coefficient
r = cf1.correlation_coeff()
print("Correlation coefficient:")
print_me(" r", round(r, 3))
cf2 = CurveFitting(
[-2.0, -1.5, -1.0, -0.5, 0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0],
[
-9.372,
-3.821,
0.291,
3.730,
5.822,
8.324,
9.083,
6.957,
7.006,
0.365,
-1.722,
],
)
print("")
# Now use 'quadratic_fitting()'
a, b, c = cf2.quadratic_fitting()
# Original curve: y = -2.0*x*x + 3.5*x + 7.0 + noise
print("Quadratic fitting:")
print(" a = {}\tb = {}\tc = {}".format(round(a, 2), round(b, 2),
round(c, 2)))
print("")
cf4 = CurveFitting(
[
3,
20,
34,
50,
75,
88,
111,
129,
143,
160,
183,
200,
218,
230,
248,
269,
290,
303,
320,
344,
],
[
0.0433,
0.2532,
0.3386,
0.3560,
0.4983,
0.7577,
1.4585,
1.8628,
1.8264,
1.2431,
-0.2043,
-1.2431,
-1.8422,
-1.8726,
-1.4889,
-0.8372,
-0.4377,
-0.3640,
-0.3508,
-0.2126,
],
)
# Let's define the three functions to be used for fitting
def sin1(x):
return sin(radians(x))
def sin2(x):
return sin(radians(2.0 * x))
def sin3(x):
return sin(radians(3.0 * x))
# Use 'general_fitting()' here
a, b, c = cf4.general_fitting(sin1, sin2, sin3)
print("General fitting with f0 = sin(x), f1 = sin(2*x), f2 = sin(3*x):")
print(" a = {}\tb = {}\tc = {}".format(round(a, 2), round(b, 2),
round(c, 2)))
print("")
cf5 = CurveFitting([0, 1.2, 1.4, 1.7, 2.1, 2.2])
a, b, c = cf5.general_fitting(sqrt)
print("General fitting with f0 = sqrt(x), f1 = 0.0 and f2 = 0.0:")
print(" a = {}\tb = {}\t\tc = {}".format(round(a, 3), round(b, 3),
round(c, 3)))
if __name__ == "__main__":
main()
pymeeus-0.3.6/pymeeus/Earth.py 0000664 0000000 0000000 00000517004 13555455377 0016345 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from math import sqrt, radians, sin, cos, tan, atan, atan2, asin
from pymeeus.Angle import Angle
from pymeeus.Epoch import Epoch
from pymeeus.Interpolation import Interpolation
from pymeeus.Coordinates import (
geometric_vsop_pos, apparent_vsop_pos, orbital_elements,
passage_nodes_elliptic
)
"""
.. module:: Earth
:synopsis: Class to model Earth's globe
:license: GNU Lesser General Public License v3 (LGPLv3)
.. moduleauthor:: Dagoberto Salazar
"""
VSOP87_L = [
# L0
[
[175347045.673, 0.00000000000, 0.00000000000],
[3341656.456, 4.66925680417, 6283.07584999140],
[34894.275, 4.62610241759, 12566.15169998280],
[3417.571, 2.82886579606, 3.52311834900],
[3497.056, 2.74411800971, 5753.38488489680],
[3135.896, 3.62767041758, 77713.77146812050],
[2676.218, 4.41808351397, 7860.41939243920],
[2342.687, 6.13516237631, 3930.20969621960],
[1273.166, 2.03709655772, 529.69096509460],
[1324.292, 0.74246356352, 11506.76976979360],
[901.855, 2.04505443513, 26.29831979980],
[1199.167, 1.10962944315, 1577.34354244780],
[857.223, 3.50849156957, 398.14900340820],
[779.786, 1.17882652114, 5223.69391980220],
[990.250, 5.23268129594, 5884.92684658320],
[753.141, 2.53339053818, 5507.55323866740],
[505.264, 4.58292563052, 18849.22754997420],
[492.379, 4.20506639861, 775.52261132400],
[356.655, 2.91954116867, 0.06731030280],
[284.125, 1.89869034186, 796.29800681640],
[242.810, 0.34481140906, 5486.77784317500],
[317.087, 5.84901952218, 11790.62908865880],
[271.039, 0.31488607649, 10977.07880469900],
[206.160, 4.80646606059, 2544.31441988340],
[205.385, 1.86947813692, 5573.14280143310],
[202.261, 2.45767795458, 6069.77675455340],
[126.184, 1.08302630210, 20.77539549240],
[155.516, 0.83306073807, 213.29909543800],
[115.132, 0.64544911683, 0.98032106820],
[102.851, 0.63599846727, 4694.00295470760],
[101.724, 4.26679821365, 7.11354700080],
[99.206, 6.20992940258, 2146.16541647520],
[132.212, 3.41118275555, 2942.46342329160],
[97.607, 0.68101272270, 155.42039943420],
[85.128, 1.29870743025, 6275.96230299060],
[74.651, 1.75508916159, 5088.62883976680],
[101.895, 0.97569221824, 15720.83878487840],
[84.711, 3.67080093025, 71430.69561812909],
[73.547, 4.67926565481, 801.82093112380],
[73.874, 3.50319443167, 3154.68708489560],
[78.756, 3.03698313141, 12036.46073488820],
[79.637, 1.80791330700, 17260.15465469040],
[85.803, 5.98322631256, 161000.68573767410],
[56.963, 2.78430398043, 6286.59896834040],
[61.148, 1.81839811024, 7084.89678111520],
[69.627, 0.83297596966, 9437.76293488700],
[56.116, 4.38694880779, 14143.49524243060],
[62.449, 3.97763880587, 8827.39026987480],
[51.145, 0.28306864501, 5856.47765911540],
[55.577, 3.47006009062, 6279.55273164240],
[41.036, 5.36817351402, 8429.24126646660],
[51.605, 1.33282746983, 1748.01641306700],
[51.992, 0.18914945834, 12139.55350910680],
[49.000, 0.48735065033, 1194.44701022460],
[39.200, 6.16832995016, 10447.38783960440],
[35.566, 1.77597314691, 6812.76681508600],
[36.770, 6.04133859347, 10213.28554621100],
[36.596, 2.56955238628, 1059.38193018920],
[33.291, 0.59309499459, 17789.84561978500],
[35.954, 1.70876111898, 2352.86615377180],
[40.938, 2.39850881707, 19651.04848109800],
[30.047, 2.73975123935, 1349.86740965880],
[30.412, 0.44294464135, 83996.84731811189],
[23.663, 0.48473567763, 8031.09226305840],
[23.574, 2.06527720049, 3340.61242669980],
[21.089, 4.14825464101, 951.71840625060],
[24.738, 0.21484762138, 3.59042865180],
[25.352, 3.16470953405, 4690.47983635860],
[22.820, 5.22197888032, 4705.73230754360],
[21.419, 1.42563735525, 16730.46368959580],
[21.891, 5.55594302562, 553.56940284240],
[17.481, 4.56052900359, 135.06508003540],
[19.925, 5.22208471269, 12168.00269657460],
[19.860, 5.77470167653, 6309.37416979120],
[20.300, 0.37133792946, 283.85931886520],
[14.421, 4.19315332546, 242.72860397400],
[16.225, 5.98837722564, 11769.85369316640],
[15.077, 4.19567181073, 6256.77753019160],
[19.124, 3.82219996949, 23581.25817731760],
[18.888, 5.38626880969, 149854.40013480789],
[14.346, 3.72355084422, 38.02767263580],
[17.898, 2.21490735647, 13367.97263110660],
[12.054, 2.62229588349, 955.59974160860],
[11.287, 0.17739328092, 4164.31198961300],
[13.971, 4.40138139996, 6681.22485339960],
[13.621, 1.88934471407, 7632.94325965020],
[12.503, 1.13052412208, 5.52292430740],
[10.498, 5.35909518669, 1592.59601363280],
[9.803, 0.99947478995, 11371.70468975820],
[9.220, 4.57138609781, 4292.33083295040],
[10.327, 6.19982566125, 6438.49624942560],
[12.003, 1.00351456700, 632.78373931320],
[10.827, 0.32734520222, 103.09277421860],
[8.356, 4.53902685948, 25132.30339996560],
[10.005, 6.02914963280, 5746.27133789600],
[8.409, 3.29946744189, 7234.79425624200],
[8.006, 5.82145271907, 28.44918746780],
[10.523, 0.93871805506, 11926.25441366880],
[7.686, 3.12142363172, 7238.67559160000],
[9.378, 2.62414241032, 5760.49843189760],
[8.127, 6.11228001785, 4732.03062734340],
[9.232, 0.48343968736, 522.57741809380],
[9.802, 5.24413991147, 27511.46787353720],
[7.871, 0.99590177926, 5643.17856367740],
[8.123, 6.27053013650, 426.59819087600],
[9.048, 5.33686335897, 6386.16862421000],
[8.620, 4.16538210888, 7058.59846131540],
[6.297, 4.71724819317, 6836.64525283380],
[7.575, 3.97382858911, 11499.65622279280],
[7.756, 2.95729056763, 23013.53953958720],
[7.314, 0.60652505806, 11513.88331679440],
[5.955, 2.87641047971, 6283.14316029419],
[6.534, 5.79072926033, 18073.70493865020],
[7.188, 3.99831508699, 74.78159856730],
[7.346, 4.38582365437, 316.39186965660],
[5.413, 5.39199024641, 419.48464387520],
[5.127, 2.36062848786, 10973.55568635000],
[7.056, 0.32258441903, 263.08392337280],
[6.625, 3.66475158672, 17298.18232732620],
[6.762, 5.91132535899, 90955.55169449610],
[4.938, 5.73672165674, 9917.69687450980],
[5.547, 2.45152597661, 12352.85260454480],
[5.958, 3.32051344676, 6283.00853968860],
[4.471, 2.06385999536, 7079.37385680780],
[6.153, 1.45823331144, 233141.31440436150],
[4.348, 4.42342175480, 5216.58037280140],
[6.123, 1.07494905258, 19804.82729158280],
[4.488, 3.65285037150, 206.18554843720],
[4.020, 0.83995823171, 20.35531939880],
[5.188, 4.06503864016, 6208.29425142410],
[5.307, 0.38217636096, 31441.67756975680],
[3.785, 2.34369213733, 3.88133535800],
[4.497, 3.27230796845, 11015.10647733480],
[4.132, 0.92128915753, 3738.76143010800],
[3.521, 5.97844807108, 3894.18182954220],
[4.215, 1.90601120623, 245.83164622940],
[3.701, 5.03069397926, 536.80451209540],
[3.865, 1.82634360607, 11856.21865142450],
[3.652, 1.01838584934, 16200.77272450120],
[3.390, 0.97785123922, 8635.94200376320],
[3.737, 2.95380107829, 3128.38876509580],
[3.507, 3.71291946325, 6290.18939699220],
[3.086, 3.64646921512, 10.63666534980],
[3.397, 1.10590684017, 14712.31711645800],
[3.334, 0.83684924911, 6496.37494542940],
[2.805, 2.58504514144, 14314.16811304980],
[3.650, 1.08344142571, 88860.05707098669],
[3.388, 3.20185096055, 5120.60114558360],
[3.252, 3.47859752062, 6133.51265285680],
[2.553, 3.94869034189, 1990.74501704100],
[3.520, 2.05559692878, 244287.60000722768],
[2.565, 1.56071784900, 23543.23050468179],
[2.621, 3.85639359951, 266.60704172180],
[2.955, 3.39692949667, 9225.53927328300],
[2.876, 6.02635617464, 154717.60988768269],
[2.395, 1.16131956403, 10984.19235169980],
[3.161, 1.32798718453, 10873.98603048040],
[3.163, 5.08946464629, 21228.39202354580],
[2.361, 4.27212906992, 6040.34724601740],
[3.030, 1.80209931347, 35371.88726597640],
[2.343, 3.57689860500, 10969.96525769820],
[2.618, 2.57870156528, 22483.84857449259],
[2.113, 3.71393780256, 65147.61976813770],
[2.019, 0.81393923319, 170.67287061920],
[2.003, 0.38091017375, 6172.86952877200],
[2.506, 3.74379142438, 10575.40668294180],
[2.381, 0.10581361289, 7.04623669800],
[1.949, 4.86892513469, 36.02786667740],
[2.074, 4.22794774570, 5650.29211067820],
[1.924, 5.59460549860, 6282.09552892320],
[1.949, 1.07002512703, 5230.80746680300],
[1.988, 5.19736046771, 6262.30045449900],
[1.887, 3.74365662683, 23.87843774780],
[1.787, 1.25929682929, 12559.03815298200],
[1.883, 1.90364058477, 15.25247118500],
[1.816, 3.68083868442, 15110.46611986620],
[1.701, 4.41105895380, 110.20632121940],
[1.990, 3.93295788548, 6206.80977871580],
[2.103, 0.75354917468, 13521.75144159140],
[1.774, 0.48747535361, 1551.04522264800],
[1.882, 0.86684493432, 22003.91463486980],
[1.924, 1.22898324132, 709.93304855830],
[2.009, 4.62850921980, 6037.24420376200],
[1.924, 0.60231842508, 6284.05617105960],
[1.596, 3.98332956992, 13916.01910964160],
[1.664, 4.41939715469, 8662.24032356300],
[1.971, 1.04560500503, 18209.33026366019],
[1.942, 4.31335979989, 6244.94281435360],
[1.476, 0.93271367331, 2379.16447357160],
[1.810, 0.49112137707, 1.48447270830],
[1.346, 1.51574702235, 4136.91043351620],
[1.528, 5.61835711404, 6127.65545055720],
[1.791, 3.22187270126, 39302.09696219600],
[1.747, 3.05638656738, 18319.53658487960],
[1.431, 4.51153808594, 20426.57109242200],
[1.695, 0.22047718414, 25158.60171976540],
[1.242, 4.46665769933, 17256.63153634140],
[1.463, 4.69242679213, 14945.31617355440],
[1.205, 1.86912144659, 4590.91018048900],
[1.192, 2.74227166898, 12569.67481833180],
[1.222, 5.18120087482, 5333.90024102160],
[1.390, 5.42894648983, 143571.32428481648],
[1.473, 1.70479245805, 11712.95531823080],
[1.362, 2.61069503292, 6062.66320755260],
[1.148, 6.03001800540, 3634.62102451840],
[1.198, 5.15294130422, 10177.25767953360],
[1.266, 0.11421493643, 18422.62935909819],
[1.411, 1.09908857534, 3496.03282613400],
[1.349, 2.99805109633, 17654.78053974960],
[1.253, 2.79850152848, 167283.76158766550],
[1.311, 1.60942984879, 5481.25491886760],
[1.079, 6.20304501787, 3.28635741780],
[1.181, 1.20653776978, 131.54196168640],
[1.254, 5.45103277798, 6076.89030155420],
[1.035, 2.32142722747, 7342.45778018060],
[1.117, 0.38838354256, 949.17560896980],
[0.966, 3.18341890851, 11087.28512591840],
[1.171, 3.39635049962, 12562.62858163380],
[1.121, 0.72627490378, 220.41264243880],
[1.024, 2.19378315386, 11403.67699557500],
[0.888, 3.91173199285, 4686.88940770680],
[0.910, 1.98802695087, 735.87651353180],
[0.830, 0.48984915507, 24072.92146977640],
[1.096, 6.17377835617, 5436.99301524020],
[0.908, 0.44959639433, 7477.52286021600],
[0.974, 1.52996238356, 9623.68827669120],
[0.840, 1.79543266333, 5429.87946823940],
[0.778, 6.17699177946, 38.13303563780],
[0.776, 4.09855402433, 14.22709400160],
[1.068, 4.64200173735, 43232.30665841560],
[0.954, 1.49988435748, 1162.47470440780],
[0.907, 0.86986870809, 10344.29506538580],
[0.931, 4.06044689031, 28766.92442448400],
[0.739, 5.04368197372, 639.89728631400],
[0.937, 3.46884698960, 1589.07289528380],
[0.763, 5.86304932998, 16858.48253293320],
[0.953, 4.20801492835, 11190.37790013700],
[0.708, 1.72899988940, 13095.84266507740],
[0.969, 1.64439522215, 29088.81141598500],
[0.717, 0.16688678895, 11.72935283600],
[0.962, 3.53092337542, 12416.58850284820],
[0.747, 5.77866940346, 12592.45001978260],
[0.672, 1.91095796194, 3.93215326310],
[0.671, 5.46240843677, 18052.92954315780],
[0.675, 6.28311558823, 4535.05943692440],
[0.684, 0.39975012080, 5849.36411211460],
[0.799, 0.29851185294, 12132.43996210600],
[0.758, 0.96370823331, 1052.26838318840],
[0.782, 5.33878339919, 13517.87010623340],
[0.730, 1.70106160291, 17267.26820169119],
[0.749, 2.59599901875, 11609.86254401220],
[0.734, 2.78417782952, 640.87760738220],
[0.688, 5.15048287468, 16496.36139620240],
[0.770, 1.62469589333, 4701.11650170840],
[0.633, 2.20587893893, 25934.12433108940],
[0.760, 4.21317219403, 377.37360791580],
[0.584, 2.13420121623, 10557.59416082380],
[0.574, 0.24250054587, 9779.10867612540],
[0.573, 3.16435264609, 533.21408344360],
[0.685, 3.19344289472, 12146.66705610760],
[0.675, 0.96179233959, 10454.50138660520],
[0.648, 1.46327342555, 6268.84875598980],
[0.589, 2.50543543638, 3097.88382272579],
[0.551, 5.28099026956, 9388.00590941520],
[0.696, 3.65342150016, 4804.20927592700],
[0.669, 2.51030077026, 2388.89402044920],
[0.550, 0.06883864342, 20199.09495963300],
[0.629, 4.13350995675, 45892.73043315699],
[0.678, 6.09190163533, 135.62532501000],
[0.593, 1.50136257618, 226858.23855437007],
[0.542, 3.58573645173, 6148.01076995600],
[0.682, 5.02203067788, 17253.04110768959],
[0.565, 4.29309238610, 11933.36796066960],
[0.486, 0.77746204893, 27.40155609680],
[0.503, 0.58963565969, 15671.08175940660],
[0.616, 4.06539884128, 227.47613278900],
[0.583, 6.12695541996, 18875.52586977400],
[0.537, 2.15056440980, 21954.15760939799],
[0.669, 6.06986269566, 47162.51635463520],
[0.475, 0.40343842110, 6915.85958930460],
[0.540, 2.83444222174, 5326.78669402080],
[0.530, 5.26359885263, 10988.80815753500],
[0.582, 3.24533095664, 153.77881048480],
[0.641, 3.24711791371, 2107.03450754240],
[0.621, 3.09698523779, 33019.02111220460],
[0.466, 3.14982372198, 10440.27429260360],
[0.466, 0.90708835657, 5966.68398033480],
[0.528, 0.81926454470, 813.55028395980],
[0.603, 3.81378921927, 316428.22867391503],
[0.559, 1.81894804124, 17996.03116822220],
[0.437, 2.28625594435, 6303.85124548380],
[0.518, 4.86069178322, 20597.24396304120],
[0.424, 6.23520018693, 6489.26139842860],
[0.518, 6.17617826756, 0.24381748350],
[0.404, 5.72804304258, 5642.19824260920],
[0.458, 1.34117773915, 6287.00800325450],
[0.548, 5.68454458320, 155427.54293624099],
[0.547, 1.03391472061, 3646.35037735440],
[0.428, 4.69800981138, 846.08283475120],
[0.413, 6.02520699406, 6279.48542133960],
[0.534, 3.03030638223, 66567.48586525429],
[0.383, 1.49056949125, 19800.94595622480],
[0.410, 5.28319622279, 18451.07854656599],
[0.352, 4.68891600359, 4907.30205014560],
[0.480, 5.36572651091, 348.92442044800],
[0.344, 5.89157452896, 6546.15977336420],
[0.340, 0.37557426440, 13119.72110282519],
[0.434, 4.98417785901, 6702.56049386660],
[0.332, 2.68902519126, 29296.61538957860],
[0.448, 2.16478480251, 5905.70224207560],
[0.344, 2.06546633735, 49.75702547180],
[0.315, 1.24023811803, 4061.21921539440],
[0.324, 2.30897526929, 5017.50837136500],
[0.413, 0.17171692962, 6286.66627864320],
[0.431, 3.86601101393, 12489.88562870720],
[0.349, 4.55372342974, 4933.20844033260],
[0.323, 0.41971136084, 10770.89325626180],
[0.341, 2.68612860807, 11.04570026390],
[0.316, 3.52936906658, 17782.73207278420],
[0.315, 5.63357264999, 568.82187402740],
[0.340, 3.83571212349, 10660.68693504240],
[0.297, 0.62691416712, 20995.39296644940],
[0.405, 1.00085779471, 16460.33352952499],
[0.414, 1.21998752076, 51092.72605085480],
[0.336, 4.71465945226, 6179.98307577280],
[0.361, 3.71227508354, 28237.23345938940],
[0.385, 6.21925225757, 24356.78078864160],
[0.327, 1.05606504715, 11919.14086666800],
[0.327, 6.14222420989, 6254.62666252360],
[0.268, 2.47224339737, 664.75604513000],
[0.269, 1.86207884109, 23141.55838292460],
[0.345, 0.93461290184, 6058.73105428950],
[0.296, 4.51687557180, 6418.14093002680],
[0.353, 4.50033653082, 36949.23080842420],
[0.260, 4.04963546305, 6525.80445396540],
[0.298, 2.20046722622, 156137.47598479927],
[0.253, 3.49900838384, 29864.33402730900],
[0.254, 2.44901693835, 5331.35744374080],
[0.296, 0.84347588787, 5729.50644714900],
[0.298, 1.29194706125, 22805.73556599360],
[0.241, 2.00721280805, 16737.57723659660],
[0.311, 1.23668016334, 6281.59137728310],
[0.240, 2.51650377121, 6245.04817735560],
[0.332, 3.55576945724, 7668.63742494250],
[0.264, 4.44052061202, 12964.30070339100],
[0.257, 1.79654471948, 11080.17157891760],
[0.260, 3.33077598420, 5888.44996493220],
[0.285, 0.30886361430, 11823.16163945020],
[0.290, 5.70141882483, 77.67377042800],
[0.255, 4.00939664440, 5881.40372823420],
[0.253, 4.73318493678, 16723.35014259500],
[0.228, 0.95333661324, 5540.08578945880],
[0.319, 1.38633229189, 163096.18036118348],
[0.224, 1.65156322696, 10027.90319572920],
[0.226, 0.34106460604, 17796.95916678580],
[0.236, 4.19817431922, 19.66976089979],
[0.280, 4.14080268970, 12539.85338018300],
[0.275, 5.50306930248, 32.53255079140],
[0.223, 5.23334210294, 56.89837493560],
[0.217, 6.08587881787, 6805.65326808520],
[0.280, 4.52472044653, 6016.46880826960],
[0.227, 5.06509843737, 6277.55292568400],
[0.226, 5.17755154305, 11720.06886523160],
[0.245, 3.96486270306, 22.77520145080],
[0.220, 4.72078081970, 6.62855890001],
[0.207, 5.71701403951, 41.55079098480],
[0.204, 3.91227411250, 2699.73481931760],
[0.209, 0.86881969011, 6321.10352262720],
[0.200, 2.11984445273, 4274.51831083240],
[0.200, 5.39839888163, 6019.99192661860],
[0.209, 5.67606291663, 11293.47067435560],
[0.252, 1.64965729351, 9380.95967271720],
[0.275, 5.04826903506, 73.29712585900],
[0.208, 1.88207277133, 11300.58422135640],
[0.272, 0.74640926842, 1975.49254585600],
[0.199, 3.30836672397, 22743.40937951640],
[0.269, 4.48560812155, 64471.99124174489],
[0.192, 2.17464236325, 5863.59120611620],
[0.228, 5.85373115869, 128.01884333740],
[0.261, 2.64321183295, 55022.93574707440],
[0.220, 5.75012110079, 29.42950853600],
[0.187, 4.03230554718, 467.96499035440],
[0.200, 5.60556112058, 1066.49547719000],
[0.231, 1.09802712785, 12341.80690428090],
[0.199, 0.29500625200, 149.56319713460],
[0.249, 5.10473210814, 7875.67186362420],
[0.208, 0.93013835019, 14919.01785375460],
[0.179, 0.87104393079, 12721.57209941700],
[0.203, 1.56920753653, 28286.99048486120],
[0.179, 2.47036386443, 16062.18452611680],
[0.198, 3.54061588502, 30.91412563500],
[0.171, 3.45356518113, 5327.47610838280],
[0.183, 0.72325421604, 6272.03014972750],
[0.216, 2.97174580686, 19402.79695281660],
[0.168, 2.51550550242, 23937.85638974100],
[0.195, 0.09045393425, 156.40072050240],
[0.179, 4.49471798090, 31415.37924995700],
[0.216, 0.42177594328, 23539.70738633280],
[0.189, 0.37542530191, 9814.60410029120],
[0.218, 2.36835880025, 16627.37091537720],
[0.166, 4.23182968446, 16840.67001081519],
[0.200, 2.02153258098, 16097.67995028260],
[0.169, 0.91318727000, 95.97922721780],
[0.211, 5.73370637657, 151.89728108520],
[0.204, 0.42643085174, 515.46387109300],
[0.212, 3.00233538977, 12043.57428188900],
[0.192, 5.46153589821, 6379.05507720920],
[0.165, 1.38698167064, 4171.42553661380],
[0.160, 6.23798383332, 202.25339517410],
[0.215, 0.20889073407, 5621.84292321040],
[0.181, 4.12439203622, 13341.67431130680],
[0.153, 1.24460848836, 29826.30635467320],
[0.150, 3.12999753018, 799.82112516540],
[0.175, 4.55671604437, 239424.39025435288],
[0.192, 1.33928820063, 394.62588505920],
[0.149, 2.65697593276, 21.33564046700],
[0.146, 5.58021191726, 412.37109687440],
[0.156, 3.75650175503, 12323.42309600880],
[0.143, 3.75708566606, 58864.54391814630],
[0.143, 3.28248547724, 29.82143814880],
[0.144, 1.07862546598, 1265.56747862640],
[0.148, 0.23389236655, 10021.83728009940],
[0.193, 5.92751083086, 40879.44050464380],
[0.140, 4.97612440269, 158.94351778320],
[0.148, 2.61640453469, 17157.06188047180],
[0.141, 3.66871308723, 26084.02180621620],
[0.147, 5.09968173403, 661.23292678100],
[0.146, 4.96885605695, 57375.80190084620],
[0.142, 0.78678347839, 12779.45079542080],
[0.134, 4.79432636012, 111.18664228760],
[0.140, 1.27748013377, 107.66352393860],
[0.169, 2.74893543762, 26735.94526221320],
[0.165, 3.95288000638, 6357.85744855870],
[0.183, 5.43418358741, 369.69981594040],
[0.134, 3.09132862833, 17.81252211800],
[0.132, 3.05633896779, 22490.96212149340],
[0.134, 4.09472795832, 6599.46771964800],
[0.181, 4.22950689891, 966.97087743560],
[0.152, 5.28885894415, 12669.24447420140],
[0.150, 5.86819430908, 97238.62754448749],
[0.142, 5.87266532526, 22476.73502749179],
[0.145, 5.07330784304, 87.30820453981],
[0.133, 5.65471067133, 31.97230581680],
[0.124, 2.83326217072, 12566.21901028560],
[0.135, 3.12861731644, 32217.20018108080],
[0.137, 0.86487461904, 9924.81042151060],
[0.172, 1.98369595114, 174242.46596404971],
[0.170, 4.41115280254, 327574.51427678124],
[0.151, 0.46542099527, 39609.65458316560],
[0.148, 2.13439571118, 491.66329245880],
[0.153, 3.78801830344, 17363.24742890899],
[0.165, 5.31654110459, 16943.76278503380],
[0.165, 4.06747587817, 58953.14544329400],
[0.118, 0.63846333239, 6.06591562980],
[0.159, 0.86086959274, 221995.02880149524],
[0.119, 5.96432932413, 1385.89527633620],
[0.114, 5.16516114595, 25685.87280280800],
[0.112, 3.39403722178, 21393.54196985760],
[0.112, 4.92889233335, 56.80326216980],
[0.119, 2.40637635942, 18635.92845453620],
[0.115, 0.23374479051, 418.92439890060],
[0.122, 0.93575234049, 24492.40611365159],
[0.115, 4.58880032176, 26709.64694241340],
[0.130, 4.85539251000, 22345.26037610820],
[0.140, 1.09413073202, 44809.65020086340],
[0.112, 6.05401806281, 433.71173787680],
[0.104, 1.54931540602, 127.95153303460],
[0.105, 4.82620858888, 33794.54372352860],
[0.102, 4.12448497391, 15664.03552270859],
[0.107, 4.67919356465, 77690.75950573849],
[0.118, 4.52320170120, 19004.64794940840],
[0.107, 5.71774478555, 77736.78343050249],
[0.143, 1.81201813018, 4214.06901508480],
[0.125, 1.14419195615, 625.67019231240],
[0.124, 3.27736514057, 12566.08438968000],
[0.110, 1.08682570828, 2787.04302385740],
[0.105, 1.78318141871, 18139.29450141590],
[0.102, 4.75119578149, 12242.64628332540],
[0.137, 1.43510636754, 86464.61331683119],
[0.101, 4.91289409429, 401.67212175720],
[0.129, 1.23567904485, 12029.34718788740],
[0.138, 2.45654707999, 7576.56007357400],
[0.103, 0.40004073416, 90279.92316810328],
[0.108, 0.98989774940, 5636.06501667660],
[0.117, 5.17362872063, 34520.30930938080],
[0.100, 3.95534628189, 5547.19933645960],
[0.098, 1.28118280598, 21548.96236929180],
[0.097, 3.34717130592, 16310.97904572060],
[0.098, 4.37041908717, 34513.26307268280],
[0.125, 2.72164432960, 24065.80792277559],
[0.102, 0.66938025772, 10239.58386601080],
[0.119, 1.21689479331, 1478.86657406440],
[0.094, 1.99595224256, 13362.44970679920],
[0.094, 4.30965982872, 26880.31981303260],
[0.095, 2.89807657534, 34911.41207609100],
[0.106, 1.00156653590, 16522.65971600220],
[0.097, 0.89642320201, 71980.63357473118],
[0.116, 4.19967201116, 206.70073729660],
[0.099, 1.37437847718, 1039.02661079040],
[0.126, 3.21642544972, 305281.94307104882],
[0.094, 0.68997876060, 7834.12107263940],
[0.094, 5.58132218606, 3104.93005942380],
[0.095, 3.03823741110, 8982.81066930900],
[0.108, 0.52696637156, 276.74577186440],
[0.124, 3.43899862683, 172146.97134054030],
[0.102, 1.04031728553, 95143.13292097810],
[0.104, 3.39218586218, 290.97286586600],
[0.110, 3.68205877433, 22380.75580027400],
[0.117, 0.78475956902, 83286.91426955358],
[0.083, 0.18241793425, 15141.39079431200],
[0.089, 4.45371820659, 792.77488846740],
[0.082, 4.80703651241, 6819.88036208680],
[0.087, 3.43122851097, 27707.54249429480],
[0.101, 5.32081603011, 2301.58581590939],
[0.082, 0.87060089842, 10241.20229116720],
[0.086, 4.61919461931, 36147.40987730040],
[0.095, 2.87032884659, 23020.65308658799],
[0.088, 3.21133165690, 33326.57873317420],
[0.080, 1.84900424847, 21424.46664430340],
[0.101, 4.18796434479, 30666.15495843280],
[0.107, 5.77864921649, 34115.11406927460],
[0.104, 1.08739495962, 6288.59877429880],
[0.110, 3.32898859416, 72140.62866668739],
[0.087, 4.40657711727, 142.17862703620],
[0.109, 1.94546030825, 24279.10701821359],
[0.087, 4.32472045435, 742.99006053260],
[0.107, 4.91580912547, 277.03499374140],
[0.088, 2.10180220766, 26482.17080962440],
[0.086, 4.01887374432, 12491.37010141550],
[0.106, 5.49092372854, 62883.35513951360],
[0.080, 6.19781316983, 6709.67404086740],
[0.088, 2.09872810657, 238004.52415723630],
[0.083, 4.90662164029, 51.28033786241],
[0.095, 4.13387406591, 18216.44381066100],
[0.078, 6.06949391680, 148434.53403769128],
[0.079, 3.03048221644, 838.96928775040],
[0.074, 5.49813051211, 29026.48522950779],
[0.073, 3.05008665738, 567.71863773040],
[0.084, 0.46604373274, 45.14121963660],
[0.093, 2.52267536308, 48739.85989708300],
[0.076, 1.76418124905, 41654.96311596780],
[0.067, 5.77851227793, 6311.52503745920],
[0.062, 3.32967880172, 15508.61512327440],
[0.079, 5.59773841328, 71960.38658322369],
[0.057, 3.90629505268, 5999.21653112620],
[0.061, 0.05695043232, 7856.89627409019],
[0.061, 5.63297958433, 7863.94251078820],
[0.065, 3.72178394016, 12573.26524698360],
[0.057, 4.18217219541, 26087.90314157420],
[0.066, 3.92262333487, 69853.35207568129],
[0.053, 5.51119362045, 77710.24834977149],
[0.053, 4.88573986961, 77717.29458646949],
[0.062, 2.88876342225, 9411.46461508720],
[0.051, 1.12657183874, 82576.98122099529],
[0.045, 2.95671076719, 24602.61243487099],
[0.040, 5.55145719241, 12565.17137891460],
[0.039, 1.20838190039, 18842.11400297339],
[0.045, 3.18590558749, 45585.17281218740],
[0.049, 2.44790934886, 13613.80427733600],
],
# L1
[
[628331966747.491, 0.00000000000, 0.00000000000],
[206058.863, 2.67823455584, 6283.07584999140],
[4303.430, 2.63512650414, 12566.15169998280],
[425.264, 1.59046980729, 3.52311834900],
[108.977, 2.96618001993, 1577.34354244780],
[93.478, 2.59212835365, 18849.22754997420],
[119.261, 5.79557487799, 26.29831979980],
[72.122, 1.13846158196, 529.69096509460],
[67.768, 1.87472304791, 398.14900340820],
[67.327, 4.40918235168, 5507.55323866740],
[59.027, 2.88797038460, 5223.69391980220],
[55.976, 2.17471680261, 155.42039943420],
[45.407, 0.39803079805, 796.29800681640],
[36.369, 0.46624739835, 775.52261132400],
[28.958, 2.64707383882, 7.11354700080],
[19.097, 1.84628332577, 5486.77784317500],
[20.844, 5.34138275149, 0.98032106820],
[18.508, 4.96855124577, 213.29909543800],
[16.233, 0.03216483047, 2544.31441988340],
[17.293, 2.99116864949, 6275.96230299060],
[15.832, 1.43049285325, 2146.16541647520],
[14.615, 1.20532366323, 10977.07880469900],
[11.877, 3.25804815607, 5088.62883976680],
[11.514, 2.07502418155, 4694.00295470760],
[9.721, 4.23925472239, 1349.86740965880],
[9.969, 1.30262991097, 6286.59896834040],
[9.452, 2.69957062864, 242.72860397400],
[12.461, 2.83432285512, 1748.01641306700],
[11.808, 5.27379790480, 1194.44701022460],
[8.577, 5.64475868067, 951.71840625060],
[10.641, 0.76614199202, 553.56940284240],
[7.576, 5.30062664886, 2352.86615377180],
[5.834, 1.76649917904, 1059.38193018920],
[6.385, 2.65033984967, 9437.76293488700],
[5.223, 5.66135767624, 71430.69561812909],
[5.305, 0.90857521574, 3154.68708489560],
[6.101, 4.66632584188, 4690.47983635860],
[4.330, 0.24102555403, 6812.76681508600],
[5.041, 1.42490103709, 6438.49624942560],
[4.259, 0.77355900599, 10447.38783960440],
[5.198, 1.85353197345, 801.82093112380],
[3.744, 2.00119516488, 8031.09226305840],
[3.558, 2.42901552681, 14143.49524243060],
[3.372, 3.86210700128, 1592.59601363280],
[3.374, 0.88776219727, 12036.46073488820],
[3.175, 3.18785710594, 4705.73230754360],
[3.221, 0.61599835472, 8429.24126646660],
[4.132, 5.23992859705, 7084.89678111520],
[2.970, 6.07026318493, 4292.33083295040],
[2.900, 2.32464208411, 20.35531939880],
[3.504, 4.79975694359, 6279.55273164240],
[2.950, 1.43108874817, 5746.27133789600],
[2.697, 4.80368225199, 7234.79425624200],
[2.531, 6.22290682655, 6836.64525283380],
[2.745, 0.93466065396, 5760.49843189760],
[3.250, 3.39954640038, 7632.94325965020],
[2.277, 5.00277837672, 17789.84561978500],
[2.075, 3.95534978634, 10213.28554621100],
[2.061, 2.22411683077, 5856.47765911540],
[2.252, 5.67166499885, 11499.65622279280],
[2.148, 5.20184578235, 11513.88331679440],
[1.886, 0.53198320577, 3340.61242669980],
[1.875, 4.73511970207, 83996.84731811189],
[2.060, 2.54987293999, 25132.30339996560],
[1.794, 1.47435409831, 4164.31198961300],
[1.778, 3.02473091781, 5.52292430740],
[2.029, 0.90960209983, 6256.77753019160],
[2.075, 2.26767270157, 522.57741809380],
[1.772, 3.02622802353, 5753.38488489680],
[1.569, 6.12410242782, 5216.58037280140],
[1.590, 4.63713748247, 3.28635741780],
[1.542, 4.20004448567, 13367.97263110660],
[1.427, 1.19088061711, 3894.18182954220],
[1.375, 3.09301252193, 135.06508003540],
[1.359, 4.24532506641, 426.59819087600],
[1.340, 5.76511818622, 6040.34724601740],
[1.284, 3.08524663344, 5643.17856367740],
[1.250, 3.07748157144, 11926.25441366880],
[1.551, 3.07665451458, 6681.22485339960],
[1.268, 2.09196018331, 6290.18939699220],
[1.144, 3.24444699514, 12168.00269657460],
[1.248, 3.44504937285, 536.80451209540],
[1.118, 2.31829670425, 16730.46368959580],
[1.105, 5.31966001019, 23.87843774780],
[1.051, 3.75015946014, 7860.41939243920],
[1.025, 2.44688534235, 1990.74501704100],
[0.962, 0.81771017882, 3.88133535800],
[0.910, 0.41727865299, 7079.37385680780],
[0.883, 5.16833917651, 11790.62908865880],
[0.957, 4.07673573735, 6127.65545055720],
[1.110, 3.90096793825, 11506.76976979360],
[0.802, 3.88778875582, 10973.55568635000],
[0.780, 2.39934293755, 1589.07289528380],
[0.758, 1.30034364248, 103.09277421860],
[0.749, 4.96275803300, 6496.37494542940],
[0.765, 3.36312388424, 36.02786667740],
[0.915, 5.41543742089, 206.18554843720],
[0.776, 2.57589093871, 11371.70468975820],
[0.772, 3.98369209464, 955.59974160860],
[0.749, 5.17890001805, 10969.96525769820],
[0.806, 0.34218864254, 9917.69687450980],
[0.728, 5.20962563787, 38.02767263580],
[0.685, 2.77592961854, 20.77539549240],
[0.636, 4.28242193632, 28.44918746780],
[0.608, 5.63278508906, 10984.19235169980],
[0.704, 5.60738823665, 3738.76143010800],
[0.685, 0.38876148682, 15.25247118500],
[0.601, 0.73489602442, 419.48464387520],
[0.716, 2.65279791438, 6309.37416979120],
[0.584, 5.54502568227, 17298.18232732620],
[0.650, 1.13379656406, 7058.59846131540],
[0.688, 2.59683891779, 3496.03282613400],
[0.485, 0.44467180946, 12352.85260454480],
[0.528, 2.74936967681, 3930.20969621960],
[0.597, 5.27668281777, 10575.40668294180],
[0.583, 3.18929067810, 4732.03062734340],
[0.526, 5.01697321546, 5884.92684658320],
[0.540, 1.29175137075, 640.87760738220],
[0.473, 5.49953306970, 5230.80746680300],
[0.406, 5.21248452189, 220.41264243880],
[0.395, 1.87474483222, 16200.77272450120],
[0.370, 3.84921354713, 18073.70493865020],
[0.367, 0.88533542778, 6283.14316029419],
[0.379, 0.37983009325, 10177.25767953360],
[0.356, 3.84145204913, 11712.95531823080],
[0.374, 5.01577520608, 7.04623669800],
[0.381, 4.30250406634, 6062.66320755260],
[0.471, 0.86381834647, 6069.77675455340],
[0.367, 1.32943839763, 6283.00853968860],
[0.460, 5.19667219575, 6284.05617105960],
[0.333, 5.54256205741, 4686.88940770680],
[0.341, 4.36522989934, 7238.67559160000],
[0.336, 4.00205876835, 3097.88382272579],
[0.359, 6.22679790284, 245.83164622940],
[0.307, 2.35299010924, 170.67287061920],
[0.343, 3.77164927143, 6076.89030155420],
[0.296, 5.44152227481, 17260.15465469040],
[0.328, 0.13837875384, 11015.10647733480],
[0.268, 1.13904550630, 12569.67481833180],
[0.263, 0.00538633678, 4136.91043351620],
[0.282, 5.04399837480, 7477.52286021600],
[0.288, 3.13401177517, 12559.03815298200],
[0.259, 0.93882269387, 5642.19824260920],
[0.292, 1.98420020514, 12132.43996210600],
[0.247, 3.84244798532, 5429.87946823940],
[0.245, 5.70467521726, 65147.61976813770],
[0.241, 0.99480969552, 3634.62102451840],
[0.246, 3.06168069935, 110.20632121940],
[0.239, 6.11855909114, 11856.21865142450],
[0.263, 0.66348415419, 21228.39202354580],
[0.262, 1.51070507866, 12146.66705610760],
[0.230, 1.75927314884, 9779.10867612540],
[0.223, 2.00967043606, 6172.86952877200],
[0.246, 1.10411690865, 6282.09552892320],
[0.221, 3.03945240854, 8635.94200376320],
[0.214, 4.03840869663, 14314.16811304980],
[0.236, 5.46915070580, 13916.01910964160],
[0.224, 4.68408089456, 24072.92146977640],
[0.212, 2.13695625494, 5849.36411211460],
[0.207, 3.07724246401, 11.72935283600],
[0.207, 6.10306282747, 23543.23050468179],
[0.266, 1.00709566823, 2388.89402044920],
[0.217, 6.27837036335, 17267.26820169119],
[0.204, 2.34615348695, 266.60704172180],
[0.195, 5.55015549753, 6133.51265285680],
[0.188, 2.52667166175, 6525.80445396540],
[0.185, 0.90960768344, 18319.53658487960],
[0.177, 1.73429218289, 154717.60988768269],
[0.187, 4.76483647432, 4535.05943692440],
[0.186, 4.63080493407, 10440.27429260360],
[0.215, 2.81255454560, 7342.45778018060],
[0.172, 1.45551888559, 9225.53927328300],
[0.162, 3.30661909388, 639.89728631400],
[0.168, 2.17671416605, 27.40155609680],
[0.160, 1.68164180475, 15110.46611986620],
[0.158, 0.13519771874, 13095.84266507740],
[0.183, 0.56281322071, 13517.87010623340],
[0.179, 3.58450811616, 87.30820453981],
[0.152, 2.84070476818, 5650.29211067820],
[0.182, 0.44065530624, 17253.04110768959],
[0.160, 5.95767264171, 4701.11650170840],
[0.142, 1.46290137520, 11087.28512591840],
[0.142, 2.04464036087, 20426.57109242200],
[0.131, 5.40912137746, 2699.73481931760],
[0.144, 2.07312090485, 25158.60171976540],
[0.147, 6.15106982168, 9623.68827669120],
[0.141, 5.55739979498, 10454.50138660520],
[0.135, 0.06098110407, 16723.35014259500],
[0.124, 5.81218025669, 17256.63153634140],
[0.124, 2.36293551623, 4933.20844033260],
[0.126, 3.47435905118, 22483.84857449259],
[0.159, 5.63954754618, 5729.50644714900],
[0.123, 3.92815963256, 17996.03116822220],
[0.148, 3.02509280598, 1551.04522264800],
[0.120, 5.91904349732, 6206.80977871580],
[0.134, 3.11122937825, 21954.15760939799],
[0.119, 5.52141123450, 709.93304855830],
[0.122, 3.00813429479, 19800.94595622480],
[0.127, 1.37618620001, 14945.31617355440],
[0.141, 2.56889468729, 1052.26838318840],
[0.123, 2.83671175442, 11919.14086666800],
[0.118, 0.81934438215, 5331.35744374080],
[0.151, 2.68731829165, 11769.85369316640],
[0.119, 5.08835797638, 5481.25491886760],
[0.153, 2.46021790779, 11933.36796066960],
[0.108, 1.04936452145, 11403.67699557500],
[0.128, 0.99794735107, 8827.39026987480],
[0.144, 2.54869747042, 227.47613278900],
[0.150, 4.50631437136, 2379.16447357160],
[0.107, 1.79272017026, 13119.72110282519],
[0.107, 4.43556814486, 18422.62935909819],
[0.109, 0.29269062317, 16737.57723659660],
[0.141, 3.18979826258, 6262.30045449900],
[0.122, 4.23040027813, 29.42950853600],
[0.111, 5.16954029551, 17782.73207278420],
[0.100, 3.52213872761, 18052.92954315780],
[0.108, 1.08514212991, 16858.48253293320],
[0.106, 1.96085248410, 74.78159856730],
[0.110, 2.30582372873, 16460.33352952499],
[0.097, 3.50918940210, 5333.90024102160],
[0.099, 3.56417337974, 735.87651353180],
[0.094, 5.01857894228, 3128.38876509580],
[0.097, 1.65579893894, 533.21408344360],
[0.092, 0.89217162285, 29296.61538957860],
[0.123, 3.16062050433, 9380.95967271720],
[0.102, 1.20493500565, 23020.65308658799],
[0.088, 2.21296088224, 12721.57209941700],
[0.089, 1.54264720310, 20199.09495963300],
[0.113, 4.83320707870, 16496.36139620240],
[0.121, 6.19860353182, 9388.00590941520],
[0.089, 4.08082274765, 22805.73556599360],
[0.098, 1.09181832830, 12043.57428188900],
[0.086, 1.13655027605, 143571.32428481648],
[0.088, 5.96980472191, 107.66352393860],
[0.082, 5.01340404594, 22003.91463486980],
[0.094, 1.69615700473, 23006.42599258639],
[0.081, 3.00657814365, 2118.76386037840],
[0.098, 1.39215287161, 8662.24032356300],
[0.077, 3.33555190840, 15720.83878487840],
[0.082, 5.86880116464, 2787.04302385740],
[0.076, 5.67183650604, 14.22709400160],
[0.081, 6.16619455699, 1039.02661079040],
[0.076, 3.21449884756, 111.18664228760],
[0.078, 1.37531518377, 21947.11137270000],
[0.074, 3.58814195051, 11609.86254401220],
[0.077, 4.84846488388, 22743.40937951640],
[0.090, 1.48869013606, 15671.08175940660],
[0.082, 3.48618399109, 29088.81141598500],
[0.069, 3.55746476593, 4590.91018048900],
[0.069, 1.93625656075, 135.62532501000],
[0.070, 2.66548322237, 18875.52586977400],
[0.069, 5.41478093731, 26735.94526221320],
[0.079, 5.15154513662, 12323.42309600880],
[0.094, 3.62899392448, 77713.77146812050],
[0.078, 4.17011182047, 1066.49547719000],
[0.071, 3.89435637865, 22779.43724619380],
[0.063, 4.53968787714, 8982.81066930900],
[0.069, 0.96028230548, 14919.01785375460],
[0.076, 3.29092216589, 2942.46342329160],
[0.063, 4.09167842893, 16062.18452611680],
[0.065, 3.34580407184, 51.28033786241],
[0.065, 5.75757544877, 52670.06959330260],
[0.068, 5.75884067555, 21424.46664430340],
[0.057, 5.45122399850, 12592.45001978260],
[0.057, 5.25043362558, 20995.39296644940],
[0.073, 0.53299090807, 2301.58581590939],
[0.070, 4.31243357502, 19402.79695281660],
[0.067, 2.53852336668, 377.37360791580],
[0.056, 3.20816844695, 24889.57479599160],
[0.053, 3.17816599142, 18451.07854656599],
[0.053, 3.61529270216, 77.67377042800],
[0.053, 0.45467549335, 30666.15495843280],
[0.061, 0.14807288453, 23013.53953958720],
[0.051, 3.32803972907, 56.89837493560],
[0.052, 3.41177624177, 23141.55838292460],
[0.058, 3.13638677202, 309.27832265580],
[0.070, 2.50592323465, 31415.37924995700],
[0.052, 5.10673376738, 17796.95916678580],
[0.067, 6.27917920454, 22345.26037610820],
[0.050, 0.42577644151, 25685.87280280800],
[0.048, 0.70204553333, 1162.47470440780],
[0.066, 3.64350022359, 15265.88651930040],
[0.050, 5.74382917440, 19.66976089979],
[0.050, 4.69825387775, 28237.23345938940],
[0.047, 5.74015846442, 12139.55350910680],
[0.054, 1.97301333704, 23581.25817731760],
[0.049, 4.98223579027, 10021.83728009940],
[0.046, 5.41431705539, 33019.02111220460],
[0.051, 1.23882053879, 12539.85338018300],
[0.046, 2.41369976086, 98068.53671630539],
[0.044, 0.80750593746, 167283.76158766550],
[0.045, 4.39613584445, 433.71173787680],
[0.044, 2.57358208785, 12964.30070339100],
[0.046, 0.26142733448, 11.04570026390],
[0.045, 2.46230645202, 51868.24866217880],
[0.048, 0.89551707131, 56600.27928952220],
[0.057, 1.86416707010, 25287.72379939980],
[0.042, 5.26377513431, 26084.02180621620],
[0.049, 3.17757670611, 6303.85124548380],
[0.052, 3.65266055509, 7872.14874527520],
[0.040, 1.81891629936, 34596.36465465240],
[0.043, 1.94164978061, 1903.43681250120],
[0.041, 0.74461854136, 23937.85638974100],
[0.048, 6.26034008181, 28286.99048486120],
[0.045, 5.45575017530, 60530.48898574180],
[0.040, 2.92105728682, 21548.96236929180],
[0.040, 0.04502010161, 38526.57435087200],
[0.053, 3.64791042082, 11925.27409260060],
[0.041, 5.04048954693, 27832.03821928320],
[0.042, 5.19292937193, 19004.64794940840],
[0.040, 2.57120233428, 24356.78078864160],
[0.038, 3.49190341464, 226858.23855437007],
[0.039, 4.61184303844, 95.97922721780],
[0.043, 2.20648228147, 13521.75144159140],
[0.040, 5.83461945819, 16193.65917750039],
[0.045, 3.73714372195, 7875.67186362420],
[0.043, 1.14078465002, 49.75702547180],
[0.037, 1.29390383811, 310.84079886840],
[0.038, 0.95970925950, 664.75604513000],
[0.037, 4.27532649462, 6709.67404086740],
[0.038, 2.20108541046, 28628.33622609960],
[0.039, 0.85957361635, 16522.65971600220],
[0.040, 4.35214003837, 48739.85989708300],
[0.036, 1.68167662194, 10344.29506538580],
[0.040, 5.13217319067, 15664.03552270859],
[0.036, 3.72187132496, 30774.50164257480],
[0.036, 3.32158458257, 16207.88627150200],
[0.045, 3.94202418608, 10988.80815753500],
[0.039, 1.51948786199, 12029.34718788740],
[0.026, 3.87685883180, 6262.72053059260],
[0.024, 4.91804163466, 19651.04848109800],
[0.023, 0.29300197709, 13362.44970679920],
[0.021, 3.18605672363, 6277.55292568400],
[0.021, 6.07546891132, 18139.29450141590],
[0.022, 2.31199937177, 6303.43116939020],
[0.021, 3.58418394393, 18209.33026366019],
[0.026, 2.06801296900, 12573.26524698360],
[0.021, 1.56857722317, 13341.67431130680],
[0.024, 5.72605158675, 29864.33402730900],
[0.024, 1.40237993205, 14712.31711645800],
[0.025, 5.71466092822, 25934.12433108940],
],
# L2
[
[52918.870, 0.00000000000, 0.00000000000],
[8719.837, 1.07209665242, 6283.07584999140],
[309.125, 0.86728818832, 12566.15169998280],
[27.339, 0.05297871691, 3.52311834900],
[16.334, 5.18826691036, 26.29831979980],
[15.752, 3.68457889430, 155.42039943420],
[9.541, 0.75742297675, 18849.22754997420],
[8.937, 2.05705419118, 77713.77146812050],
[6.952, 0.82673305410, 775.52261132400],
[5.064, 4.66284525271, 1577.34354244780],
[4.061, 1.03057162962, 7.11354700080],
[3.463, 5.14074632811, 796.29800681640],
[3.169, 6.05291851171, 5507.55323866740],
[3.020, 1.19246506441, 242.72860397400],
[2.886, 6.11652627155, 529.69096509460],
[3.810, 3.44050803490, 5573.14280143310],
[2.714, 0.30637881025, 398.14900340820],
[2.371, 4.38118838167, 5223.69391980220],
[2.538, 2.27992810679, 553.56940284240],
[2.079, 3.75435330484, 0.98032106820],
[1.675, 0.90216407959, 951.71840625060],
[1.534, 5.75900462759, 1349.86740965880],
[1.224, 2.97328088405, 2146.16541647520],
[1.449, 4.36415913970, 1748.01641306700],
[1.341, 3.72061130861, 1194.44701022460],
[1.254, 2.94846826628, 6438.49624942560],
[0.999, 5.98640014468, 6286.59896834040],
[0.917, 4.79788687522, 5088.62883976680],
[0.828, 3.31321076572, 213.29909543800],
[1.103, 1.27104454479, 161000.68573767410],
[0.762, 3.41582762988, 5486.77784317500],
[1.044, 0.60409577691, 3154.68708489560],
[0.887, 5.23465144638, 7084.89678111520],
[0.645, 1.60096192515, 2544.31441988340],
[0.681, 3.43155669169, 4694.00295470760],
[0.605, 2.47806340546, 10977.07880469900],
[0.706, 6.19393222575, 4690.47983635860],
[0.643, 1.98042503148, 801.82093112380],
[0.502, 1.44394375363, 6836.64525283380],
[0.490, 2.34129524194, 1592.59601363280],
[0.458, 1.30876448575, 4292.33083295040],
[0.431, 0.03526421494, 7234.79425624200],
[0.379, 3.17030522615, 6309.37416979120],
[0.348, 0.99049550009, 6040.34724601740],
[0.386, 1.57019797263, 71430.69561812909],
[0.347, 0.67013291338, 1059.38193018920],
[0.458, 3.81499443681, 149854.40013480789],
[0.302, 1.91760044838, 10447.38783960440],
[0.307, 3.55343347416, 8031.09226305840],
[0.395, 4.93701776616, 7632.94325965020],
[0.314, 3.18093696547, 2352.86615377180],
[0.282, 4.41936437052, 9437.76293488700],
[0.276, 2.71314254553, 3894.18182954220],
[0.298, 2.52037474210, 6127.65545055720],
[0.230, 1.37790215549, 4705.73230754360],
[0.252, 0.55330133471, 6279.55273164240],
[0.255, 5.26570187369, 6812.76681508600],
[0.275, 0.67264264272, 25132.30339996560],
[0.178, 0.92820785174, 1990.74501704100],
[0.221, 0.63897368842, 6256.77753019160],
[0.155, 0.77319790838, 14143.49524243060],
[0.150, 2.40470465561, 426.59819087600],
[0.196, 6.06877865012, 640.87760738220],
[0.137, 2.21679460145, 8429.24126646660],
[0.127, 3.26094223174, 17789.84561978500],
[0.128, 5.47237279946, 12036.46073488820],
[0.122, 2.16291082757, 10213.28554621100],
[0.118, 0.45789822268, 7058.59846131540],
[0.141, 2.34932647403, 11506.76976979360],
[0.100, 0.85621569847, 6290.18939699220],
[0.092, 5.10587476002, 7079.37385680780],
[0.126, 2.65428307012, 88860.05707098669],
[0.106, 5.85646710022, 7860.41939243920],
[0.084, 3.57457554262, 16730.46368959580],
[0.089, 4.21433259618, 83996.84731811189],
[0.097, 5.57938280855, 13367.97263110660],
[0.102, 2.05853060226, 87.30820453981],
[0.080, 4.73792651816, 11926.25441366880],
[0.080, 5.41418965044, 10973.55568635000],
[0.106, 4.10978997399, 3496.03282613400],
[0.102, 3.62650006043, 244287.60000722768],
[0.075, 4.89483161769, 5643.17856367740],
[0.087, 0.42863750683, 11015.10647733480],
[0.069, 1.88908760720, 10177.25767953360],
[0.089, 1.35567273119, 6681.22485339960],
[0.066, 0.99455837265, 6525.80445396540],
[0.067, 5.51240997070, 3097.88382272579],
[0.076, 2.72016814799, 4164.31198961300],
[0.063, 1.44349902540, 9917.69687450980],
[0.078, 3.51469733747, 11856.21865142450],
[0.085, 0.50956043858, 10575.40668294180],
[0.067, 3.62043033405, 16496.36139620240],
[0.055, 5.24637517308, 3340.61242669980],
[0.048, 5.43966777314, 20426.57109242200],
[0.064, 5.79535817813, 2388.89402044920],
[0.046, 5.43499966519, 6275.96230299060],
[0.050, 3.86263598617, 5729.50644714900],
[0.044, 1.52269529228, 12168.00269657460],
[0.057, 4.96352373486, 14945.31617355440],
[0.045, 1.00861230160, 8635.94200376320],
[0.043, 3.30685683359, 9779.10867612540],
[0.042, 0.63481258930, 2699.73481931760],
[0.041, 5.67996766641, 11712.95531823080],
[0.056, 4.34024451468, 90955.55169449610],
[0.041, 5.81722212845, 709.93304855830],
[0.053, 6.17052087143, 233141.31440436150],
[0.037, 3.12495025087, 16200.77272450120],
[0.035, 5.76973458495, 12569.67481833180],
[0.037, 0.31656444326, 24356.78078864160],
[0.035, 0.96229051027, 17298.18232732620],
[0.033, 5.23130355867, 5331.35744374080],
[0.035, 0.62517020593, 25158.60171976540],
[0.035, 0.80004512129, 13916.01910964160],
[0.037, 2.89336088688, 12721.57209941700],
[0.030, 4.50198402401, 23543.23050468179],
[0.030, 5.31355708693, 18319.53658487960],
[0.029, 3.47275229977, 13119.72110282519],
[0.029, 3.11002782516, 4136.91043351620],
[0.032, 5.52273255667, 5753.38488489680],
[0.035, 3.79699996680, 143571.32428481648],
[0.026, 1.50634201907, 154717.60988768269],
[0.030, 3.53519084118, 6284.05617105960],
[0.023, 4.41808025967, 5884.92684658320],
[0.025, 1.38477355808, 65147.61976813770],
[0.023, 3.49782549797, 7477.52286021600],
[0.019, 3.14329413716, 6496.37494542940],
[0.019, 2.20135125199, 18073.70493865020],
[0.019, 4.95020255309, 3930.20969621960],
[0.019, 0.57998702747, 31415.37924995700],
[0.021, 1.75474323399, 12139.55350910680],
[0.019, 3.92233070499, 19651.04848109800],
[0.014, 0.98131213224, 12559.03815298200],
[0.019, 4.93309333729, 2942.46342329160],
[0.016, 5.55997534558, 8827.39026987480],
[0.013, 1.68808165516, 4535.05943692440],
[0.013, 0.33982116161, 4933.20844033260],
[0.012, 1.85426309994, 5856.47765911540],
[0.010, 4.82763996845, 13095.84266507740],
[0.011, 5.38005490571, 11790.62908865880],
[0.010, 1.40815507226, 10988.80815753500],
[0.011, 3.05005267431, 17260.15465469040],
[0.010, 4.93364992366, 12352.85260454480],
],
# L3
[
[289.226, 5.84384198723, 6283.07584999140],
[34.955, 0.00000000000, 0.00000000000],
[16.819, 5.48766912348, 12566.15169998280],
[2.962, 5.19577265202, 155.42039943420],
[1.288, 4.72200252235, 3.52311834900],
[0.635, 5.96925937141, 242.72860397400],
[0.714, 5.30045809128, 18849.22754997420],
[0.402, 3.78682982419, 553.56940284240],
[0.072, 4.29768126180, 6286.59896834040],
[0.067, 0.90721687647, 6127.65545055720],
[0.036, 5.24029648014, 6438.49624942560],
[0.024, 5.16003960716, 25132.30339996560],
[0.023, 3.01921570335, 6309.37416979120],
[0.017, 5.82863573502, 6525.80445396540],
[0.017, 3.67772863930, 71430.69561812909],
[0.009, 4.58467294499, 1577.34354244780],
[0.008, 1.40626662824, 11856.21865142450],
[0.008, 5.07561257196, 6256.77753019160],
[0.007, 2.82473374405, 83996.84731811189],
[0.005, 2.71488713339, 10977.07880469900],
[0.005, 3.76879847273, 12036.46073488820],
[0.005, 4.28412873331, 6275.96230299060],
],
# L4
[
[114.084, 3.14159265359, 0.00000000000],
[7.717, 4.13446589358, 6283.07584999140],
[0.765, 3.83803776214, 12566.15169998280],
[0.420, 0.41925861858, 155.42039943420],
[0.040, 3.59847585840, 18849.22754997420],
[0.041, 3.14398414077, 3.52311834900],
[0.035, 5.00298940826, 5573.14280143310],
[0.013, 0.48794833701, 77713.77146812050],
[0.010, 5.64801766350, 6127.65545055720],
[0.008, 2.84160570605, 161000.68573767410],
[0.002, 0.54912904658, 6438.49624942560],
],
# L5
[
[0.878, 3.14159265359, 0.00000000000],
[0.172, 2.76579069510, 6283.07584999140],
[0.050, 2.01353298182, 155.42039943420],
[0.028, 2.21496423926, 12566.15169998280],
[0.005, 1.75600058765, 18849.22754997420],
],
]
"""This table contains Earth's periodic terms (all of them) from the planetary
theory VSOP87 for the heliocentric longitude at the equinox of date (taken from
the 'D' solution). In Meeus' book a shortened version can be found in pages
418-420."""
VSOP87_B = [
# B0
[
[279.620, 3.19870156017, 84334.66158130829],
[101.643, 5.42248619256, 5507.55323866740],
[80.445, 3.88013204458, 5223.69391980220],
[43.806, 3.70444689758, 2352.86615377180],
[31.933, 4.00026369781, 1577.34354244780],
[22.724, 3.98473831560, 1047.74731175470],
[16.392, 3.56456119782, 5856.47765911540],
[18.141, 4.98367470263, 6283.07584999140],
[14.443, 3.70275614914, 9437.76293488700],
[14.304, 3.41117857525, 10213.28554621100],
[11.246, 4.82820690530, 14143.49524243060],
[10.900, 2.08574562327, 6812.76681508600],
[9.714, 3.47303947752, 4694.00295470760],
[10.367, 4.05663927946, 71092.88135493269],
[8.775, 4.44016515669, 5753.38488489680],
[8.366, 4.99251512180, 7084.89678111520],
[6.921, 4.32559054073, 6275.96230299060],
[9.145, 1.14182646613, 6620.89011318780],
[7.194, 3.60193205752, 529.69096509460],
[7.698, 5.55425745881, 167621.57585086190],
[5.285, 2.48446991566, 4705.73230754360],
[5.208, 6.24992674537, 18073.70493865020],
[4.529, 2.33827747356, 6309.37416979120],
[5.579, 4.41023653738, 7860.41939243920],
[4.743, 0.70995680136, 5884.92684658320],
[4.301, 1.10255777773, 6681.22485339960],
[3.849, 1.82229412531, 5486.77784317500],
[4.093, 5.11700141207, 13367.97263110660],
[3.681, 0.43793170356, 3154.68708489560],
[3.420, 5.42034800952, 6069.77675455340],
[3.617, 6.04641937526, 3930.20969621960],
[3.670, 4.58210192227, 12194.03291462090],
[2.918, 1.95463881126, 10977.07880469900],
[2.797, 5.61259275048, 11790.62908865880],
[2.502, 0.60499729367, 6496.37494542940],
[2.319, 5.01648216014, 1059.38193018920],
[2.684, 1.39470396488, 22003.91463486980],
[2.428, 3.24183056052, 78051.58573131690],
[2.120, 4.30691000285, 5643.17856367740],
[2.257, 3.15557225618, 90617.73743129970],
[1.813, 3.75574218285, 3340.61242669980],
[2.226, 2.79699346659, 12036.46073488820],
[1.888, 0.86991545823, 8635.94200376320],
[1.517, 1.95852055701, 398.14900340820],
[1.581, 3.19976230948, 5088.62883976680],
[1.421, 6.25530883827, 2544.31441988340],
[1.595, 0.25619915135, 17298.18232732620],
[1.391, 4.69964175561, 7058.59846131540],
[1.478, 2.81808207569, 25934.12433108940],
[1.481, 3.65823554806, 11506.76976979360],
[1.693, 4.95689385293, 156475.29024799570],
[1.183, 1.29343061246, 775.52261132400],
[1.114, 2.37889311846, 3738.76143010800],
[0.994, 4.30088900425, 9225.53927328300],
[0.924, 3.06451026812, 4164.31198961300],
[0.867, 0.55606931068, 8429.24126646660],
[0.988, 5.97286104208, 7079.37385680780],
[0.824, 1.50984806173, 10447.38783960440],
[0.915, 0.12635654592, 11015.10647733480],
[0.742, 1.99159139281, 26087.90314157420],
[1.039, 3.14159265359, 0.00000000000],
[0.850, 4.24120016095, 29864.33402730900],
[0.755, 2.89631873320, 4732.03062734340],
[0.714, 1.37548118603, 2146.16541647520],
[0.708, 1.91406542362, 8031.09226305840],
[0.746, 0.57893808616, 796.29800681640],
[0.802, 5.12339137230, 2942.46342329160],
[0.751, 1.67479850166, 21228.39202354580],
[0.602, 4.09976538826, 64809.80550494129],
[0.594, 3.49580704962, 16496.36139620240],
[0.592, 4.59481504319, 4690.47983635860],
[0.530, 5.73979295200, 8827.39026987480],
[0.503, 5.66433137112, 33794.54372352860],
[0.483, 1.57106522411, 801.82093112380],
[0.438, 0.06707733767, 3128.38876509580],
[0.423, 2.86944595927, 12566.15169998280],
[0.504, 3.26207669160, 7632.94325965020],
[0.552, 1.02926440457, 239762.20451754928],
[0.427, 3.67434378210, 213.29909543800],
[0.404, 1.46193297142, 15720.83878487840],
[0.503, 4.85802444134, 6290.18939699220],
[0.417, 0.81920713533, 5216.58037280140],
[0.365, 0.01002966162, 12168.00269657460],
[0.363, 1.28376436579, 6206.80977871580],
[0.353, 4.70059133110, 7234.79425624200],
[0.415, 0.96862624175, 4136.91043351620],
[0.387, 3.09145061418, 25158.60171976540],
[0.373, 2.65119262792, 7342.45778018060],
[0.361, 2.97762937739, 9623.68827669120],
[0.418, 3.75759994446, 5230.80746680300],
[0.396, 1.22507712354, 6438.49624942560],
[0.322, 1.21162178805, 8662.24032356300],
[0.284, 5.64170320068, 1589.07289528380],
[0.379, 1.72248432748, 14945.31617355440],
[0.320, 3.94161159962, 7330.82316174610],
[0.313, 5.47602376446, 1194.44701022460],
[0.292, 1.38971327603, 11769.85369316640],
[0.305, 0.80429352049, 37724.75341974820],
[0.257, 5.81382809757, 426.59819087600],
[0.265, 6.10358507671, 6836.64525283380],
[0.250, 4.56452895547, 7477.52286021600],
[0.266, 2.62926282354, 7238.67559160000],
[0.263, 6.22089501237, 6133.51265285680],
[0.306, 2.79682380531, 1748.01641306700],
[0.236, 2.46093023714, 11371.70468975820],
[0.316, 1.62662805006, 250908.49012041549],
[0.216, 3.68721275185, 5849.36411211460],
[0.230, 0.36165162947, 5863.59120611620],
[0.233, 5.03509933858, 20426.57109242200],
[0.200, 5.86073159059, 4535.05943692440],
[0.277, 4.65400292395, 82239.16695779889],
[0.209, 3.72323200804, 10973.55568635000],
[0.199, 5.05186622555, 5429.87946823940],
[0.256, 2.40923279770, 19651.04848109800],
[0.210, 4.50691909144, 29088.81141598500],
[0.181, 6.00294783127, 4292.33083295040],
[0.249, 0.12900984422, 154379.79562448629],
[0.209, 3.87759458598, 17789.84561978500],
[0.225, 3.18339652605, 18875.52586977400],
[0.191, 4.53897489299, 18477.10876461230],
[0.172, 2.09694183014, 13095.84266507740],
[0.182, 3.16107943500, 16730.46368959580],
[0.188, 2.22746128596, 41654.96311596780],
[0.164, 5.18686275017, 5481.25491886760],
[0.160, 2.49298855159, 12592.45001978260],
[0.155, 1.59595438230, 10021.83728009940],
[0.135, 0.21349051064, 10988.80815753500],
[0.178, 3.80375177970, 23581.25817731760],
[0.123, 1.66800739151, 15110.46611986620],
[0.122, 2.72678272244, 18849.22754997420],
[0.126, 1.17675512910, 14919.01785375460],
[0.142, 3.95053441332, 337.81426319640],
[0.116, 6.06340906229, 6709.67404086740],
[0.137, 3.52143246757, 12139.55350910680],
[0.136, 2.92179113542, 32217.20018108080],
[0.110, 3.51203379263, 18052.92954315780],
[0.147, 4.63371971408, 22805.73556599360],
[0.108, 5.45280814878, 7.11354700080],
[0.148, 0.65447253687, 95480.94718417450],
[0.119, 5.92110458985, 33019.02111220460],
[0.110, 5.34824206306, 639.89728631400],
[0.106, 3.71081682629, 14314.16811304980],
[0.139, 6.17607198418, 24356.78078864160],
[0.118, 5.59738712670, 161338.50000087050],
[0.117, 3.65065271640, 45585.17281218740],
[0.127, 4.74596574209, 49515.38250840700],
[0.120, 1.04211499785, 6915.85958930460],
[0.120, 5.60638811846, 5650.29211067820],
[0.115, 3.10668213289, 14712.31711645800],
[0.099, 0.69018940049, 12779.45079542080],
[0.097, 1.07908724794, 9917.69687450980],
[0.093, 2.62295197319, 17260.15465469040],
[0.099, 4.45774681732, 4933.20844033260],
[0.123, 1.37488922089, 28286.99048486120],
[0.121, 5.19767249813, 27511.46787353720],
[0.105, 0.87192267806, 77375.95720492408],
[0.087, 3.93637812950, 17654.78053974960],
[0.122, 2.23956068680, 83997.09113559539],
[0.087, 4.18201600952, 22779.43724619380],
[0.104, 4.59580877295, 1349.86740965880],
[0.102, 2.83545248411, 12352.85260454480],
[0.102, 3.97386522171, 10818.13528691580],
[0.101, 4.32892825857, 36147.40987730040],
[0.094, 5.00001709261, 150192.21439800429],
[0.077, 3.97199369296, 1592.59601363280],
[0.100, 6.07733097102, 26735.94526221320],
[0.086, 5.26029638250, 28313.28880466100],
[0.093, 4.31900620254, 44809.65020086340],
[0.076, 6.22743405935, 13521.75144159140],
[0.072, 1.55820597747, 6256.77753019160],
[0.082, 4.95202664555, 10575.40668294180],
[0.082, 1.69647647075, 1990.74501704100],
[0.075, 2.29836095644, 3634.62102451840],
[0.075, 2.66367876557, 16200.77272450120],
[0.087, 0.26630214764, 31441.67756975680],
[0.077, 2.25530954137, 5235.32853823670],
[0.076, 1.09869730846, 12903.96596317920],
[0.058, 4.28246138307, 12559.03815298200],
[0.064, 5.51112830114, 173904.65170085328],
[0.056, 2.60133794851, 73188.37597844210],
[0.055, 5.81483150022, 143233.51002162008],
[0.054, 3.38482031504, 323049.11878710287],
[0.039, 3.28500401343, 71768.50988132549],
[0.039, 3.11239910690, 96900.81328129109],
],
# B1
[
[9.030, 3.89729061890, 5507.55323866740],
[6.177, 1.73038850355, 5223.69391980220],
[3.800, 5.24404145734, 2352.86615377180],
[2.834, 2.47345037450, 1577.34354244780],
[1.817, 0.41874743765, 6283.07584999140],
[1.499, 1.83320979291, 5856.47765911540],
[1.466, 5.69401926017, 5753.38488489680],
[1.301, 2.18890066314, 9437.76293488700],
[1.233, 4.95222451476, 10213.28554621100],
[1.021, 0.12866660208, 7860.41939243920],
[0.982, 0.09005453285, 14143.49524243060],
[0.865, 1.73949953555, 3930.20969621960],
[0.581, 2.26949174067, 5884.92684658320],
[0.524, 5.65662503159, 529.69096509460],
[0.473, 6.22750969242, 6309.37416979120],
[0.451, 1.53288619213, 18073.70493865020],
[0.364, 3.61614477374, 13367.97263110660],
[0.372, 3.22470721320, 6275.96230299060],
[0.268, 2.34341267879, 11790.62908865880],
[0.322, 0.94084045832, 6069.77675455340],
[0.232, 0.26781182579, 7058.59846131540],
[0.216, 6.05952221329, 10977.07880469900],
[0.232, 2.93325646109, 22003.91463486980],
[0.204, 3.86264841382, 6496.37494542940],
[0.202, 2.81892511133, 15720.83878487840],
[0.185, 4.93512381859, 12036.46073488820],
[0.220, 3.99305643742, 6812.76681508600],
[0.166, 1.74970002999, 11506.76976979360],
[0.212, 1.57166285369, 4694.00295470760],
[0.157, 1.08259734788, 5643.17856367740],
[0.154, 5.99434678412, 5486.77784317500],
[0.144, 5.23285656085, 78051.58573131690],
[0.144, 1.16454655948, 90617.73743129970],
[0.137, 2.67760436027, 6290.18939699220],
[0.180, 2.06509026215, 7084.89678111520],
[0.121, 5.90212574947, 9225.53927328300],
[0.150, 2.00175038718, 5230.80746680300],
[0.149, 5.06157254516, 17298.18232732620],
[0.118, 5.39979058038, 3340.61242669980],
[0.161, 3.32421999691, 6283.31966747490],
[0.121, 4.36722193162, 19651.04848109800],
[0.116, 5.83462858507, 4705.73230754360],
[0.128, 4.35489873365, 25934.12433108940],
[0.143, 0.00000000000, 0.00000000000],
[0.109, 2.52157834166, 6438.49624942560],
[0.099, 2.70727488041, 5216.58037280140],
[0.103, 0.93782340879, 8827.39026987480],
[0.082, 4.29214680390, 8635.94200376320],
[0.079, 2.24085737326, 1059.38193018920],
[0.097, 5.50959692365, 29864.33402730900],
[0.072, 0.21891639822, 21228.39202354580],
[0.071, 2.86755026812, 6681.22485339960],
[0.074, 2.20184828895, 37724.75341974820],
[0.063, 4.45586625948, 7079.37385680780],
[0.061, 0.63918772258, 33794.54372352860],
[0.047, 2.09070235724, 3128.38876509580],
[0.047, 3.32543843300, 26087.90314157420],
[0.049, 1.60680905005, 6702.56049386660],
[0.057, 0.11215813438, 29088.81141598500],
[0.056, 5.47982934911, 775.52261132400],
[0.050, 1.89396788463, 12139.55350910680],
[0.047, 2.97214907240, 20426.57109242200],
[0.041, 5.55329394890, 11015.10647733480],
[0.041, 5.91861144924, 23581.25817731760],
[0.045, 4.95273290181, 5863.59120611620],
[0.050, 3.62740835096, 41654.96311596780],
[0.037, 6.09033460601, 64809.80550494129],
[0.037, 5.86153655431, 12566.15169998280],
[0.046, 1.65798680284, 25158.60171976540],
[0.038, 2.00673650251, 426.59819087600],
[0.036, 6.24373396652, 6283.14316029419],
[0.036, 0.40465162918, 6283.00853968860],
[0.032, 6.03707103538, 2942.46342329160],
[0.041, 4.86809570283, 1592.59601363280],
[0.028, 4.38359423735, 7632.94325965020],
[0.028, 6.03334294232, 17789.84561978500],
[0.026, 3.88971333608, 5331.35744374080],
[0.026, 5.94932724051, 16496.36139620240],
[0.031, 1.44666331503, 16730.46368959580],
[0.026, 6.26376705837, 23543.23050468179],
[0.033, 0.93797239147, 213.29909543800],
[0.026, 3.71858432944, 13095.84266507740],
[0.027, 0.60565274405, 10988.80815753500],
[0.023, 4.44388985550, 18849.22754997420],
[0.028, 1.53862289477, 6279.48542133960],
[0.028, 1.96831814872, 6286.66627864320],
[0.028, 5.78094918529, 15110.46611986620],
[0.026, 2.48165809843, 5729.50644714900],
[0.020, 3.85655029499, 9623.68827669120],
[0.021, 5.83006047147, 7234.79425624200],
[0.021, 0.69628570421, 398.14900340820],
[0.022, 5.02222806555, 6127.65545055720],
[0.020, 3.47611265290, 6148.01076995600],
[0.020, 0.90769829044, 5481.25491886760],
[0.020, 0.03081589303, 6418.14093002680],
[0.020, 3.74220084927, 1589.07289528380],
[0.021, 4.00149269576, 3154.68708489560],
[0.018, 1.58348238359, 2118.76386037840],
[0.019, 0.85407021371, 14712.31711645800],
],
# B2
[
[1.662, 1.62703209173, 84334.66158130829],
[0.492, 2.41382223971, 1047.74731175470],
[0.344, 2.24353004539, 5507.55323866740],
[0.258, 6.00906896311, 5223.69391980220],
[0.131, 0.95447345240, 6283.07584999140],
[0.086, 1.67530247303, 7860.41939243920],
[0.090, 0.97606804452, 1577.34354244780],
[0.090, 0.37899871725, 2352.86615377180],
[0.089, 6.25807507963, 10213.28554621100],
[0.075, 0.84213523741, 167621.57585086190],
[0.052, 1.70501566089, 14143.49524243060],
[0.057, 6.15295833679, 12194.03291462090],
[0.051, 1.27616016740, 5753.38488489680],
[0.051, 5.37229738682, 6812.76681508600],
[0.034, 1.73672994279, 7058.59846131540],
[0.038, 2.77761031485, 10988.80815753500],
[0.046, 3.38617099014, 156475.29024799570],
[0.021, 1.95248349228, 8827.39026987480],
[0.018, 3.33419222028, 8429.24126646660],
[0.019, 4.32945160287, 17789.84561978500],
[0.017, 0.66191210656, 6283.00853968860],
[0.018, 3.74885333072, 11769.85369316640],
[0.017, 4.23058370776, 10977.07880469900],
[0.017, 1.78116162721, 5486.77784317500],
[0.021, 1.36972913918, 12036.46073488820],
[0.017, 2.79601092529, 796.29800681640],
[0.015, 0.43087848850, 11790.62908865880],
[0.017, 1.35132152761, 78051.58573131690],
[0.015, 1.17032155085, 213.29909543800],
[0.018, 2.85221514199, 5088.62883976680],
[0.017, 0.21780913672, 6283.14316029419],
[0.013, 1.21201504386, 25132.30339996560],
[0.012, 1.12953712197, 90617.73743129970],
[0.012, 5.13714452592, 7079.37385680780],
[0.013, 3.79842135217, 4933.20844033260],
[0.012, 4.89407978213, 3738.76143010800],
[0.015, 6.05682328852, 398.14900340820],
[0.014, 4.81029291856, 4694.00295470760],
[0.011, 0.61684523405, 3128.38876509580],
[0.011, 5.32876538500, 6040.34724601740],
[0.014, 5.27227350286, 4535.05943692440],
[0.011, 2.39292099451, 5331.35744374080],
[0.010, 4.45296532710, 6525.80445396540],
[0.014, 4.66400985037, 8031.09226305840],
[0.010, 3.22472385926, 9437.76293488700],
[0.011, 3.80913404437, 801.82093112380],
[0.010, 5.15032130575, 11371.70468975820],
[0.013, 0.98720797401, 5729.50644714900],
[0.009, 5.94191743597, 7632.94325965020],
],
# B3
[
[0.011, 0.23877262399, 7860.41939243920],
[0.009, 1.16069982609, 5507.55323866740],
[0.008, 1.65357552925, 5884.92684658320],
[0.008, 2.86720038197, 7058.59846131540],
[0.007, 3.04818741666, 5486.77784317500],
[0.007, 2.59437103785, 529.69096509460],
[0.008, 4.02863090524, 6256.77753019160],
[0.008, 2.42003508927, 5753.38488489680],
[0.006, 0.84181087594, 6275.96230299060],
[0.006, 5.40160929468, 1577.34354244780],
[0.007, 2.73399865247, 6309.37416979120],
],
# B4
[
[0.004, 0.79662198849, 6438.49624942560],
[0.005, 0.84308705203, 1047.74731175470],
[0.005, 0.05711572303, 84334.66158130829],
[0.003, 3.46779895686, 6279.55273164240],
[0.003, 2.89822201212, 6127.65545055720],
],
]
"""This table contains Earth's periodic terms (all of them) from the planetary
theory VSOP87 for the heliocentric latitude at the equinox of date (taken from
the 'D' solution). In Meeus' book a shortened version can be found in page
420."""
VSOP87_R = [
# R0
[
[100013988.799, 0.00000000000, 0.00000000000],
[1670699.626, 3.09846350771, 6283.07584999140],
[13956.023, 3.05524609620, 12566.15169998280],
[3083.720, 5.19846674381, 77713.77146812050],
[1628.461, 1.17387749012, 5753.38488489680],
[1575.568, 2.84685245825, 7860.41939243920],
[924.799, 5.45292234084, 11506.76976979360],
[542.444, 4.56409149777, 3930.20969621960],
[472.110, 3.66100022149, 5884.92684658320],
[328.780, 5.89983646482, 5223.69391980220],
[345.983, 0.96368617687, 5507.55323866740],
[306.784, 0.29867139512, 5573.14280143310],
[174.844, 3.01193636534, 18849.22754997420],
[243.189, 4.27349536153, 11790.62908865880],
[211.829, 5.84714540314, 1577.34354244780],
[185.752, 5.02194447178, 10977.07880469900],
[109.835, 5.05510636285, 5486.77784317500],
[98.316, 0.88681311277, 6069.77675455340],
[86.499, 5.68959778254, 15720.83878487840],
[85.825, 1.27083733351, 161000.68573767410],
[62.916, 0.92177108832, 529.69096509460],
[57.056, 2.01374292014, 83996.84731811189],
[64.903, 0.27250613787, 17260.15465469040],
[49.384, 3.24501240359, 2544.31441988340],
[55.736, 5.24159798933, 71430.69561812909],
[42.515, 6.01110242003, 6275.96230299060],
[46.963, 2.57805070386, 775.52261132400],
[38.968, 5.36071738169, 4694.00295470760],
[44.661, 5.53715807302, 9437.76293488700],
[35.660, 1.67468058995, 12036.46073488820],
[31.921, 0.18368229781, 5088.62883976680],
[31.846, 1.77775642085, 398.14900340820],
[33.193, 0.24370300098, 7084.89678111520],
[38.245, 2.39255343974, 8827.39026987480],
[28.464, 1.21344868176, 6286.59896834040],
[37.490, 0.82952922332, 19651.04848109800],
[36.957, 4.90107591914, 12139.55350910680],
[34.537, 1.84270693282, 2942.46342329160],
[26.275, 4.58896850401, 10447.38783960440],
[24.596, 3.78660875483, 8429.24126646660],
[23.587, 0.26866117066, 796.29800681640],
[27.793, 1.89934330904, 6279.55273164240],
[23.927, 4.99598548138, 5856.47765911540],
[20.349, 4.65267995431, 2146.16541647520],
[23.287, 2.80783650928, 14143.49524243060],
[22.103, 1.95004702988, 3154.68708489560],
[19.506, 5.38227371393, 2352.86615377180],
[17.958, 0.19871379385, 6812.76681508600],
[17.174, 4.43315560735, 10213.28554621100],
[16.190, 5.23160507859, 17789.84561978500],
[17.314, 6.15200787916, 16730.46368959580],
[13.814, 5.18962074032, 8031.09226305840],
[18.833, 0.67306674027, 149854.40013480789],
[18.331, 2.25348733734, 23581.25817731760],
[13.641, 3.68516118804, 4705.73230754360],
[13.139, 0.65289581324, 13367.97263110660],
[10.414, 4.33285688538, 11769.85369316640],
[9.978, 4.20126336355, 6309.37416979120],
[10.169, 1.59390681369, 4690.47983635860],
[7.564, 2.62560597390, 6256.77753019160],
[9.661, 3.67586791220, 27511.46787353720],
[6.743, 0.56270332741, 3340.61242669980],
[8.743, 6.06359123461, 1748.01641306700],
[7.786, 3.67371235637, 12168.00269657460],
[6.633, 5.66149277792, 11371.70468975820],
[7.712, 0.31242577789, 7632.94325965020],
[6.592, 3.13576266188, 801.82093112380],
[7.460, 5.64757188143, 11926.25441366880],
[6.933, 2.92384586400, 6681.22485339960],
[6.802, 1.42329806420, 23013.53953958720],
[6.115, 5.13393615454, 1194.44701022460],
[6.477, 2.64986648492, 19804.82729158280],
[5.233, 4.62434053374, 6438.49624942560],
[6.147, 3.02863936662, 233141.31440436150],
[4.608, 1.72194702724, 7234.79425624200],
[4.221, 1.55697533729, 7238.67559160000],
[5.314, 2.40716580847, 11499.65622279280],
[5.128, 5.32398965690, 11513.88331679440],
[4.770, 0.25554312006, 11856.21865142450],
[5.519, 2.09089154502, 17298.18232732620],
[5.625, 4.34052903053, 90955.55169449610],
[4.578, 4.46569641570, 5746.27133789600],
[3.788, 4.90729383510, 4164.31198961300],
[5.337, 5.09957905104, 31441.67756975680],
[3.967, 1.20054555174, 1349.86740965880],
[4.008, 3.03007204392, 1059.38193018920],
[3.476, 0.76080277030, 10973.55568635000],
[4.232, 1.05485713117, 5760.49843189760],
[4.582, 3.76570026763, 6386.16862421000],
[3.335, 3.13829943354, 6836.64525283380],
[3.418, 3.00072390334, 4292.33083295040],
[3.598, 5.70718084323, 5643.17856367740],
[3.237, 4.16448773994, 9917.69687450980],
[4.154, 2.59941292162, 7058.59846131540],
[3.362, 4.54577697964, 4732.03062734340],
[2.978, 1.30561268820, 6283.14316029419],
[2.765, 0.51311975679, 26.29831979980],
[2.802, 5.66263240521, 8635.94200376320],
[2.927, 5.73787481548, 16200.77272450120],
[3.164, 1.69140262657, 11015.10647733480],
[2.598, 2.96244118586, 25132.30339996560],
[3.519, 3.62639325753, 244287.60000722768],
[2.676, 4.20725700850, 18073.70493865020],
[2.978, 1.74971565805, 6283.00853968860],
[2.287, 1.06975704977, 14314.16811304980],
[2.863, 5.92838131397, 14712.31711645800],
[3.071, 0.23793217002, 35371.88726597640],
[2.656, 0.89959301780, 12352.85260454480],
[2.415, 2.79975176257, 709.93304855830],
[2.814, 3.51488206882, 21228.39202354580],
[1.977, 2.61358297550, 951.71840625060],
[2.548, 2.47684686575, 6208.29425142410],
[1.999, 0.56090388160, 7079.37385680780],
[2.305, 1.05376461628, 22483.84857449259],
[1.855, 2.86090681163, 5216.58037280140],
[2.157, 1.31396741861, 154717.60988768269],
[1.970, 4.36929875289, 167283.76158766550],
[1.635, 5.85571606764, 10984.19235169980],
[1.754, 2.14452408833, 6290.18939699220],
[2.154, 6.03828341543, 10873.98603048040],
[1.714, 3.70157691113, 1592.59601363280],
[1.541, 6.21598380732, 23543.23050468179],
[1.611, 1.99824499377, 10969.96525769820],
[1.712, 1.34295663542, 3128.38876509580],
[1.642, 5.55026665339, 6496.37494542940],
[1.502, 5.43948825854, 155.42039943420],
[1.827, 5.91227480261, 3738.76143010800],
[1.726, 2.16764983583, 10575.40668294180],
[1.532, 5.35683107070, 13521.75144159140],
[1.829, 1.66006148731, 39302.09696219600],
[1.605, 1.90928637633, 6133.51265285680],
[1.282, 2.46014880418, 13916.01910964160],
[1.211, 4.41360631550, 3894.18182954220],
[1.394, 1.77801929354, 9225.53927328300],
[1.571, 4.95512957592, 25158.60171976540],
[1.205, 1.19212540615, 3.52311834900],
[1.132, 2.69830084955, 6040.34724601740],
[1.504, 5.77002730341, 18209.33026366019],
[1.393, 1.62621805428, 5120.60114558360],
[1.077, 2.93931554233, 17256.63153634140],
[1.232, 0.71655165307, 143571.32428481648],
[1.087, 0.99769687939, 955.59974160860],
[1.068, 5.28472576231, 65147.61976813770],
[0.980, 5.10949204607, 6172.86952877200],
[1.169, 3.11664290862, 14945.31617355440],
[1.202, 4.02992510402, 553.56940284240],
[0.979, 2.00000879212, 15110.46611986620],
[0.962, 4.02380771400, 6282.09552892320],
[0.999, 3.62643002790, 6262.30045449900],
[1.030, 5.84989900289, 213.29909543800],
[1.014, 2.84221578218, 8662.24032356300],
[1.185, 1.51330541132, 17654.78053974960],
[0.967, 2.67081017562, 5650.29211067820],
[1.222, 2.65423784904, 88860.05707098669],
[0.981, 2.36370360283, 6206.80977871580],
[1.033, 0.13874927606, 11712.95531823080],
[1.103, 3.08477302937, 43232.30665841560],
[0.781, 2.53372735932, 16496.36139620240],
[1.019, 3.04569392376, 6037.24420376200],
[0.795, 5.80662989111, 5230.80746680300],
[0.813, 3.57710279439, 10177.25767953360],
[0.962, 5.31470594766, 6284.05617105960],
[0.721, 5.96264301567, 12559.03815298200],
[0.966, 2.74714939953, 6244.94281435360],
[0.921, 0.10155275926, 29088.81141598500],
[0.692, 3.89764447548, 1589.07289528380],
[0.719, 5.91791450402, 4136.91043351620],
[0.772, 4.05505682353, 6127.65545055720],
[0.712, 5.49291532439, 22003.91463486980],
[0.672, 1.60700490811, 11087.28512591840],
[0.690, 4.50539825563, 426.59819087600],
[0.854, 3.26104981596, 20426.57109242200],
[0.656, 4.32410182940, 16858.48253293320],
[0.840, 2.59572585222, 28766.92442448400],
[0.692, 0.61650089011, 11403.67699557500],
[0.700, 3.40901167143, 7.11354700080],
[0.726, 0.04243053594, 5481.25491886760],
[0.557, 4.78317696534, 20199.09495963300],
[0.649, 1.04027912958, 6062.66320755260],
[0.633, 5.70229959167, 45892.73043315699],
[0.592, 6.11836729658, 9623.68827669120],
[0.523, 3.62840021266, 5333.90024102160],
[0.604, 5.57734696185, 10344.29506538580],
[0.496, 2.21023499449, 1990.74501704100],
[0.691, 1.96071732602, 12416.58850284820],
[0.640, 1.59074172032, 18319.53658487960],
[0.625, 3.82362791378, 13517.87010623340],
[0.663, 5.08444996779, 283.85931886520],
[0.475, 1.17025894287, 12569.67481833180],
[0.664, 4.50029469969, 47162.51635463520],
[0.569, 0.16310365162, 17267.26820169119],
[0.568, 3.86100969474, 6076.89030155420],
[0.539, 4.83282276086, 18422.62935909819],
[0.466, 0.75872342878, 7342.45778018060],
[0.541, 3.07212190507, 226858.23855437007],
[0.458, 0.26774483096, 4590.91018048900],
[0.610, 1.53597051291, 33019.02111220460],
[0.617, 2.62356328726, 11190.37790013700],
[0.548, 4.55798855791, 18875.52586977400],
[0.633, 4.60110281228, 66567.48586525429],
[0.596, 5.78202396722, 632.78373931320],
[0.533, 5.01786882904, 12132.43996210600],
[0.603, 5.38458554802, 316428.22867391503],
[0.469, 0.59168241917, 21954.15760939799],
[0.548, 3.50613163558, 17253.04110768959],
[0.502, 0.98804327589, 11609.86254401220],
[0.568, 1.98497313089, 7668.63742494250],
[0.482, 1.62141803864, 12146.66705610760],
[0.391, 3.68718382989, 18052.92954315780],
[0.457, 3.77205737340, 156137.47598479927],
[0.401, 5.28260651958, 15671.08175940660],
[0.469, 1.80963184268, 12562.62858163380],
[0.508, 3.36399024699, 20597.24396304120],
[0.450, 5.66054299250, 10454.50138660520],
[0.375, 4.98534633105, 9779.10867612540],
[0.523, 0.97215560834, 155427.54293624099],
[0.403, 5.13939866506, 1551.04522264800],
[0.372, 3.69883738807, 9388.00590941520],
[0.367, 4.43875659716, 4535.05943692440],
[0.406, 4.20863156600, 12592.45001978260],
[0.360, 2.53924644657, 242.72860397400],
[0.471, 4.61907324819, 5436.99301524020],
[0.441, 5.83872966262, 3496.03282613400],
[0.385, 4.94496680973, 24356.78078864160],
[0.349, 6.15018231784, 19800.94595622480],
[0.355, 0.21895678106, 5429.87946823940],
[0.344, 5.62993724928, 2379.16447357160],
[0.380, 2.72105213143, 11933.36796066960],
[0.432, 0.24221790536, 17996.03116822220],
[0.378, 5.22517556974, 7477.52286021600],
[0.337, 5.10888041439, 5849.36411211460],
[0.315, 0.57827745123, 10557.59416082380],
[0.318, 4.49953141399, 3634.62102451840],
[0.323, 1.54274281393, 10440.27429260360],
[0.309, 5.76839284397, 20.77539549240],
[0.301, 2.34727604008, 4686.88940770680],
[0.414, 5.93237602310, 51092.72605085480],
[0.361, 2.16398609550, 28237.23345938940],
[0.288, 0.18376252189, 13095.84266507740],
[0.277, 5.12952205045, 13119.72110282519],
[0.327, 6.19222146204, 6268.84875598980],
[0.273, 0.30522428863, 23141.55838292460],
[0.267, 5.76152585786, 5966.68398033480],
[0.308, 5.99280509979, 22805.73556599360],
[0.345, 2.92489919444, 36949.23080842420],
[0.253, 5.20995219509, 24072.92146977640],
[0.342, 5.72702586209, 16460.33352952499],
[0.261, 2.00304796059, 6148.01076995600],
[0.238, 5.08264392839, 6915.85958930460],
[0.249, 2.94762789744, 135.06508003540],
[0.306, 3.89764686987, 10988.80815753500],
[0.305, 0.05827812117, 4701.11650170840],
[0.319, 2.95712862064, 163096.18036118348],
[0.209, 4.43768461442, 6546.15977336420],
[0.270, 2.06643178717, 4804.20927592700],
[0.217, 0.73691592312, 6303.85124548380],
[0.206, 0.32075959415, 25934.12433108940],
[0.218, 0.18428135264, 28286.99048486120],
[0.205, 5.21312087405, 20995.39296644940],
[0.199, 0.44384292491, 16737.57723659660],
[0.230, 6.06567392849, 6287.00800325450],
[0.219, 1.29194216300, 5326.78669402080],
[0.201, 1.74700937253, 22743.40937951640],
[0.207, 4.45440927276, 6279.48542133960],
[0.269, 6.05640445030, 64471.99124174489],
[0.190, 0.99256176518, 29296.61538957860],
[0.238, 5.42471431221, 39609.65458316560],
[0.262, 5.26961924198, 522.57741809380],
[0.210, 4.68618183158, 6254.62666252360],
[0.197, 2.80624554080, 4933.20844033260],
[0.252, 4.36220154608, 40879.44050464380],
[0.261, 1.07241516738, 55022.93574707440],
[0.189, 3.82966734476, 419.48464387520],
[0.185, 4.14324541379, 5642.19824260920],
[0.247, 3.44855612987, 6702.56049386660],
[0.205, 4.04424043223, 536.80451209540],
[0.191, 3.14082686083, 16723.35014259500],
[0.222, 5.16263907319, 23539.70738633280],
[0.180, 4.56214752149, 6489.26139842860],
[0.219, 0.80382553358, 16627.37091537720],
[0.227, 0.60156339452, 5905.70224207560],
[0.168, 0.88753528161, 16062.18452611680],
[0.158, 0.92127725775, 23937.85638974100],
[0.157, 4.69607868164, 6805.65326808520],
[0.207, 4.88410451334, 6286.66627864320],
[0.160, 4.95943826846, 10021.83728009940],
[0.166, 0.97126433565, 3097.88382272579],
[0.209, 5.75663411805, 3646.35037735440],
[0.175, 6.12762824412, 239424.39025435288],
[0.173, 3.13887234973, 6179.98307577280],
[0.157, 3.62822058179, 18451.07854656599],
[0.157, 4.67695912235, 6709.67404086740],
[0.146, 3.09506069735, 4907.30205014560],
[0.165, 2.27139128760, 10660.68693504240],
[0.201, 1.67701267433, 2107.03450754240],
[0.144, 3.96947747592, 6019.99192661860],
[0.171, 5.91302216729, 6058.73105428950],
[0.144, 2.13155655120, 26084.02180621620],
[0.151, 0.67417383554, 2388.89402044920],
[0.189, 5.07122281033, 263.08392337280],
[0.146, 5.10373877968, 10770.89325626180],
[0.187, 1.23915444627, 19402.79695281660],
[0.174, 0.08407293391, 9380.95967271720],
[0.137, 1.26247412309, 12566.21901028560],
[0.137, 3.52826010842, 639.89728631400],
[0.148, 1.76124372592, 5888.44996493220],
[0.164, 2.39195095081, 6357.85744855870],
[0.146, 2.43675816553, 5881.40372823420],
[0.161, 1.15721259372, 26735.94526221320],
[0.131, 2.51859277344, 6599.46771964800],
[0.153, 5.85203687779, 6281.59137728310],
[0.151, 3.72338532649, 12669.24447420140],
[0.132, 2.38417741883, 6525.80445396540],
[0.129, 0.75556744143, 5017.50837136500],
[0.127, 0.00254936441, 10027.90319572920],
[0.148, 2.85102145528, 6418.14093002680],
[0.143, 5.74460279367, 26087.90314157420],
[0.172, 0.41289962240, 174242.46596404971],
[0.136, 4.15497742275, 6311.52503745920],
[0.170, 5.98194913129, 327574.51427678124],
[0.124, 1.65497607604, 32217.20018108080],
[0.136, 2.48430783417, 13341.67431130680],
[0.165, 2.49667924600, 58953.14544329400],
[0.123, 3.45660563754, 6277.55292568400],
[0.117, 0.86065134175, 6245.04817735560],
[0.149, 5.61358280963, 5729.50644714900],
[0.153, 0.26860029950, 245.83164622940],
[0.128, 0.71204006588, 103.09277421860],
[0.159, 2.43166592149, 221995.02880149524],
[0.130, 2.80707316718, 6016.46880826960],
[0.137, 1.70657709294, 12566.08438968000],
[0.111, 1.56305648432, 17782.73207278420],
[0.113, 3.58302904101, 25685.87280280800],
[0.109, 3.26403795962, 6819.88036208680],
[0.122, 0.34120688217, 1162.47470440780],
[0.119, 5.84644718278, 12721.57209941700],
[0.144, 2.28899679126, 12489.88562870720],
[0.137, 5.82029768354, 44809.65020086340],
[0.107, 2.42818544140, 5547.19933645960],
[0.134, 1.26539982939, 5331.35744374080],
[0.103, 5.96518130595, 6321.10352262720],
[0.109, 0.33808549034, 11300.58422135640],
[0.129, 5.89187277327, 12029.34718788740],
[0.122, 5.77325634636, 11919.14086666800],
[0.107, 6.24998989350, 77690.75950573849],
[0.107, 1.00535580713, 77736.78343050249],
[0.143, 0.24122178432, 4214.06901508480],
[0.143, 0.88529649733, 7576.56007357400],
[0.107, 2.92124030496, 31415.37924995700],
[0.099, 5.70862227072, 5540.08578945880],
[0.110, 0.37528037383, 5863.59120611620],
[0.104, 4.44107178366, 2118.76386037840],
[0.098, 5.95877916706, 4061.21921539440],
[0.113, 1.24206857385, 84672.47584450469],
[0.124, 2.55619029867, 12539.85338018300],
[0.110, 3.66952094329, 238004.52415723630],
[0.112, 4.32512422943, 97238.62754448749],
[0.097, 3.70151541181, 11720.06886523160],
[0.120, 1.26895630252, 12043.57428188900],
[0.094, 2.56461130309, 19004.64794940840],
[0.117, 3.65425622684, 34520.30930938080],
[0.098, 0.13589994287, 11080.17157891760],
[0.097, 5.38330115253, 7834.12107263940],
[0.097, 2.46722096722, 71980.63357473118],
[0.095, 5.36958330451, 6288.59877429880],
[0.111, 5.01961920313, 11823.16163945020],
[0.090, 2.72299804525, 26880.31981303260],
[0.099, 0.90164266377, 18635.92845453620],
[0.126, 4.78722177847, 305281.94307104882],
[0.093, 0.21240380046, 18139.29450141590],
[0.124, 5.00979495566, 172146.97134054030],
[0.099, 5.67090026475, 16522.65971600220],
[0.092, 2.28180963676, 12491.37010141550],
[0.090, 4.50544881196, 40077.61957352000],
[0.100, 2.00639461612, 12323.42309600880],
[0.095, 5.68801979087, 14919.01785375460],
[0.087, 1.86043406047, 27707.54249429480],
[0.105, 3.02903468417, 22345.26037610820],
[0.087, 5.43970168638, 6272.03014972750],
[0.089, 1.63389387182, 33326.57873317420],
[0.082, 5.58298993353, 10241.20229116720],
[0.094, 5.47749711149, 9924.81042151060],
[0.082, 4.71988314145, 15141.39079431200],
[0.097, 5.61458778738, 2787.04302385740],
[0.096, 3.89073946348, 6379.05507720920],
[0.081, 3.13038482444, 36147.40987730040],
[0.110, 4.89978492291, 72140.62866668739],
[0.097, 5.20764563059, 6303.43116939020],
[0.082, 5.26342716139, 9814.60410029120],
[0.109, 2.35555589770, 83286.91426955358],
[0.097, 2.58492958057, 30666.15495843280],
[0.093, 1.32651591333, 23020.65308658799],
[0.078, 3.99588630754, 11293.47067435560],
[0.090, 0.57771932738, 26482.17080962440],
[0.106, 3.92012705073, 62883.35513951360],
[0.098, 2.94397773524, 316.39186965660],
[0.076, 3.96310417608, 29026.48522950779],
[0.078, 1.97068529306, 90279.92316810328],
[0.076, 0.23027966596, 21424.46664430340],
[0.080, 2.23099742212, 266.60704172180],
[0.079, 1.46227790922, 8982.81066930900],
[0.102, 4.92129953565, 5621.84292321040],
[0.100, 0.39243148321, 24279.10701821359],
[0.071, 1.52014858474, 33794.54372352860],
[0.076, 0.22880641443, 57375.80190084620],
[0.091, 0.96515913904, 48739.85989708300],
[0.075, 2.77638585157, 12964.30070339100],
[0.077, 5.18846946344, 11520.99686379520],
[0.068, 0.50006599129, 4274.51831083240],
[0.075, 2.07323762803, 15664.03552270859],
[0.074, 1.01884134928, 6393.28217121080],
[0.077, 0.46665178780, 16207.88627150200],
[0.081, 4.10452219483, 161710.61878623240],
[0.067, 3.83840630887, 6262.72053059260],
[0.071, 3.91415523291, 7875.67186362420],
[0.081, 0.91938383237, 74.78159856730],
[0.083, 4.69916218791, 23006.42599258639],
[0.063, 2.32556465878, 6279.19451463340],
[0.065, 5.41938745446, 28628.33622609960],
[0.065, 3.02336771694, 5959.57043333400],
[0.064, 3.31033198370, 2636.72547263700],
[0.064, 0.18375587519, 1066.49547719000],
[0.080, 5.81239171612, 12341.80690428090],
[0.066, 2.15105504851, 38.02767263580],
[0.062, 2.43313614978, 10138.10951694860],
[0.060, 3.16153906470, 5490.30096152400],
[0.069, 0.30764736334, 7018.95236352320],
[0.068, 2.24442548639, 24383.07910844140],
[0.078, 1.39649386463, 9411.46461508720],
[0.063, 0.72976362625, 6286.95718534940],
[0.073, 4.95125917731, 6453.74872061060],
[0.078, 0.32736023459, 6528.90749622080],
[0.059, 4.95362151577, 35707.71008290740],
[0.070, 2.37962727525, 15508.61512327440],
[0.073, 1.35229143111, 5327.47610838280],
[0.072, 5.91833527334, 10881.09957748120],
[0.059, 5.36231868425, 10239.58386601080],
[0.059, 1.63156134967, 61306.01159706580],
[0.054, 4.29491690425, 21947.11137270000],
[0.057, 5.89190132575, 34513.26307268280],
[0.074, 1.38235845304, 9967.45389998160],
[0.053, 3.86543309344, 32370.97899156560],
[0.055, 4.51794544854, 34911.41207609100],
[0.063, 5.41479412056, 11502.83761653050],
[0.063, 2.34416220742, 11510.70192305670],
[0.068, 0.77493931112, 29864.33402730900],
[0.060, 5.57024703495, 5756.90800324580],
[0.072, 2.80863088166, 10866.87248347960],
[0.061, 2.69736991384, 82576.98122099529],
[0.063, 5.32068807257, 3116.65941225980],
[0.052, 1.02278758099, 6272.43918464160],
[0.069, 5.00698550308, 25287.72379939980],
[0.066, 6.12047940728, 12074.48840752400],
[0.051, 2.59519527563, 11396.56344857420],
[0.056, 2.57995973521, 17892.93839400359],
[0.059, 0.44167237620, 250570.67585721909],
[0.059, 3.84070143543, 5483.25472482600],
[0.049, 0.54704693048, 22594.05489571199],
[0.065, 2.38423614501, 52670.06959330260],
[0.069, 5.34363738671, 66813.56483573320],
[0.057, 5.42770501007, 310145.15282392362],
[0.053, 1.17760296075, 149.56319713460],
[0.061, 4.02090887211, 34596.36465465240],
[0.049, 4.18361320516, 18606.49894600020],
[0.055, 0.83886167974, 20452.86941222180],
[0.050, 1.46327331958, 37455.72649597440],
[0.048, 4.53854727167, 29822.78323632420],
[0.058, 3.34847975377, 33990.61834428620],
[0.065, 1.45522693982, 76251.32777062019],
[0.056, 2.35650663692, 37724.75341974820],
[0.052, 2.61551081496, 5999.21653112620],
[0.053, 0.17334326094, 77717.29458646949],
[0.053, 0.79879700631, 77710.24834977149],
[0.047, 0.43240779709, 735.87651353180],
[0.053, 4.58763261686, 11616.97609101300],
[0.048, 6.20230111054, 4171.42553661380],
[0.052, 1.09723616404, 640.87760738220],
[0.057, 3.42008310383, 50317.20343953080],
[0.053, 1.01528448581, 149144.46708624958],
[0.047, 3.00924906195, 52175.80628314840],
[0.052, 2.03254070404, 6293.71251534120],
[0.048, 0.12356889734, 13362.44970679920],
[0.045, 3.37963782356, 10763.77970926100],
[0.047, 5.50981287869, 12779.45079542080],
[0.062, 5.45209070099, 949.17560896980],
[0.061, 2.93237974631, 5791.41255753260],
[0.044, 2.87440620802, 8584.66166590080],
[0.046, 4.03141796560, 10667.80048204320],
[0.047, 3.89902931422, 3903.91137641980],
[0.046, 2.75700467329, 6993.00889854970],
[0.045, 1.93386293300, 206.18554843720],
[0.047, 2.57670800912, 11492.54267579200],
[0.044, 3.62570223167, 63658.87775083760],
[0.051, 0.84536826273, 12345.73905754400],
[0.043, 0.01524970172, 37853.87549938260],
[0.041, 3.27146326065, 8858.31494432060],
[0.045, 3.03765521215, 65236.22129328540],
[0.047, 1.44447548944, 21393.54196985760],
[0.058, 5.45843180927, 1975.49254585600],
[0.050, 2.13285524146, 12573.26524698360],
[0.041, 1.32190847146, 2547.83753823240],
[0.047, 3.67579608544, 28313.28880466100],
[0.041, 2.24013475126, 8273.82086703240],
[0.047, 6.21438985953, 10991.30589870060],
[0.042, 3.01631817350, 853.19638175200],
[0.056, 1.09773690181, 77376.20102240759],
[0.040, 2.35698541041, 2699.73481931760],
[0.043, 5.28030898459, 17796.95916678580],
[0.054, 2.59175932091, 22910.44676536859],
[0.054, 0.88027764102, 71960.38658322369],
[0.055, 0.07988899477, 83467.15635301729],
[0.039, 1.12867321442, 9910.58332750900],
[0.040, 1.35670430524, 27177.85152920020],
[0.039, 4.39624220245, 5618.31980486140],
[0.042, 4.78798367468, 7856.89627409019],
[0.047, 2.75482175292, 18202.21671665939],
[0.039, 1.97008298629, 24491.42579258340],
[0.042, 4.04346599946, 7863.94251078820],
[0.038, 0.49178679251, 38650.17350619900],
[0.036, 4.86047906533, 4157.19844261220],
[0.043, 5.64354880978, 1062.90504853820],
[0.036, 3.98066313627, 12565.17137891460],
[0.042, 2.30753932657, 6549.68289171320],
[0.040, 5.39694918320, 9498.21223063460],
[0.040, 3.30603243754, 23536.11695768099],
[0.050, 6.15760345261, 78051.34191383338],
],
# R1
[
[103018.608, 1.10748969588, 6283.07584999140],
[1721.238, 1.06442301418, 12566.15169998280],
[702.215, 3.14159265359, 0.00000000000],
[32.346, 1.02169059149, 18849.22754997420],
[30.799, 2.84353804832, 5507.55323866740],
[24.971, 1.31906709482, 5223.69391980220],
[18.485, 1.42429748614, 1577.34354244780],
[10.078, 5.91378194648, 10977.07880469900],
[8.634, 0.27146150602, 5486.77784317500],
[8.654, 1.42046854427, 6275.96230299060],
[5.069, 1.68613426734, 5088.62883976680],
[4.985, 6.01401770704, 6286.59896834040],
[4.669, 5.98724494073, 529.69096509460],
[4.395, 0.51800238019, 4694.00295470760],
[3.872, 4.74969833437, 2544.31441988340],
[3.750, 5.07097685568, 796.29800681640],
[4.100, 1.08424786092, 9437.76293488700],
[3.518, 0.02290216272, 83996.84731811189],
[3.436, 0.94937019624, 71430.69561812909],
[3.221, 6.15628775313, 2146.16541647520],
[3.414, 5.41218322538, 775.52261132400],
[2.863, 5.48432847146, 10447.38783960440],
[2.520, 0.24276941146, 398.14900340820],
[2.201, 4.95216196651, 6812.76681508600],
[2.186, 0.41991743105, 8031.09226305840],
[2.838, 3.42034351366, 2352.86615377180],
[2.554, 6.13241878525, 6438.49624942560],
[1.932, 5.31374608366, 8429.24126646660],
[2.429, 3.09164528262, 4690.47983635860],
[1.730, 1.53686208550, 4705.73230754360],
[2.250, 3.68863633842, 7084.89678111520],
[2.093, 1.28191783032, 1748.01641306700],
[1.441, 0.81656250862, 14143.49524243060],
[1.483, 3.22225357771, 7234.79425624200],
[1.754, 3.22883705112, 6279.55273164240],
[1.583, 4.09702349428, 11499.65622279280],
[1.575, 5.53890170575, 3154.68708489560],
[1.847, 1.82040335363, 7632.94325965020],
[1.504, 3.63293385726, 11513.88331679440],
[1.337, 4.64440864339, 6836.64525283380],
[1.275, 2.69341415363, 1349.86740965880],
[1.352, 6.15101580257, 5746.27133789600],
[1.125, 3.35673439497, 17789.84561978500],
[1.470, 3.65282991755, 1194.44701022460],
[1.177, 2.57676109092, 13367.97263110660],
[1.101, 4.49748696552, 4292.33083295040],
[1.234, 5.65036509521, 5760.49843189760],
[0.984, 0.65517395136, 5856.47765911540],
[0.928, 2.32420318751, 10213.28554621100],
[1.077, 5.82812169132, 12036.46073488820],
[0.916, 0.76613009583, 16730.46368959580],
[0.877, 1.50137505051, 11926.25441366880],
[1.023, 5.62076589825, 6256.77753019160],
[0.851, 0.65709335533, 155.42039943420],
[0.802, 4.10519132088, 951.71840625060],
[0.857, 1.41661697538, 5753.38488489680],
[0.994, 1.14418521187, 1059.38193018920],
[0.813, 1.63948433322, 6681.22485339960],
[0.662, 4.55200452260, 5216.58037280140],
[0.644, 4.19478168733, 6040.34724601740],
[0.626, 1.50767713598, 5643.17856367740],
[0.590, 6.18277145205, 4164.31198961300],
[0.635, 0.52413263542, 6290.18939699220],
[0.650, 0.97935690350, 25132.30339996560],
[0.568, 2.30125315873, 10973.55568635000],
[0.547, 5.27256412213, 3340.61242669980],
[0.547, 2.20144422886, 1592.59601363280],
[0.526, 0.92464258226, 11371.70468975820],
[0.490, 5.90951388655, 3894.18182954220],
[0.478, 1.66857963179, 12168.00269657460],
[0.516, 3.59803483887, 10969.96525769820],
[0.518, 3.97914412373, 17298.18232732620],
[0.534, 5.03740926442, 9917.69687450980],
[0.487, 2.50545369269, 6127.65545055720],
[0.416, 4.04828175503, 10984.19235169980],
[0.538, 5.54081539805, 553.56940284240],
[0.402, 2.16544019233, 7860.41939243920],
[0.553, 2.32177369366, 11506.76976979360],
[0.367, 3.39152532250, 6496.37494542940],
[0.360, 5.34379853282, 7079.37385680780],
[0.337, 3.61563704045, 11790.62908865880],
[0.456, 0.30754294809, 801.82093112380],
[0.417, 3.70009308674, 10575.40668294180],
[0.381, 5.82033971802, 7058.59846131540],
[0.321, 0.31988767355, 16200.77272450120],
[0.364, 1.08414306177, 6309.37416979120],
[0.294, 4.54798604957, 11856.21865142450],
[0.290, 1.26473978562, 8635.94200376320],
[0.399, 4.16998866302, 26.29831979980],
[0.262, 5.08316906342, 10177.25767953360],
[0.243, 2.25746091190, 11712.95531823080],
[0.237, 1.05070575346, 242.72860397400],
[0.275, 3.45319481756, 5884.92684658320],
[0.255, 5.38496831087, 21228.39202354580],
[0.307, 4.24313526604, 3738.76143010800],
[0.216, 3.46037894728, 213.29909543800],
[0.196, 0.69029243914, 1990.74501704100],
[0.198, 5.16301829964, 12352.85260454480],
[0.214, 3.91876200279, 13916.01910964160],
[0.212, 4.00861198517, 5230.80746680300],
[0.184, 5.59805976614, 6283.14316029419],
[0.184, 2.85275392124, 7238.67559160000],
[0.179, 2.54259058334, 14314.16811304980],
[0.225, 1.64458698399, 4732.03062734340],
[0.236, 5.58826125715, 6069.77675455340],
[0.187, 2.72805985443, 6062.66320755260],
[0.184, 6.04216273598, 6283.00853968860],
[0.230, 3.62591335086, 6284.05617105960],
[0.163, 2.19117396803, 18073.70493865020],
[0.172, 0.97612950740, 3930.20969621960],
[0.215, 1.04672844028, 3496.03282613400],
[0.169, 4.75084479006, 17267.26820169119],
[0.152, 0.19390712179, 9779.10867612540],
[0.182, 5.16288118255, 17253.04110768959],
[0.149, 0.80944184260, 709.93304855830],
[0.163, 2.19209570390, 6076.89030155420],
[0.186, 5.01159497089, 11015.10647733480],
[0.134, 0.97765485759, 65147.61976813770],
[0.141, 4.38421981312, 4136.91043351620],
[0.158, 4.60974280627, 9623.68827669120],
[0.133, 3.30508592837, 154717.60988768269],
[0.163, 6.11782626245, 3.52311834900],
[0.174, 1.58078542187, 7.11354700080],
[0.141, 0.49976927274, 25158.60171976540],
[0.124, 6.03440460031, 9225.53927328300],
[0.150, 5.30166336812, 13517.87010623340],
[0.127, 1.92389511438, 22483.84857449259],
[0.121, 2.37813129011, 167283.76158766550],
[0.120, 3.98423684853, 4686.88940770680],
[0.117, 5.81072642211, 12569.67481833180],
[0.122, 5.60973054224, 5642.19824260920],
[0.157, 3.40236426002, 16496.36139620240],
[0.129, 2.10705116371, 1589.07289528380],
[0.116, 0.55839966736, 5849.36411211460],
[0.123, 1.52961392771, 12559.03815298200],
[0.111, 0.44848279675, 6172.86952877200],
[0.123, 5.81645568991, 6282.09552892320],
[0.150, 4.26278409223, 3128.38876509580],
[0.106, 2.27437761356, 5429.87946823940],
[0.104, 4.42743707728, 23543.23050468179],
[0.121, 0.39459045915, 12132.43996210600],
[0.104, 2.41842602527, 426.59819087600],
[0.110, 5.80381480447, 16858.48253293320],
[0.100, 2.93805577485, 4535.05943692440],
[0.097, 3.97935904984, 6133.51265285680],
[0.110, 6.22339014386, 12146.66705610760],
[0.098, 0.87576563709, 6525.80445396540],
[0.098, 3.15248421301, 10440.27429260360],
[0.095, 2.46168411100, 3097.88382272579],
[0.088, 0.23371480284, 13119.72110282519],
[0.098, 5.77016493489, 7342.45778018060],
[0.092, 6.03915555063, 20426.57109242200],
[0.096, 5.56909292561, 2388.89402044920],
[0.081, 1.32131147691, 5650.29211067820],
[0.086, 3.94529200528, 10454.50138660520],
[0.076, 2.70729716925, 143571.32428481648],
[0.091, 5.64100034152, 8827.39026987480],
[0.076, 1.80783856698, 28286.99048486120],
[0.081, 1.90858992196, 29088.81141598500],
[0.075, 3.40955892978, 5481.25491886760],
[0.069, 4.49936170873, 17256.63153634140],
[0.088, 1.10098454357, 11769.85369316640],
[0.066, 2.78285801977, 536.80451209540],
[0.068, 3.88179770758, 17260.15465469040],
[0.084, 1.59303306354, 9380.95967271720],
[0.088, 3.88076636762, 7477.52286021600],
[0.061, 6.17558202197, 11087.28512591840],
[0.060, 4.34824715818, 6206.80977871580],
[0.082, 4.59843208943, 9388.00590941520],
[0.079, 1.63131230601, 4933.20844033260],
[0.078, 4.20905757484, 5729.50644714900],
[0.057, 5.48157926651, 18319.53658487960],
[0.060, 1.01261781084, 12721.57209941700],
[0.056, 1.63031935692, 15720.83878487840],
[0.055, 0.24926735018, 15110.46611986620],
[0.061, 5.93059279661, 12539.85338018300],
[0.055, 4.84298966314, 13095.84266507740],
[0.067, 6.11690589247, 8662.24032356300],
[0.054, 5.73750638571, 3634.62102451840],
[0.074, 1.05466745829, 16460.33352952499],
[0.053, 2.29084335688, 16062.18452611680],
[0.064, 2.13513767927, 7875.67186362420],
[0.067, 0.07096807518, 14945.31617355440],
[0.051, 2.31511194429, 6262.72053059260],
[0.057, 5.77055471237, 12043.57428188900],
[0.056, 4.41980790431, 4701.11650170840],
[0.059, 5.87963500073, 5331.35744374080],
[0.058, 2.30546168628, 955.59974160860],
[0.049, 1.93839278478, 5333.90024102160],
[0.048, 2.69973662261, 6709.67404086740],
[0.064, 1.64379897981, 6262.30045449900],
[0.046, 3.98449608961, 98068.53671630539],
[0.050, 3.68875893005, 12323.42309600880],
[0.045, 3.30068569697, 22003.91463486980],
[0.047, 1.26317154881, 11919.14086666800],
[0.045, 0.89150445122, 51868.24866217880],
[0.043, 1.61526242998, 6277.55292568400],
[0.043, 5.74295325645, 11403.67699557500],
[0.044, 3.43070646822, 10021.83728009940],
[0.056, 0.02481833774, 15671.08175940660],
[0.055, 3.14274403422, 33019.02111220460],
[0.045, 3.00877289177, 8982.81066930900],
[0.046, 0.73303568429, 6303.43116939020],
[0.049, 1.60455690285, 6303.85124548380],
[0.045, 0.40210030323, 6805.65326808520],
[0.053, 0.94869680175, 10988.80815753500],
[0.041, 1.61122384329, 6819.88036208680],
[0.055, 0.89439119424, 11933.36796066960],
[0.045, 3.88495384656, 60530.48898574180],
[0.040, 4.75740908001, 38526.57435087200],
[0.040, 1.49921251887, 18451.07854656599],
[0.040, 3.77498297228, 26087.90314157420],
[0.051, 1.70258603562, 1551.04522264800],
[0.039, 2.97100699926, 2118.76386037840],
[0.053, 5.19854123078, 77713.77146812050],
[0.047, 4.26356628717, 21424.46664430340],
[0.037, 0.62902722802, 24356.78078864160],
[0.036, 0.11087914947, 10344.29506538580],
[0.036, 0.77037556319, 12029.34718788740],
[0.035, 3.30933994515, 24072.92146977640],
[0.035, 5.93650887012, 31570.79964939120],
[0.036, 2.15108874765, 30774.50164257480],
[0.036, 1.75078825382, 16207.88627150200],
[0.033, 5.06264177921, 226858.23855437007],
[0.034, 6.16891378800, 24491.42579258340],
[0.035, 3.19120695549, 32217.20018108080],
[0.034, 2.31528650443, 55798.45835839840],
[0.032, 4.21446357042, 15664.03552270859],
[0.039, 1.24979117796, 6418.14093002680],
[0.037, 4.11943655770, 2787.04302385740],
[0.032, 1.62887710890, 639.89728631400],
[0.038, 5.89832942685, 640.87760738220],
[0.032, 1.72442327688, 27433.88921587499],
[0.031, 2.78828943753, 12139.55350910680],
[0.035, 4.44608896525, 18202.21671665939],
[0.034, 3.96287980676, 18216.44381066100],
[0.033, 4.73611335874, 16723.35014259500],
[0.034, 1.43910280005, 49515.38250840700],
[0.031, 0.23302920161, 23581.25817731760],
[0.029, 2.02633840220, 11609.86254401220],
[0.030, 2.54923230240, 9924.81042151060],
[0.032, 4.91793198558, 11300.58422135640],
[0.028, 0.26187189577, 13521.75144159140],
[0.028, 3.84568936822, 2699.73481931760],
[0.029, 1.83149729794, 29822.78323632420],
[0.033, 4.60320094415, 19004.64794940840],
[0.027, 4.46183450287, 6702.56049386660],
[0.030, 4.46494072240, 36147.40987730040],
[0.027, 0.03211931363, 6279.78949257360],
[0.026, 5.46497324333, 6245.04817735560],
[0.035, 4.52695674113, 36949.23080842420],
[0.027, 3.52528177609, 10770.89325626180],
[0.026, 1.48499438453, 11080.17157891760],
[0.035, 2.82154380962, 19402.79695281660],
[0.025, 2.46339998836, 6279.48542133960],
[0.026, 4.97688894643, 16737.57723659660],
[0.026, 2.36136541526, 17996.03116822220],
[0.029, 4.15148654061, 45892.73043315699],
[0.026, 4.50714272714, 17796.95916678580],
[0.027, 4.72625223674, 1066.49547719000],
[0.025, 2.89309528854, 6286.66627864320],
[0.027, 0.37462444357, 12964.30070339100],
[0.029, 4.94860010533, 5863.59120611620],
[0.031, 3.93096113577, 29864.33402730900],
[0.024, 6.14987193584, 18606.49894600020],
[0.024, 3.74225964547, 29026.48522950779],
[0.025, 5.70460621565, 27707.54249429480],
[0.025, 5.33928840652, 15141.39079431200],
[0.027, 3.02320897140, 6286.36220740920],
[0.023, 0.28364955406, 5327.47610838280],
[0.026, 1.34240461687, 18875.52586977400],
[0.024, 1.33998410121, 19800.94595622480],
[0.025, 6.00172494004, 6489.26139842860],
[0.022, 1.81777974484, 6288.59877429880],
[0.022, 3.58603606640, 6915.85958930460],
[0.029, 2.09564449439, 15265.88651930040],
[0.022, 1.02173599251, 11925.27409260060],
[0.022, 4.74660932338, 28230.18722269139],
[0.021, 2.30688751432, 5999.21653112620],
[0.021, 3.22654944430, 25934.12433108940],
[0.021, 3.04956726238, 6566.93516885660],
[0.027, 5.35653084499, 33794.54372352860],
[0.028, 3.91168324815, 18208.34994259200],
[0.020, 1.52296293311, 135.06508003540],
[0.022, 4.66462839521, 13362.44970679920],
[0.019, 1.78121167862, 156137.47598479927],
[0.019, 2.99969102221, 19651.04848109800],
[0.019, 2.86664273362, 18422.62935909819],
[0.025, 0.94995632141, 31415.37924995700],
[0.019, 4.71432851499, 77690.75950573849],
[0.019, 2.54227398241, 77736.78343050249],
[0.020, 5.91915117116, 48739.85989708300],
],
# R2
[
[4359.385, 5.78455133738, 6283.07584999140],
[123.633, 5.57934722157, 12566.15169998280],
[12.341, 3.14159265359, 0.00000000000],
[8.792, 3.62777733395, 77713.77146812050],
[5.689, 1.86958905084, 5573.14280143310],
[3.301, 5.47027913302, 18849.22754997420],
[1.471, 4.48028885617, 5507.55323866740],
[1.013, 2.81456417694, 5223.69391980220],
[0.854, 3.10878241236, 1577.34354244780],
[1.102, 2.84173992403, 161000.68573767410],
[0.648, 5.47349498544, 775.52261132400],
[0.609, 1.37969434104, 6438.49624942560],
[0.499, 4.41649242250, 6286.59896834040],
[0.417, 0.90242451175, 10977.07880469900],
[0.402, 3.20376585290, 5088.62883976680],
[0.351, 1.81079227770, 5486.77784317500],
[0.467, 3.65753702738, 7084.89678111520],
[0.458, 5.38585314743, 149854.40013480789],
[0.304, 3.51701098693, 796.29800681640],
[0.266, 6.17413982699, 6836.64525283380],
[0.279, 1.84120501086, 4694.00295470760],
[0.260, 1.41629543251, 2146.16541647520],
[0.266, 3.13832905677, 71430.69561812909],
[0.321, 5.35313367048, 3154.68708489560],
[0.238, 2.17720020018, 155.42039943420],
[0.293, 4.61501268144, 4690.47983635860],
[0.229, 4.75969588070, 7234.79425624200],
[0.211, 0.21868065485, 4705.73230754360],
[0.201, 4.21905743357, 1349.86740965880],
[0.195, 4.57808285364, 529.69096509460],
[0.253, 2.81496293039, 1748.01641306700],
[0.182, 5.70454011389, 6040.34724601740],
[0.179, 6.02897097053, 4292.33083295040],
[0.186, 1.58690991244, 6309.37416979120],
[0.170, 2.90220009715, 9437.76293488700],
[0.166, 1.99984925026, 8031.09226305840],
[0.158, 0.04783713552, 2544.31441988340],
[0.197, 2.01083639502, 1194.44701022460],
[0.165, 5.78372596778, 83996.84731811189],
[0.214, 3.38285934319, 7632.94325965020],
[0.140, 0.36401486094, 10447.38783960440],
[0.151, 0.95153163031, 6127.65545055720],
[0.136, 1.48426306582, 2352.86615377180],
[0.127, 5.48475435134, 951.71840625060],
[0.126, 5.26866506592, 6279.55273164240],
[0.125, 3.75754889288, 6812.76681508600],
[0.101, 4.95015746147, 398.14900340820],
[0.102, 0.68468295277, 1592.59601363280],
[0.100, 1.14568935785, 3894.18182954220],
[0.129, 0.76540016965, 553.56940284240],
[0.109, 5.41063597567, 6256.77753019160],
[0.075, 5.84804322893, 242.72860397400],
[0.095, 1.94452244083, 11856.21865142450],
[0.077, 0.69373708195, 8429.24126646660],
[0.100, 5.19725292131, 244287.60000722768],
[0.080, 6.18440483705, 1059.38193018920],
[0.069, 5.25699888595, 14143.49524243060],
[0.085, 5.39484725499, 25132.30339996560],
[0.066, 0.51779993906, 801.82093112380],
[0.055, 5.16878202461, 7058.59846131540],
[0.051, 3.88759155247, 12036.46073488820],
[0.050, 5.57636570536, 6290.18939699220],
[0.061, 2.24359003264, 8635.94200376320],
[0.050, 5.54441900966, 1990.74501704100],
[0.056, 4.00301078040, 13367.97263110660],
[0.052, 4.13138898038, 7860.41939243920],
[0.052, 3.90943054011, 26.29831979980],
[0.041, 3.57128482780, 7079.37385680780],
[0.056, 2.76959005761, 90955.55169449610],
[0.042, 1.91461189199, 7477.52286021600],
[0.042, 0.42728171713, 10213.28554621100],
[0.042, 1.09413724455, 709.93304855830],
[0.039, 3.93298068961, 10973.55568635000],
[0.038, 6.17935925345, 9917.69687450980],
[0.049, 0.83021145241, 11506.76976979360],
[0.053, 1.45828359397, 233141.31440436150],
[0.047, 6.21568666789, 6681.22485339960],
[0.037, 0.36359309980, 10177.25767953360],
[0.035, 3.33024911524, 5643.17856367740],
[0.034, 5.63446915337, 6525.80445396540],
[0.035, 5.36033855038, 25158.60171976540],
[0.034, 5.36319798321, 4933.20844033260],
[0.033, 4.24722336872, 12569.67481833180],
[0.043, 5.26370903404, 10575.40668294180],
[0.042, 5.08837645072, 11015.10647733480],
[0.040, 1.98334703186, 6284.05617105960],
[0.042, 4.22496037505, 88860.05707098669],
[0.029, 3.19088628170, 11926.25441366880],
[0.029, 0.15217616684, 12168.00269657460],
[0.030, 1.61904744136, 9779.10867612540],
[0.027, 0.76388991416, 1589.07289528380],
[0.036, 2.74712003443, 3738.76143010800],
[0.033, 3.08807829566, 3930.20969621960],
[0.031, 5.34906619513, 143571.32428481648],
[0.025, 0.10240267494, 22483.84857449259],
[0.030, 3.47110495524, 14945.31617355440],
[0.024, 1.10425016019, 4535.05943692440],
[0.024, 1.58037259780, 6496.37494542940],
[0.023, 3.87710321433, 6275.96230299060],
[0.025, 3.94529778970, 3128.38876509580],
[0.023, 3.44685609601, 4136.91043351620],
[0.023, 3.83156029849, 5753.38488489680],
[0.022, 1.86956128067, 16730.46368959580],
[0.025, 2.42188933855, 5729.50644714900],
[0.020, 1.78208352927, 17789.84561978500],
[0.021, 4.30363087400, 16858.48253293320],
[0.021, 0.49258939822, 29088.81141598500],
[0.025, 1.33030250444, 6282.09552892320],
[0.027, 2.54785812264, 3496.03282613400],
[0.022, 1.11232521950, 12721.57209941700],
[0.021, 5.97759081637, 7.11354700080],
[0.019, 0.80292033311, 16062.18452611680],
[0.023, 4.12454848769, 2388.89402044920],
[0.022, 4.92663152168, 18875.52586977400],
[0.023, 5.68902059771, 16460.33352952499],
[0.023, 4.97346265647, 17260.15465469040],
[0.023, 3.03021283729, 66567.48586525429],
[0.016, 3.89740925257, 5331.35744374080],
[0.017, 3.08268671348, 154717.60988768269],
[0.016, 3.95085099736, 3097.88382272579],
[0.016, 3.99041783945, 6283.14316029419],
[0.020, 6.10644140189, 167283.76158766550],
[0.015, 4.09775914607, 11712.95531823080],
[0.016, 5.71769940700, 17298.18232732620],
[0.016, 3.28894009404, 5884.92684658320],
[0.015, 5.64785377164, 12559.03815298200],
[0.016, 4.43452080930, 6283.00853968860],
[0.014, 2.31721603062, 5481.25491886760],
[0.014, 4.43479032305, 13517.87010623340],
[0.014, 4.73209312936, 7342.45778018060],
[0.012, 0.64705975463, 18073.70493865020],
[0.011, 1.51443332200, 16200.77272450120],
[0.011, 0.88708889185, 21228.39202354580],
[0.014, 4.50116508534, 640.87760738220],
[0.011, 4.64339996198, 11790.62908865880],
[0.011, 1.31064298246, 4164.31198961300],
[0.009, 3.02238989305, 23543.23050468179],
[0.009, 2.04999402381, 22003.91463486980],
[0.009, 4.91488110218, 213.29909543800],
],
# R3
[
[144.595, 4.27319435148, 6283.07584999140],
[6.729, 3.91697608662, 12566.15169998280],
[0.774, 0.00000000000, 0.00000000000],
[0.247, 3.73019298781, 18849.22754997420],
[0.036, 2.80081409050, 6286.59896834040],
[0.033, 5.62216602775, 6127.65545055720],
[0.019, 3.71292621802, 6438.49624942560],
[0.016, 4.26011484232, 6525.80445396540],
[0.016, 3.50416887054, 6256.77753019160],
[0.014, 3.62127621114, 25132.30339996560],
[0.011, 4.39200958819, 4705.73230754360],
[0.011, 5.22327127059, 6040.34724601740],
[0.010, 4.28045254647, 83996.84731811189],
[0.009, 1.56864096494, 5507.55323866740],
[0.011, 1.37795688024, 6309.37416979120],
[0.010, 5.19937959068, 71430.69561812909],
[0.009, 0.47275199930, 6279.55273164240],
[0.009, 0.74642756529, 5729.50644714900],
[0.007, 2.97374891560, 775.52261132400],
[0.007, 3.28615691021, 7058.59846131540],
[0.007, 2.19184402142, 6812.76681508600],
[0.005, 3.15419034438, 529.69096509460],
[0.006, 4.54725567047, 1059.38193018920],
[0.005, 1.51104406936, 7079.37385680780],
[0.007, 2.98052059053, 6681.22485339960],
[0.005, 2.30961231391, 12036.46073488820],
[0.005, 3.71102966917, 6290.18939699220],
],
# R4
[
[3.858, 2.56384387339, 6283.07584999140],
[0.306, 2.26769501230, 12566.15169998280],
[0.053, 3.44031471924, 5573.14280143310],
[0.015, 2.04794573436, 18849.22754997420],
[0.013, 2.05688873673, 77713.77146812050],
[0.007, 4.41218854480, 161000.68573767410],
[0.005, 5.26154653107, 6438.49624942560],
[0.005, 4.07695126049, 6127.65545055720],
[0.006, 3.81514213664, 149854.40013480789],
[0.003, 1.28175749811, 6286.59896834040],
],
# R5
[
[0.086, 1.21579741687, 6283.07584999140],
[0.012, 0.65617264033, 12566.15169998280],
[0.001, 0.38068797142, 18849.22754997420],
],
]
"""This table contains Earth's periodic terms (all of them) from the planetary
theory VSOP87 for the radius vector at the equinox of date (taken from the 'D'
solution). In Meeus' book a shortened version can be found in pages 420-421."""
VSOP87_L_J2000 = [
# L0
[
[175347046.0, 0.0, 0.0],
[3341656.0, 4.6692568, 6283.07585],
[34894.0, 4.6261, 12556.1517],
[3497.0, 2.7441, 5753.3849],
[3418.0, 2.8289, 3.5231],
[3136.0, 3.6277, 77713.7715],
[2676.0, 4.4181, 7860.4194],
[2343.0, 6.1352, 3930.2097],
[1324.0, 0.7425, 11506.7698],
[1273.0, 2.0371, 529.691],
[1199.0, 1.1096, 1577.3435],
[990.0, 5.233, 5884.927],
[902.0, 2.045, 26.298],
[857.0, 3.508, 398.149],
[780.0, 1.179, 5223.694],
[753.0, 2.533, 5507.553],
[505.0, 4.583, 18849.228],
[492.0, 4.205, 775.523],
[357.0, 2.92, 0.067],
[317.0, 5.849, 11790.629],
[284.0, 1.899, 796.298],
[271.0, 0.315, 10977.079],
[243.0, 0.345, 5486.778],
[206.0, 4.806, 2544.314],
[205.0, 1.869, 5573.143],
[202.0, 2.458, 6069.777],
[156.0, 0.833, 213.299],
[132.0, 3.411, 2942.463],
[126.0, 1.083, 20.775],
[115.0, 0.645, 0.98],
[103.0, 0.636, 4694.003],
[102.0, 0.976, 15720.839],
[102.0, 4.267, 7.114],
[99.0, 6.21, 2146.17],
[98.0, 0.68, 155.42],
[86.0, 5.98, 161000.69],
[85.0, 1.3, 6275.96],
[85.0, 3.67, 71430.7],
[80.0, 1.81, 17260.15],
[79.0, 3.04, 12036.46],
[75.0, 1.76, 5088.63],
[74.0, 3.5, 3154.69],
[74.0, 4.68, 801.82],
[70.0, 0.83, 9437.76],
[62.0, 3.98, 8827.39],
[61.0, 1.82, 7084.9],
[57.0, 2.78, 6286.6],
[56.0, 4.39, 14143.5],
[56.0, 3.47, 6279.55],
[52.0, 0.19, 12139.55],
[52.0, 1.33, 1748.02],
[51.0, 0.28, 5856.48],
[49.0, 0.49, 1194.45],
[41.0, 5.37, 8429.24],
[41.0, 2.4, 19651.05],
[39.0, 6.17, 10447.39],
[37.0, 6.04, 10213.29],
[37.0, 2.57, 1059.38],
[36.0, 1.71, 2352.87],
[36.0, 1.78, 6812.77],
[33.0, 0.59, 17789.85],
[30.0, 0.44, 83996.85],
[30.0, 2.74, 1349.87],
[25.0, 3.16, 4690.48],
],
# L1
[
[628307584999.0, 0.0, 0.0],
[206059.0, 2.678235, 6283.07585],
[4303.0, 2.6351, 12566.1517],
[425.0, 1.59, 3.523],
[119.0, 5.796, 26.298],
[109.0, 2.966, 1577.344],
[93.0, 2.59, 18849.23],
[72.0, 1.14, 529.69],
[68.0, 1.87, 398.15],
[67.0, 4.41, 5507.55],
[59.0, 2.89, 5223.69],
[56.0, 2.17, 155.42],
[45.0, 0.4, 796.3],
[36.0, 0.47, 775.52],
[29.0, 2.65, 7.11],
[21.0, 5.34, 0.98],
[19.0, 1.85, 5486.78],
[19.0, 4.97, 213.3],
[17.0, 2.99, 6275.96],
[16.0, 0.03, 2544.31],
[16.0, 1.43, 2146.17],
[15.0, 1.21, 10977.08],
[12.0, 2.83, 1748.02],
[12.0, 3.26, 5088.63],
[12.0, 5.27, 1194.45],
[12.0, 2.08, 4694.0],
[11.0, 0.77, 553.57],
[10.0, 1.3, 6286.6],
[10.0, 4.24, 1349.87],
[9.0, 2.7, 242.73],
[9.0, 5.64, 951.72],
[8.0, 5.3, 2352.87],
[6.0, 2.65, 9437.76],
[6.0, 4.67, 4690.48],
],
# L2
[
[8722.0, 1.0725, 6283.0758],
[991.0, 3.1416, 0.0],
[295.0, 0.437, 12566.152],
[27.0, 0.05, 3.52],
[16.0, 5.19, 26.3],
[16.0, 3.69, 155.42],
[9.0, 0.3, 18849.23],
[9.0, 2.06, 77713.77],
[7.0, 0.83, 775.52],
[5.0, 4.66, 1577.34],
[4.0, 1.03, 7.11],
[4.0, 3.44, 5573.14],
[3.0, 5.14, 796.3],
[3.0, 6.05, 5507.55],
[3.0, 1.19, 242.73],
[3.0, 6.12, 529.69],
[3.0, 0.3, 398.15],
[3.0, 2.28, 553.57],
[2.0, 4.38, 5223.69],
[2.0, 3.75, 0.98],
],
# L3
[
[289.0, 5.842, 6283.076],
[21.0, 6.05, 12556.15],
[3.0, 5.2, 155.42],
[3.0, 3.14, 0.0],
[1.0, 4.72, 3.52],
[1.0, 5.97, 242.73],
[1.0, 5.54, 18849.23],
],
# L4
[[8.0, 4.14, 6283.08], [1.0, 3.28, 12566.15]],
]
"""This table contains Earth's most important periodic terms from the planetary
theory VSOP87 for the heliocentric longitude, referred to the equinox J2000.0.
In Meeus' book these values can be found in pages 418-420 and page 173."""
VSOP87_B_J2000 = [
# B0
[
[280.0, 3.199, 84334.662],
[102.0, 5.422, 5507.553],
[80.0, 3.88, 5223.69],
[44.0, 3.7, 2352.87],
[32.0, 4.0, 1577.34],
],
# B1
[
[227778.0, 3.413766, 6283.07585],
[3806.0, 3.3706, 12566.1517],
[3620.0, 0.0, 0.0],
[72.0, 3.33, 18849.23],
[8.0, 3.89, 5507.55],
[8.0, 1.79, 5223.69],
[6.0, 5.2, 2352.87],
],
# B2
[
[9721.0, 5.1519, 6283.07585],
[233.0, 3.1416, 0.0],
[134.0, 0.644, 12566.152],
[7.0, 1.07, 18849.23],
],
# B3
[[276.0, 0.595, 6283.076], [17.0, 3.14, 0.0], [4.0, 0.12, 12566.15]],
# B4
[[6.0, 2.27, 6283.08], [1.0, 0.0, 0.0]],
]
"""This table contains Earth's most important periodic terms from the planetary
theory VSOP87 for the heliocentric latitude, referred to the equinox J2000.0.
In Meeus' book these values can be found in page 420 and page 173."""
ORBITAL_ELEM = [
[100.466457, 36000.7698278, 0.00030322, 0.00000002], # L
[1.000001018, 0.0, 0.0, 0.0], # a
[0.01670863, -0.000042037, -0.0000001267, 0.00000000014], # e
[0.0, 0.0, 0.0, 0.0], # i
[174.873176, -0.2410908, 0.00004262, 0.000000001], # Omega
[102.937348, 1.7195366, 0.00045688, -0.000000018] # pie
]
"""This table contains the parameters to compute Earth's orbital elements for
the mean equinox of date. Based in Table 31.A, page 212"""
ORBITAL_ELEM_J2000 = [
[100.466457, 35999.3728565, -0.00000568, -0.000000001], # L
[0.0, 0.0130548, -0.00000931, -0.000000034], # i
[174.873176, -0.2410908, 0.00004262, 0.000000001], # Omega
[102.937348, 0.3225654, 0.00014799, -0.000000039] # pie
]
"""This table contains the parameters to compute Earth's orbital elements for
the standard equinox J2000.0. Based on Table 31.B, page 214"""
class Ellipsoid(object):
"""
Class Ellipsoid is useful to encapsulate the most important parameters of
a given reference ellipsoid.
"""
def __init__(self, a, f, omega):
"""Ellipsoid constructor.
:param a: Semi-major or equatorial radius, in meters
:type a: float
:param f: Flattening
:type f: float
:param omega: Angular velocity of the Earth, in rad/s
:type omega: float
"""
self._a = a
self._f = f
self._omega = omega
def __str__(self):
"""Method used when trying to print the object.
:returns: Semi-major equatorial radius, flattening and angular velocity
as a string.
:rtype: string
>>> a = Ellipsoid(6378140.0, 0.0033528132, 7.292e-5)
>>> print(a)
6378140.0:0.0033528132:7.292e-05
"""
return "{}:{}:{}".format(self._a, self._f, self._omega)
def __repr__(self):
"""Method providing the 'official' string representation of the object.
It provides a valid expression that could be used to recreate the
object.
:returns: As string with a valid expression to recreate the object
:rtype: string
>>> a = Ellipsoid(6378140.0, 0.0033528132, 7.292e-5)
>>> repr(a)
'Ellipsoid(6378140.0, 0.0033528132, 7.292e-05)'
"""
return "{}({}, {}, {})".format(
self.__class__.__name__, self._a, self._f, self._omega
)
def b(self):
"""Method to return the semi-minor radius.
:returns: Semi-minor radius, in meters
:rtype: float
>>> a = Ellipsoid(6378140.0, 0.0033528132, 7.292e-5)
>>> round(a.b(), 3)
6356755.288
"""
return self._a * (1.0 - self._f)
def e(self):
"""Method to return the eccentricity of the Earth's meridian.
:returns: Eccentricity of the Earth's meridian
:rtype: float
>>> a = Ellipsoid(6378140.0, 0.0033528132, 7.292e-5)
>>> round(a.e(), 8)
0.08181922
"""
f = self._f
return sqrt(2.0 * f - f * f)
IAU76 = Ellipsoid(6378140.0, (1.0 / 298.257), 7.292114992e-5)
"""Reference ellipsoid defined by the International Astronomic Union in 1976"""
WGS84 = Ellipsoid(6378137.0, (1.0 / 298.257223563), 7292115e-11)
"""Reference ellipsoid World Geodetic System 1984, a modern ellipsoid used by
the GPS system, and the standard in many applications"""
class Earth(object):
"""
Class Earth models the figure of the Earth surface and, with the help of a
configurable reference ellipsoid, provides a set of handy method to compute
different parameters, like the distance between two points on the surface.
Please note that here we depart a little bit from Meeus' book because the
Earth class uses the **World Geodetic System 1984 (WGS84)** as the default
reference ellipsoid, instead of the International Astronomical Union 1974,
which Meeus uses. This change is done because WGS84 is regarded as more
modern.
"""
def __init__(self, ellipsoid=WGS84):
"""Earth constructor.
It takes a reference ellipsoid as input. If not provided, the ellipsoid
used is the WGS84 by default.
:param ellipsoid: Reference ellipsoid to be used. WGS84 by default.
:type radians: :class:`Ellipsoid`
:returns: Earth object.
:rtype: :py:class:`Earth`
:raises: TypeError if input value is of wrong type.
"""
# Set an invalid ellipsoid by default
self._ellip = Ellipsoid(0.0, 0.0, 0.0)
self.set(ellipsoid) # Let's use 'set()' method
def set(self, ellipsoid):
"""Method used to define an Earth object.
It takes a reference ellipsoid as input. If not provided, the ellipsoid
used is the WGS84 by default.
:param ellipsoid: Reference ellipsoid to be used. WGS84 by default.
:type radians: :class:`Ellipsoid`
:returns: None
:rtype: None
:raises: TypeError if input value is of wrong type.
"""
if isinstance(ellipsoid, Ellipsoid):
self._ellip = ellipsoid
else:
raise TypeError("Invalid input value")
return
def __str__(self):
"""Method used when trying to print the Earth object. It essentially
returns the corresponting '__str__()' method from the reference
ellipsoid being used.
:returns: Semi-major equatorial radius, flattening and angular velocity
of the current reference ellipsoid, as a string.
:rtype: string
>>> e = Earth()
>>> s = str(e)
>>> v = s.split(':')
>>> print(v[0] + '|' + str(round(float(v[1]), 14)) + '|' + v[2] )
6378137.0|0.00335281066475|7.292115e-05
"""
return str(self._ellip)
def __repr__(self):
"""Method providing the 'official' string representation of the object.
It provides a valid expression that could be used to recreate the
object.
:returns: As string with a valid expression to recreate the object
:rtype: string
"""
return "{}(ellipsoid=Ellipsoid({}, {}, {}))".format(
self.__class__.__name__, self._ellip._a, self._ellip._f,
self._ellip._omega
)
def rho(self, latitude):
"""Method to compute the rho term, which is the observer distance to
the center of the Earth, when the observer is at sea level. In this
case, the Earth's equatorial radius is taken as unity.
:param latitude: Geodetical or geographical latitude of the observer,
in degrees
:type latitude: int, float, :class:`Angle`
:returns: Rho: Distance to the center of the Earth from sea level. It
is a ratio with respect to Earth equatorial radius.
:rtype: float
:raises: TypeError if input value is of wrong type.
>>> e = Earth(ellipsoid=IAU76)
>>> round(e.rho(0.0), 1)
1.0
"""
if not isinstance(latitude, (int, float, Angle)):
raise TypeError("Invalid input value")
if isinstance(latitude, (int, float)):
phi = radians(latitude) # Convert to radians
else:
phi = latitude.rad() # It is an Angle. Call method rad()
return (0.9983271 + 0.0016764 * cos(2.0 * phi) -
0.0000035 * cos(4.0 * phi))
def rho_sinphi(self, latitude, height):
"""Method to compute the rho*sin(phi') term, needed in the calculation
of diurnal parallaxes, eclipses and occulatitions.
:param latitude: Geodetical or geographical latitude of the observer,
in degrees
:type latitude: int, float, :class:`Angle`
:param height: Height of the observer above the sea level, in meters
:type height: int, float
:returns: rho*sin(phi') term
:rtype: float
:raises: TypeError if input value is of wrong type.
>>> lat = Angle(33, 21, 22.0)
>>> e = Earth(ellipsoid=IAU76)
>>> round(e.rho_sinphi(lat, 1706), 6)
0.546861
"""
if not (
isinstance(latitude, (int, float, Angle))
and isinstance(height, (int, float))
):
raise TypeError("Invalid input value")
if isinstance(latitude, (int, float)):
phi = radians(latitude) # Convert to radians
else:
phi = latitude.rad() # It is an Angle. Call method rad()
b_a = self._ellip.b() / self._ellip._a
u = atan(b_a * tan(phi))
return b_a * sin(u) + height / self._ellip._a * sin(phi)
def rho_cosphi(self, latitude, height):
"""Method to compute the rho*cos(phi') term, needed in the calculation
of diurnal parallaxes, eclipses and occulatitions.
:param latitude: Geodetical or geographical latitude of the observer,
in degrees
:type latitude: int, float, :class:`Angle`
:param height: Height of the observer above the sea level, in meters
:type height: int, float
:returns: rho*cos(phi') term
:rtype: float
:raises: TypeError if input value is of wrong type.
>>> lat = Angle(33, 21, 22.0)
>>> e = Earth(ellipsoid=IAU76)
>>> round(e.rho_cosphi(lat, 1706), 6)
0.836339
"""
if not (
isinstance(latitude, (int, float, Angle))
and isinstance(height, (int, float))
):
raise TypeError("Invalid input value")
if isinstance(latitude, (int, float)):
phi = radians(latitude) # Convert to radians
else:
phi = latitude.rad() # It is an Angle. Call method rad()
b_a = self._ellip.b() / self._ellip._a
u = atan(b_a * tan(phi))
return cos(u) + height / self._ellip._a * cos(phi)
def rp(self, latitude):
"""Method to compute the radius of the parallel circle at the given
latitude.
:param latitude: Geodetical or geographical latitude of the observer,
in degrees
:type latitude: int, float, :class:`Angle`
:returns: Radius of the parallel circle at given latitude, in meters
:rtype: float
:raises: TypeError if input value is of wrong type.
>>> e = Earth(ellipsoid=IAU76)
>>> round(e.rp(42.0), 1)
4747001.2
"""
if not isinstance(latitude, (int, float, Angle)):
raise TypeError("Invalid input value")
if isinstance(latitude, (int, float)):
phi = radians(latitude) # Convert to radians
else:
phi = latitude.rad() # It is an Angle. Call method rad()
a = self._ellip._a
e = self._ellip.e()
return (a * cos(phi)) / sqrt(1.0 - e * e * sin(phi) * sin(phi))
def linear_velocity(self, latitude):
"""Method to compute the linear velocity of a point at latitude, due
to the rotation of the Earth.
:param latitude: Geodetical or geographical latitude of the observer,
in degrees
:type latitude: int, float, :class:`Angle`
:returns: Linear velocity of a point at latitude, in meters per second
:rtype: float
:raises: TypeError if input value is of wrong type.
>>> e = Earth(ellipsoid=IAU76)
>>> round(e.linear_velocity(42.0), 2)
346.16
"""
if not isinstance(latitude, (int, float, Angle)):
raise TypeError("Invalid input value")
omega = self._ellip._omega
return omega * self.rp(latitude)
def rm(self, latitude):
"""Method to compute the radius of curvature of the Earth's meridian
at the given latitude.
:param latitude: Geodetical or geographical latitude of the observer,
in degrees
:type latitude: int, float, :class:`Angle`
:returns: Radius of curvature of the Earth's meridian at the given
latitude, in meters
:rtype: float
:raises: TypeError if input value is of wrong type.
>>> e = Earth(ellipsoid=IAU76)
>>> round(e.rm(42.0), 1)
6364033.3
"""
if not isinstance(latitude, (int, float, Angle)):
raise TypeError("Invalid input value")
if isinstance(latitude, (int, float)):
phi = radians(latitude) # Convert to radians
else:
phi = latitude.rad() # It is an Angle. Call method rad()
a = self._ellip._a
e = self._ellip.e()
return (a * (1.0 - e * e)) / (1.0 - e * e * sin(phi) * sin(phi)) ** 1.5
def distance(self, lon1, lat1, lon2, lat2):
"""This method computes the distance between two points on the Earth's
surface using the method from H. Andoyer.
.. note:: We will consider that positions 'East' and 'South' are
negative.
:param lon1: Longitude of the first point, in degrees
:type lon1: int, float, :class:`Angle`
:param lat1: Geodetical or geographical latitude of the first point,
in degrees
:type lat1: int, float, :class:`Angle`
:param lon2: Longitude of the second point, in degrees
:type lon2: int, float, :class:`Angle`
:param lat2: Geodetical or geographical latitude of the second point,
in degrees
:type lat2: int, float, :class:`Angle`
:returns: Tuple with distance between the two points along Earth's
surface, and approximate error, in meters
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> e = Earth(ellipsoid=IAU76)
>>> lon1 = Angle(-2, 20, 14.0)
>>> lat1 = Angle(48, 50, 11.0)
>>> lon2 = Angle(77, 3, 56.0)
>>> lat2 = Angle(38, 55, 17.0)
>>> dist, error = e.distance(lon1, lat1, lon2, lat2)
>>> round(dist, 0)
6181628.0
>>> error
69.0
>>> lon1 = Angle(-2.09)
>>> lat1 = Angle(41.3)
>>> lon2 = Angle(73.99)
>>> lat2 = Angle(40.75)
>>> dist, error = e.distance(lon1, lat1, lon2, lat2)
>>> round(dist, 0)
6176760.0
>>> error
69.0
"""
if not (
isinstance(lon1, (int, float, Angle))
and isinstance(lat1, (int, float, Angle))
and isinstance(lon2, (int, float, Angle))
and isinstance(lat2, (int, float, Angle))
):
raise TypeError("Invalid input value")
if isinstance(lon1, (int, float)):
l1 = radians(lon1) # Convert to radians
else:
l1 = lon1.rad() # It is an Angle. Call method rad()
if isinstance(lat1, (int, float)):
phi1 = radians(lat1) # Convert to radians
else:
phi1 = lat1.rad() # It is an Angle. Call method rad()
if isinstance(lon2, (int, float)):
l2 = radians(lon2) # Convert to radians
else:
l2 = lon2.rad() # It is an Angle. Call method rad()
if isinstance(lat2, (int, float)):
phi2 = radians(lat2) # Convert to radians
else:
phi2 = lat2.rad() # It is an Angle. Call method rad()
f = (phi1 + phi2) / 2.0
g = (phi1 - phi2) / 2.0
lam = (l1 - l2) / 2.0
sin2g = sin(g) ** 2
cos2g = cos(g) ** 2
cos2f = cos(f) ** 2
sin2f = sin(f) ** 2
sin2lam = sin(lam) ** 2
cos2lam = cos(lam) ** 2
s = sin2g * cos2lam + cos2f * sin2lam
c = cos2g * cos2lam + sin2f * sin2lam
omega = atan(sqrt(s / c))
r = sqrt(s * c) / omega
d = 2.0 * omega * self._ellip._a
h1 = (3.0 * r - 1.0) / (2.0 * c)
h2 = (3.0 * r + 1.0) / (2.0 * s)
fe = self._ellip._f
dist = d * (1.0 + fe * (h1 * sin2f * cos2g - h2 * cos2f * sin2g))
error = round(dist * fe * fe, 0)
return dist, error
@staticmethod
def geometric_heliocentric_position(epoch, tofk5=True):
"""This method computes the geometric heliocentric position of the
Earth for a given epoch, using the VSOP87 theory.
:param epoch: Epoch to compute Earth position, as an Epoch object
:type epoch: :py:class:`Epoch`
:param tofk5: Whether or not the small correction to convert to the FK5
system will be applied or not
:type tofk5: bool
:returns: A tuple with the heliocentric longitude and latitude (as
:py:class:`Angle` objects), and the radius vector (as a float,
in astronomical units), in that order
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(1992, 10, 13.0)
>>> l, b, r = Earth.geometric_heliocentric_position(epoch, tofk5=False)
>>> print(round(l.to_positive(), 6))
19.907297
>>> print(b.dms_str(n_dec=3))
-0.744''
>>> print(round(r, 8))
0.99760852
"""
# NOTE: In page 169, Meeus gives a different value for the LONGITUDE
# (19.907372 degrees) as the one presented above (19.906016 degrees).
# After many checks and tests, I came to the conclusion that the result
# above is the right one, and Meeus' result is wrong
return geometric_vsop_pos(epoch, VSOP87_L, VSOP87_B, VSOP87_R, tofk5)
@staticmethod
def apparent_heliocentric_position(epoch, nutation=True):
"""This method computes the apparent heliocentric position of the
Earth for a given epoch, using the VSOP87 theory.
:param epoch: Epoch to compute Earth position, as an Epoch object
:type epoch: :py:class:`Epoch`
:param nutation: Whether the nutation correction will be applied
:type nutation: bool
:returns: A tuple with the heliocentric longitude and latitude (as
:py:class:`Angle` objects), and the radius vector (as a float,
in astronomical units), in that order
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(1992, 10, 13.0)
>>> lon, lat, r = Earth.apparent_heliocentric_position(epoch)
>>> print(round(lon.to_positive(), 6))
19.905986
>>> print(lat.dms_str(n_dec=3))
-0.721''
>>> print(round(r, 8))
0.99760852
"""
return apparent_vsop_pos(epoch, VSOP87_L, VSOP87_B, VSOP87_R, nutation)
@staticmethod
def geometric_heliocentric_position_j2000(epoch, tofk5=True):
"""This method computes the geometric heliocentric position of the
Earth for a given epoch, using the VSOP87 theory, referred to the
equinox J2000.0.
:param epoch: Epoch to compute Earth position, as an Epoch object
:type epoch: :py:class:`Epoch`
:param tofk5: Whether or not the small correction to convert to the FK5
system will be applied or not
:type tofk5: bool
:returns: A tuple with the heliocentric longitude and latitude (as
:py:class:`Angle` objects), and the radius vector (as a float,
in astronomical units), in that order
:rtype: tuple
:raises: TypeError if input values are of wrong type.
"""
return geometric_vsop_pos(
epoch, VSOP87_L_J2000, VSOP87_B_J2000, VSOP87_R, tofk5
)
@staticmethod
def orbital_elements_mean_equinox(epoch):
"""This method computes the orbital elements of Earth for the mean
equinox of the date for a given epoch.
:param epoch: Epoch to compute orbital elements, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple containing the following six orbital elements:
- Mean longitude of the planet (Angle)
- Semimajor axis of the orbit (float, astronomical units)
- eccentricity of the orbit (float)
- inclination on the plane of the ecliptic (Angle)
- longitude of the ascending node (Angle)
- argument of the perihelion (Angle)
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(2065, 6, 24.0)
>>> l, a, e, i, ome, arg = Earth.orbital_elements_mean_equinox(epoch)
>>> print(round(l, 6))
272.716028
>>> print(round(a, 8))
1.00000102
>>> print(round(e, 7))
0.0166811
>>> print(round(i, 6))
0.0
>>> print(round(ome, 5))
174.71534
>>> print(round(arg, 6))
-70.651889
"""
return orbital_elements(epoch, ORBITAL_ELEM, ORBITAL_ELEM)
@staticmethod
def orbital_elements_j2000(epoch):
"""This method computes the orbital elements of Earth for the
standard equinox J2000.0 for a given epoch.
:param epoch: Epoch to compute orbital elements, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple containing the following six orbital elements:
- Mean longitude of the planet (Angle)
- Semimajor axis of the orbit (float, astronomical units)
- eccentricity of the orbit (float)
- inclination on the plane of the ecliptic (Angle)
- longitude of the ascending node (Angle)
- argument of the perihelion (Angle)
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(2065, 6, 24.0)
>>> l, a, e, i, ome, arg = Earth.orbital_elements_j2000(epoch)
>>> print(round(l, 6))
271.801199
>>> print(round(a, 8))
1.00000102
>>> print(round(e, 7))
0.0166811
>>> print(round(i, 6))
0.008544
>>> print(round(ome, 5))
174.71534
>>> print(round(arg, 6))
-71.566717
"""
return orbital_elements(epoch, ORBITAL_ELEM, ORBITAL_ELEM_J2000)
@staticmethod
def perihelion_aphelion(epoch, perihelion=True):
"""This method computes the time of Perihelion (or Aphelion) closer to
a given epoch.
:param epoch: Epoch close to the desired Perihelion (or Aphelion)
:type epoch: :py:class:`Epoch`
:param peihelion: If True, the epoch of the closest Perihelion is
computed, if False, the epoch of the closest Aphelion is found.
:type bool:
:returns: The epoch of the desired Perihelion (or Aphelion)
:rtype: :py:class:`Epoch`
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(1989, 11, 20.0)
>>> e = Earth.perihelion_aphelion(epoch)
>>> y, m, d, h, mi, s = e.get_full_date()
>>> print(y)
1990
>>> print(m)
1
>>> print(d)
4
>>> print(h)
17
>>> epoch = Epoch(2000, 4, 1.0)
>>> e = Earth.perihelion_aphelion(epoch, perihelion=False)
>>> y, m, d, h, mi, s = e.get_full_date()
>>> print(y)
2000
>>> print(m)
7
>>> print(d)
3
>>> print(h)
23
>>> print(mi)
51
>>> epoch = Epoch(2003, 3, 10.0)
>>> e = Earth.perihelion_aphelion(epoch)
>>> y, m, d, h, mi, s = e.get_full_date()
>>> print(y)
2003
>>> print(m)
1
>>> print(d)
4
>>> print(h)
5
>>> print(mi)
1
>>> epoch = Epoch(2009, 5, 1.0)
>>> e = Earth.perihelion_aphelion(epoch, perihelion=False)
>>> y, m, d, h, mi, s = e.get_full_date()
>>> print(y)
2009
>>> print(m)
7
>>> print(d)
4
>>> print(h)
1
>>> print(mi)
41
"""
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input value")
# First approximation
k = 0.99997 * (epoch.year() - 2000.01)
if perihelion:
k = round(k)
else:
k = round(k + 0.5) - 0.5
jde = 2451547.507 + k * (365.2596358 + k * 0.0000000156)
# Compute correction to first approximation
a1 = Angle(328.41 + 132.788585 * k)
a2 = Angle(316.13 + 584.903153 * k)
a3 = Angle(346.20 + 450.380738 * k)
a4 = Angle(136.95 + 659.306737 * k)
a5 = Angle(249.52 + 329.653368 * k)
if perihelion:
corr = (1.278 * sin(a1.rad()) - 0.055 * sin(a2.rad())
- 0.091 * sin(a3.rad()) - 0.056 * sin(a4.rad())
- 0.045 * sin(a5.rad()))
else:
corr = (-1.352 * sin(a1.rad()) + 0.061 * sin(a2.rad())
+ 0.062 * sin(a3.rad()) + 0.029 * sin(a4.rad())
+ 0.031 * sin(a5.rad()))
jde += corr
# Compute the epochs half a day before and after
jde_before = jde - 0.5
jde_after = jde + 0.5
# Compute the Sun-Earth distance for each epoch
l, b, r_b = Earth.geometric_heliocentric_position(Epoch(jde_before))
l, b, r = Earth.geometric_heliocentric_position(Epoch(jde))
l, b, r_a = Earth.geometric_heliocentric_position(Epoch(jde_after))
# Call an interpolation object
m = Interpolation([jde_before, jde, jde_after], [r_b, r, r_a])
sol = m.minmax()
return Epoch(sol)
@staticmethod
def passage_nodes(epoch, ascending=True):
"""This function computes the time of passage by the nodes (ascending
or descending) of Earth, nearest to the given epoch.
:param epoch: Epoch closest to the node passage
:type epoch: :py:class:`Epoch`
:param ascending: Whether the time of passage by the ascending (True)
or descending (False) node will be computed
:type ascending: bool
:returns: Tuple containing:
- Time of passage through the node (:py:class:`Epoch`)
- Radius vector when passing through the node (in AU, float)
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(2019, 1, 1)
>>> time, r = Earth.passage_nodes(epoch)
>>> year, month, day = time.get_date()
>>> print(year)
2019
>>> print(month)
3
>>> print(round(day, 1))
15.0
>>> print(round(r, 4))
0.9945
"""
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input types")
# Get the orbital parameters
l, a, e, i, ome, arg = Earth.orbital_elements_mean_equinox(epoch)
# Compute the time of passage through perihelion
t = Earth.perihelion_aphelion(epoch)
# Get the time of passage through the node
time, r = passage_nodes_elliptic(arg, e, a, t, ascending)
return time, r
@staticmethod
def parallax_correction(right_ascension, declination, latitude, distance,
hour_angle, height=0.0):
"""This function computes the parallaxes in right ascension and
declination in order to obtain the topocentric values.
:param right_ascension: Geocentric right ascension, as an
:py:class:`Angle` object
:type right_ascension: :py:class:`Angle`
:param declination: Geocentric declination, as an
:py:class:`Angle` object
:type declination: :py:class:`Angle`
:param latitude: Latitude of the observation point
:type latitude: :py:class:`Angle`
:param distance: Distance from the celestial object to the Earth, in
Astronomical Units
:type distance: float
:param hour_angle: Geocentric hour angle of the celestial object, as an
:py:class:`Angle`
:type hour_angle: :py:class:`Angle`
:param heigth: Height of observation point above sea level, in meters
:type height: float
:returns: Tuple containing the topocentric right ascension and
declination
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> right_ascension = Angle(22, 38, 7.25, ra=True)
>>> declination = Angle(-15, 46, 15.9)
>>> latitude = Angle(33, 21, 22)
>>> distance = 0.37276
>>> hour_angle = Angle(288.7958)
>>> topo_ra, topo_dec = Earth.parallax_correction(right_ascension, \
declination, \
latitude, distance, \
hour_angle)
>>> print(topo_ra.ra_str(n_dec=2))
22h 38' 8.54''
>>> print(topo_dec.dms_str(n_dec=1))
-15d 46' 30.0''
"""
if not (isinstance(right_ascension, Angle) and
isinstance(declination, Angle) and
isinstance(latitude, Angle) and
isinstance(distance, float) and
isinstance(hour_angle, Angle) and
isinstance(height, float)):
raise TypeError("Invalid input types")
# Let's start computing the equatorial horizontal parallax
ang = Angle(0, 0, 8.794)
sin_pi = sin(ang.rad()) / distance
# Also, the values related to the latitude
e = Earth()
rho_sinphi = e.rho_sinphi(latitude, height)
rho_cosphi = e.rho_cosphi(latitude, height)
# Now, let's compute the correction for the right ascension
delta_a = atan2(-rho_cosphi * sin_pi * sin(hour_angle.rad()),
cos(declination.rad()) - rho_cosphi * sin_pi *
cos(hour_angle.rad()))
delta_a = Angle(delta_a, radians=True)
# And finally, the declination already corrected
dec = atan2((sin(declination.rad()) - rho_sinphi * sin_pi) *
cos(delta_a.rad()),
cos(declination.rad()) - rho_cosphi * sin_pi *
cos(hour_angle.rad()))
dec = Angle(dec, radians=True)
return (right_ascension + delta_a), dec
@staticmethod
def parallax_ecliptical(longitude, latitude, semidiameter, obs_lat,
obliquity, sidereal_time, distance, height=0.0):
"""This function computes the topocentric coordinates of a celestial
body (Moon or planet) directly from its geocentric values in ecliptical
coordinates.
:param longitude: Geocentric ecliptical longitude as an
:py:class:`Angle`
:type longitude: :py:class:`Angle`
:param latitude: Geocentric ecliptical latitude as an :py:class:`Angle`
:type latitude: :py:class:`Angle`
:param semidiameter: Geocentric semidiameter as an :py:class:`Angle`
:type semidiameter: :py:class:`Angle`
:param obs_lat: Latitude of the observation point
:type obs_lat: :py:class:`Angle`
:param obliquity: Obliquity of the eliptic, as an :py:class:`Angle`
:type obliquity: :py:class:`Angle`
:param sidereal_time: Local sidereal time, as an :py:class:`Angle`
:type sidereal_time: :py:class:`Angle`
:param distance: Distance from the celestial object to the Earth, in
Astronomical Units
:type distance: float
:param heigth: Height of observation point above sea level, in meters
:type height: float
:returns: Tuple containing the topocentric longitude, latitude and
semidiameter
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> longitude = Angle(181, 46, 22.5)
>>> latitude = Angle(2, 17, 26.2)
>>> semidiameter = Angle(0, 16, 15.5)
>>> obs_lat = Angle(50, 5, 7.8)
>>> obliquity = Angle(23, 28, 0.8)
>>> sidereal_time = Angle(209, 46, 7.9)
>>> distance = 0.0024650163
>>> topo_lon, topo_lat, topo_diam = \
Earth.parallax_ecliptical(longitude, latitude, semidiameter, \
obs_lat, obliquity, sidereal_time, \
distance)
>>> print(topo_lon.dms_str(n_dec=1))
181d 48' 5.0''
>>> print(topo_lat.dms_str(n_dec=1))
1d 29' 7.1''
>>> print(topo_diam.dms_str(n_dec=1))
16' 25.5''
"""
if not (isinstance(longitude, Angle) and
isinstance(latitude, Angle) and
isinstance(semidiameter, Angle) and
isinstance(obs_lat, Angle) and
isinstance(obliquity, Angle) and
isinstance(sidereal_time, Angle) and
isinstance(distance, float) and
isinstance(height, float)):
raise TypeError("Invalid input types")
# Let's start computing the equatorial horizontal parallax
ang = Angle(0, 0, 8.794)
sin_pi = sin(ang.rad()) / distance
# Also, the values related to the latitude
e = Earth()
rho_sinphi = e.rho_sinphi(obs_lat, height)
rho_cosphi = e.rho_cosphi(obs_lat, height)
# Let's compute some auxiliary quantities
lonr = longitude.rad()
latr = latitude.rad()
semir = semidiameter.rad()
sidr = sidereal_time.rad()
oblr = obliquity.rad()
n = cos(lonr) * cos(latr) - rho_cosphi * sin_pi * cos(sidr)
# Now, compute the topocentric longitude
topo_lon = atan2(sin(lonr) * cos(latr) -
sin_pi * (rho_sinphi * sin(oblr) +
rho_cosphi * cos(oblr) * sin(sidr)), n)
topo_lon = Angle(topo_lon, radians=True).to_positive()
tlonr = topo_lon.rad()
# Compute the topocentric latitude
topo_lat = atan2(cos(tlonr) * (sin(latr) -
sin_pi * (rho_sinphi * cos(oblr) -
rho_cosphi * sin(oblr) *
sin(sidr))), n)
topo_lat = Angle(topo_lat, radians=True).to_positive()
# Watch out: Latitude is only valid in the +/-90 deg range
if abs(topo_lat) > 90.0:
topo_lat = topo_lat - 180.0
tlatr = topo_lat.rad()
# And finally, let's compute the topocentric semidiameter
topo_semi = asin((cos(tlonr) * cos(tlatr) * sin(semir)) / n)
topo_semi = Angle(topo_semi, radians=True)
return topo_lon, topo_lat, topo_semi
def main():
# Let's define a small helper function
def print_me(msg, val):
print("{}: {}".format(msg, val))
# Let's show some uses of Earth class
print("\n" + 35 * "*")
print("*** Use of Earth class")
print(35 * "*" + "\n")
# An important concept are the reference ellipsoids, comprising information
# about the Earth global model we are going to use.
# A very important reference ellipsoid is WGS84, predefined here
print_me("WGS84", WGS84)
# First field is equatorial radius, second field is the flattening, and the
# third field is the angular rotation velocity, in radians per second
# Let's print the semi-minor axis (polar radius)
print_me("Polar radius, b", WGS84.b())
# And now, let's print the eccentricity of Earth's meridian
print_me("Eccentricity, e", WGS84.e())
print("")
# We create an Earth object with a given reference ellipsoid. By default,
# it is WGS84, but we can use another
e = Earth(IAU76)
print("e = Earth(IAU76)")
# Print the parameters of reference ellipsoid being used
print_me("'e' Earth object parameters", e)
print("")
# Compute the distance to the center of the Earth from a given point at sea
# level, and at a certain latitude. It is given as a fraction of equatorial
# radius
lat = Angle(65, 45, 30.0) # We can use an Angle for this
print_me("Relative distance to Earth's center, from latitude 65d 45' 30''",
e.rho(lat))
print("")
# Parameters rho*sin(lat) and rho*cos(lat) are useful for different
# astronomical applications
height = 650.0
print_me("rho*sin(lat)", round(e.rho_sinphi(lat, height), 6))
print_me("rho*cos(lat)", round(e.rho_cosphi(lat, height), 6))
print("")
# Compute the radius of the parallel circle at given latitude
print_me(
"Radius of parallel circle at latitude 65d 45' 30'' (meters)",
round(e.rp(lat), 1),
)
# Compute the radius of curvature of the Earth's meridian at given latitude
print_me(
"Radius of Earth's meridian at latitude 65d 45' 30'' (meters)",
round(e.rm(lat), 1),
)
print("")
# It is easy to compute the linear velocity at different latitudes
print_me(
"Linear velocity at the Equator (meters/second)",
round(e.linear_velocity(0.0), 3),
)
print_me(
"Linear velocity at latitude 65d 45' 30'' (meters/second)",
round(e.linear_velocity(lat), 3),
)
print("")
# Now let's compute the distance between two points on the Earth:
# Bangkok: 13d 14' 09'' North, 100d 29' 39'' East
# Buenos Aires: 34d 36' 12'' South, 58d 22' 54'' West
# NOTE: We will consider that positions 'East' and 'South' are negative
# Here we will take advantage of facilities provided by Angle class
lon_ban = Angle(-100, 29, 39.0)
lat_ban = Angle(13, 14, 9.0)
lon_bai = Angle(58, 22, 54.0)
lat_bai = Angle(-34, 36, 12.0)
dist, error = e.distance(lon_ban, lat_ban, lon_bai, lat_bai)
print_me("The distance between Bangkok and Buenos Aires is (km)",
round(dist / 1000.0, 2))
print_me("The approximate error of the estimation is (meters)",
round(error, 0))
print("")
# Let's now compute the geometric heliocentric position for a given epoch
epoch = Epoch(1992, 10, 13.0)
lon, lat, r = Earth.geometric_heliocentric_position(epoch)
print_me("Geometric Heliocentric Longitude", lon.to_positive())
print_me("Geometric Heliocentric Latitude", lat.dms_str(n_dec=3))
print_me("Radius vector", r)
print("")
# And now, compute the apparent heliocentric position for the same epoch
epoch = Epoch(1992, 10, 13.0)
lon, lat, r = Earth.apparent_heliocentric_position(epoch)
print_me("Apparent Heliocentric Longitude", lon.to_positive())
print_me("Apparent Heliocentric Latitude", lat.dms_str(n_dec=3))
print_me("Radius vector", r)
print("")
# Print mean orbital elements for Earth at 2065.6.24
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Earth.orbital_elements_mean_equinox(epoch)
print_me("Mean longitude of the planet", round(l, 6)) # 272.716028
print_me("Semimajor axis of the orbit (UA)", round(a, 8)) # 1.00000102
print_me("Eccentricity of the orbit", round(e, 7)) # 0.0166811
print_me("Inclination on plane of the ecliptic", round(i, 6)) # 0.0
print_me("Longitude of the ascending node", round(ome, 5)) # 174.71534
print_me("Argument of the perihelion", round(arg, 6)) # -70.651889
print("")
# Find the epoch of the Perihelion closer to 2008/02/01
epoch = Epoch(2008, 2, 1.0)
e = Earth.perihelion_aphelion(epoch)
y, m, d, h, mi, s = e.get_full_date()
peri = str(y) + '/' + str(m) + '/' + str(d) + ' ' + str(h) + ':' + str(mi)
print_me("The Perihelion closest to 2008/2/1 happened on", peri)
print("")
# Compute the time of passage through an ascending node
epoch = Epoch(2019, 1, 1)
time, r = Earth.passage_nodes(epoch)
y, m, d = time.get_date()
d = round(d, 1)
print("Time of passage through ascending node: {}/{}/{}".format(y, m, d))
# 2019/3/15.0
print("Radius vector at ascending node: {}".format(round(r, 4))) # 0.9945
print("")
# Compute the parallax correction
right_ascension = Angle(22, 38, 7.25, ra=True)
declination = Angle(-15, 46, 15.9)
latitude = Angle(33, 21, 22)
distance = 0.37276
hour_angle = Angle(288.7958)
top_ra, top_dec = Earth.parallax_correction(right_ascension, declination,
latitude, distance, hour_angle)
print_me("Corrected topocentric right ascension: ", top_ra.ra_str(n_dec=2))
# 22h 38' 8.54''
print_me("Corrected topocentric declination", top_dec.dms_str(n_dec=1))
# -15d 46' 30.0''
print("")
# Compute the parallax correction in ecliptical coordinates
longitude = Angle(181, 46, 22.5)
latitude = Angle(2, 17, 26.2)
semidiameter = Angle(0, 16, 15.5)
obs_lat = Angle(50, 5, 7.8)
obliquity = Angle(23, 28, 0.8)
sidereal_time = Angle(209, 46, 7.9)
distance = 0.0024650163
topo_lon, topo_lat, topo_diam = \
Earth.parallax_ecliptical(longitude, latitude, semidiameter, obs_lat,
obliquity, sidereal_time, distance)
print_me("Corrected topocentric longitude", topo_lon.dms_str(n_dec=1))
# 181d 48' 5.0''
print_me("Corrected topocentric latitude", topo_lat.dms_str(n_dec=1))
# 1d 29' 7.1''
print_me("Corrected topocentric semidiameter", topo_diam.dms_str(n_dec=1))
# 16' 25.5''
if __name__ == "__main__":
main()
pymeeus-0.3.6/pymeeus/Epoch.py 0000664 0000000 0000000 00000230103 13555455377 0016330 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
import calendar
import datetime
from math import radians, cos, sin, asin, sqrt, acos, degrees
from pymeeus.base import TOL, get_ordinal_suffix, iint
from pymeeus.Angle import Angle
"""
.. module:: Epoch
:synopsis: Class to handle time
:license: GNU Lesser General Public License v3 (LGPLv3)
.. moduleauthor:: Dagoberto Salazar
"""
DAY2SEC = 86400.0
"""Number of seconds per day"""
DAY2MIN = 1440.0
"""Number of minutes per day"""
DAY2HOURS = 24.0
"""Number of hours per day"""
LEAP_TABLE = {
1972.5: 1,
1973.0: 2,
1974.0: 3,
1975.0: 4,
1976.0: 5,
1977.0: 6,
1978.0: 7,
1979.0: 8,
1980.0: 9,
1981.5: 10,
1982.5: 11,
1983.5: 12,
1985.5: 13,
1988.0: 14,
1990.0: 15,
1991.0: 16,
1992.5: 17,
1993.5: 18,
1994.5: 19,
1996.0: 20,
1997.5: 21,
1999.0: 22,
2006.0: 23,
2009.0: 24,
2012.5: 25,
2015.5: 26,
2017.0: 27,
}
"""This table represents the point in time FROM WHERE the given number of leap
seconds is valid. Given that leap seconds are (so far) always added at
June 30th or December 31st, a leap second added in 1997/06/30 is represented
here as '1997.5', while a leap second added in 2005/12/31 appears here as
'2006.0'."""
class Epoch(object):
"""
Class Epoch deals with the tasks related to time handling.
The constructor takes either a single JDE value, another Epoch object, or a
series of values representing year, month, day, hours, minutes, seconds.
This series of values are by default supposed to be in **Terrestial Time**
(TT).
This is not necesarily the truth, though. For instance, the time of a
current observation is tipically in UTC time (civil time), not in TT, and
there is some offset between those two time references.
When a UTC time is provided, the parameter **utc=True** must be given.
Then, the input is converted to International Atomic Time (TAI) using an
internal table of leap seconds, and from there, it is converted to (and
stored as) Terrestrial Time (TT).
Given that leap seconds are added or subtracted in a rather irregular
basis, it is not possible to predict them in advance, and the internal leap
seconds table will become outdated at some point in time. To counter this,
you have two options:
- Download an updated version of this Pymeeus package.
- Use the argument **leap_seconds** in the constructor or :meth:`set`
method to provide the correct number of leap seconds (w.r.t. TAI) to be
applied.
.. note:: Providing the **leap_seconds** argument will automatically set
the argument **utc** to True.
For instance, if at some time in the future the TAI-UTC difference is 43
seconds, you should set **leap_seconds=43** if you don't have an updated
version of this class.
In order to know which is the most updated leap second value stored in this
class, you may use the :meth:`get_last_leap_second()` method.
.. note:: The current version of UTC was implemented in January 1st, 1972.
Therefore, for dates before the correction in **NOT** carried out, even
if the **utc** argument is set to True, and it is supposed that the
input data is already in TT scale.
.. note:: For conversions between TT and Universal Time (UT), please use
the method :meth:`tt2ut`.
.. note:: Internally, time values are stored as a Julian Ephemeris Day
(JDE), based on the uniform scale of Dynamical Time, or more
specifically, Terrestial Time (TT) (itself the redefinition of
Terrestrial Dynamical Time, TDT).
.. note:: The UTC-TT conversion is composed of three corrections:
a. TT-TAI, comprising 32.184 s,
b. TAI-UTC(1972), 10 s, and
c. UTC(1972)-UTC(target)
item c. is the corresponding amount of leap seconds to the target Epoch.
When you do, for instance, **leap_seconds=43**, you modify the c. part.
.. note:: Given that this class stores the epoch as JDE, if the JDE value
is in the order of millions of days then, for a computer with 15-digit
accuracy, the final time resolution is about 10 milliseconds. That is
considered enough for most applications of this class.
"""
def __init__(self, *args, **kwargs):
"""Epoch constructor.
This constructor takes either a single JDE value, another Epoch object,
or a series of values representing year, month, day, hours, minutes,
seconds. This series of values are by default supposed to be in
**Terrestial Time** (TT).
It is also possible that the year, month, etc. arguments be provided in
a tuple or list. Moreover, it is also possible provide :class:`date` or
:class:`datetime` objects for initialization.
The **month** value can be provided as an integer (1 = January, 2 =
February, etc), or it can be provided with short (Jan, Feb,...) or long
(January, February,...) names. Also, hours, minutes, seconds can be
provided separately, or as decimals of the day value.
When a UTC time is provided, the parameter **utc=True** must be given.
Then, the input is converted to International Atomic Time (TAI) using
an internal table of leap seconds, and from there, it is converted to
(and stored as) Terrestrial Time (TT). If **utc** is not provided, it
is supposed that the input data is already in TT scale.
If a value is provided with the **leap_seconds** argument, then that
value will be used for the UTC->TAI conversion, and the internal leap
seconds table will be bypassed.
:param args: Either JDE, Epoch, date, datetime or year, month, day,
hours, minutes, seconds values, by themselves or inside a tuple or
list
:type args: int, float, :py:class:`Epoch`, tuple, list, date,
datetime
:param utc: Whether the provided epoch is a civil time (UTC)
:type utc: bool
:param leap_seconds: This is the value to be used in the UTC->TAI
conversion, instead of taking it from internal leap seconds table.
:type leap_seconds: int, float
:returns: Epoch object.
:rtype: :py:class:`Epoch`
:raises: ValueError if input values are in the wrong range.
:raises: TypeError if input values are of wrong type.
>>> e = Epoch(1987, 6, 19.5)
>>> print(e)
2446966.0
"""
# Initialize field
self._jde = 0.0
self.set(*args, **kwargs) # Use 'set()' method to handle the setup
def set(self, *args, **kwargs):
"""Method used to set the value of this object.
This method takes either a single JDE value, or a series of values
representing year, month, day, hours, minutes, seconds. This series of
values are by default supposed to be in **Terrestial Time** (TT).
It is also possible to provide another Epoch object as input for the
:meth:`set` method, or the year, month, etc arguments can be provided
in a tuple or list. Moreover, it is also possible provide :class:`date`
or :class:`datetime` objects for initialization.
The **month** value can be provided as an integer (1 = January, 2 =
February, etc), or it can be provided as short (Jan, Feb, ...) or long
(January, February, ...) names. Also, hours, minutes, seconds can be
provided separately, or as decimals of the day value.
When a UTC time is provided, the parameter **utc=True** must be given.
Then, the input is converted to International Atomic Time (TAI) using
an internal table of leap seconds, and from there, it is converted to
(and stored as) Terrestrial Time (TT). If **utc** is not provided, it
is supposed that the input data is already in TT scale.
If a value is provided with the **leap_seconds** argument, then that
value will be used for the UTC->TAI conversion, and the internal leap
seconds table will be bypassed.
.. note:: The UTC to TT correction is only carried out for dates after
January 1st, 1972.
:param args: Either JDE, Epoch, date, datetime or year, month, day,
hours, minutes, seconds values, by themselves or inside a tuple or
list
:type args: int, float, :py:class:`Epoch`, tuple, list, date,
datetime
:param utc: Whether the provided epoch is a civil time (UTC)
:type utc: bool
:param leap_seconds: This is the value to be used in the UTC->TAI
conversion, instead of taking it from internal leap seconds table.
:type leap_seconds: int, float
:returns: None.
:rtype: None
:raises: ValueError if input values are in the wrong range.
:raises: TypeError if input values are of wrong type.
>>> e = Epoch()
>>> e.set(1987, 6, 19.5)
>>> print(e)
2446966.0
>>> e.set(1977, 'Apr', 26.4)
>>> print(e)
2443259.9
>>> e.set(1957, 'October', 4.81)
>>> print(e)
2436116.31
>>> e.set(333, 'Jan', 27, 12)
>>> print(e)
1842713.0
>>> e.set(1900, 'Jan', 1)
>>> print(e)
2415020.5
>>> e.set(-1001, 'august', 17.9)
>>> print(e)
1355671.4
>>> e.set(-4712, 1, 1.5)
>>> print(e)
0.0
>>> e.set((1600, 12, 31))
>>> print(e)
2305812.5
>>> e.set([1988, 'JUN', 19, 12])
>>> print(e)
2447332.0
>>> d = datetime.date(2000, 1, 1)
>>> e.set(d)
>>> print(e)
2451544.5
>>> e.set(837, 'Apr', 10, 7, 12)
>>> print(e)
2026871.8
>>> d = datetime.datetime(837, 4, 10, 7, 12, 0, 0)
>>> e.set(d)
>>> print(e)
2026871.8
"""
# Clean up the internal parameters
self._jde = 0.0
# If no arguments are given, return. Internal values are 0.0
if len(args) == 0:
return
# If we have only one argument, it can be a JDE or another Epoch object
elif len(args) == 1:
if isinstance(args[0], Epoch):
self._jde = args[0]._jde
return
elif isinstance(args[0], (int, float)):
self._jde = args[0]
return
elif isinstance(args[0], (tuple, list)):
year, month, day, hours, minutes, sec = \
self._check_values(*args[0])
elif isinstance(args[0], datetime.datetime):
d = args[0]
year, month, day, hours, minutes, sec = self._check_values(
d.year,
d.month,
d.day,
d.hour,
d.minute,
d.second + d.microsecond / 1e6,
)
elif isinstance(args[0], datetime.date):
d = args[0]
year, month, day, hours, minutes, sec = self._check_values(
d.year, d.month, d.day
)
else:
raise TypeError("Invalid input type")
elif len(args) == 2:
# Insuficient data to set the Epoch
raise ValueError("Invalid number of input values")
elif len(args) >= 3: # Year, month, day
year, month, day, hours, minutes, sec = self._check_values(*args)
day += hours / DAY2HOURS + minutes / DAY2MIN + sec / DAY2SEC
# Handle the 'leap_seconds' argument, if pressent
if "leap_seconds" in kwargs:
# Compute JDE
self._jde = self._compute_jde(year, month, day, utc2tt=False,
leap_seconds=kwargs["leap_seconds"])
elif "utc" in kwargs:
self._jde = self._compute_jde(year, month, day,
utc2tt=kwargs["utc"])
else:
self._jde = self._compute_jde(year, month, day, utc2tt=False)
def _compute_jde(self, y, m, d, utc2tt=True, leap_seconds=0.0):
"""Method to compute the Julian Ephemeris Day (JDE).
.. note:: The UTC to TT correction is only carried out for dates after
January 1st, 1972.
:param y: Year
:type y: int
:param m: Month
:type m: int
:param d: Day
:type d: float
:param utc2tt: Whether correction UTC to TT is done automatically.
:type utc2tt: bool
:param leap_seconds: Number of leap seconds to apply
:type leap_seconds: float
:returns: Julian Ephemeris Day (JDE)
:rtype: float
"""
# The best approach here is first convert to JDE, and then adjust secs
if m <= 2:
y -= 1
m += 12
a = iint(y / 100.0)
b = 0.0
if not Epoch.is_julian(y, m, iint(d)):
b = 2.0 - a + iint(a / 4.0)
jde = (iint(365.25 * (y + 4716.0)) +
iint(30.6001 * (m + 1.0)) + d + b - 1524.5)
# If enabled, let's convert from UTC to TT, adding the needed seconds
deltasec = 0.0
# In this case, UTC to TT correction is applied automatically
if utc2tt:
if y >= 1972:
deltasec = 32.184 # Difference between TT and TAI
deltasec += 10.0 # Difference between UTC and TAI in 1972
deltasec += Epoch.leap_seconds(y, m)
else: # Correction is NOT automatic
if leap_seconds != 0.0: # We apply provided leap seconds
if y >= 1972:
deltasec = 32.184 # Difference between TT and TAI
deltasec += 10.0 # Difference between UTC-TAI in 1972
deltasec += leap_seconds
return jde + deltasec / DAY2SEC
def _check_values(self, *args):
"""This method takes the input arguments to 'set()' method (year,
month, day, etc) and carries out some sanity checks on them.
It returns a tuple containing those values separately, assigning zeros
to those arguments which were not provided.
:param args: Year, month, day, hours, minutes, seconds values.
:type args: int, float
:returns: Tuple with year, month, day, hours, minutes, seconds values.
:rtype: tuple
:raises: ValueError if input values are in the wrong range, or too few
arguments given as input.
"""
# This list holds the maximum amount of days a given month can have
maxdays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
# Initialize some variables
year = -9999
month = -9999
day = -9999
hours = 0.0
minutes = 0.0
sec = 0.0
# Carry out some basic checks
if len(args) < 3:
raise ValueError("Invalid number of input values")
elif len(args) >= 3: # Year, month, day
year = args[0]
month = args[1]
day = args[2]
if len(args) >= 4: # Year, month, day, hour
hours = args[3]
if len(args) >= 5: # Year, month, day, hour, minutes
minutes = args[4]
if len(args) >= 6: # Year, month, day, hour, minutes, seconds
sec = args[5]
if year < -4712: # No negative JDE will be allowed
raise ValueError("Invalid value for the input year")
if day < 1 or day > 31:
raise ValueError("Invalid value for the input day")
if hours < 0 or hours > 23:
raise ValueError("Invalid value for the input hours")
if minutes < 0 or minutes > 59:
raise ValueError("Invalid value for the input minutes")
if sec < 0 or sec > 59:
raise ValueError("Invalid value for the input seconds")
# Test the days according to the month
month = Epoch.get_month(month)
limit_day = maxdays[month - 1]
# We need extra tests if month is '2' (February)
if month == 2:
if Epoch.is_leap(year):
limit_day = 29
if day > limit_day:
raise ValueError("Invalid value for the input day")
# We are ready to return the parameters
return year, month, day, hours, minutes, sec
@staticmethod
def check_input_date(*args, **kwargs):
"""Method to check that the input is a proper date.
This method returns an Epoch object, and the **leap_seconds** argument
then controls the way the UTC->TT conversion is handled for that new
object. If **leap_seconds** argument is set to a value different than
zero, then that value will be used for the UTC->TAI conversion, and the
internal leap seconds table will be bypassed. On the other hand, if it
is set to zero, then the UTC to TT correction is disabled, and it is
supposed that the input data is already in TT scale.
:param args: Either Epoch, date, datetime or year, month, day values,
by themselves or inside a tuple or list
:type args: int, float, :py:class:`Epoch`, datetime, date, tuple,
list
:param leap_seconds: If different from zero, this is the value to be
used in the UTC->TAI conversion. If equals to zero, conversion is
disabled. If not given, UTC to TT conversion is carried out
(default).
:type leap_seconds: int, float
:returns: Epoch object corresponding to the input date
:rtype: :py:class:`Epoch`
:raises: ValueError if input values are in the wrong range.
:raises: TypeError if input values are of wrong type.
"""
t = Epoch()
if len(args) == 0:
raise ValueError("Invalid input: No date given")
# If we have only one argument, it can be an Epoch, a date, a datetime
# or a tuple/list
elif len(args) == 1:
if isinstance(args[0], Epoch):
t = args[0]
elif isinstance(args[0], (tuple, list)):
if len(args[0]) >= 3:
t = Epoch(args[0][0], args[0][1], args[0][2], **kwargs)
else:
raise ValueError("Invalid input")
elif isinstance(args[0], datetime.datetime) or isinstance(
args[0], datetime.date
):
t = Epoch(args[0].year, args[0].month, args[0].day, **kwargs)
else:
raise TypeError("Invalid input type")
elif len(args) == 2:
raise ValueError("Invalid input: Date given is not valid")
elif len(args) >= 3:
# We will rely on Epoch capacity to handle improper input
t = Epoch(args[0], args[1], args[2], **kwargs)
return t
@staticmethod
def is_julian(year, month, day):
"""This method returns True if given date is in the Julian calendar.
:param year: Year
:type y: int
:param month: Month
:type m: int
:param day: Day
:type day: int
:returns: Whether the provided date belongs to Julian calendar or not.
:rtype: bool
>>> Epoch.is_julian(1997, 5, 27.1)
False
>>> Epoch.is_julian(1397, 7, 7.0)
True
"""
if (
(year < 1582)
or (year == 1582 and month < 10)
or (year == 1582 and month == 10 and day < 5.0)
):
return True
else:
return False
def julian(self):
"""This method returns True if this Epoch object holds a date in the
Julian calendar.
:returns: Whether this Epoch object holds a date belonging to Julian
calendar or not.
:rtype: bool
>>> e = Epoch(1997, 5, 27.1)
>>> e.julian()
False
>>> e = Epoch(1397, 7, 7.0)
>>> e.julian()
True
"""
y, m, d = self.get_date()
return Epoch.is_julian(y, m, d)
@staticmethod
def get_month(month, as_string=False):
"""Method to get the month as a integer in the [1, 12] range, or as a
full name.
:param month: Month, in numeric, short name or long name format
:type month: int, float, str
:param as_string: Whether the output will be numeric, or a long name.
:type as_string: bool
:returns: Month as integer in the [1, 12] range, or as a long name.
:rtype: int, str
:raises: ValueError if input month value is invalid.
>>> Epoch.get_month(4.0)
4
>>> Epoch.get_month('Oct')
10
>>> Epoch.get_month('FEB')
2
>>> Epoch.get_month('August')
8
>>> Epoch.get_month('august')
8
>>> Epoch.get_month('NOVEMBER')
11
>>> Epoch.get_month(9.0, as_string=True)
'September'
>>> Epoch.get_month('Feb', as_string=True)
'February'
>>> Epoch.get_month('March', as_string=True)
'March'
"""
months_mmm = [
"Jan",
"Feb",
"Mar",
"Apr",
"May",
"Jun",
"Jul",
"Aug",
"Sep",
"Oct",
"Nov",
"Dec",
]
months_full = [
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December",
]
if isinstance(month, (int, float)):
month = int(month) # Truncate if it has decimals
if month >= 1 and month <= 12:
if not as_string:
return month
else:
return months_full[month - 1]
else:
raise ValueError("Invalid value for the input month")
elif isinstance(month, str):
month = month.strip().capitalize()
if len(month) == 3:
if month in months_mmm:
if not as_string:
return months_mmm.index(month) + 1
else:
return months_full[months_mmm.index(month)]
else:
raise ValueError("Invalid value for the input month")
else:
if month in months_full:
if not as_string:
return months_full.index(month) + 1
else:
return month
else:
raise ValueError("Invalid value for the input month")
@staticmethod
def is_leap(year):
"""Method to check if a given year is a leap year.
:param year: Year to be checked.
:type year: int, float
:returns: Whether or not year is a leap year.
:rtype: bool
:raises: ValueError if input year value is invalid.
>>> Epoch.is_leap(2003)
False
>>> Epoch.is_leap(2012)
True
>>> Epoch.is_leap(1900)
False
>>> Epoch.is_leap(-1000)
True
>>> Epoch.is_leap(1000)
True
"""
if isinstance(year, (int, float)):
# Mind the difference between Julian and Gregorian calendars
if year >= 1582:
year = iint(year)
return calendar.isleap(year)
else:
return (abs(year) % 4) == 0
else:
raise ValueError("Invalid value for the input year")
def leap(self):
"""This method checks if the current Epoch object holds a leap year.
:returns: Whether or the year in this Epoch object is a leap year.
:rtype: bool
>>> e = Epoch(2003, 1, 1)
>>> e.leap()
False
>>> e = Epoch(2012, 1, 1)
>>> e.leap()
True
>>> e = Epoch(1900, 1, 1)
>>> e.leap()
False
>>> e = Epoch(-1000, 1, 1)
>>> e.leap()
True
>>> e = Epoch(1000, 1, 1)
>>> e.leap()
True
"""
y, m, d = self.get_date()
return Epoch.is_leap(y)
@staticmethod
def get_doy(yyyy, mm, dd):
"""This method returns the Day Of Year (DOY) for the given date.
:param yyyy: Year, in four digits format
:type yyyy: int, float
:param mm: Month, in numeric format (1 = January, 2 = February, etc)
:type mm: int, float
:param dd: Day, in numeric format
:type dd: int, float
:returns: Day Of Year (DOY).
:rtype: float
:raises: ValueError if input values correspond to a wrong date.
>>> Epoch.get_doy(1999, 1, 29)
29.0
>>> Epoch.get_doy(1978, 11, 14)
318.0
>>> Epoch.get_doy(2017, 12, 31.7)
365.7
>>> Epoch.get_doy(2012, 3, 3.1)
63.1
>>> Epoch.get_doy(-400, 2, 29.9)
60.9
"""
# Let's carry out first some basic checks
if dd < 1 or dd >= 32 or mm < 1 or mm > 12:
raise ValueError("Invalid input data")
day = int(dd)
frac = dd % 1
if yyyy >= 1: # datetime's minimum year is 1
try:
d = datetime.date(yyyy, mm, day)
except ValueError:
raise ValueError("Invalid input date")
doy = d.timetuple().tm_yday
else:
k = 2 if Epoch.is_leap(yyyy) else 1
doy = (iint((275.0 * mm) / 9.0) -
k * iint((mm + 9.0) / 12.0) + day - 30.0)
return float(doy + frac)
@staticmethod
def doy2date(year, doy):
"""This method takes a year and a Day Of Year values, and returns the
corresponding date.
:param year: Year, in four digits format
:type year: int, float
:param doy: Day of Year number
:type doy: int, float
:returns: Year, month, day.
:rtype: tuple
:raises: ValueError if either input year or doy values are invalid.
>>> t = Epoch.doy2date(1999, 29)
>>> print("{}/{}/{}".format(t[0], t[1], round(t[2], 1)))
1999/1/29.0
>>> t = Epoch.doy2date(2017, 365.7)
>>> print("{}/{}/{}".format(t[0], t[1], round(t[2], 1)))
2017/12/31.7
>>> t = Epoch.doy2date(2012, 63.1)
>>> print("{}/{}/{}".format(t[0], t[1], round(t[2], 1)))
2012/3/3.1
>>> t = Epoch.doy2date(-1004, 60)
>>> print("{}/{}/{}".format(t[0], t[1], round(t[2], 1)))
-1004/2/29.0
>>> t = Epoch.doy2date(0, 60)
>>> print("{}/{}/{}".format(t[0], t[1], round(t[2], 1)))
0/2/29.0
>>> t = Epoch.doy2date(1, 60)
>>> print("{}/{}/{}".format(t[0], t[1], round(t[2], 1)))
1/3/1.0
>>> t = Epoch.doy2date(-1, 60)
>>> print("{}/{}/{}".format(t[0], t[1], round(t[2], 1)))
-1/3/1.0
>>> t = Epoch.doy2date(-2, 60)
>>> print("{}/{}/{}".format(t[0], t[1], round(t[2], 1)))
-2/3/1.0
>>> t = Epoch.doy2date(-3, 60)
>>> print("{}/{}/{}".format(t[0], t[1], round(t[2], 1)))
-3/3/1.0
>>> t = Epoch.doy2date(-4, 60)
>>> print("{}/{}/{}".format(t[0], t[1], round(t[2], 1)))
-4/2/29.0
>>> t = Epoch.doy2date(-5, 60)
>>> print("{}/{}/{}".format(t[0], t[1], round(t[2], 1)))
-5/3/1.0
"""
if isinstance(year, (int, float)) and isinstance(doy, (int, float)):
frac = float(doy % 1)
doy = int(doy)
if year >= 1: # datetime's minimum year is 1
ref = datetime.date(year, 1, 1)
mydate = datetime.date.fromordinal(ref.toordinal() + doy - 1)
return year, mydate.month, mydate.day + frac
else:
# The algorithm provided by Meeus doesn't work for years below
# +1. This little hack solves that problem (the 'if' result is
# inverted here).
k = 1 if Epoch.is_leap(year) else 2
if doy < 32:
m = 1
else:
m = iint((9.0 * (k + doy)) / 275.0 + 0.98)
d = (doy - iint((275.0 * m) / 9.0) +
k * iint((m + 9.0) / 12.0) + 30)
return year, int(m), d + frac
else:
raise ValueError("Invalid input values")
@staticmethod
def leap_seconds(year, month):
"""Returns the leap seconds accumulated for the given year and month.
:param year: Year
:type year: int
:param month: Month, in numeric format ([1:12] range)
:type month: int
:returns: Leap seconds accumulated for given year and month.
:rtype: int
>>> Epoch.leap_seconds(1972, 4)
0
>>> Epoch.leap_seconds(1972, 6)
0
>>> Epoch.leap_seconds(1972, 7)
1
>>> Epoch.leap_seconds(1983, 6)
11
>>> Epoch.leap_seconds(1983, 7)
12
>>> Epoch.leap_seconds(1985, 8)
13
>>> Epoch.leap_seconds(2016, 11)
26
>>> Epoch.leap_seconds(2017, 1)
27
>>> Epoch.leap_seconds(2018, 7)
27
"""
list_years = sorted(LEAP_TABLE.keys())
# First test the extremes of the table
if (year + month / 12.0) <= list_years[0]:
return 0
if (year + month / 12.0) >= list_years[-1]:
return LEAP_TABLE[list_years[-1]]
lyear = (year + 0.25) if month <= 6 else (year + 0.75)
idx = 0
while lyear > list_years[idx]:
idx += 1
return LEAP_TABLE[list_years[idx - 1]]
@staticmethod
def get_last_leap_second():
"""Method to get the date and value of the last leap second added to
the table
:returns: Tuple with year, month, day, leap second value.
:rtype: tuple
"""
list_years = sorted(LEAP_TABLE.keys())
lyear = list_years[-1]
lseconds = LEAP_TABLE[lyear]
year = iint(lyear)
# So far, leap seconds are added either on June 30th or December 31th
if lyear % 1 == 0.0:
year -= 1
month = 12
day = 31.0
else:
month = 6
day = 30.0
return year, month, day, lseconds
@staticmethod
def utc2local():
"""Method to return the difference between UTC and local time.
By default, dates in this Epoch class are handled in Coordinated
Universal Time (UTC). This method provides you the seconds that you
have to add or subtract to UTC time to convert to your local time.
Please bear in mind that, in order for this method to work, you
operative system must be correctly configured, with the right time and
corresponding time zone.
:returns: Difference in seconds between local and UTC time.
:rtype: float
"""
localhour = datetime.datetime.now().hour
utchour = datetime.datetime.utcnow().hour
localminute = datetime.datetime.now().minute
utcminute = datetime.datetime.utcnow().minute
return ((localhour - utchour) * 3600.0 +
(localminute - utcminute) * 60.0)
@staticmethod
def easter(year):
"""Method to return the Easter day for given year.
.. note:: This method is valid for both Gregorian and Julian years.
:param year: Year
:type year: int
:returns: Easter month and day, as a tuple
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> Epoch.easter(1991)
(3, 31)
>>> Epoch.easter(1818)
(3, 22)
>>> Epoch.easter(1943)
(4, 25)
>>> Epoch.easter(2000)
(4, 23)
>>> Epoch.easter(1954)
(4, 18)
>>> Epoch.easter(179)
(4, 12)
>>> Epoch.easter(1243)
(4, 12)
"""
# This algorithm is describes in pages 67-69 of Meeus book
if not isinstance(year, (int, float)):
raise TypeError("Invalid input type")
year = int(year)
if year >= 1583:
# In this case, we are using the Gregorian calendar
a = year % 19
b = iint(year / 100.0)
c = year % 100
d = iint(b / 4.0)
e = b % 4
f = iint((b + 8.0) / 25.0)
g = iint((b - f + 1.0) / 3.0)
h = (19 * a + b - d - g + 15) % 30
i = iint(c / 4.0)
k = c % 4
ll = (32 + 2 * (e + i) - h - k) % 7
m = iint((a + 11 * h + 22 * ll) / 451.0)
n = iint((h + ll - 7 * m + 114) / 31.0)
p = (h + ll - 7 * m + 114) % 31
return (n, p + 1)
else:
# The Julian calendar is used here
a = year % 4
b = year % 7
c = year % 19
d = (19 * c + 15) % 30
e = (2 * a + 4 * b - d + 34) % 7
f = iint((d + e + 114) / 31.0)
g = (d + e + 114) % 31
return (f, g + 1)
@staticmethod
def jewish_pesach(year):
"""Method to return the Jewish Easter (Pesach) day for given year.
.. note:: This method is valid for both Gregorian and Julian years.
:param year: Year
:type year: int
:returns: Jewish Easter (Pesach) month and day, as a tuple
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> Epoch.jewish_pesach(1990)
(4, 10)
"""
# This algorithm is described in pages 71-73 of Meeus book
if not isinstance(year, (int, float)):
raise TypeError("Invalid input type")
year = iint(year)
c = iint(year / 100.0)
s = 0 if year < 1583 else iint((3.0 * c - 5.0) / 4.0)
a = (12 * (year + 1)) % 19
b = year % 4
q = (-1.904412361576 + 1.554241796621 * a +
0.25 * b - 0.003177794022 * year + s)
j = (iint(q) + 3 * year + 5 * b + 2 + s) % 7
r = q - iint(q)
if j == 2 or j == 4 or j == 6:
d = iint(q) + 23
elif j == 1 and a > 6 and r > 0.632870370:
d = iint(q) + 24
elif j == 0 and a > 11 and r > 0.897723765:
d = iint(q) + 23
else:
d = iint(q) + 22
if d > 31:
return (4, d - 31)
else:
return (3, d)
@staticmethod
def moslem2gregorian(year, month, day):
"""Method to convert a date in the Moslen calendar to the Gregorian
(or Julian) calendar.
.. note:: This method is valid for both Gregorian and Julian years.
:param year: Year
:type year: int
:param month: Month
:type month: int
:param day: Day
:type day: int
:returns: Date in Gregorian (Julian) calendar: year, month and day, as
a tuple
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> Epoch.moslem2gregorian(1421, 1, 1)
(2000, 4, 6)
"""
# First, check that input types are correct
if (
not isinstance(year, (int, float))
or not isinstance(month, (int, float))
or not isinstance(day, (int, float))
):
raise TypeError("Invalid input type")
if day < 1 or day > 30 or month < 1 or month > 12 or year < 1:
raise ValueError("Invalid input data")
# This algorithm is described in pages 73-75 of Meeus book
# Note: Ramadan is month Nr. 9
h = iint(year)
m = iint(month)
d = iint(day)
n = d + iint(29.5001 * (m - 1) + 0.99)
q = iint(h / 30.0)
r = h % 30
a = iint((11.0 * r + 3.0) / 30.0)
w = 404 * q + 354 * r + 208 + a
q1 = iint(w / 1461.0)
q2 = w % 1461
g = 621 + 4 * iint(7.0 * q + q1)
k = iint(q2 / 365.2422)
e = iint(365.2422 * k)
j = q2 - e + n - 1
x = g + k
if j > 366 and x % 4 == 0:
j -= 366
x += 1
elif j > 365 and x % 4 > 0:
j -= 365
x += 1
# Check if date is in Gregorian calendar. '277' is DOY of October 4th
if (x > 1583) or (x == 1582 and j > 277):
jd = iint(365.25 * (x - 1.0)) + 1721423 + j
alpha = iint((jd - 1867216.25) / 36524.25)
beta = jd if jd < 2299161 else (jd + 1 + alpha - iint(alpha / 4.0))
b = beta + 1524
c = iint((b - 122.1) / 365.25)
d = iint(365.25 * c)
e = iint((b - d) / 30.6001)
day = b - d - iint(30.6001 * e)
month = (e - 1) if e < 14 else (e - 13)
year = (c - 4716) if month > 2 else (c - 4715)
return year, month, day
else:
# It is a Julian date. We have year and DOY
return Epoch.doy2date(x, j)
@staticmethod
def gregorian2moslem(year, month, day):
"""Method to convert a date in the Gregorian (or Julian) calendar to
the Moslen calendar.
:param year: Year
:type year: int
:param month: Month
:type month: int
:param day: Day
:type day: int
:returns: Date in Moslem calendar: year, month and day, as a tuple
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> Epoch.gregorian2moslem(1991, 8, 13)
(1412, 2, 2)
"""
# First, check that input types are correct
if (
not isinstance(year, (int, float))
or not isinstance(month, (int, float))
or not isinstance(day, (int, float))
):
raise TypeError("Invalid input type")
if day < 1 or day > 31 or month < 1 or month > 12 or year < -4712:
raise ValueError("Invalid input data")
# This algorithm is described in pages 75-76 of Meeus book
x = iint(year)
m = iint(month)
d = iint(day)
if m < 3:
x -= 1
m += 12
alpha = iint(x / 100.0)
beta = 2 - alpha + iint(alpha / 4.0)
b = iint(365.25 * x) + iint(30.6001 * (m + 1.0)) + d + 1722519 + beta
c = iint((b - 122.1) / 365.25)
d = iint(365.25 * c)
e = iint((b - d) / 30.6001)
d = b - d - iint(30.6001 * e)
m = (e - 1) if e < 14 else (e - 13)
x = (c - 4716) if month > 2 else (c - 4715)
w = 1 if x % 4 == 0 else 2
n = iint((275.0 * m) / 9.0) - w * iint((m + 9.0) / 12.0) + d - 30
a = x - 623
b = iint(a / 4.0)
c = a % 4
c1 = 365.2501 * c
c2 = iint(c1)
if c1 - c2 > 0.5:
c2 += 1
dp = 1461 * b + 170 + c2
q = iint(dp / 10631.0)
r = dp % 10631
j = iint(r / 354.0)
k = r % 354
o = iint((11.0 * j + 14.0) / 30.0)
h = 30 * q + j + 1
jj = k - o + n - 1
# jj is the number of the day in the moslem year h. If jj > 354 we need
# to know if h is a leap year
if jj > 354:
cl = h % 30
dl = (11 * cl + 3) % 30
if dl < 19:
jj -= 354
h += 1
else:
jj -= 355
h += 1
if jj == 0:
jj = 355
h -= 1
# Now, let's convert DOY jj to month and day
if jj == 355:
m = 12
d = 30
else:
s = iint((jj - 1.0) / 29.5)
m = 1 + s
d = iint(jj - 29.5 * s)
return h, m, d
def __str__(self):
"""Method used when trying to print the object.
:returns: Internal JDE value as a string.
:rtype: string
>>> e = Epoch(1987, 6, 19.5)
>>> print(e)
2446966.0
"""
return str(self._jde)
def __repr__(self):
"""Method providing the 'official' string representation of the object.
It provides a valid expression that could be used to recreate the
object.
:returns: As string with a valid expression to recreate the object
:rtype: string
>>> e = Epoch(1987, 6, 19.5)
>>> repr(e)
'Epoch(2446966.0)'
"""
return "{}({})".format(self.__class__.__name__, self._jde)
def get_date(self, **kwargs):
"""This method converts the internal JDE value back to a date.
Use **utc=True** to enable the TT to UTC conversion mechanism, or
provide a non zero value to **leap_seconds** to apply a specific leap
seconds value.
:param utc: Whether the TT to UTC conversion mechanism will be enabled
:type utc: bool
:param leap_seconds: Optional value for leap seconds.
:type leap_seconds: int, float
:returns: Year, month, day in a tuple
:rtype: tuple
>>> e = Epoch(2436116.31)
>>> y, m, d = e.get_date()
>>> print("{}/{}/{}".format(y, m, round(d, 2)))
1957/10/4.81
>>> e = Epoch(1988, 1, 27)
>>> y, m, d = e.get_date()
>>> print("{}/{}/{}".format(y, m, round(d, 2)))
1988/1/27.0
>>> e = Epoch(1842713.0)
>>> y, m, d = e.get_date()
>>> print("{}/{}/{}".format(y, m, round(d, 2)))
333/1/27.5
>>> e = Epoch(1507900.13)
>>> y, m, d = e.get_date()
>>> print("{}/{}/{}".format(y, m, round(d, 2)))
-584/5/28.63
"""
jd = self._jde + 0.5
z = iint(jd)
f = jd % 1
if z < 2299161:
a = z
else:
alpha = iint((z - 1867216.25) / 36524.25)
a = z + 1 + alpha - iint(alpha / 4.0)
b = a + 1524
c = iint((b - 122.1) / 365.25)
d = iint(365.25 * c)
e = iint((b - d) / 30.6001)
day = b - d - iint(30.6001 * e) + f
if e < 14:
month = e - 1
elif e == 14 or e == 15:
month = e - 13
if month > 2:
year = c - 4716
elif month == 1 or month == 2:
year = c - 4715
year = int(year)
month = int(month)
tt2utc = False
if "utc" in kwargs:
tt2utc = kwargs["utc"]
if "leap_seconds" in kwargs:
tt2utc = False
leap_seconds = kwargs["leap_seconds"]
else:
leap_seconds = 0.0
# If enabled, let's convert from TT to UTC, subtracting needed seconds
deltasec = 0.0
# In this case, TT to UTC correction is applied automatically, but only
# for dates after July 1st, 1972
if tt2utc:
if year > 1972 or (year == 1972 and month >= 7):
deltasec = 32.184 # Difference between TT and TAI
deltasec += 10.0 # Difference between UTC and TAI in 1972
deltasec += Epoch.leap_seconds(year, month)
else: # Correction is NOT automatic
if leap_seconds != 0.0: # We apply provided leap seconds
if year > 1972 or (year == 1972 and month >= 7):
deltasec = 32.184 # Difference between TT and TAI
deltasec += 10.0 # Difference between UTC-TAI in 1972
deltasec += leap_seconds
if deltasec != 0.0:
doy = Epoch.get_doy(year, month, day)
doy -= deltasec / DAY2SEC
# Check that we didn't change year
if doy < 1.0:
year -= 1
doy = 366.0 + doy if Epoch.is_leap(year) else 365.0 + doy
year, month, day = Epoch.doy2date(year, doy)
return year, month, day
def get_full_date(self, **kwargs):
"""This method converts the internal JDE value back to a full date.
Use **utc=True** to enable the TT to UTC conversion mechanism, or
provide a non zero value to **leap_seconds** to apply a specific leap
seconds value.
:param utc: Whether the TT to UTC conversion mechanism will be enabled
:type utc: bool
:param leap_seconds: Optional value for leap seconds.
:type leap_seconds: int, float
:returns: Year, month, day, hours, minutes, seconds in a tuple
:rtype: tuple
>>> e = Epoch(2436116.31)
>>> y, m, d, h, mi, s = e.get_full_date()
>>> print("{}/{}/{} {}:{}:{}".format(y, m, d, h, mi, round(s, 1)))
1957/10/4 19:26:24.0
>>> e = Epoch(1988, 1, 27)
>>> y, m, d, h, mi, s = e.get_full_date()
>>> print("{}/{}/{} {}:{}:{}".format(y, m, d, h, mi, round(s, 1)))
1988/1/27 0:0:0.0
>>> e = Epoch(1842713.0)
>>> y, m, d, h, mi, s = e.get_full_date()
>>> print("{}/{}/{} {}:{}:{}".format(y, m, d, h, mi, round(s, 1)))
333/1/27 12:0:0.0
>>> e = Epoch(1507900.13)
>>> y, m, d, h, mi, s = e.get_full_date()
>>> print("{}/{}/{} {}:{}:{}".format(y, m, d, h, mi, round(s, 1)))
-584/5/28 15:7:12.0
"""
y, m, d = self.get_date(**kwargs)
r = d % 1
d = int(d)
h = int(r * 24.0)
r = r * 24 - h
mi = int(r * 60.0)
s = 60.0 * (r * 60.0 - mi)
return y, m, d, h, mi, s
@staticmethod
def tt2ut(year, month):
"""This method provides an approximation of the difference, in seconds,
between Terrestrial Time and Universal Time, denoted **DeltaT**, where:
DeltaT = TT - UT.
Here we depart from Meeus book and use the polynomial expressions from:
https://eclipse.gsfc.nasa.gov/LEcat5/deltatpoly.html
Which are regarded as more elaborate and precise than Meeus'.
Please note that, by definition, the UTC time used internally in this
Epoch class by default is kept within 0.9 seconds from UT. Therefore,
UTC is in itself a quite good approximation to UT, arguably better than
some of the results provided by this method.
:param year: Year we want to compute DeltaT for.
:type year: int, float
:param month: Month we want to compute DeltaT for.
:type month: int, float
:returns: DeltaT, in seconds
:rtype: float
>>> round(Epoch.tt2ut(1642, 1), 1)
62.1
>>> round(Epoch.tt2ut(1680, 1), 1)
15.3
>>> round(Epoch.tt2ut(1700, 1), 1)
8.8
>>> round(Epoch.tt2ut(1726, 1), 1)
10.9
>>> round(Epoch.tt2ut(1750, 1), 1)
13.4
>>> round(Epoch.tt2ut(1774, 1), 1)
16.7
>>> round(Epoch.tt2ut(1800, 1), 1)
13.7
>>> round(Epoch.tt2ut(1820, 1), 1)
11.9
>>> round(Epoch.tt2ut(1890, 1), 1)
-6.1
>>> round(Epoch.tt2ut(1928, 2), 1)
24.2
>>> round(Epoch.tt2ut(1977, 2), 1)
47.7
>>> round(Epoch.tt2ut(1998, 1), 1)
63.0
>>> round(Epoch.tt2ut(2015, 7), 1)
69.3
"""
y = year + (month - 0.5) / 12.0
if year < -500:
u = (year - 1820.0) / 100.0
dt = -20.0 + 32.0 * u * u
elif year >= -500 and year < 500:
u = y / 100.0
dt = 10583.6 + u * (
-1014.41
+ u
* (
33.78311
+ u
* (
-5.952053
+ (u * (-0.1798452 +
u * (0.022174192 + 0.0090316521 * u)))
)
)
)
elif year >= 500 and year < 1600:
dt = 1574.2 + u * (
-556.01
+ u
* (
71.23472
+ u
* (
0.319781
+ (u * (-0.8503463 +
u * (-0.005050998 + 0.0083572073 * u)))
)
)
)
elif year >= 1600 and year < 1700:
t = y - 1600.0
dt = 120.0 + t * (-0.9808 + t * (-0.01532 + t / 7129.0))
elif year >= 1700 and year < 1800:
t = y - 1700.0
dt = 8.83 + t * (
0.1603 + t * (-0.0059285 + t * (0.00013336 - t / 1174000.0))
)
elif year >= 1800 and year < 1860:
t = y - 1800.0
dt = 13.72 + t * (
-0.332447
+ t
* (
0.0068612
+ t
* (
0.0041116
+ t
* (
-0.00037436
+ t
* (0.0000121272 + t * (-0.0000001699 +
0.000000000875 * t))
)
)
)
)
elif year >= 1860 and year < 1900:
t = y - 1860.0
dt = 7.62 + t * (
0.5737
+ t
* (-0.251754 + t * (0.01680668 +
t * (-0.0004473624 + t / 233174.0)))
)
elif year >= 1900 and year < 1920:
t = y - 1900.0
dt = -2.79 + t * (
1.494119 + t * (-0.0598939 + t * (0.0061966 - 0.000197 * t))
)
elif year >= 1920 and year < 1941:
t = y - 1920.0
dt = 21.20 + t * (0.84493 + t * (-0.076100 + 0.0020936 * t))
elif year >= 1941 and year < 1961:
t = y - 1950.0
dt = 29.07 + t * (0.407 + t * (-1.0 / 233.0 + t / 2547.0))
elif year >= 1961 and year < 1986:
t = y - 1975.0
dt = 45.45 + t * (1.067 + t * (-1.0 / 260.0 - t / 718.0))
elif year >= 1986 and year < 2005:
t = y - 2000.0
dt = 63.86 + t * (
0.3345
+ t
* (-0.060374 + t * (0.0017275 +
t * (0.000651814 + 0.00002373599 * t)))
)
elif year >= 2005 and year < 2050:
t = y - 2000.0
dt = 62.92 + t * (0.32217 + 0.005589 * t)
elif year >= 2050 and year < 2150:
dt = (-20.0 + 32.0 * ((y - 1820.0) / 100.0) ** 2 -
0.5628 * (2150.0 - y))
else:
u = (year - 1820.0) / 100.0
dt = -20.0 + 32.0 * u * u
return dt
def dow(self, as_string=False):
"""Method to return the day of week corresponding to this Epoch.
By default, this method returns an integer value: 0 for Sunday, 1 for
Monday, etc. However, when **as_string=True** is passed, the names of
the days are returned.
:param as_string: Whether result will be given as a integer or as a
string. False by default.
:type as_string: bool
:returns: Day of the week, as a integer or as a string.
:rtype: int, str
>>> e = Epoch(1954, 'June', 30)
>>> e.dow()
3
>>> e = Epoch(2018, 'Feb', 14.9)
>>> e.dow(as_string=True)
'Wednesday'
>>> e = Epoch(2018, 'Feb', 15)
>>> e.dow(as_string=True)
'Thursday'
>>> e = Epoch(2018, 'Feb', 15.99)
>>> e.dow(as_string=True)
'Thursday'
>>> e.set(2018, 'Jul', 15.4)
>>> e.dow(as_string=True)
'Sunday'
>>> e.set(2018, 'Jul', 15.9)
>>> e.dow(as_string=True)
'Sunday'
"""
jd = iint(self._jde - 0.5) + 2.0
doy = iint(jd % 7)
if not as_string:
return doy
else:
day_names = [
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
]
return day_names[doy]
def mean_sidereal_time(self):
"""Method to compute the _mean_ sidereal time at Greenwich for the
epoch stored in this object. It represents the Greenwich hour angle of
the mean vernal equinox.
.. note:: If you require the result as an angle, you should convert the
result from this method to hours with decimals (with
:const:`DAY2HOURS`), and then multiply by 15 deg/hr. Alternatively,
you can convert the result to hours with decimals, and feed this
value to an :class:`Angle` object, setting **ra=True**, and making
use of :class:`Angle` facilities for further handling.
:returns: Mean sidereal time, in days
:rtype: float
>>> e = Epoch(1987, 4, 10)
>>> round(e.mean_sidereal_time(), 9)
0.549147764
>>> e = Epoch(1987, 4, 10, 19, 21, 0.0)
>>> round(e.mean_sidereal_time(), 9)
0.357605204
"""
jd0 = iint(self()) + 0.5 if self() % 1 >= 0.5 else iint(self()) - 0.5
t = (jd0 - 2451545.0) / 36525.0
theta0 = 6.0 / DAY2HOURS + 41.0 / DAY2MIN + 50.54841 / DAY2SEC
s = t * (8640184.812866 + t * (0.093104 - 0.0000062 * t))
theta0 += (s % DAY2SEC) / DAY2SEC
deltajd = self() - jd0
if abs(deltajd) < TOL: # In this case, we are done
return theta0 % 1
else:
deltajd *= 1.00273790935
return (theta0 + deltajd) % 1
def apparent_sidereal_time(self, true_obliquity, nutation_longitude):
"""Method to compute the _apparent_ sidereal time at Greenwich for the
epoch stored in this object. It represents the Greenwich hour angle of
the true vernal equinox.
.. note:: If you require the result as an angle, you should convert the
result from this method to hours with decimals (with
:const:`DAY2HOURS`), and then multiply by 15 deg/hr. Alternatively,
you can convert the result to hours with decimals, and feed this
value to an :class:`Angle` object, setting **ra=True**, and making
use of :class:`Angle` facilities for further handling.
:param true_obliquity: The true obliquity of the ecliptic as an int,
float or :class:`Angle`, in degrees. You can use the method
`Earth.true_obliquity()` to find it.
:type true_obliquity: int, float, :class:`Angle`
:param nutation_longitude: The nutation in longitude as an int, float
or :class:`Angle`, in degrees. You can use method
`Earth.nutation_longitude()` to find it.
:type nutation_longitude: int, float, :class:`Angle`
:returns: Apparent sidereal time, in days
:rtype: float
:raises: TypeError if input value is of wrong type.
>>> e = Epoch(1987, 4, 10)
>>> round(e.apparent_sidereal_time(23.44357, (-3.788)/3600.0), 8)
0.54914508
"""
if not (
isinstance(true_obliquity, (int, float, Angle))
and isinstance(nutation_longitude, (int, float, Angle))
):
raise TypeError("Invalid input value")
if isinstance(true_obliquity, Angle):
true_obliquity = float(true_obliquity) # Convert to a float
if isinstance(nutation_longitude, Angle):
nutation_longitude = float(nutation_longitude)
mean_stime = self.mean_sidereal_time()
epsilon = radians(true_obliquity) # Convert to radians
delta_psi = nutation_longitude * 3600.0 # From degrees to seconds
# Correction is in seconds of arc: It must be converted to seconds of
# time, and then to days (sidereal time is given here in days)
return mean_stime + ((delta_psi * cos(epsilon)) / 15.0) / DAY2SEC
def mjd(self):
"""This method returns the Modified Julian Day (MJD).
:returns: Modified Julian Day (MJD).
:rtype: float
>>> e = Epoch(1858, 'NOVEMBER', 17)
>>> e.mjd()
0.0
"""
return self._jde - 2400000.5
def jde(self):
"""Method to return the internal value of the Julian Ephemeris Day.
:returns: The internal value of the Julian Ephemeris Day.
:rtype: float
>>> a = Epoch(-1000, 2, 29.0)
>>> print(a.jde())
1355866.5
"""
return self._jde
def year(self):
"""This method returns the contents of this object as a year with
decimals.
:returns: Year with decimals.
:rtype: float
>>> e = Epoch(1993, 'October', 1)
>>> print(round(e.year(), 4))
1993.7479
"""
y, m, d = self.get_date()
doy = Epoch.get_doy(y, m, d)
# We must substract 1 from doy in order to compute correctly
doy -= 1
days_of_year = 365.0
if self.leap():
days_of_year = 366.0
return y + doy / days_of_year
def rise_set(self, latitude, longitude, altitude=0.0):
"""This method computes the times of rising and setting of the Sun.
.. note:: The algorithm used is the one explained in the article
"Sunrise equation" of the Wikipedia at:
https://en.wikipedia.org/wiki/Sunrise_equation
.. note:: This algorithm is only valid within the artic and antartic
circles (+/- 66d 33'). Outside that range this method returns
invalid values (JDE < 0)
.. note:: The results are given in UTC time.
:param latitude: Latitude of the observer, as an Angle object. Positive
to the North
:type latitude: :py:class:`Angle`
:param longitude: Longitude of the observer, as an Angle object.
Positive to the East
:type longitude: :py:class:`Angle`
:param altitude: Altitude of the observer, as meters above sea level
:type altitude: int, float
:returns: Two :py:class:`Epoch` objects representing rising time and
setting time, in a tuple
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> e = Epoch(2019, 4, 2)
>>> latitude = Angle(48, 8, 0)
>>> longitude = Angle(11, 34, 0)
>>> altitude = 520.0
>>> rising, setting = e.rise_set(latitude, longitude, altitude)
>>> y, m, d, h, mi, s = rising.get_full_date()
>>> print("{}:{}".format(h, mi))
4:48
>>> y, m, d, h, mi, s = setting.get_full_date()
>>> print("{}:{}".format(h, mi))
17:48
"""
if not (isinstance(latitude, Angle) and isinstance(longitude, Angle)
and isinstance(altitude, (int, float))):
raise TypeError("Invalid input types")
# Check that latitude is within valid range
limit = Angle(66, 33, 0)
if latitude > limit or latitude < -limit:
error = Epoch(-1)
return error, error
# Let's start computing the number of days since 2000/1/1 12:00 (cjd)
# Compute fractional Julian Day for leap seconds and terrestrial time
# We need current epoch without hours, minutes and seconds
year, month, day = self.get_date()
e = Epoch(year, month, day)
frac = (10.0 + 32.184 + Epoch.leap_seconds(year, month)) / 86400.0
cjd = e.jde() - 2451545.0 + frac
# Compute mean solar noon
jstar = cjd - (float(longitude) / 360.0)
# Solar mean anomaly
m = (357.5291 + 0.98560028 * jstar) % 360
mr = radians(m)
# Equation of the center
c = 1.9148 * sin(mr) + 0.02 * sin(2.0 * mr) + 0.0003 * sin(3.0 * mr)
# Ecliptic longitude
lambd = (m + c + 180.0 + 102.9372) % 360
lr = radians(lambd)
# Solar transit
jtran = 2451545.5 + jstar + 0.0053 * sin(mr) - 0.0069 * sin(2.0 * lr)
# NOTE: The original algorithm indicates a value of 2451545.0, but that
# leads to transit times around midnight, which is an error
# Declination of the Sun
sin_delta = sin(lr) * sin(radians(23.44))
delta = asin(sin_delta)
cos_delta = cos(delta)
# Hour angle
# First, correct by elevation
corr = -0.83 - 2.076 * sqrt(altitude) / 60.0
cos_om = ((sin(radians(corr)) - sin(latitude.rad()) * sin_delta) /
(cos(latitude.rad()) * cos_delta))
# Finally, compute rising and setting times
omega = degrees(acos(cos_om))
jrise = Epoch(jtran - (omega / 360.0))
jsett = Epoch(jtran + (omega / 360.0))
return jrise, jsett
def __call__(self):
"""Method used when Epoch is called only with parenthesis.
:returns: The internal value of the Julian Ephemeris Day.
:rtype: float
>>> a = Epoch(-122, 1, 1.0)
>>> print(a())
1676497.5
"""
return self._jde
def __add__(self, b):
"""This method defines the addition between an Epoch and some days.
:param b: Value to be added, in days.
:type b: int, float
:returns: A new Epoch object.
:rtype: :py:class:`Epoch`
:raises: TypeError if operand is of wrong type.
>>> a = Epoch(1991, 7, 11)
>>> b = a + 10000
>>> y, m, d = b.get_date()
>>> print("{}/{}/{}".format(y, m, round(d, 2)))
2018/11/26.0
"""
if isinstance(b, (int, float)):
return Epoch(self._jde + float(b))
else:
raise TypeError("Wrong operand type")
def __sub__(self, b):
"""This method defines the subtraction between Epochs or between an
Epoch and a given number of days.
:param b: Value to be subtracted, either an Epoch or days.
:type b: py:class:`Epoch`, int, float
:returns: A new Epoch object if parameter 'b' is in days, or the
difference between provided Epochs, in days.
:rtype: :py:class:`Epoch`, float
:raises: TypeError if operand is of wrong type.
>>> a = Epoch(1986, 2, 9.0)
>>> print(round(a(), 2))
2446470.5
>>> b = Epoch(1910, 4, 20.0)
>>> print(round(b(), 2))
2418781.5
>>> c = a - b
>>> print(round(c, 2))
27689.0
>>> a = Epoch(2003, 12, 31.0)
>>> b = a - 365.5
>>> y, m, d = b.get_date()
>>> print("{}/{}/{}".format(y, m, round(d, 2)))
2002/12/30.5
"""
if isinstance(b, (int, float)):
return Epoch(self._jde - b)
elif isinstance(b, Epoch):
return float(self._jde - b._jde)
else:
raise TypeError("Invalid operand type")
def __iadd__(self, b):
"""This method defines the accumulative addition to this Epoch.
:param b: Value to be added, in days.
:type b: int, float
:returns: This Epoch.
:rtype: :py:class:`Epoch`
:raises: TypeError if operand is of wrong type.
>>> a = Epoch(2003, 12, 31.0)
>>> a += 32.5
>>> y, m, d = a.get_date()
>>> print("{}/{}/{}".format(y, m, round(d, 2)))
2004/2/1.5
"""
if isinstance(b, (int, float)):
self = self + b
return self
else:
raise TypeError("Wrong operand type")
def __isub__(self, b):
"""This method defines the accumulative subtraction to this Epoch.
:param b: Value to be subtracted, in days.
:type b: int, float
:returns: This Epoch.
:rtype: :py:class:`Epoch`
:raises: TypeError if operand is of wrong type.
>>> a = Epoch(2001, 12, 31.0)
>>> a -= 2*365
>>> y, m, d = a.get_date()
>>> print("{}/{}/{}".format(y, m, round(d, 2)))
2000/1/1.0
"""
if isinstance(b, (int, float)):
self = self - b
return self
else:
raise TypeError("Wrong operand type")
def __radd__(self, b):
"""This method defines the addition to a Epoch by the right
:param b: Value to be added, in days.
:type b: int, float
:returns: A new Epoch object.
:rtype: :py:class:`Epoch`
:raises: TypeError if operand is of wrong type.
>>> a = Epoch(2004, 2, 27.8)
>>> b = 2.2 + a
>>> y, m, d = b.get_date()
>>> print("{}/{}/{}".format(y, m, round(d, 2)))
2004/3/1.0
"""
if isinstance(b, (int, float)):
return self.__add__(b) # It is the same as by the left
else:
raise TypeError("Wrong operand type")
def __int__(self):
"""This method returns the internal JDE value as an int.
:returns: Internal JDE value as an int.
:rtype: int
>>> a = Epoch(2434923.85)
>>> int(a)
2434923
"""
return int(self._jde)
def __float__(self):
"""This method returns the internal JDE value as a float.
:returns: Internal JDE value as a float.
:rtype: float
>>> a = Epoch(2434923.85)
>>> float(a)
2434923.85
"""
return float(self._jde)
def __eq__(self, b):
"""This method defines the 'is equal' operator between Epochs.
.. note:: For the comparison, the **base.TOL** value is used.
:returns: A boolean.
:rtype: bool
:raises: TypeError if input values are of wrong type.
>>> a = Epoch(2007, 5, 20.0)
>>> b = Epoch(2007, 5, 20.000001)
>>> a == b
False
>>> a = Epoch(2004, 10, 15.7)
>>> b = Epoch(a)
>>> a == b
True
>>> a = Epoch(2434923.85)
>>> a == 2434923.85
True
"""
if isinstance(b, (int, float)):
return abs(self._jde - float(b)) < TOL
elif isinstance(b, Epoch):
return abs(self._jde - b._jde) < TOL
else:
raise TypeError("Wrong operand type")
def __ne__(self, b):
"""This method defines the 'is not equal' operator between Epochs.
.. note:: For the comparison, the **base.TOL** value is used.
:returns: A boolean.
:rtype: bool
>>> a = Epoch(2007, 5, 20.0)
>>> b = Epoch(2007, 5, 20.000001)
>>> a != b
True
>>> a = Epoch(2004, 10, 15.7)
>>> b = Epoch(a)
>>> a != b
False
>>> a = Epoch(2434923.85)
>>> a != 2434923.85
False
"""
return not self.__eq__(b) # '!=' == 'not(==)'
def __lt__(self, b):
"""This method defines the 'is less than' operator between Epochs.
:returns: A boolean.
:rtype: bool
:raises: TypeError if input values are of wrong type.
>>> a = Epoch(2004, 10, 15.7)
>>> b = Epoch(2004, 10, 15.7)
>>> a < b
False
"""
if isinstance(b, (int, float)):
return self._jde < float(b)
elif isinstance(b, Epoch):
return self._jde < b._jde
else:
raise TypeError("Wrong operand type")
def __ge__(self, b):
"""This method defines 'is equal or greater' operator between Epochs.
:returns: A boolean.
:rtype: bool
:raises: TypeError if input values are of wrong type.
>>> a = Epoch(2004, 10, 15.71)
>>> b = Epoch(2004, 10, 15.7)
>>> a >= b
True
"""
return not self.__lt__(b) # '>=' == 'not(<)'
def __gt__(self, b):
"""This method defines the 'is greater than' operator between Epochs.
:returns: A boolean.
:rtype: bool
:raises: TypeError if input values are of wrong type.
>>> a = Epoch(2004, 10, 15.71)
>>> b = Epoch(2004, 10, 15.7)
>>> a > b
True
>>> a = Epoch(-207, 11, 5.2)
>>> b = Epoch(-207, 11, 5.2)
>>> a > b
False
"""
if isinstance(b, (int, float)):
return self._jde > float(b)
elif isinstance(b, Epoch):
return self._jde > b._jde
else:
raise TypeError("Wrong operand type")
def __le__(self, b):
"""This method defines 'is equal or less' operator between Epochs.
:returns: A boolean.
:rtype: bool
:raises: TypeError if input values are of wrong type.
>>> a = Epoch(2004, 10, 15.71)
>>> b = Epoch(2004, 10, 15.7)
>>> a <= b
False
>>> a = Epoch(-207, 11, 5.2)
>>> b = Epoch(-207, 11, 5.2)
>>> a <= b
True
"""
return not self.__gt__(b) # '<=' == 'not(>)'
JDE2000 = Epoch(2000, 1, 1.5)
"""Standard epoch for January 1st, 2000 at 12h corresponding to JDE2451545.0"""
def main():
# Let's define a small helper function
def print_me(msg, val):
print("{}: {}".format(msg, val))
# Let's do some work with the Epoch class
print("\n" + 35 * "*")
print("*** Use of Epoch class")
print(35 * "*" + "\n")
e = Epoch(1987, 6, 19.5)
print_me("JDE for 1987/6/19.5", e)
# Redefine the Epoch object
e.set(333, "Jan", 27, 12)
print_me("JDE for 333/1/27.5", e)
# We can create an Epoch from a 'date' or 'datetime' object
d = datetime.datetime(837, 4, 10, 7, 12, 0, 0)
f = Epoch(d)
print_me("JDE for 837/4/10.3", f)
print("")
# Check if a given date belong to the Julian or Gregorian calendar
print_me("Is 1590/4/21.4 a Julian date?", Epoch.is_julian(1590, 4, 21.4))
print("")
# We can also check if a given year is leap or not
print_me("Is -1000 a leap year?", Epoch.is_leap(-1000))
print_me("Is 1800 a leap year?", Epoch.is_leap(1800))
print_me("Is 2012 a leap year?", Epoch.is_leap(2012))
print("")
# Get the Day Of Year corresponding to a given date
print_me("Day Of Year (DOY) of 1978/11/14", Epoch.get_doy(1978, 11, 14))
print_me("Day Of Year (DOY) of -400/2/29.9", Epoch.get_doy(-400, 2, 29.9))
print("")
# Now the opposite: Get a date from a DOY
t = Epoch.doy2date(2017, 365.7)
s = str(t[0]) + "/" + str(t[1]) + "/" + str(round(t[2], 2))
print_me("Date from DOY 2017:365.7", s)
t = Epoch.doy2date(-4, 60)
s = str(t[0]) + "/" + str(t[1]) + "/" + str(round(t[2], 2))
print_me("Date from DOY -4:60", s)
print("")
# There is an internal table which we can use to get the leap seconds
print_me("Number of leap seconds applied up to July 1983",
Epoch.leap_seconds(1983, 7))
print("")
# We can convert the internal JDE value back to a date
e = Epoch(2436116.31)
y, m, d = e.get_date()
s = str(y) + "/" + str(m) + "/" + str(round(d, 2))
print_me("Date from JDE 2436116.31", s)
print("")
# It is possible to get the day of the week corresponding to a given date
e = Epoch(2018, "Feb", 15)
print_me("The day of week of 2018/2/15 is", e.dow(as_string=True))
print("")
# In some cases it is useful to get the Modified Julian Day (MJD)
e = Epoch(1923, "August", 23)
print_me("Modified Julian Day for 1923/8/23", round(e.mjd(), 2))
print("")
# If your system is appropriately configured, you can get the difference in
# seconds between your local time and UTC
print_me(
"To convert from local system time to UTC you must add/subtract"
+ " this amount of seconds",
Epoch.utc2local(),
)
print("")
# Compute DeltaT = TT - UT differences for various dates
print_me("DeltaT (TT - UT) for Feb/333", round(Epoch.tt2ut(333, 2), 1))
print_me("DeltaT (TT - UT) for Jan/1642", round(Epoch.tt2ut(1642, 1), 1))
print_me("DeltaT (TT - UT) for Feb/1928", round(Epoch.tt2ut(1928, 1), 1))
print_me("DeltaT (TT - UT) for Feb/1977", round(Epoch.tt2ut(1977, 2), 1))
print_me("DeltaT (TT - UT) for Jan/1998", round(Epoch.tt2ut(1998, 1), 1))
print("")
# The difference between civil day and sidereal day is almost 4 minutes
e = Epoch(1987, 4, 10)
st1 = round(e.mean_sidereal_time(), 9)
e = Epoch(1987, 4, 11)
st2 = round(e.mean_sidereal_time(), 9)
ds = (st2 - st1) * DAY2MIN
msg = "{}m {}s".format(iint(ds), (ds % 1) * 60.0)
print_me("Difference between sidereal time 1987/4/11 and 1987/4/10", msg)
print("")
print(
"When correcting for nutation-related effects, we get the "
+ "'apparent' sidereal time:"
)
e = Epoch(1987, 4, 10)
print("e = Epoch(1987, 4, 10)")
print_me(
"e.apparent_sidereal_time(23.44357, (-3.788)/3600.0)",
e.apparent_sidereal_time(23.44357, (-3.788) / 3600.0),
)
# 0.549145082637
print("")
# Epoch class can also provide the date of Easter for a given year
# Let's spice up the output a little bit, calling dow() and get_month()
month, day = Epoch.easter(2019)
e = Epoch(2019, month, day)
s = (
e.dow(as_string=True)
+ ", "
+ str(day)
+ get_ordinal_suffix(day)
+ " of "
+ Epoch.get_month(month, as_string=True)
)
print_me("Easter day for 2019", s)
# I know Easter is always on Sunday, by the way... ;-)
print("")
# Compute the date of the Jewish Easter (Pesach) for a given year
month, day = Epoch.jewish_pesach(1990)
s = (
str(day)
+ get_ordinal_suffix(day)
+ " of "
+ Epoch.get_month(month, as_string=True)
)
print_me("Jewish Pesach day for 1990", s)
print("")
# Now, convert a date in the Moslem calendar to the Gregorian calendar
y, m, d = Epoch.moslem2gregorian(1421, 1, 1)
print_me("The date 1421/1/1 in the Moslem calendar is, in Gregorian " +
"calendar", "{}/{}/{}".format(y, m, d))
y, m, d = Epoch.moslem2gregorian(1439, 9, 1)
print_me(
"The start of Ramadan month (9/1) for Gregorian year 2018 is",
"{}/{}/{}".format(y, m, d),
)
# We can go from the Gregorian calendar back to the Moslem calendar too
print_me(
"Date 1991/8/13 in Gregorian calendar is, in Moslem calendar",
"{}/{}/{}".format(*Epoch.gregorian2moslem(1991, 8, 13)),
)
# Note: The '*' before 'Epoch' will _unpack_ the tuple into components
print("")
# It is possible to carry out some algebraic operations with Epochs
# Add 10000 days to a given date
a = Epoch(1991, 7, 11)
b = a + 10000
y, m, d = b.get_date()
s = str(y) + "/" + str(m) + "/" + str(round(d, 2))
print_me("1991/7/11 plus 10000 days is", s)
# Subtract two Epochs to find the number of days between them
a = Epoch(1986, 2, 9.0)
b = Epoch(1910, 4, 20.0)
print_me("The number of days between 1986/2/9 and 1910/4/20 is",
round(a - b, 2))
# We can also subtract a given amount of days from an Epoch
a = Epoch(2003, 12, 31.0)
b = a - 365.5
y, m, d = b.get_date()
s = str(y) + "/" + str(m) + "/" + str(round(d, 2))
print_me("2003/12/31 minus 365.5 days is", s)
# Accumulative addition and subtraction of days is also allowed
a = Epoch(2003, 12, 31.0)
a += 32.5
y, m, d = a.get_date()
s = str(y) + "/" + str(m) + "/" + str(round(d, 2))
print_me("2003/12/31 plus 32.5 days is", s)
a = Epoch(2001, 12, 31.0)
a -= 2 * 365
y, m, d = a.get_date()
s = str(y) + "/" + str(m) + "/" + str(round(d, 2))
print_me("2001/12/31 minus 2*365 days is", s)
# It is also possible to add days from the right
a = Epoch(2004, 2, 27.8)
b = 2.2 + a
y, m, d = b.get_date()
s = str(y) + "/" + str(m) + "/" + str(round(d, 2))
print_me("2004/2/27.8 plus 2.2 days is", s)
print("")
# Comparison operadors between epochs are also defined
a = Epoch(2007, 5, 20.0)
b = Epoch(2007, 5, 20.000001)
print_me("2007/5/20.0 == 2007/5/20.000001", a == b)
print_me("2007/5/20.0 != 2007/5/20.000001", a != b)
print_me("2007/5/20.0 > 2007/5/20.000001", a > b)
print_me("2007/5/20.0 <= 2007/5/20.000001", a <= b)
print("")
# Compute the time of rise and setting of the Sun in a given day
e = Epoch(2018, 5, 2)
print("On May 2nd, 2018, Sun rising/setting times in Munich were (UTC):")
latitude = Angle(48, 8, 0)
longitude = Angle(11, 34, 0)
altitude = 520.0
rising, setting = e.rise_set(latitude, longitude, altitude)
y, m, d, h, mi, s = rising.get_full_date()
print("Rising time: {}:{}".format(h, mi)) # 3:50
y, m, d, h, mi, s = setting.get_full_date()
print("Setting time: {}:{}".format(h, mi)) # 18:33
if __name__ == "__main__":
main()
pymeeus-0.3.6/pymeeus/Interpolation.py 0000664 0000000 0000000 00000066066 13555455377 0020140 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from math import sqrt, degrees
from pymeeus.base import TOL
from pymeeus.Angle import Angle
"""
.. module:: Interpolation
:synopsis: Basic interpolation routines
:license: GNU Lesser General Public License v3 (LGPLv3)
.. moduleauthor:: Dagoberto Salazar
"""
class Interpolation(object):
"""
Class Interpolation deals with finding intermediate values to those given
in a table.
Besides the basic interpolation, this class also provides methods to find
the extrema (maximum or minimum value) in a given interval (if present),
and it also has methods to find roots (the values of the argument 'x' for
which the function 'y' becomes zero).
Please note that it seems that Meeus uses the Bessel interpolation method
(Chapter 3). However, this class uses the Newton interpolation method
because it is (arguably) more flexible regarding the number of entries
provided in the interpolation table.
The constructor takes pairs of (x, y) values from the table of interest.
These pairs of values can be given as a sequence of int/floats, tuples,
lists or Angles. It is also possible to provide an Interpolation object to
the constructor in order to get a copy.
.. note:: When using Angles, be careful with the 360-to-0 discontinuity.
If a sequence of int, floats or Angles is given, the values in the odd
positions are considered to belong to the 'x' set, while the values in the
even positions belong to the 'y' set. If only one tuple or list is
provided, it is assumed that it is the 'y' set, and the 'x' set is build
from 0 onwards with steps of length 1.
Please keep in mind that a minimum of two data pairs are needed in order to
carry out any interpolation. If only one value pair is provided, a
ValueError exception will be raised.
"""
def __init__(self, *args):
"""Interpolation constructor.
This takes pairs of (x, y) values from the table of interest. These
pairs of values can be given as a sequence of int/floats, tuples, lists
or Angles. It is also possible to provide an Interpolation object to
the constructor in order to get a copy.
.. note:: When using Angles, be careful with the 360-to-0 discontinuity
If a sequence of int, floats or Angles is given, the values in the odd
positions are considered to belong to the 'x' set, while the values in
the even positions belong to the 'y' set. If only one tuple or list is
provided, it is assumed that it is the 'y' set, and the 'x' set is
build from 0 onwards with steps of length 1.
Please keep in mind that a minimum of two data pairs are needed in
order to carry out any interpolation. If only one value pair is
provided, a ValueError exception will be raised.
:param args: Input tabular values, or another Interpolation object.
:type args: int, float, list, tuple, :py:class:`Angle`,
:py:class:`Interpolation`
:returns: Interpolation object.
:rtype: :py:class:`Interpolation`
:raises: ValueError if not enough input data pairs are provided.
:raises: TypeError if input values are of wrong type.
>>> i = Interpolation([5, 3, 6, 1, 2, 4, 9], [10, 6, 12, 2, 4, 8])
>>> print(i._x)
[1, 2, 3, 4, 5, 6]
>>> print(i._y)
[2, 4, 6, 8, 10, 12]
>>> j = Interpolation([3, -8, 1, 12, 2, 5, 8])
>>> print(j._x)
[0, 1, 2, 3, 4, 5, 6]
>>> print(j._y)
[3, -8, 1, 12, 2, 5, 8]
>>> k = Interpolation(3, -8, 1, 12, 2, 5, 8)
>>> print(k._x)
[1, 2, 3]
>>> print(k._y)
[12, 5, -8]
"""
self._x = []
self._y = []
self._table = []
self._tol = TOL
self.set(*args) # Let's use 'set()' method to handle the setup
def _order_points(self):
"""Method to put the data points in ascending order w.r.t. 'x'."""
# Let's work with copies of the original lists
x = list(self._x)
y = list(self._y)
xnew = []
ynew = []
xmax = max(x) + 1.0
for _ in range(len(x)):
# Get the index of the minimum value
imin = x.index(min(x))
# Append the current minimum value to the new 'x' list
xnew.append(x[imin])
# Store the *position* of the current minimum value to new 'y' list
ynew.append(imin)
# The current minimum value will no longer be the minimum
x[imin] = xmax
# In the new 'y' list, substitute the positions by the real values
for i in range(len(x)):
ynew[i] = y[ynew[i]]
# Store the results in the corresponding fields
self._x = xnew
self._y = ynew
def set(self, *args):
"""Method used to define the value pairs of Interpolation object.
This takes pairs of (x, y) values from the table of interest. These
pairs of values can be given as a sequence of int/floats, tuples,
lists, or Angles. It is also possible to provide an Interpolation
object to this method in order to get a copy.
.. note:: When using Angles, be careful with the 360-to-0 discontinuity
If a sequence of int, floats or Angles is given, the values in the odd
positions are considered to belong to the 'x' set, while the values in
the even positions belong to the 'y' set. If only one tuple or list is
provided, it is assumed that it is the 'y' set, and the 'x' set is
build from 0 onwards with steps of length 1.
Please keep in mind that a minimum of two data pairs are needed in
order to carry out any interpolation. If only one value pair is
provided, a ValueError exception will be raised.
:param args: Input tabular values, or another Interpolation object.
:type args: int, float, list, tuple, :py:class:`Angle`
:returns: None.
:rtype: None
:raises: ValueError if not enough input data pairs are provided.
:raises: TypeError if input values are of wrong type.
>>> i = Interpolation()
>>> i.set([5, 3, 6, 1, 2, 4, 9], [10, 6, 12, 2, 4, 8])
>>> print(i._x)
[1, 2, 3, 4, 5, 6]
>>> print(i._y)
[2, 4, 6, 8, 10, 12]
>>> j = Interpolation()
>>> j.set([3, -8, 1, 12, 2, 5, 8])
>>> print(j._x)
[0, 1, 2, 3, 4, 5, 6]
>>> print(j._y)
[3, -8, 1, 12, 2, 5, 8]
>>> k = Interpolation(3, -8, 1, 12, 2, 5, 8)
>>> print(k._x)
[1, 2, 3]
>>> print(k._y)
[12, 5, -8]
>>> m = Interpolation(k)
>>> print(m._x)
[1, 2, 3]
>>> print(m._y)
[12, 5, -8]
"""
# Clean up the internal data tables
self._x = []
self._y = []
self._table = []
# If no arguments are given, return. Internal data tables are empty
if len(args) == 0:
return
# If we have only one argument, it can be a single value or tuple/list
elif len(args) == 1:
if isinstance(args[0], Interpolation): # Copy constructor
self._x = args[0]._x
self._y = args[0]._y
self._table = args[0]._table
self._tol = args[0]._tol
return
elif isinstance(args[0], (int, float, Angle)):
# Insuficient data to interpolate. Raise ValueError exception
raise ValueError("Invalid number of input values")
elif isinstance(args[0], (list, tuple)):
seq = args[0]
if len(seq) < 2:
raise ValueError("Invalid number of input values")
else:
# Read input values into 'y', and create 'x'
i = 0
for value in seq:
self._x.append(i)
self._y.append(value)
i += 1
else:
raise TypeError("Invalid input value")
elif len(args) == 2:
if isinstance(args[0], (int, float, Angle)) or isinstance(
args[1], (int, float, Angle)
):
# Insuficient data to interpolate. Raise ValueError exception
raise ValueError("Invalid number of input values")
elif isinstance(args[0], (list, tuple)) and isinstance(
args[1], (list, tuple)
):
x = args[0]
y = args[1]
# Check if they have the same length. If not, make them equal
length_min = min(len(x), len(y))
x = x[:length_min]
y = y[:length_min]
if len(x) < 2 or len(y) < 2:
raise ValueError("Invalid number of input values")
else:
# Read input values into 'x' and 'y'
for xval, yval in zip(x, y):
self._x.append(xval)
self._y.append(yval)
else:
raise TypeError("Invalid input value")
elif len(args) == 3:
# In this case, no combination of input values is valid
raise ValueError("Invalid number of input values")
else:
# If there is an odd number of arguments, drop the last one
if len(args) % 2 != 0:
args = args[:-1]
# Check that all the arguments are ints, floats or Angles
all_numbers = True
for arg in args:
all_numbers = (all_numbers and
isinstance(arg, (int, float, Angle)))
# If any of the values failed the test, raise an exception
if not all_numbers:
raise TypeError("Invalid input value")
# Now, extract the data: Odds are x's, evens are y's
for i in range(int(len(args) / 2.0)):
self._x.append(args[2 * i])
self._y.append(args[2 * i + 1])
# After self._x is found, confirm that x's are different to each other
for i in range(len(self._x) - 1):
for k in range(i + 1, len(self._x)):
if abs(self._x[i] - self._x[k]) < self._tol:
raise ValueError("Invalid input: Values in 'x' are equal")
# Order the data points if needed
self._order_points()
# Create table containing Newton coefficientes, only if values given
if len(self._x) > 0:
self._compute_table()
def __str__(self):
"""Method used when trying to print the object.
:returns: Internal tabular values as strings.
:rtype: string
>>> i = Interpolation([5, 3, 6, 1, 2, 4, 9], [10, 6, 12, 2, 4, 8])
>>> print(i)
X: [1, 2, 3, 4, 5, 6]
Y: [2, 4, 6, 8, 10, 12]
"""
xstr = "X: " + str(self._x) + "\n"
ystr = "Y: " + str(self._y)
return xstr + ystr
def __repr__(self):
"""Method providing the 'official' string representation of the object.
It provides a valid expression that could be used to recreate the
object.
:returns: As string with a valid expression to recreate the object
:rtype: string
>>> i = Interpolation([5, 3, 6, 1, 2, 4, 9], [10, 6, 12, 2, 4, 8])
>>> repr(i)
'Interpolation([1, 2, 3, 4, 5, 6], [2, 4, 6, 8, 10, 12])'
"""
return "{}({}, {})".format(self.__class__.__name__, self._x, self._y)
def __len__(self):
"""This method returns the number of interpolation points (x, y, pairs)
stored in this :class:`Interpolation` object.
:returns: Number of interpolation points internally stored
:rtype: int
>>> i = Interpolation([5, 3, 6, 1, 2, 4, 9], [10, 6, 12, 2, 4, 8])
>>> len(i)
6
"""
return len(self._x)
def get_tolerance(self):
"""Gets the internal tolerance value used for comparisons.
.. note:: The default tolerance value is TOL.
:returns: Internal tolerance.
:rtype: float
"""
return self._tol
def set_tolerance(self, tol):
"""Changes the internal tolerance value used for comparisons.
:param tol: New tolerance value.
:type tol: int, float
:returns: None
:rtype: None
"""
self._tol = tol
return
def _compute_table(self):
"""Method to compute coefficients of Newton interpolation method."""
for i in range(len(self._x)):
self._table.append(self._newton_diff(0, i))
def _newton_diff(self, start, end):
"""Auxiliary method to compute the elements of the Newton table.
:param start: Starting index
:type start: int
:param end: Ending index
:type end: int
:returns: Resulting value of the element of the Newton table.
:rtype: float
"""
if abs(end - start) < self._tol:
val = self._y[start]
else:
x = list(self._x) # Let's make a copy, just in case
val = (self._newton_diff(start, end - 1) -
self._newton_diff(start + 1, end)) / (x[start] - x[end])
return val
def __call__(self, x):
"""Method to interpolate the function at a given 'x'.
:param x: Point where the interpolation will be carried out.
:type x: int, float, :py:class:`Angle`
:returns: Resulting value of the interpolation.
:rtype: float
:raises: ValueError if input value is outside of interpolation range.
:raises: TypeError if input value is of wrong type.
>>> i = Interpolation([7, 8, 9], [0.884226, 0.877366, 0.870531])
>>> y = round(i(8.18125), 6)
>>> print(y)
0.876125
"""
# Check if input value is of correct type
if isinstance(x, (int, float, Angle)):
# Check if 'x' already belongs to the data table
for i in range(len(self._x)):
if abs(x - self._x[i]) < self._tol:
return self._y[i] # We don't need to look further
# Check if Newton coefficients table is not empty
if len(self._table) == 0:
raise RuntimeError("Internal table is empty. Use set().")
# Check that x is within interpolation table values
if x < self._x[0] or x > self._x[-1]:
raise ValueError("Input value outside of interpolation range.")
# Horner's method is used to efficiently compute the result
val = self._table[-1]
for i in range(len(self._table) - 1, 0, -1):
val = self._table[i - 1] + (x - self._x[i - 1]) * val
return val
else:
raise TypeError("Invalid input value")
def derivative(self, x):
"""Method to compute the derivative from interpolation polynomial.
:param x: Point where the interpolation derivative will be carried out.
:type x: int, float, :py:class:`Angle`
:returns: Resulting value of the interpolation derivative.
:rtype: float
:raises: ValueError if input value is outside of interpolation range.
:raises: TypeError if input value is of wrong type.
>>> m = Interpolation([-1.0, 0.0, 1.0], [-2.0, 3.0, 2.0])
>>> m.derivative(-1.0)
8.0
>>> m.derivative(0.5)
-1.0
"""
# Check if input value is of correct type
if isinstance(x, (int, float, Angle)):
# Check that x is within interpolation table values
if x < self._x[0] or x > self._x[-1]:
raise ValueError("Input value outside of interpolation range.")
# If we only have two interpolation points, derivative is simple
if len(self._x) == 2:
return (self._y[1] - self._y[0]) / (self._x[1] - self._x[0])
else:
res = self._table[1]
for k in range(len(self._table) - 1, 1, -1):
val = 0.0
for j in range(k):
s = 1.0
for i in range(k):
if i != j:
s *= x - self._x[i]
val += s
res += val * self._table[k]
return res
else:
raise TypeError("Invalid input value")
def root(self, xl=0, xh=0, max_iter=1000):
"""Method to find the root inside the [xl, xh] range.
This method applies, in principle, the Newton method to find the root;
however, if conditions are such that Newton method may not bei properly
behaving or converging, then it switches to the linear Interpolation
method.
If values xl, xh are not given, the limits of the interpolation table
values will be used.
.. note:: This method returns a ValueError exception if the
corresponding yl = f(xl) and yh = f(xh) values have the same sign.
In that case, the method assumes there is no root in the [xl, xh]
interval.
.. note:: If any of the xl, xh values is beyond the limits given by the
interpolation values, its value will be set to the corresponding
limit.
.. note:: If xl == xh (and not zero), a ValueError exception is raised.
.. note:: If the method doesn't converge within max_iter ierations,
then a ValueError exception is raised.
:param xl: Lower limit of interval where the root will be looked for.
:type xl: int, float, :py:class:`Angle`
:param xh: Higher limit of interval where the root will be looked for.
:type xh: int, float, :py:class:`Angle`
:param max_iter: Maximum number of iterations allowed.
:type max_iter: int
:returns: Root of the interpolated function within [xl, xh] interval.
:rtype: int, float, :py:class:`Angle`
:raises: ValueError if yl = f(xl), yh = f(xh) have same sign.
:raises: ValueError if xl == xh.
:raises: ValueError if maximum number of iterations is exceeded.
:raises: TypeError if input value is of wrong type.
>>> m = Interpolation([-1.0, 0.0, 1.0], [-2.0, 3.0, 2.0])
>>> round(m.root(), 8)
-0.72075922
"""
# Get the limits of the interpolation table
xmin = self._x[0]
xmax = self._x[-1]
# Check if input value is of correct type
if (isinstance(xl, (int, float, Angle)) and
isinstance(xh, (int, float, Angle))):
# Check if BOTH values are zero
if xl == 0 and xh == 0:
xl = xmin
xh = xmax
# Check if limits are equal
if abs(xl - xh) < self._tol:
raise ValueError("Invalid limits: xl and xh values are equal")
# Put limits in order. Swap them if necessary
if xl > xh:
xl, xh = xh, xl
# Check limits against interpolation table. Reset if necessary
if xl < self._x[0]:
xl = xmin
if xh < self._x[-1]:
xh = xmax
yl = self.__call__(xl)
yh = self.__call__(xh)
# Check for a couple special cases
if abs(yl) < self._tol:
return xl # xl is a root
if abs(yh) < self._tol:
return xh # xh is a root
# Check if signs of ordinates are the same
if (yl * yh) > 0.0:
raise ValueError("Invalid interval: Probably no root exists")
# We are good to go. First option: Newton's root-finding method
x = (xl + xh) / 2.0 # Start in the middle of interval
y = self.__call__(x)
num_iter = 0 # Count the number of iterations
while abs(y) > self._tol:
if num_iter >= max_iter:
raise ValueError(
"Too many iterations: Probably no root\
exists"
)
num_iter += 1
yp = self.derivative(x)
# If derivative is too small, switch to linear interpolation
if abs(yp) < 1e-3:
x = (xl * yh - xh * yl) / (yh - yl)
y = self.__call__(x)
else:
x = x - y / yp
# Check if x is within limits
if x < xmin or x > xmax:
# Switch to linear interpolation
x = (xl * yh - xh * yl) / (yh - yl)
y = self.__call__(x)
else:
y = self.__call__(x)
if (y * yl) >= 0.0:
xl = x
yl = y
else:
xh = x
yh = y
return x
else:
raise TypeError("Invalid input value")
def minmax(self, xl=0, xh=0, max_iter=1000):
"""Method to find the minimum or maximum inside the [xl, xh] range.
Finding the minimum or maximum (extremum) of a function within a given
interval is akin to find the root of its derivative. Therefore, this
method creates an interpolation object for the derivative function, and
calls the root method of that object. See :meth:`root` method for more
details.
If values xl, xh are not given, the limits of the interpolation table
values will be used.
.. note::
This method returns a ValueError exception if the corresponding
derivatives yl' = f'(xl) and yh' = f'(xh) values have the same sign.
In that case, the method assumes there is no extremum in the
[xl, xh] interval.
.. note::
If any of the xl, xh values is beyond the limits given by the
interpolation values, its value will be set to the corresponding
limit.
.. note:: If xl == xh (and not zero), a ValueError exception is raised.
.. note:: If the method doesn't converge within max_iter ierations,
then a ValueError exception is raised.
:param xl: Lower limit of interval where a extremum will be looked for.
:type xl: int, float, :py:class:`Angle`
:param xh: Higher limit of interval where extremum will be looked for.
:type xh: int, float, :py:class:`Angle`
:param max_iter: Maximum number of iterations allowed.
:type max_iter: int
:returns: Extremum of interpolated function within [xl, xh] interval.
:rtype: int, float, :py:class:`Angle`
:raises: ValueError if yl = f(xl), yh = f(xh) have same sign.
:raises: ValueError if xl == xh.
:raises: ValueError if maximum number of iterations is exceeded.
:raises: TypeError if input value is of wrong type.
>>> m = Interpolation([-1.0, 0.0, 1.0], [-2.0, 3.0, 2.0])
>>> round(m.minmax(), 8)
0.33333333
"""
# Compute the derivatives for the current data
x = list(self._x)
y = []
for xi in x:
y.append(self.derivative(xi))
# Create a new Interpolation object
prime = Interpolation(x, y)
# Find the root within that object, and return it
return prime.root(xl, xh, max_iter)
def main():
# Let's define a small helper function
def print_me(msg, val):
print("{}: {}".format(msg, val))
# Let's now work with the Interpolation class
print("\n" + 35 * "*")
print("*** Use of Interpolation class")
print(35 * "*" + "\n")
i = Interpolation([5, 3, 6, 1, 2, 4, 9], [10, 6, 12, 2, 4, 8])
print("i = Interpolation([5, 3, 6, 1, 2, 4, 9], [10, 6, 12, 2, 4, 8])")
print(i)
print("NOTE:")
print(" a. They are ordered in 'x'")
print(" b. The extra value in 'x' was dropped")
print("")
# Use the copy constructor
print("We can easily make a copy of an Interpolation object")
j = Interpolation(i)
print("j = Interpolation(i)")
print(j)
print("")
# Get the number of interpolation points stored
print_me("Number or interpolation points in 'j'", len(j)) # 6
print("")
j = Interpolation([0.0, 1.0, 3.0], [-1.0, -2.0, 2.0])
print("j = Interpolation([0.0, 1.0, 3.0], [-1.0, -2.0, 2.0])")
print(j)
print_me("j(2)", j(2))
print_me("j(0.5)", j(0.5))
# Test with a value already in the data table
print_me("j(1)", j(1))
print("")
# We can interpolate Angles too
k = Interpolation(
[27.0, 27.5, 28.0, 28.5, 29.0],
[
Angle(0, 54, 36.125),
Angle(0, 54, 24.606),
Angle(0, 54, 15.486),
Angle(0, 54, 8.694),
Angle(0, 54, 4.133),
],
)
print(
"k = Interpolation([27.0, 27.5, 28.0, 28.5, 29.0],\n\
[Angle(0, 54, 36.125), Angle(0, 54, 24.606),\n\
Angle(0, 54, 15.486), Angle(0, 54, 8.694),\n\
Angle(0, 54, 4.133)])"
)
print_me("k(28.278)", Angle(k(28.278)).dms_str())
print("")
m = Interpolation([-1.0, 0.0, 1.0], [-2.0, 3.0, 2.0])
print("m = Interpolation([-1.0, 0.0, 1.0], [-2.0, 3.0, 2.0])")
print(m)
# Get interpolated values
print_me("m(-0.5)", m(-0.5))
print_me("m(0.5)", m(0.5))
# Get derivatives
print_me("m'(-1.0)", m.derivative(-1.0))
print_me("m'(-0.5)", m.derivative(-0.5))
print_me("m'(0.0)", m.derivative(0.0))
print_me("m'(0.5)", m.derivative(0.5))
print_me("m'(1.0)", m.derivative(1.0))
# Get the root within the interval
print_me("m.root()", m.root())
# Get the extremum within the interval
print_me("m.minmax()", m.minmax())
m = Interpolation(
[29.43, 30.97, 27.69, 28.11, 31.58, 33.05],
[
0.4913598528,
0.5145891926,
0.4646875083,
0.4711658342,
0.5236885653,
0.5453707057,
],
)
print_me("sin(29.5)\t", m(29.5))
print_me("sin(30.0)\t", m(30.0))
print_me("sin(30.5)\t", m(30.5))
# Derivative must be adjusted because degrees were used instead of radians
print_me("sin'(29.5)\t", degrees(m.derivative(29.5)))
print_me("sin'(30.0)\t", degrees(m.derivative(30.0)))
print_me("sqrt(3.0)/2.0\t", sqrt(3.0) / 2.0)
print_me("sin'(30.5)\t", degrees(m.derivative(30.5)))
if __name__ == "__main__":
main()
pymeeus-0.3.6/pymeeus/Jupiter.py 0000664 0000000 0000000 00000611404 13555455377 0016723 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from math import sin, cos, tan, acos, atan2, sqrt, radians, log10
from pymeeus.Angle import Angle
from pymeeus.Epoch import Epoch, JDE2000
from pymeeus.Interpolation import Interpolation
from pymeeus.Coordinates import (
geometric_vsop_pos, apparent_vsop_pos, orbital_elements,
nutation_longitude, true_obliquity, ecliptical2equatorial,
passage_nodes_elliptic
)
from pymeeus.Earth import Earth
from pymeeus.Sun import Sun
"""
.. module:: Jupiter
:synopsis: Class to model Jupiter planet
:license: GNU Lesser General Public License v3 (LGPLv3)
.. moduleauthor:: Dagoberto Salazar
"""
VSOP87_L = [
# L0
[
[59954691.495, 0.00000000000, 0.00000000000],
[9695898.711, 5.06191793105, 529.69096509460],
[573610.145, 1.44406205976, 7.11354700080],
[306389.180, 5.41734729976, 1059.38193018920],
[97178.280, 4.14264708819, 632.78373931320],
[72903.096, 3.64042909255, 522.57741809380],
[64263.986, 3.41145185203, 103.09277421860],
[39806.051, 2.29376744855, 419.48464387520],
[38857.780, 1.27231724860, 316.39186965660],
[27964.622, 1.78454589485, 536.80451209540],
[13589.738, 5.77481031590, 1589.07289528380],
[8246.362, 3.58227961655, 206.18554843720],
[8768.686, 3.63000324417, 949.17560896980],
[7368.057, 5.08101125612, 735.87651353180],
[6263.171, 0.02497643742, 213.29909543800],
[6114.050, 4.51319531666, 1162.47470440780],
[4905.419, 1.32084631684, 110.20632121940],
[5305.283, 1.30671236848, 14.22709400160],
[5305.457, 4.18625053495, 1052.26838318840],
[4647.249, 4.69958109497, 3.93215326310],
[3045.009, 4.31675960318, 426.59819087600],
[2610.001, 1.56667594850, 846.08283475120],
[2028.191, 1.06376547379, 3.18139373770],
[1764.768, 2.14148077766, 1066.49547719000],
[1722.983, 3.88036008872, 1265.56747862640],
[1920.959, 0.97168928755, 639.89728631400],
[1633.217, 3.58201089758, 515.46387109300],
[1431.997, 4.29683690269, 625.67019231240],
[973.278, 4.09764957065, 95.97922721780],
[884.439, 2.43701426123, 412.37109687440],
[732.875, 6.08534113239, 838.96928775040],
[731.072, 3.80591233956, 1581.95934828300],
[691.928, 6.13368222939, 2118.76386037840],
[709.190, 1.29272573658, 742.99006053260],
[614.464, 4.10853496756, 1478.86657406440],
[495.224, 3.75567461379, 323.50541665740],
[581.902, 4.53967717552, 309.27832265580],
[375.657, 4.70299124833, 1368.66025284500],
[389.864, 4.89716105852, 1692.16566950240],
[341.006, 5.71452525783, 533.62311835770],
[330.458, 4.74049819491, 0.04818410980],
[440.854, 2.95818460943, 454.90936652730],
[417.266, 1.03554430161, 2.44768055480],
[244.170, 5.22020878900, 728.76296653100],
[261.540, 1.87652461032, 0.96320784650],
[256.568, 3.72410724159, 199.07200143640],
[261.009, 0.82047246448, 380.12776796000],
[220.382, 1.65115015995, 543.91805909620],
[201.996, 1.80684574186, 1375.77379984580],
[207.327, 1.85461666594, 525.75881183150],
[197.046, 5.29252149016, 1155.36115740700],
[235.141, 1.22693908124, 909.81873305460],
[174.809, 5.90973505276, 956.28915597060],
[149.368, 4.37745104275, 1685.05212250160],
[175.184, 3.22634903433, 1898.35121793960],
[175.191, 3.72966554761, 942.06206196900],
[157.909, 4.36483921766, 1795.25844372100],
[137.871, 1.31797920785, 1169.58825140860],
[117.495, 2.50022140890, 1596.18644228460],
[150.502, 3.90625022622, 74.78159856730],
[116.757, 3.38920921041, 0.52126486180],
[105.895, 4.55439798236, 526.50957135690],
[130.531, 4.16867945489, 1045.15483618760],
[141.445, 3.13568357861, 491.55792945680],
[99.511, 1.42117395747, 532.87235883230],
[96.137, 1.18156870005, 117.31986822020],
[91.758, 0.85756633461, 1272.68102562720],
[87.695, 1.21738140813, 453.42489381900],
[68.507, 2.35242959478, 2.92076130680],
[66.098, 5.34386149468, 1471.75302706360],
[77.401, 4.42676337124, 39.35687591520],
[72.006, 4.23834923691, 2111.65031337760],
[63.406, 4.97665525033, 0.75075952540],
[59.427, 4.11130498612, 2001.44399215820],
[62.481, 0.51211384012, 220.41264243880],
[66.532, 2.98864358135, 2214.74308759620],
[60.194, 4.12628179571, 4.19278569400],
[56.012, 1.15493222602, 21.34064100240],
[52.854, 0.91207215543, 10.29494073850],
[70.297, 5.14180555282, 835.03713448730],
[51.916, 4.10048180020, 1258.45393162560],
[46.442, 4.66531163524, 5.62907429250],
[58.190, 5.86646380344, 5753.38488489680],
[40.103, 4.68801114087, 0.16005869440],
[46.654, 4.79394835282, 305.34616939270],
[39.298, 4.25448423697, 853.19638175200],
[46.042, 5.10983515150, 4.66586644600],
[54.459, 1.57072704127, 983.11585891360],
[38.920, 6.07592905580, 518.64526483070],
[38.450, 2.43836870888, 433.71173787680],
[46.800, 3.54640538283, 5.41662597140],
[41.830, 4.67982493646, 302.16477565500],
[35.920, 2.45088036239, 430.53034413910],
[37.888, 0.21127448431, 2648.45482547300],
[39.190, 1.71835571629, 11.04570026390],
[37.567, 6.19481310233, 831.85574074960],
[35.828, 4.61459907698, 2008.55753915900],
[43.402, 0.14992289081, 528.20649238630],
[31.598, 5.14073450755, 1788.14489672020],
[29.849, 5.34441117167, 2221.85663459700],
[32.811, 5.28907118836, 88.86568021700],
[27.686, 1.85227036207, 0.21244832110],
[25.820, 3.85920882494, 2317.83586181480],
[24.705, 2.63495214991, 114.13847448250],
[33.844, 1.00563073268, 9683.59458111640],
[24.266, 3.82355417268, 1574.84580128220],
[27.111, 2.80845435102, 18.15924726470],
[26.837, 1.77586123775, 532.13864564940],
[26.064, 2.74361318804, 2531.13495725280],
[30.765, 0.42330537728, 1.48447270830],
[30.476, 3.66677894407, 508.35032409220],
[23.282, 3.24372142416, 984.60033162190],
[19.445, 0.52370214471, 14.97785352700],
[19.332, 4.86314494382, 1361.54670584420],
[22.910, 3.84914895064, 2428.04218303420],
[21.617, 6.01696940024, 1063.31408345230],
[20.155, 5.59582008789, 527.24328453980],
[23.732, 2.52766031921, 494.26624244250],
[20.189, 1.01560227681, 628.85158605010],
[15.994, 5.09003530653, 529.73914920440],
[16.134, 5.27095037302, 142.44965013380],
[20.697, 4.03443281612, 355.74874557180],
[21.479, 1.28668134295, 35.42472265210],
[14.964, 4.86039684390, 2104.53676637680],
[17.242, 1.59187913206, 1439.50969814920],
[15.994, 1.89222417794, 529.64278098480],
[17.958, 4.30178016003, 6.15033915430],
[13.279, 2.18943981644, 1055.44977692610],
[14.148, 2.71597731671, 0.26063243090],
[14.689, 0.87944553412, 99.16062095550],
[14.202, 2.41335693735, 530.65417294110],
[15.320, 6.07703092728, 149.56319713460],
[15.832, 4.11682440678, 636.71589257630],
[12.398, 2.61042299578, 405.25754987360],
[16.199, 2.77035044582, 760.25553592000],
[13.665, 3.56039678310, 217.23124870110],
[15.261, 2.81824770887, 621.73803904930],
[14.681, 6.26423732742, 569.04784100980],
[12.529, 1.39077179081, 7.06536289100],
[11.677, 3.60447374272, 2634.22773147140],
[11.603, 4.60461756191, 7.16173111060],
[12.152, 0.24540531919, 1485.98012106520],
[11.347, 2.00818458261, 1073.60902419080],
[11.242, 2.48000947870, 423.41679713830],
[10.942, 5.03602448252, 458.84151979040],
[11.117, 4.04973271023, 519.39602435610],
[12.256, 4.30153222783, 604.47256366190],
[13.149, 2.72189077702, 1364.72809958190],
[10.604, 3.11518747072, 1.27202438720],
[9.874, 1.70200068743, 1699.27921650320],
[10.851, 5.08554552028, 2324.94940881560],
[10.692, 2.51401681528, 2847.52682690940],
[12.640, 4.75572797691, 528.72775724810],
[10.084, 4.05599810206, 38.13303563780],
[11.536, 2.35034215745, 643.82943957710],
[10.247, 3.63479911496, 2744.43405269080],
[10.105, 3.65845333837, 107.02492748170],
[10.121, 1.31482648275, 1905.46476494040],
[9.341, 5.92176693887, 1148.24761040620],
[8.796, 2.77421822809, 6.59228213900],
[8.420, 4.52537756809, 1677.93857550080],
[10.128, 2.09034472544, 511.53171782990],
[8.272, 2.98682673354, 540.73666535850],
[9.753, 1.22438911827, 32.24332891440],
[10.630, 2.07777800288, 92.04707395470],
[7.850, 0.98996894618, 408.43894361130],
[8.811, 3.46911754939, 1021.24889455140],
[7.946, 2.86682926070, 2125.87740737920],
[8.575, 5.29590411702, 415.55249061210],
[7.841, 6.08025056721, 70.84944530420],
[7.706, 1.69832954219, 8.07675484730],
[7.265, 4.65503563919, 629.60234557550],
[7.164, 4.93400217968, 1056.20053645150],
[7.247, 4.61607677560, 2420.92863603340],
[7.753, 2.12871653382, 33.94024994380],
[6.645, 0.45647460873, 635.96513305090],
[9.377, 4.03158388202, 2810.92146160520],
[8.263, 1.23558676139, 1802.37199072180],
[6.341, 0.07278001580, 202.25339517410],
[6.383, 3.54310669809, 1891.23767093880],
[7.902, 2.32510002614, 230.56457082540],
[6.214, 4.54560345237, 2.70831298570],
[7.347, 1.24457237337, 24.37902238820],
[7.451, 3.02719199239, 330.61896365820],
[6.220, 1.77687561489, 1062.56332392690],
[5.674, 5.14132196367, 746.92221379570],
[5.855, 5.42130172896, 28.31117565130],
[5.629, 3.24348217277, 529.16970023280],
[7.652, 0.52813391052, 672.14061522840],
[5.456, 3.34716871364, 2950.61960112800],
[7.127, 1.43497795005, 6.21977512350],
[5.388, 4.90175095580, 69.15252427480],
[5.618, 4.97903783721, 2641.34127847220],
[5.844, 2.95364118152, 490.33408917940],
[4.943, 5.37597740579, 721.64941953020],
[5.062, 4.84282906467, 31.01948863700],
[5.163, 5.07410777073, 67.66805156650],
[4.739, 6.10248862834, 106.27416795630],
[4.879, 0.07095292379, 78.71375183040],
[4.854, 5.63875661096, 1.69692102940],
[5.629, 3.73871604865, 530.21222995640],
[4.471, 4.49152882547, 505.31194270640],
[4.313, 4.79369370451, 535.10759106600],
[4.280, 0.54783823710, 1.43628859850],
[4.453, 0.50551854591, 524.06189080210],
[4.936, 4.82992988255, 422.66603761290],
[4.701, 3.41634869046, 3060.82592234740],
[4.261, 2.67044686458, 561.93429400900],
[4.156, 4.00660658688, 99.91138048090],
[4.561, 2.29650164054, 3163.91869656600],
[4.414, 5.67224020329, 1464.63948006280],
[5.345, 0.31513851830, 1289.94650101460],
[5.269, 3.89116469022, 191.95845443560],
[3.855, 4.28942301453, 1994.33044515740],
[4.210, 5.32763589447, 2538.24850425360],
[3.949, 4.56507101172, 1382.88734684660],
[3.885, 1.56778786810, 647.01083331480],
[4.227, 5.51697599030, 5223.69391980220],
[4.129, 2.81119457666, 416.30325013750],
[3.663, 4.35187510477, 2737.32050569000],
[3.566, 5.48243943375, 750.10360753340],
[4.330, 0.84941756640, 531.17543780290],
[4.093, 0.19980340452, 525.02509864860],
[4.022, 1.92293311337, 1512.80682400820],
[3.400, 6.00302355875, 1.22384027740],
[3.496, 0.31252921473, 597.35901666110],
[3.299, 4.27596694481, 526.77020378780],
[3.226, 2.90455264496, 963.40270297140],
[3.150, 3.81061764181, 280.96714700450],
[4.129, 4.74946631331, 0.89377187730],
[3.840, 1.91064405186, 378.64329525170],
[3.057, 1.65589659685, 528.94020556920],
[3.011, 1.59276337369, 224.34479570190],
[3.196, 5.86588452873, 4.14460158420],
[3.628, 0.07930225897, 558.00214074590],
[2.932, 0.41424445089, 7.86430652620],
[3.316, 2.70211697795, 532.61172640140],
[2.925, 4.47580363425, 533.88375078860],
[3.690, 0.39897023849, 685.47393735270],
[3.223, 2.45833032883, 960.22130923370],
[3.059, 5.32616140812, 530.44172462000],
[3.383, 4.42170370028, 312.45971639350],
[3.320, 2.71417812514, 495.75071515080],
[2.697, 5.23146633437, 739.80866679490],
[3.590, 2.30999595873, 908.33426034630],
[3.677, 5.07337955976, 73.29712585900],
[2.618, 3.09118499149, 3267.01147078460],
[2.796, 2.98942316119, 483.22054217860],
[3.398, 3.29598270278, 911.30320576290],
[3.352, 1.44391979336, 593.42686339800],
[2.563, 3.35080110279, 2207.62954059540],
[2.553, 0.36892288645, 1048.33622992530],
[2.620, 3.82769874340, 520.12973753900],
[3.356, 1.08315053878, 46.47042291600],
[3.035, 5.52230028113, 618.55664531160],
[3.397, 3.83084746522, 210.11770170030],
[2.497, 0.47917884538, 945.24345570670],
[2.341, 5.87941292649, 2751.54759969160],
[2.656, 0.49713061045, 1057.89745748090],
[2.581, 0.03759881914, 1.64453140270],
[2.900, 2.50019054587, 525.49817940060],
[3.153, 2.30900986177, 457.61767951300],
[2.201, 3.94367109739, 31.49256938900],
[2.381, 6.19252134885, 327.43756992050],
[2.458, 0.65614291954, 9153.90361602180],
[2.111, 5.61905648764, 16.46232623530],
[2.130, 3.75880734109, 724.83081326790],
[2.406, 2.29315649755, 195.13984817330],
[2.166, 5.43262641046, 534.35683154060],
[2.057, 1.49875151278, 551.03160609700],
[2.676, 5.06374981112, 456.39383923560],
[2.078, 5.28920097886, 76.26607127560],
[2.261, 5.38117230692, 1781.03134971940],
[2.356, 0.67392574097, 227.52618943960],
[2.240, 3.18006978517, 3377.21779200400],
[2.183, 3.08384250950, 524.27433912320],
[2.119, 2.70107659927, 387.24131496080],
[2.056, 4.82779196994, 2957.73314812880],
[2.116, 6.20263841494, 209.36694217490],
[2.712, 3.18157754631, 1474.67378837040],
[2.127, 1.24424012514, 539.98590583310],
[2.424, 3.57595925853, 953.10776223290],
[1.947, 1.94468082546, 529.53090640020],
[1.896, 4.01406242800, 2310.72231481400],
[1.935, 4.10051493950, 3053.71237534660],
[2.056, 6.27074148550, 245.54242435240],
[2.108, 3.22886474225, 252.65597135320],
[2.596, 2.77467278614, 177.87437278590],
[1.919, 3.14834694111, 381.61224066830],
[2.217, 1.92368906925, 535.91074021810],
[1.947, 5.03751780002, 529.85102378900],
[2.025, 4.82814272957, 17.26547538740],
[1.945, 2.10611582568, 3480.31056622260],
[1.899, 0.05104263891, 560.71045373160],
[2.221, 0.58365090630, 3178.14579056760],
[2.271, 1.67360565619, 731.94436026870],
[1.706, 5.40277333462, 20.44686912510],
[2.295, 4.20863103004, 1038.04128918680],
[2.218, 3.65982280555, 282.45161971280],
[2.181, 4.87369503022, 535.32003938710],
[1.745, 1.34021867874, 25.12978191360],
[1.601, 3.92730015840, 17.52610781830],
[1.651, 0.63598292839, 17.40848773930],
[1.826, 0.31592311031, 124.43341522100],
[2.041, 0.15617294873, 598.84348936940],
[1.494, 3.81418025130, 319.57326339430],
[1.551, 5.25201528605, 437.64389113990],
[1.852, 2.36130812462, 37.87240320690],
[1.466, 1.72926380881, 59.80374504030],
[1.417, 5.82273267086, 81.75213321620],
[1.430, 1.17528806260, 440.82528487760],
[1.906, 4.06896022692, 1819.63746610920],
[1.397, 0.26383366743, 50.40257617910],
[1.756, 2.32977483716, 938.12990870590],
[1.487, 2.24866746540, 10.03430830760],
[1.368, 3.56691602771, 1514.29129671650],
[1.400, 4.84502200703, 295.05122865420],
[1.344, 2.20177702122, 529.90341341570],
[1.464, 1.42648716568, 1158.54255114470],
[1.341, 1.15693423225, 2435.15573003500],
[1.786, 5.44716330146, 2854.64037391020],
[1.677, 6.22875777048, 833.55266177900],
[1.471, 4.80574535807, 696.51963761660],
[1.436, 1.45810957330, 537.76771994190],
[1.657, 0.02890651793, 138.51749687070],
[1.300, 3.14074420421, 547.85021235930],
[1.343, 6.14827138025, 988.53248488500],
[1.344, 4.78042160426, 529.47851677350],
[1.234, 2.83294330979, 3583.40334044120],
[1.651, 2.12056447005, 1061.82961074400],
[1.479, 0.24646493075, 1593.00504854690],
[1.413, 3.07444632745, 6283.07584999140],
[1.246, 5.94882321661, 1056.93424963440],
[1.225, 1.95642397635, 1969.20066324380],
[1.388, 2.87749576073, 1023.95720753710],
[1.263, 3.46181945031, 40.84134862350],
[1.325, 4.15429781246, 916.93228005540],
[1.477, 5.26691818477, 810.65811209910],
[1.165, 4.65528125418, 944.98282327580],
[1.137, 2.48561382158, 2.00573757010],
[1.118, 3.80747957482, 7.00167241620],
[1.138, 5.11611532241, 885.43971066640],
[1.131, 1.54599459004, 775.23338944700],
[1.477, 4.69742954455, 630.33605875840],
[1.252, 1.34316620527, 739.05790726950],
[1.273, 5.19070939905, 2097.42321937600],
[1.446, 5.54999644374, 43.28902917830],
[1.344, 4.75897665313, 1166.40685767090],
[1.101, 4.56997613488, 3274.12501778540],
[1.376, 3.60998729004, 415.29185818120],
[1.437, 6.22410093972, 155.78297225810],
[1.167, 4.09497264272, 203.00415469950],
[1.237, 4.41132627005, 292.01284726840],
[1.077, 2.57045229823, 25.27279426550],
[1.341, 0.49262296655, 635.23141986800],
[1.209, 3.36289125536, 521.61421024730],
[1.030, 1.81822316284, 465.95506679120],
[1.002, 3.21720955284, 2524.02141025200],
[1.338, 1.26054917773, 902.70518605380],
[1.037, 3.87858871885, 3370.10424500320],
[1.224, 0.09219976028, 824.74219374880],
[1.255, 3.04675952762, 447.79581952650],
[0.991, 4.16587903812, 632.83192342300],
[0.975, 3.80216680539, 2627.11418447060],
[1.061, 5.60184374277, 732.69511979410],
[1.049, 2.94931080683, 3693.60966166060],
[0.984, 0.98260254313, 632.73555520340],
[1.050, 2.20935815967, 7.22542158540],
[0.996, 5.41921062583, 1059.43011429900],
[0.961, 0.87315283361, 544.66881862160],
[1.175, 3.09093466406, 1894.41906467650],
[1.049, 5.81616384906, 26.82670294300],
[1.161, 0.01274801567, 850.01498801430],
[1.109, 3.63294273717, 306.83064210100],
[1.077, 0.95716576092, 608.40471692500],
[1.288, 4.23019288942, 1215.16490244730],
[1.060, 3.85856787901, 631.82053146670],
[1.251, 6.15889818604, 462.02291352810],
[1.165, 3.50653563773, 8.59801970910],
[0.933, 4.62559759882, 1049.08698945070],
[1.035, 1.30805283339, 633.74694715970],
[1.238, 2.21195391602, 25558.21217647960],
[1.240, 2.27960685992, 6.90109867970],
[0.942, 4.14526324371, 945.99421523210],
[0.927, 6.10893117637, 514.71311156760],
[0.914, 6.17656044376, 952.35700270750],
[0.893, 4.27448748055, 0.63313944640],
[1.045, 1.64682770236, 565.11568774670],
[0.903, 1.94250156640, 3796.70243587920],
[1.162, 5.51229668479, 2.96894541660],
[0.901, 3.03568112112, 460.53844081980],
[0.903, 2.24012822393, 523.54062594030],
[1.060, 5.28027224466, 3171.03224356680],
[1.064, 0.99330150801, 320.32402291970],
[0.970, 4.56607888439, 429.04587143080],
[1.071, 4.33203090957, 610.69233878540],
[0.865, 0.21831429230, 1098.73880610440],
[0.865, 2.82123742108, 1060.34513803570],
[0.882, 4.80076824948, 384.05992122310],
[0.959, 5.45468005818, 451.94042111070],
[1.042, 5.79270325150, 303.86169668440],
[0.784, 1.85150700827, 313.21047591890],
[1.083, 1.40526460812, 72.07328558160],
[0.782, 3.03559242565, 5.84152261360],
[0.854, 1.22236205478, 611.44309831080],
[0.996, 2.22139794743, 1059.33374607940],
[0.719, 4.92550252164, 421.93232443000],
[0.953, 3.98347050083, 836.52160719560],
[0.822, 4.49679856387, 10213.28554621100],
[0.707, 2.16473400319, 2228.97018159780],
[0.715, 4.62515255534, 385.54439393140],
[0.737, 4.63776694324, 1134.16352875650],
[0.730, 1.87179326186, 153.49535039770],
[0.709, 2.93132115910, 417.03696332040],
[0.926, 1.77006317007, 2332.06295581640],
[0.864, 3.03246275970, 1041.22268292450],
[0.708, 6.01601101389, 395.10562148700],
[0.935, 6.01864676296, 173.94221952280],
[0.695, 1.39408383356, 432.01481684740],
[0.687, 3.06548397586, 529.95159752550],
[0.677, 3.58357527210, 244.31858407500],
[0.850, 5.46114025921, 41.05379694460],
[0.817, 4.65315342412, 535.84130424890],
[0.652, 0.44173759183, 1201.83158032300],
[0.711, 0.96283289310, 373.01422095920],
[0.665, 1.03244633471, 623.22251175760],
[0.643, 5.05335060049, 522.62560220360],
[0.639, 4.22718483639, 25.86349509650],
[0.718, 5.07576900710, 1058.41872234270],
[0.664, 2.43728454444, 1585.14074202070],
[0.833, 1.49468440213, 563.63121503840],
[0.760, 4.34849823663, 100.64509366380],
[0.633, 4.31796718640, 3590.51688744200],
[0.629, 6.23431126402, 679.25416222920],
[0.617, 2.68075016456, 3899.79521009780],
[0.646, 2.88581188015, 13.49338081870],
[0.768, 3.18498076120, 1151.42900414390],
[0.731, 5.86653168561, 501.37978944330],
[0.652, 0.82865771780, 2015.67108615980],
[0.796, 5.36663489938, 420.96911658350],
[0.647, 4.74965662438, 567.82400073240],
[0.845, 1.69406147722, 1744.85586754190],
[0.802, 5.79824707751, 981.63138620530],
[0.764, 5.05232933368, 827.92358748650],
[0.604, 5.11265182908, 1159.29331067010],
[0.682, 3.68248136835, 2281.23049651060],
[0.740, 0.74512356954, 1261.63532536330],
[0.666, 2.06624389616, 27.08733537390],
[0.652, 4.92932795958, 2413.81508903260],
[0.559, 0.17558868481, 63.73589830340],
[0.577, 3.82752312276, 1550.93985964600],
[0.727, 1.05835550856, 490.07345674850],
[0.574, 3.61492119092, 3686.49611465980],
[0.732, 5.93179840659, 42.53826965290],
[0.606, 2.71411884300, 1173.52040467170],
[0.633, 4.21720828607, 166.82867252200],
[0.687, 3.91671464962, 529.43033266370],
[0.570, 2.73551750122, 4010.00153131720],
[0.552, 2.36967119362, 1603.29998928540],
[0.600, 1.82659364395, 522.52923398400],
[0.558, 5.09099246601, 1354.43315884340],
[0.519, 6.11952999304, 366.79444583570],
[0.719, 0.85722557905, 362.86229257260],
[0.518, 2.03954064144, 418.52143602870],
[0.515, 3.51750445111, 528.41894070740],
[0.515, 3.47930063838, 103.14095832840],
[0.550, 5.77676837730, 420.44785172170],
[0.702, 3.67952126446, 1279.79457262800],
[0.550, 0.61451088395, 104.05598206510],
[0.495, 2.41738205536, 179.35884549420],
[0.513, 0.29823688044, 103.04459010880],
[0.537, 5.47946238724, 771.30123618390],
[0.507, 3.08777345288, 1357.61455258110],
[0.495, 4.95362659160, 536.85269620520],
[0.681, 4.56294416261, 112.65400177420],
[0.500, 3.15631977489, 1070.42763045310],
[0.484, 0.79038835602, 28.45418800320],
[0.529, 5.46978501034, 419.43645976540],
[0.597, 4.98058295172, 1251.34038462480],
[0.492, 3.96066546484, 1269.49963188950],
[0.482, 3.60167662490, 2943.50605412720],
[0.630, 6.16496640092, 105.54045477340],
[0.480, 0.86786400621, 35.21227433100],
[0.516, 5.97528782923, 3067.93946934820],
[0.586, 5.48467997697, 56.62235130260],
[0.502, 1.43671788959, 469.88722005430],
[0.473, 2.28007170041, 2042.49778910280],
[0.565, 1.90952569252, 107.28555991260],
[0.452, 3.13938145287, 934.94851496820],
[0.605, 1.65413715574, 761.74000862830],
[0.443, 5.46282223686, 135.33610313300],
[0.580, 2.06327501551, 493.04240216510],
[0.540, 1.73777995970, 536.75632798560],
[0.432, 0.27167052107, 93.53154666300],
[0.515, 3.46469417437, 530.96298948180],
[0.440, 5.28884782489, 497.44763618020],
[0.487, 5.78767525063, 12036.46073488820],
[0.452, 2.57855172248, 1254.52177836250],
[0.427, 3.21032629463, 2840.41327990860],
[0.414, 1.54298025443, 115.62294719080],
[0.424, 0.12699448931, 1268.74887236410],
[0.411, 3.12424023238, 536.28324723360],
[0.452, 1.00194596383, 113.38771495710],
[0.419, 0.81834479225, 1165.65609814550],
[0.490, 4.72785081986, 277.03499374140],
[0.434, 0.36146539146, 1304.92435454160],
[0.401, 5.70326543719, 1127.04998175570],
[0.461, 3.26462894820, 102.12956637210],
[0.533, 2.54951615753, 141.22580985640],
[0.413, 4.38801694479, 6151.53388830500],
[0.415, 1.68861617902, 391.17346822390],
[0.385, 1.69092319074, 4113.09430553580],
[0.450, 5.49339192735, 602.98809095360],
[0.499, 3.80738617353, 81.00137369080],
[0.454, 0.10952919733, 600.54041039880],
[0.377, 6.25375060718, 913.75088631770],
[0.453, 3.86104865567, 758.77106321170],
[0.401, 4.44475618337, 990.22940591440],
[0.407, 5.13442416563, 3487.42411322340],
[0.435, 3.76103358490, 523.09868295560],
[0.425, 3.22287851959, 2655.56837247380],
[0.365, 5.16456645463, 4694.00295470760],
[0.454, 1.63325197950, 976.00231191280],
[0.406, 2.72102389267, 1438.02522544090],
[0.349, 3.59598366422, 1058.86066532740],
[0.354, 0.62136331420, 498.67147645760],
[0.383, 5.09229089574, 539.25219265020],
[0.380, 3.92653231573, 561.18353448360],
[0.339, 4.12175871949, 3906.90875709860],
[0.458, 3.42556794767, 121.25202148330],
[0.427, 3.61285264910, 860.30992875280],
[0.424, 4.72757252331, 1366.21257229020],
[0.328, 4.55286002816, 1696.09782276550],
[0.324, 4.23685005210, 642.34496686880],
[0.395, 3.26282558955, 484.44438245600],
[0.330, 6.05223507989, 215.74677599280],
[0.318, 2.02072800070, 2964.84669512960],
[0.417, 0.20173093597, 842.90144101350],
[0.408, 0.45800247268, 1578.02719501990],
[0.342, 6.15347077985, 1371.84164658270],
[0.310, 1.97259286255, 754.03576079650],
[0.340, 2.77813018312, 3.52311834900],
[0.333, 2.91352254678, 576.16138801060],
[0.324, 0.32544817254, 586.31331639720],
[0.302, 2.08708848849, 526.98265210890],
[0.363, 4.70567113230, 2730.20695868920],
[0.300, 0.94464473068, 1432.39615114840],
[0.352, 5.75013621801, 806.72595883600],
[0.296, 3.97807312133, 2043.98226181110],
[0.295, 2.35257797599, 4216.18707975440],
[0.309, 2.49768755925, 4326.39340097380],
[0.306, 3.35876843257, 2424.11002977110],
[0.300, 4.94288858368, 1379.70595310890],
[0.336, 4.49193455535, 1585.89150154610],
[0.402, 2.04684001796, 842.15068148810],
[0.312, 4.59043534747, 188.92007304980],
[0.346, 5.19792097706, 523.47118997110],
[0.380, 1.67961600066, 36.64856292950],
[0.338, 1.32014513725, 148.07872442630],
[0.391, 4.82224015188, 1012.91150727320],
[0.285, 3.43655052437, 1053.96530421780],
[0.332, 2.02575636311, 1091.62525910360],
[0.282, 5.78865321890, 1064.04779663520],
[0.282, 0.39153852422, 207.67002114550],
[0.280, 3.80196391678, 298.23262239190],
[0.387, 6.26819309990, 1141.13406340540],
[0.349, 4.09121908199, 1059.90319505100],
[0.320, 0.39871942000, 2122.69601364150],
[0.327, 4.76503823073, 134.58534360760],
[0.283, 3.90409016441, 127.47179660680],
[0.301, 4.30291951219, 299.12639426920],
[0.322, 2.48251052680, 1065.60170531270],
[0.297, 2.40814103509, 1591.52057583860],
[0.286, 5.85849626574, 172.24529849340],
[0.285, 4.55845472479, 1446.62324515000],
[0.270, 4.08342186112, 1578.77795454530],
[0.362, 1.06148806683, 181.80652604900],
[0.335, 4.51094500655, 2349.32843120380],
[0.347, 0.62281394535, 1542.60247236780],
[0.275, 3.38473403113, 4002.88798431640],
[0.255, 1.52357936497, 1688.23351623930],
[0.276, 4.32192160071, 1912.57831194120],
[0.253, 2.40482338279, 97.67614824720],
[0.248, 4.45058246237, 1688.98427576470],
[0.300, 3.07435583442, 1902.28337120270],
[0.257, 4.79180478086, 1670.82502850000],
[0.319, 1.34244222683, 1288.46202830630],
[0.245, 4.01852686769, 1567.73225428140],
[0.278, 0.25406312148, 874.39401040250],
[0.324, 5.57824969423, 1670.07426897460],
[0.300, 4.67161812947, 1329.30337692980],
[0.241, 0.01789818312, 1586.62521472900],
[0.295, 5.86996114913, 2804.23779773110],
[0.317, 3.17967272487, 1020.02505427400],
[0.238, 4.97765946754, 351.81659230870],
[0.302, 1.20236375616, 232.04904353370],
[0.301, 5.53432687957, 2274.54683263650],
[0.286, 2.41008592059, 2545.36205125440],
[0.294, 2.01783542485, 313.94418910180],
[0.292, 2.12690999284, 1592.25428902150],
[0.250, 2.31712163679, 632.26247445140],
[0.238, 5.06557054569, 3803.81598288000],
[0.226, 0.05916712753, 1518.22344997960],
[0.235, 0.16574304942, 137.03302416240],
[0.298, 2.99720233431, 1467.82087380050],
[0.286, 5.08357076653, 774.00954916960],
[0.246, 2.81685822336, 633.30500417500],
[0.269, 4.93023426152, 151.04766984290],
[0.228, 6.13118739321, 3281.23856478620],
[0.228, 1.22066024988, 700.45179087970],
[0.239, 0.71695698501, 1276.61317889030],
[0.289, 6.08263862565, 3384.33133900480],
[0.218, 2.90308501961, 85.82729883120],
[0.283, 6.28058228271, 71.81265315070],
[0.271, 6.01605074549, 170.76082578510],
[0.221, 0.99914179141, 1053.75285589670],
[0.218, 1.50681393471, 1087.69310584050],
[0.223, 3.39126063354, 3259.89792378380],
[0.229, 1.19373202707, 1060.86640289750],
[0.264, 3.93467945263, 1363.24362687360],
[0.228, 5.04188376116, 1064.79855616060],
[0.295, 2.15253086390, 6386.16862421000],
[0.214, 3.85961180377, 4223.30062675520],
[0.218, 0.79681703388, 1909.39691820350],
[0.212, 4.11706418218, 269.92144674060],
[0.264, 5.81676406517, 77.96299230500],
[0.256, 5.65978708108, 799.61241183520],
[0.242, 6.25078283449, 1621.31622419820],
[0.235, 2.20668997852, 1570.91364801910],
[0.212, 2.88214546012, 1674.00642223770],
[0.206, 1.59586787037, 4429.48617519240],
[0.208, 2.31366614282, 878.32616366560],
[0.213, 0.30373338388, 8624.21265092720],
[0.223, 4.88419887133, 1035.00290780100],
[0.279, 3.65173543621, 84.93352695390],
[0.210, 4.08825553401, 203.73786788240],
[0.214, 4.63498396475, 812.14258480740],
[0.258, 1.73501688450, 1887.30551767570],
[0.210, 4.51798082710, 1262.38608488870],
[0.252, 5.69246905091, 104.57724692690],
[0.205, 4.62946016431, 1056.46116888240],
[0.263, 3.04951219565, 1493.09366806600],
[0.222, 5.54424082649, 5216.58037280140],
[0.244, 0.91026645686, 3707.83675566220],
[0.204, 0.90117975859, 1408.01712876020],
[0.225, 1.23997048012, 3340.61242669980],
[0.258, 2.35906183505, 2861.75392091100],
[0.267, 3.27705002283, 5120.60114558360],
[0.214, 0.66988779149, 9146.79006902100],
[0.235, 4.93761209111, 1443.44185141230],
[0.194, 1.60798828275, 102.57150935680],
[0.215, 0.97603524747, 479.28838891550],
[0.205, 5.23642605904, 4649.89881763120],
[0.257, 4.70227260707, 9050.81084180320],
[0.228, 6.23410921116, 64.95973858080],
[0.180, 4.21309134581, 143.93412284210],
[0.180, 4.82870451226, 1063.57471588320],
[0.180, 5.06126965624, 52.69019803950],
[0.226, 0.55334952097, 554.06998748280],
[0.209, 5.67975843693, 48.75804477640],
[0.186, 3.66368928017, 108.72184851110],
[0.190, 2.00852986549, 1058.63117066380],
[0.183, 3.17358464220, 140.96517742550],
[0.198, 5.49816579454, 4333.50694797460],
[0.240, 6.06602357868, 1821.12193881750],
[0.172, 3.04802064781, 54.33472944220],
[0.170, 4.66520291204, 1372.59240610810],
[0.173, 4.72884056307, 77204.32749453338],
[0.174, 0.85370421252, 1587.58842257550],
[0.215, 0.68219980704, 1054.71606374320],
[0.170, 1.52204803308, 5591.96087960020],
[0.200, 1.60275092073, 6681.22485339960],
[0.193, 2.13003479280, 103.61403908040],
[0.231, 4.69962389031, 1966.23171782720],
[0.179, 5.57395905447, 1457.52593306200],
[0.205, 3.65507571128, 906.84978763800],
[0.181, 4.52272934666, 24498.83024629040],
[0.223, 0.11650319998, 67.88049988760],
[0.172, 5.68083885227, 1884.12412393800],
[0.219, 0.60964963735, 2729.45619916380],
[0.164, 1.06675279755, 594.65070367540],
[0.176, 2.36848603898, 977.48678462110],
[0.170, 2.43036684800, 4532.57894941100],
[0.191, 3.64255924842, 1440.99417085750],
[0.207, 0.49276008455, 71.60020482960],
[0.157, 4.26888100582, 5069.38346150640],
[0.157, 5.14847227422, 451.72797278960],
[0.158, 5.00063628575, 650.94298657790],
[0.159, 5.37530499642, 20426.57109242200],
[0.218, 0.27875408082, 175.16605980020],
[0.155, 0.83696849428, 1474.93442080130],
[0.154, 2.62839957291, 683.18631549230],
[0.171, 1.79511736017, 1123.11782849260],
[0.188, 5.24747110812, 25565.32572348040],
[0.168, 4.14907553818, 946.72792841500],
[0.203, 2.83699715530, 1489.91227432830],
[0.173, 4.34546063838, 3046.59882834580],
[0.190, 5.67865607835, 1060.13268971460],
[0.201, 2.38524182920, 419.53282798500],
[0.152, 5.89088685790, 208.63322899200],
[0.206, 4.46933127349, 2654.67460059650],
[0.156, 2.37819796438, 2758.66114669240],
[0.203, 0.70565514297, 498.19839570560],
[0.205, 3.05468636546, 1062.30269149600],
[0.174, 3.50824761708, 2004.36475346500],
[0.148, 4.73961194393, 1799.19059698410],
[0.188, 3.62315953725, 3156.80514956520],
[0.183, 2.35011338194, 25551.09862947879],
[0.162, 1.58053710589, 628.59095361920],
[0.162, 3.99983876824, 1482.79872732750],
[0.181, 2.85489861839, 1055.18914449520],
[0.151, 3.43198157222, 629.86297800640],
[0.157, 3.15195826490, 1025.44168024540],
[0.194, 5.13049187783, 1818.15299340090],
[0.193, 1.92287052164, 1140.38330388000],
[0.137, 4.22335221970, 1049.82070263360],
[0.167, 2.85163087563, 5746.27133789600],
[0.167, 5.73970282991, 5760.49843189760],
[0.138, 2.23519776527, 1176.70179840940],
[0.151, 4.89507270899, 532.39927808030],
[0.147, 2.65931838448, 987.30864460760],
[0.135, 0.12836417770, 991.71387862270],
[0.166, 3.12682515439, 580.09354127370],
[0.118, 5.98810576300, 531.38788612400],
[0.135, 5.26601313643, 1065.01100448170],
[0.138, 3.18511244397, 707.56533788050],
[0.122, 1.34377059565, 446.31134681820],
[0.120, 2.29717714347, 1059.22187149480],
[0.121, 0.58145552537, 5621.84292321040],
[0.103, 4.75645235023, 1226.21060271120],
[0.104, 6.08481630139, 528.25467649610],
[0.119, 1.06475523307, 527.99404406520],
[0.104, 0.89730746841, 531.12725369310],
[0.120, 5.39001411803, 1059.54198888360],
[0.104, 0.44849170648, 1128.53445446400],
[0.117, 5.42449214711, 986.08480433020],
[0.101, 5.09893554462, 530.58473697190],
[0.102, 0.26948040239, 450.97721326420],
[0.107, 1.58724086516, 1069.67687092770],
[0.086, 2.28711702506, 2498.89162833840],
[0.101, 1.88318822518, 528.79719321730],
[0.086, 1.37568728263, 970.51624997220],
[0.083, 0.06930748288, 530.91480537200],
[0.085, 3.22094000094, 1553.64817263170],
[0.083, 0.62963097974, 528.46712481720],
[0.083, 4.16314675511, 849.26422848890],
[0.079, 3.46688102340, 1077.54117745390],
[0.097, 0.87886975916, 9690.70812811720],
[0.097, 4.27398311206, 9676.48103411560],
[0.101, 0.29639798579, 857.12853501510],
[0.083, 2.55427333923, 1059.59437851030],
[0.078, 0.06461496210, 521.82665856840],
[0.078, 0.76677000862, 525.54636351040],
[0.096, 0.33631035749, 1090.40141882620],
[0.098, 1.42815294497, 757.21715453420],
[0.077, 0.85066773729, 537.55527162080],
[0.084, 5.04765104413, 1160.02702385300],
[0.076, 3.62264327413, 782.34693644780],
[0.085, 1.86831145784, 25028.52121138500],
[0.079, 2.90602202890, 2114.83170711530],
],
# L1
[
[52993480757.497, 0.00000000000, 0.00000000000],
[489741.194, 4.22066689928, 529.69096509460],
[228918.538, 6.02647464016, 7.11354700080],
[27655.380, 4.57265956824, 1059.38193018920],
[20720.943, 5.45938936295, 522.57741809380],
[12105.732, 0.16985765041, 536.80451209540],
[6068.051, 4.42419502005, 103.09277421860],
[5433.924, 3.98478382565, 419.48464387520],
[4237.795, 5.89009351271, 14.22709400160],
[2211.854, 5.26771446618, 206.18554843720],
[1295.769, 5.55132765087, 3.18139373770],
[1745.919, 4.92669378486, 1589.07289528380],
[1163.411, 0.51450895328, 3.93215326310],
[1007.216, 0.46478398551, 735.87651353180],
[1173.129, 5.85647304350, 1052.26838318840],
[847.678, 5.75805850450, 110.20632121940],
[827.329, 4.80312015734, 213.29909543800],
[1003.574, 3.15040301822, 426.59819087600],
[1098.735, 5.30704981594, 515.46387109300],
[816.397, 0.58643054886, 1066.49547719000],
[725.447, 5.51827471473, 639.89728631400],
[567.845, 5.98867049451, 625.67019231240],
[474.181, 4.13245269168, 412.37109687440],
[412.930, 5.73652891261, 95.97922721780],
[335.817, 3.73248749046, 1162.47470440780],
[345.249, 4.24159565410, 632.78373931320],
[234.066, 6.24302226646, 309.27832265580],
[194.784, 2.21879010911, 323.50541665740],
[234.340, 4.03469970332, 949.17560896980],
[183.938, 6.27963588822, 543.91805909620],
[198.525, 1.50458442825, 838.96928775040],
[186.899, 6.08620565908, 742.99006053260],
[171.380, 5.41655983845, 199.07200143640],
[130.771, 0.62643377351, 728.76296653100],
[107.575, 4.49282760117, 956.28915597060],
[115.393, 0.68019050174, 846.08283475120],
[115.047, 5.28641699144, 2118.76386037840],
[66.824, 5.73365126533, 21.34064100240],
[69.618, 5.97263450278, 532.87235883230],
[64.850, 6.08803490288, 1581.95934828300],
[79.686, 5.82412400273, 1045.15483618760],
[57.939, 0.99453087342, 1596.18644228460],
[65.635, 0.12924191430, 526.50957135690],
[58.509, 0.58626971028, 1155.36115740700],
[56.600, 1.41198438841, 533.62311835770],
[71.643, 5.34162650321, 942.06206196900],
[57.368, 5.96851304799, 1169.58825140860],
[54.935, 5.42806383723, 10.29494073850],
[52.016, 0.22981299129, 1368.66025284500],
[52.309, 5.72661448388, 117.31986822020],
[50.418, 6.08075147811, 525.75881183150],
[47.418, 3.62611843241, 1478.86657406440],
[39.888, 4.16158013600, 1692.16566950240],
[46.678, 0.51144073175, 1265.56747862640],
[32.827, 5.03596689455, 220.41264243880],
[33.558, 0.09913904872, 302.16477565500],
[29.379, 3.35927241533, 4.66586644600],
[29.307, 0.75907909735, 88.86568021700],
[32.449, 5.37492530697, 508.35032409220],
[29.483, 5.42208897099, 1272.68102562720],
[21.802, 6.15054054070, 1685.05212250160],
[25.195, 1.60723063387, 831.85574074960],
[21.133, 5.86346824200, 1258.45393162560],
[19.747, 2.17205957814, 316.39186965660],
[17.871, 0.82841413516, 433.71173787680],
[17.703, 5.95527049039, 5.41662597140],
[17.230, 2.76395560958, 853.19638175200],
[17.453, 0.70749901224, 1471.75302706360],
[17.508, 0.49799925173, 1375.77379984580],
[14.368, 0.91459831140, 18.15924726470],
[14.107, 0.63031082833, 2.92076130680],
[11.559, 4.30379009964, 405.25754987360],
[11.728, 1.76426582357, 380.12776796000],
[11.054, 5.56735602213, 1574.84580128220],
[10.425, 0.31355034390, 1361.54670584420],
[9.804, 5.90363777277, 519.39602435610],
[9.805, 0.38648727979, 1073.60902419080],
[9.285, 3.21842287530, 1795.25844372100],
[8.864, 0.53776257958, 1788.14489672020],
[8.370, 5.88484552222, 2001.44399215820],
[8.148, 5.10162311410, 1485.98012106520],
[7.658, 5.64890060131, 2648.45482547300],
[6.690, 2.41093459420, 4.19278569400],
[5.840, 4.22347896053, 2008.55753915900],
[7.256, 6.19384525651, 11.04570026390],
[6.266, 1.36137786945, 1148.24761040620],
[5.141, 5.23083932012, 628.85158605010],
[5.140, 2.92955981951, 518.64526483070],
[4.765, 0.16838181862, 629.60234557550],
[4.603, 0.78529559911, 721.64941953020],
[4.575, 6.24794935732, 1677.93857550080],
[4.537, 4.95096707833, 635.96513305090],
[4.518, 2.06523915453, 453.42489381900],
[4.414, 0.15381186059, 1699.27921650320],
[5.593, 5.57489981207, 191.95845443560],
[5.403, 1.46004886198, 330.61896365820],
[4.285, 0.23949868127, 2104.53676637680],
[4.223, 1.44087555881, 2125.87740737920],
[4.101, 6.19274358942, 636.71589257630],
[4.432, 4.35811524051, 423.41679713830],
[4.132, 0.50170694173, 1056.20053645150],
[4.398, 4.14280286969, 511.53171782990],
[5.406, 4.40429493698, 2221.85663459700],
[4.467, 0.08534650684, 1062.56332392690],
[3.569, 5.66540477010, 2317.83586181480],
[4.007, 2.54845549248, 74.78159856730],
[3.515, 0.25495124831, 1055.44977692610],
[3.687, 2.93378008847, 32.24332891440],
[2.883, 5.72793010505, 99.91138048090],
[2.969, 5.50054720569, 107.02492748170],
[2.720, 1.25222590925, 540.73666535850],
[2.808, 3.30714813896, 0.75075952540],
[2.768, 1.61339487804, 1063.31408345230],
[2.666, 4.28662288102, 106.27416795630],
[2.704, 3.03615556153, 422.66603761290],
[3.290, 5.89081682150, 1802.37199072180],
[2.578, 3.60390367979, 750.10360753340],
[2.661, 0.35249312659, 1898.35121793960],
[2.486, 5.28950877719, 1891.23767093880],
[2.936, 1.09052029450, 1464.63948006280],
[3.190, 4.60740643547, 416.30325013750],
[2.390, 6.01779736611, 551.03160609700],
[2.214, 5.24450923180, 621.73803904930],
[2.319, 5.82920300130, 305.34616939270],
[2.089, 5.99310370434, 1994.33044515740],
[2.042, 0.75008788531, 142.44965013380],
[2.121, 0.01537599023, 2420.92863603340],
[2.114, 6.25308371567, 647.01083331480],
[2.020, 4.17560390841, 569.04784100980],
[2.109, 5.18682321403, 227.52618943960],
[2.283, 5.80043809222, 539.98590583310],
[1.977, 3.99197009651, 24.37902238820],
[1.960, 1.35288793079, 963.40270297140],
[1.903, 2.78349628184, 2428.04218303420],
[1.915, 4.22134509685, 2324.94940881560],
[1.971, 5.88715684267, 217.23124870110],
[1.917, 3.03728154374, 1382.88734684660],
[2.026, 3.08606488714, 408.43894361130],
[1.834, 5.61474110217, 430.53034413910],
[1.838, 1.25467410218, 81.75213321620],
[2.460, 4.63268678998, 1905.46476494040],
[1.820, 5.97497926120, 114.13847448250],
[2.043, 4.34047514845, 70.84944530420],
[1.959, 4.03116026306, 92.04707395470],
[1.768, 0.33097462499, 35.42472265210],
[2.334, 5.87042638470, 1038.04128918680],
[1.835, 4.81326127892, 124.43341522100],
[2.269, 1.02549350754, 618.55664531160],
[1.919, 5.01297395549, 99.16062095550],
[1.923, 0.28688549585, 31.01948863700],
[1.878, 5.69299116574, 210.11770170030],
[1.679, 0.25635730278, 295.05122865420],
[1.656, 5.46039280732, 2634.22773147140],
[1.675, 6.15609073315, 643.82943957710],
[1.953, 5.09846435548, 17.40848773930],
[1.539, 2.75316078346, 415.55249061210],
[1.467, 0.54812675158, 458.84151979040],
[1.482, 3.76736278426, 534.35683154060],
[1.446, 3.15802770791, 25.12978191360],
[1.667, 0.26406950755, 835.03713448730],
[1.472, 0.83054329617, 28.31117565130],
[1.655, 0.88908548504, 1781.03134971940],
[1.294, 5.76241191046, 440.82528487760],
[1.348, 2.49823510924, 984.60033162190],
[1.352, 5.10869562455, 149.56319713460],
[1.344, 0.01942249067, 2214.74308759620],
[1.188, 2.24279457878, 31.49256938900],
[1.166, 0.80686346228, 739.80866679490],
[1.322, 4.25691184168, 2538.24850425360],
[1.094, 6.02985819406, 2737.32050569000],
[1.112, 4.38204360670, 561.93429400900],
[1.346, 3.20575848870, 525.02509864860],
[1.056, 5.76507115032, 2310.72231481400],
[1.159, 0.46189564970, 67.66805156650],
[1.027, 0.20709586018, 7.86430652620],
[1.143, 5.56626418636, 46.47042291600],
[1.012, 0.54293005597, 532.13864564940],
[0.978, 5.13939194101, 2207.62954059540],
[0.993, 2.03698185233, 319.57326339430],
[1.035, 2.90231353535, 611.44309831080],
[1.021, 4.75651217048, 527.24328453980],
[1.308, 1.78809336431, 824.74219374880],
[0.964, 2.82269601958, 2111.65031337760],
[0.896, 2.54505998806, 2744.43405269080],
[0.890, 5.41036782817, 28.45418800320],
[0.906, 0.76565238554, 1439.50969814920],
[0.985, 0.88687623770, 5760.49843189760],
[0.983, 1.42102343372, 5746.27133789600],
[0.892, 5.87250060663, 203.00415469950],
[0.942, 2.31049430734, 9690.70812811720],
[0.941, 2.84331157527, 9676.48103411560],
[0.867, 0.81020362547, 524.27433912320],
[0.829, 2.35178495412, 312.45971639350],
[0.912, 2.80494184378, 6.21977512350],
[0.809, 1.05148218513, 529.64278098480],
[0.779, 4.80009242059, 945.24345570670],
[0.878, 5.76532521399, 1.64453140270],
[0.953, 4.30945738629, 209.36694217490],
[0.772, 5.25607113566, 2950.61960112800],
[0.745, 0.03810558502, 535.10759106600],
[0.744, 0.58381523987, 25.27279426550],
[0.734, 0.20800485100, 1049.08698945070],
[0.747, 2.71772840871, 38.13303563780],
[0.728, 5.97210358938, 945.99421523210],
[0.769, 4.51394016967, 952.35700270750],
[0.710, 0.38016353553, 69.15252427480],
[0.760, 3.07033779824, 39.35687591520],
[0.802, 1.14191463412, 532.61172640140],
[0.704, 1.25447308120, 547.85021235930],
[0.721, 0.73855379162, 2228.97018159780],
[0.794, 4.25051539085, 2641.34127847220],
[0.795, 3.20588363820, 604.47256366190],
[0.818, 1.05229815343, 909.81873305460],
[0.724, 5.68281830264, 953.10776223290],
[0.836, 0.60410469174, 2097.42321937600],
[0.669, 5.75757140051, 2015.67108615980],
[0.682, 1.19994890339, 387.24131496080],
[0.640, 3.91546675664, 528.72775724810],
[0.809, 4.24929331276, 529.73914920440],
[0.819, 4.91540072376, 2751.54759969160],
[0.692, 2.51162384766, 916.93228005540],
[0.784, 4.23651511312, 195.13984817330],
[0.762, 1.12201139619, 732.69511979410],
[0.617, 5.80920925081, 739.05790726950],
[0.727, 4.24401822698, 760.25553592000],
[0.591, 3.26075006572, 202.25339517410],
[0.552, 5.83533550039, 526.77020378780],
[0.640, 1.38530872949, 530.65417294110],
[0.577, 6.09100925678, 2531.13495725280],
[0.620, 3.01917904435, 902.70518605380],
[0.722, 5.18171159557, 1.48447270830],
[0.540, 3.78809230820, 2957.73314812880],
[0.523, 3.63882376000, 437.64389113990],
[0.527, 5.80796427555, 3053.71237534660],
[0.488, 4.99103190309, 483.22054217860],
[0.557, 4.11381202161, 2854.64037391020],
[0.492, 0.76371083106, 1603.29998928540],
[0.487, 5.55383951779, 2627.11418447060],
[0.487, 5.86510858429, 724.83081326790],
[0.453, 0.61375011101, 1159.29331067010],
[0.450, 2.28121042355, 3060.82592234740],
[0.515, 4.78126059280, 447.79581952650],
[0.449, 4.70231576312, 934.94851496820],
[0.450, 1.91049508739, 597.35901666110],
[0.438, 6.01178917646, 3178.14579056760],
[0.494, 0.53844942275, 1354.43315884340],
[0.501, 5.51752195462, 2435.15573003500],
[0.432, 3.64903264921, 313.21047591890],
[0.435, 3.02449828967, 533.88375078860],
[0.426, 5.07945534339, 2524.02141025200],
[0.491, 3.59286364200, 230.56457082540],
[0.547, 0.34432090949, 1251.34038462480],
[0.503, 1.57454509207, 454.90936652730],
[0.486, 4.39351469958, 462.02291352810],
[0.524, 2.03003740296, 1279.79457262800],
[0.388, 5.58318013074, 731.94436026870],
[0.449, 1.11025492739, 56.62235130260],
[0.398, 5.19943284273, 3267.01147078460],
[0.416, 1.70821917336, 245.54242435240],
[0.379, 1.80234948769, 2655.56837247380],
[0.355, 1.65214516751, 78.71375183040],
[0.404, 1.72647262603, 1141.13406340540],
[0.335, 6.01254286794, 960.22130923370],
[0.331, 1.74086938716, 490.33408917940],
[0.401, 0.30034336462, 2332.06295581640],
[0.336, 2.64385574909, 1021.24889455140],
[0.389, 0.31259289221, 2413.81508903260],
[0.314, 5.73833529708, 1158.54255114470],
[0.313, 4.74363791106, 938.12990870590],
[0.333, 0.80112437148, 1585.14074202070],
[0.323, 3.52656245280, 3274.12501778540],
[0.395, 1.73181407631, 1593.00504854690],
[0.302, 4.64184749164, 1261.63532536330],
[0.325, 0.54991590409, 43.28902917830],
[0.293, 0.97977818746, 1585.89150154610],
[0.341, 2.80833606944, 1514.29129671650],
[0.304, 6.12522825214, 1262.38608488870],
[0.286, 2.89800423081, 530.21222995640],
[0.387, 0.46648572639, 1592.25428902150],
[0.285, 4.56394598052, 1268.74887236410],
[0.310, 4.69102289591, 76.26607127560],
[0.278, 5.49867187248, 280.96714700450],
[0.358, 5.45926487831, 113.38771495710],
[0.283, 1.09230506350, 1061.82961074400],
[0.326, 0.60265259639, 827.92358748650],
[0.284, 5.36580034539, 1165.65609814550],
[0.281, 5.54635461050, 3370.10424500320],
[0.269, 3.92616563946, 42.53826965290],
[0.275, 2.58465453365, 373.01422095920],
[0.357, 1.39391983207, 1493.09366806600],
[0.258, 5.96670694140, 1269.49963188950],
[0.259, 2.56026216784, 9146.79006902100],
[0.281, 2.74823090198, 4694.00295470760],
[0.281, 3.01324655940, 320.32402291970],
[0.272, 4.18504958920, 8624.21265092720],
[0.245, 1.24462798353, 252.65597135320],
[0.244, 2.02892764690, 3377.21779200400],
[0.324, 1.84851618413, 1289.94650101460],
[0.221, 6.22167997496, 3281.23856478620],
[0.238, 3.93371505401, 3171.03224356680],
[0.226, 5.94296271326, 224.34479570190],
[0.213, 3.68264234750, 1048.33622992530],
[0.216, 5.82941334164, 1567.73225428140],
[0.295, 4.70194747095, 3067.93946934820],
[0.206, 4.98184230959, 1357.61455258110],
[0.202, 1.32439444045, 4326.39340097380],
[0.227, 0.78540105705, 59.80374504030],
[0.237, 5.56926897693, 2943.50605412720],
[0.207, 0.07907015398, 5223.69391980220],
[0.199, 3.30501818656, 4120.20785253660],
[0.194, 5.95526916809, 84.93352695390],
[0.266, 1.58032565718, 983.11585891360],
[0.198, 4.31078641704, 4017.11507831800],
[0.198, 0.30166351366, 1166.40685767090],
[0.188, 0.90738705875, 135.33610313300],
[0.186, 0.69289672485, 92.79783348010],
[0.182, 1.18931462257, 1512.80682400820],
[0.191, 1.04146023518, 1884.12412393800],
[0.174, 6.13734594396, 3597.63043444280],
[0.189, 0.35191512844, 1372.59240610810],
[0.172, 4.35250972697, 1578.02719501990],
[0.173, 2.30241719278, 1176.70179840940],
[0.220, 1.06991056825, 2200.51599359460],
[0.186, 4.90511103807, 3583.40334044120],
[0.189, 0.24160744024, 1670.82502850000],
[0.206, 0.01485146863, 2730.20695868920],
[0.174, 1.83997277029, 746.92221379570],
[0.225, 3.13108099660, 630.33605875840],
[0.206, 5.22730929781, 3995.77443731560],
[0.169, 2.57956682688, 9161.01716302260],
[0.165, 1.51795928301, 4010.00153131720],
[0.181, 2.05055200822, 842.90144101350],
[0.181, 5.96554625357, 1578.77795454530],
[0.166, 1.55114863100, 1070.42763045310],
[0.157, 5.87839958880, 3914.02230409940],
[0.160, 0.43729819176, 2545.36205125440],
[0.168, 5.73975661792, 2847.52682690940],
[0.157, 2.25764581068, 850.01498801430],
[0.187, 0.64918748618, 842.15068148810],
[0.180, 1.88055488803, 685.47393735270],
[0.153, 4.15259684562, 4333.50694797460],
[0.154, 3.65536637158, 77734.01845962799],
[0.151, 3.17795437121, 3590.51688744200],
[0.155, 3.87623547990, 327.43756992050],
[0.171, 3.33647878498, 1912.57831194120],
[0.188, 4.53005359421, 1041.22268292450],
[0.134, 4.09921613445, 530.44172462000],
[0.123, 4.79543460218, 1098.73880610440],
[0.161, 2.02006564218, 860.30992875280],
[0.143, 2.40197278329, 529.16970023280],
[0.115, 1.55831212007, 9153.90361602180],
[0.106, 5.94313244357, 1057.89745748090],
[0.119, 5.10578428676, 1056.93424963440],
[0.100, 5.74974781049, 501.23677709140],
[0.094, 1.40134175492, 1059.33374607940],
[0.098, 3.79115318281, 497.44763618020],
[0.090, 4.09610113044, 1064.04779663520],
[0.102, 1.10442899544, 1969.20066324380],
[0.087, 0.58218477838, 1173.52040467170],
[0.109, 3.83745968299, 525.49817940060],
[0.094, 4.59915291355, 1059.43011429900],
[0.118, 6.11701561559, 1069.67687092770],
[0.107, 5.40509332689, 679.25416222920],
[0.089, 5.90037690244, 757.21715453420],
[0.078, 6.06217863109, 970.51624997220],
[0.080, 5.45470236239, 3163.91869656600],
[0.072, 5.65789862232, 1151.42900414390],
[0.080, 0.04539720100, 1080.72257119160],
[0.075, 4.26526686574, 1058.41872234270],
],
# L2
[
[47233.598, 4.32148323554, 7.11354700080],
[30629.053, 2.93021440216, 529.69096509460],
[38965.550, 0.00000000000, 0.00000000000],
[3189.317, 1.05504615595, 522.57741809380],
[2723.358, 3.41411526638, 1059.38193018920],
[2729.292, 4.84545481351, 536.80451209540],
[1721.069, 4.18734385158, 14.22709400160],
[383.258, 5.76790714387, 419.48464387520],
[367.498, 6.05509120409, 103.09277421860],
[377.524, 0.76048964872, 515.46387109300],
[337.386, 3.78644384244, 3.18139373770],
[308.200, 0.69356654052, 206.18554843720],
[218.408, 3.81389191353, 1589.07289528380],
[198.883, 5.33996443444, 1066.49547719000],
[197.445, 2.48356402053, 3.93215326310],
[146.230, 3.81373196838, 639.89728631400],
[155.862, 1.40642426467, 1052.26838318840],
[129.570, 5.83738872525, 412.37109687440],
[141.932, 1.63435169016, 426.59819087600],
[117.327, 1.41435462588, 625.67019231240],
[96.733, 4.03383427887, 110.20632121940],
[90.823, 1.10630629042, 95.97922721780],
[78.769, 4.63726131329, 543.91805909620],
[72.392, 2.21716670026, 735.87651353180],
[87.292, 2.52235174825, 632.78373931320],
[56.910, 3.12292059854, 213.29909543800],
[48.622, 1.67283791618, 309.27832265580],
[58.475, 0.83216317444, 199.07200143640],
[40.150, 4.02485444740, 21.34064100240],
[39.784, 0.62416945827, 323.50541665740],
[35.718, 2.32581247002, 728.76296653100],
[25.620, 2.51240623862, 1162.47470440780],
[29.255, 3.60838327799, 10.29494073850],
[23.591, 3.00532139306, 956.28915597060],
[27.814, 3.23992013743, 838.96928775040],
[25.993, 4.50118298290, 742.99006053260],
[25.194, 1.21868110687, 1045.15483618760],
[19.458, 4.29028644674, 532.87235883230],
[17.660, 0.80953941560, 508.35032409220],
[15.355, 5.81037986941, 1596.18644228460],
[17.058, 4.20001977723, 2118.76386037840],
[17.040, 1.83402146640, 526.50957135690],
[14.661, 3.99989622586, 117.31986822020],
[13.639, 1.80336677963, 302.16477565500],
[13.230, 2.51856643603, 88.86568021700],
[12.756, 4.36856232414, 1169.58825140860],
[15.292, 0.68174165476, 942.06206196900],
[10.986, 4.43586634639, 525.75881183150],
[13.920, 5.95169568482, 316.39186965660],
[9.437, 2.17684563456, 1155.36115740700],
[8.812, 3.29452783338, 220.41264243880],
[7.823, 5.75672228354, 846.08283475120],
[7.549, 2.70955516779, 533.62311835770],
[9.681, 1.71563161051, 1581.95934828300],
[8.690, 3.31924493607, 831.85574074960],
[6.285, 0.49939863541, 949.17560896980],
[6.685, 2.17560093281, 1265.56747862640],
[5.381, 6.00510875948, 405.25754987360],
[4.676, 1.40846192799, 1258.45393162560],
[4.421, 3.02360159274, 1692.16566950240],
[4.403, 5.47737266160, 433.71173787680],
[4.286, 5.07139951645, 1073.60902419080],
[4.201, 5.28560721767, 18.15924726470],
[3.933, 1.26665387164, 853.19638175200],
[5.351, 3.65320121089, 1272.68102562720],
[4.392, 2.27325303667, 1368.66025284500],
[3.482, 1.53983001273, 519.39602435610],
[2.745, 2.09685315627, 1478.86657406440],
[2.737, 1.06017230524, 1574.84580128220],
[2.897, 2.05128453665, 1361.54670584420],
[3.075, 0.99085727534, 191.95845443560],
[2.462, 2.37173605635, 1471.75302706360],
[2.203, 2.47960567714, 721.64941953020],
[2.096, 3.71482580504, 1485.98012106520],
[1.984, 1.88475229557, 1685.05212250160],
[2.274, 3.03360234351, 1148.24761040620],
[2.041, 6.17114556019, 330.61896365820],
[1.451, 4.72055072637, 32.24332891440],
[1.454, 5.14703918585, 1375.77379984580],
[1.447, 3.18833439444, 635.96513305090],
[1.403, 4.26712075104, 551.03160609700],
[1.420, 1.99288040133, 629.60234557550],
[1.269, 0.03300387779, 2125.87740737920],
[1.276, 2.26356919237, 1788.14489672020],
[1.189, 1.70223550488, 1677.93857550080],
[1.182, 2.18142313946, 1795.25844372100],
[1.366, 1.27629917215, 1038.04128918680],
[1.306, 4.76302079847, 1062.56332392690],
[1.109, 2.97787130235, 81.75213321620],
[1.027, 1.99236027398, 295.05122865420],
[1.349, 4.01621534182, 539.98590583310],
[1.025, 3.75336759986, 28.45418800320],
[0.977, 3.01355125761, 124.43341522100],
[1.290, 4.62594234857, 2648.45482547300],
[1.065, 5.06153058155, 1699.27921650320],
[0.965, 1.17716405513, 99.91138048090],
[1.021, 1.90712102660, 750.10360753340],
[0.923, 3.53450109212, 227.52618943960],
[1.059, 0.13532061468, 416.30325013750],
[0.836, 2.07492422755, 1056.20053645150],
[0.889, 1.75177808106, 1898.35121793960],
[0.772, 2.89217715561, 2008.55753915900],
[1.014, 2.80847772922, 1464.63948006280],
[0.820, 1.99735697577, 2111.65031337760],
[0.787, 4.91912237671, 1055.44977692610],
[0.743, 2.65209650690, 106.27416795630],
[0.705, 0.08006443278, 963.40270297140],
[0.724, 3.29664246938, 628.85158605010],
[0.791, 1.64655202110, 2001.44399215820],
[0.822, 2.74067639972, 618.55664531160],
[0.761, 1.26393500358, 1382.88734684660],
[0.650, 1.19590511216, 422.66603761290],
[0.677, 1.88476058357, 2104.53676637680],
[0.681, 5.47481665606, 5760.49843189760],
[0.681, 3.11621209674, 5746.27133789600],
[0.644, 4.68385640894, 611.44309831080],
[0.752, 3.03497138894, 2221.85663459700],
[0.641, 1.86274530783, 636.71589257630],
[0.614, 3.07677356670, 380.12776796000],
[0.635, 4.53916684689, 9676.48103411560],
[0.635, 0.61458805483, 9690.70812811720],
[0.822, 6.25170365084, 423.41679713830],
[0.762, 4.32362906505, 1802.37199072180],
[0.582, 0.84137872868, 1891.23767093880],
[0.558, 3.96171840325, 440.82528487760],
[0.624, 2.83657771014, 1905.46476494040],
[0.711, 3.43538032357, 824.74219374880],
[0.517, 1.10660016329, 107.02492748170],
[0.535, 1.55761050176, 1994.33044515740],
[0.501, 4.44389802599, 647.01083331480],
[0.414, 5.37130370397, 2228.97018159780],
[0.533, 2.54756313371, 1781.03134971940],
[0.393, 1.26351262287, 210.11770170030],
[0.433, 2.90103969634, 1063.31408345230],
[0.384, 1.36194621083, 203.00415469950],
[0.440, 1.46934545869, 2214.74308759620],
[0.424, 4.98974282486, 3178.14579056760],
[0.338, 2.72210106345, 2324.94940881560],
[0.332, 0.37505564414, 2655.56837247380],
[0.318, 6.11024720065, 934.94851496820],
[0.405, 3.51005860013, 2751.54759969160],
[0.388, 5.00609647265, 2015.67108615980],
[0.424, 4.29668654117, 5753.38488489680],
[0.328, 2.35571531981, 1251.34038462480],
[0.316, 0.16949503062, 1279.79457262800],
[0.345, 2.89328206121, 2957.73314812880],
[0.303, 1.63964826684, 2428.04218303420],
[0.328, 3.36132375845, 1141.13406340540],
[0.294, 2.48947693371, 2641.34127847220],
[0.350, 1.50537240918, 2317.83586181480],
[0.287, 1.69638214958, 2420.92863603340],
[0.272, 0.27466529753, 319.57326339430],
[0.303, 2.43034117616, 70.84944530420],
[0.251, 0.43544711316, 3259.89792378380],
[0.224, 4.49752269293, 5223.69391980220],
[0.272, 2.98590404673, 1457.52593306200],
[0.228, 5.47896916415, 1603.29998928540],
[0.288, 2.30146999217, 2854.64037391020],
[0.207, 5.94297320087, 9153.90361602180],
[0.243, 1.58604251447, 2744.43405269080],
[0.228, 1.28182702946, 2310.72231481400],
[0.224, 1.28623905132, 3060.82592234740],
[0.222, 0.63265553397, 3163.91869656600],
[0.242, 2.52382905368, 3274.12501778540],
[0.188, 6.00513627145, 92.04707395470],
[0.239, 1.93897157244, 2413.81508903260],
[0.214, 1.14529237568, 2531.13495725280],
[0.200, 3.42280996072, 99.16062095550],
[0.179, 0.53892926207, 2207.62954059540],
[0.177, 5.56545270243, 2332.06295581640],
[0.172, 1.38604067808, 945.99421523210],
[0.203, 0.41899069603, 2840.41327990860],
[0.231, 2.26353330460, 2097.42321937600],
[0.228, 3.82701076821, 113.38771495710],
[0.165, 4.08776703733, 6283.07584999140],
[0.202, 3.30429764992, 3067.93946934820],
[0.224, 3.69285208525, 2435.15573003500],
[0.214, 2.55756944911, 2538.24850425360],
[0.203, 2.24205059922, 67.66805156650],
[0.152, 5.48122906518, 10213.28554621100],
[0.191, 2.68685722531, 1773.91780271860],
[0.189, 2.95184620359, 732.69511979410],
[0.149, 1.98737542735, 1049.08698945070],
[0.163, 1.24084734609, 3053.71237534660],
[0.171, 2.34210749987, 1354.43315884340],
[0.112, 5.77407285790, 547.85021235930],
[0.124, 0.14001204498, 860.30992875280],
[0.086, 1.26924601636, 511.53171782990],
[0.114, 5.15982838070, 1592.25428902150],
[0.091, 1.48896790758, 1567.73225428140],
[0.086, 4.34444949905, 1069.67687092770],
],
# L3
[
[6501.665, 2.59862880482, 7.11354700080],
[1356.524, 1.34635886411, 529.69096509460],
[470.716, 2.47503977883, 14.22709400160],
[416.960, 3.24451243214, 536.80451209540],
[352.851, 2.97360159003, 522.57741809380],
[154.880, 2.07565585817, 1059.38193018920],
[86.771, 2.51431584316, 515.46387109300],
[33.538, 3.82633794497, 1066.49547719000],
[44.378, 0.00000000000, 0.00000000000],
[22.644, 2.98231326774, 543.91805909620],
[23.737, 1.27667172313, 412.37109687440],
[28.457, 2.44754756058, 206.18554843720],
[19.798, 2.10099934005, 639.89728631400],
[19.740, 1.40255938973, 419.48464387520],
[18.768, 1.59368403500, 103.09277421860],
[17.033, 2.30214681202, 21.34064100240],
[16.774, 2.59821460673, 1589.07289528380],
[16.214, 3.14521117299, 625.67019231240],
[16.055, 3.36030126297, 1052.26838318840],
[13.392, 2.75973892202, 95.97922721780],
[13.234, 2.53862244340, 199.07200143640],
[12.611, 6.26578110400, 426.59819087600],
[8.637, 2.26563256289, 110.20632121940],
[6.725, 3.42566433316, 309.27832265580],
[8.701, 1.76334960737, 10.29494073850],
[6.527, 4.03869562907, 728.76296653100],
[5.368, 5.25196153539, 323.50541665740],
[5.675, 2.52096417685, 508.35032409220],
[5.399, 2.91184687105, 1045.15483618760],
[3.996, 4.30290261177, 88.86568021700],
[3.857, 3.52381361552, 302.16477565500],
[3.774, 4.09125315146, 735.87651353180],
[3.269, 1.43175991274, 956.28915597060],
[2.783, 4.35817507670, 1596.18644228460],
[2.661, 1.25276590759, 213.29909543800],
[2.553, 2.23785673285, 117.31986822020],
[2.371, 2.89662409244, 742.99006053260],
[2.656, 5.01505839848, 838.96928775040],
[1.948, 2.77248294666, 1169.58825140860],
[2.279, 2.35581871230, 942.06206196900],
[1.474, 1.61011468581, 220.41264243880],
[1.457, 3.09381959396, 2118.76386037840],
[1.937, 5.01388256693, 831.85574074960],
[1.585, 1.40097680805, 405.25754987360],
[1.257, 3.97811260358, 1155.36115740700],
[1.227, 3.45959919972, 1073.60902419080],
[0.986, 3.39209446167, 532.87235883230],
[0.942, 2.70200385825, 191.95845443560],
[0.828, 1.48348768286, 632.78373931320],
[0.797, 1.10706688850, 1162.47470440780],
[0.822, 3.30295824153, 1258.45393162560],
[0.710, 5.89798771980, 853.19638175200],
[0.766, 3.66351539483, 1581.95934828300],
[0.722, 3.74673245797, 433.71173787680],
[0.663, 2.93063953915, 1574.84580128220],
[0.658, 3.52797311863, 525.75881183150],
[0.609, 4.14881313523, 721.64941953020],
[0.598, 4.69454609357, 81.75213321620],
[0.668, 1.96442971289, 1272.68102562720],
[0.515, 1.57251270902, 949.17560896980],
[0.658, 2.02329201466, 526.50957135690],
[0.517, 4.35827478516, 1368.66025284500],
[0.510, 4.95846155301, 1148.24761040620],
[0.507, 4.31396370095, 330.61896365820],
[0.567, 2.27813343743, 551.03160609700],
[0.480, 3.86758235988, 1361.54670584420],
[0.383, 0.24287136454, 611.44309831080],
[0.434, 2.95461755540, 1038.04128918680],
[0.377, 1.42957648215, 124.43341522100],
[0.391, 4.07770324592, 1471.75302706360],
[0.385, 4.70295179800, 519.39602435610],
[0.428, 2.22472522305, 539.98590583310],
[0.343, 4.83463725823, 2125.87740737920],
[0.394, 4.52891996323, 1464.63948006280],
[0.305, 2.02797683648, 1485.98012106520],
[0.283, 0.97461612169, 1905.46476494040],
[0.276, 3.83552772064, 1062.56332392690],
[0.351, 2.06334334462, 533.62311835770],
[0.304, 3.93228052293, 1685.05212250160],
[0.322, 3.54763044791, 846.08283475120],
[0.345, 4.18332148409, 1788.14489672020],
[0.253, 3.12703531516, 1994.33044515740],
[0.257, 1.05361498985, 1478.86657406440],
[0.232, 1.69999081817, 1692.16566950240],
[0.225, 2.51624149780, 1891.23767093880],
[0.217, 4.58512911216, 963.40270297140],
[0.277, 3.63353707701, 1677.93857550080],
[0.242, 2.90163762388, 2310.72231481400],
[0.211, 3.96419403991, 295.05122865420],
[0.199, 5.17046500750, 618.55664531160],
[0.256, 4.19052619061, 1781.03134971940],
[0.192, 0.81556540966, 2221.85663459700],
[0.187, 3.49895198981, 2648.45482547300],
[0.208, 4.11838429822, 2097.42321937600],
[0.183, 3.30680692414, 1699.27921650320],
[0.231, 2.54516792766, 1375.77379984580],
[0.189, 5.74277274755, 2627.11418447060],
[0.214, 5.48031974537, 1354.43315884340],
[0.220, 3.87471989410, 2104.53676637680],
[0.171, 6.10827209399, 1382.88734684660],
[0.184, 5.98415847544, 750.10360753340],
[0.171, 5.25744961028, 824.74219374880],
[0.151, 4.30799091626, 2001.44399215820],
[0.140, 4.27089466070, 1265.56747862640],
[0.097, 4.67188056608, 647.01083331480],
[0.088, 2.43775210355, 440.82528487760],
[0.075, 3.93105183253, 1055.44977692610],
[0.079, 1.88533153220, 934.94851496820],
[0.077, 3.80503143236, 1603.29998928540],
],
# L4
[
[669.483, 0.85282421090, 7.11354700080],
[99.961, 0.74258947751, 14.22709400160],
[114.019, 3.14159265359, 0.00000000000],
[50.024, 1.65346208248, 536.80451209540],
[43.585, 5.82026386621, 529.69096509460],
[31.813, 4.85829986650, 522.57741809380],
[14.742, 4.29061635784, 515.46387109300],
[8.899, 0.71478520741, 1059.38193018920],
[4.957, 1.29502259434, 543.91805909620],
[4.484, 2.31715516627, 1066.49547719000],
[4.251, 0.48326797501, 21.34064100240],
[3.100, 3.00245542678, 412.37109687440],
[2.055, 0.39858940218, 639.89728631400],
[1.762, 4.90536207307, 625.67019231240],
[1.902, 4.25925620271, 199.07200143640],
[1.695, 4.26147580803, 206.18554843720],
[1.375, 5.25546955667, 1052.26838318840],
[1.203, 4.71614633845, 95.97922721780],
[1.086, 1.28604571172, 1589.07289528380],
[0.982, 4.77990073662, 1045.15483618760],
[0.935, 6.05847062188, 88.86568021700],
[0.916, 5.77537499431, 728.76296653100],
[0.890, 4.55299189579, 426.59819087600],
[0.784, 3.40161567950, 419.48464387520],
[0.768, 3.54672049322, 103.09277421860],
[0.670, 0.52223307700, 110.20632121940],
[0.415, 5.22809480633, 302.16477565500],
[0.393, 6.24184621807, 956.28915597060],
[0.381, 5.25466966040, 309.27832265580],
[0.421, 0.59561318533, 117.31986822020],
[0.346, 4.78348312106, 508.35032409220],
[0.319, 3.47979828725, 323.50541665740],
[0.331, 2.95893485883, 1596.18644228460],
[0.295, 4.32713459459, 942.06206196900],
[0.319, 0.47990052824, 831.85574074960],
[0.251, 1.79898001222, 1073.60902419080],
[0.212, 0.43917684084, 220.41264243880],
[0.188, 1.12654974776, 1169.58825140860],
[0.188, 2.16135407548, 1361.54670584420],
[0.180, 3.43266428069, 1148.24761040620],
[0.164, 1.92864127211, 2118.76386037840],
[0.157, 3.02963907392, 1272.68102562720],
[0.093, 5.60436000012, 1581.95934828300],
[0.085, 5.02317256200, 1155.36115740700],
[0.075, 3.13198879608, 632.78373931320],
],
# L5
[
[49.577, 5.25658966184, 7.11354700080],
[15.761, 5.25126837478, 14.22709400160],
[4.343, 0.01461869263, 536.80451209540],
[1.526, 1.09739911439, 522.57741809380],
[0.728, 5.85949047619, 543.91805909620],
[0.694, 0.87382487754, 515.46387109300],
[0.845, 3.14159265359, 0.00000000000],
[0.456, 0.81521692852, 1066.49547719000],
[0.293, 5.62909357048, 1059.38193018920],
[0.090, 0.21178119710, 529.69096509460],
],
]
"""This table contains Jupiter's periodic terms (all of them) from the
planetary theory VSOP87 for the heliocentric longitude at the equinox of date
(taken from the 'D' solution). In Meeus' book a shortened version can be found
in pages 426-430."""
VSOP87_B = [
# B0
[
[2268615.703, 3.55852606718, 529.69096509460],
[109971.634, 3.90809347389, 1059.38193018920],
[110090.358, 0.00000000000, 0.00000000000],
[8101.427, 3.60509573368, 522.57741809380],
[6043.996, 4.25883108794, 1589.07289528380],
[6437.782, 0.30627121409, 536.80451209540],
[1106.880, 2.98534421928, 1162.47470440780],
[941.651, 2.93619072405, 1052.26838318840],
[894.088, 1.75447429921, 7.11354700080],
[767.280, 2.15473594060, 632.78373931320],
[944.328, 1.67522288396, 426.59819087600],
[684.220, 3.67808770098, 213.29909543800],
[629.223, 0.64343282328, 1066.49547719000],
[835.861, 5.17881973234, 103.09277421860],
[531.670, 2.70305954352, 110.20632121940],
[558.524, 0.01354830508, 846.08283475120],
[464.449, 1.17337249185, 949.17560896980],
[431.072, 2.60825000494, 419.48464387520],
[351.433, 4.61062990714, 2118.76386037840],
[123.148, 3.34968181384, 1692.16566950240],
[115.038, 5.04892295442, 316.39186965660],
[132.160, 4.77816990670, 742.99006053260],
[103.402, 2.31878999565, 1478.86657406440],
[116.379, 1.38688232033, 323.50541665740],
[102.420, 3.15293785436, 1581.95934828300],
[103.762, 3.70103838110, 515.46387109300],
[78.650, 3.98318653238, 1265.56747862640],
[69.935, 2.56006216424, 956.28915597060],
[55.597, 0.37500753017, 1375.77379984580],
[51.986, 0.99007119033, 1596.18644228460],
[55.194, 0.40176412035, 525.75881183150],
[63.456, 4.50073574333, 735.87651353180],
[49.691, 0.18649893085, 543.91805909620],
[48.831, 3.57260550671, 533.62311835770],
[28.353, 1.53532744749, 625.67019231240],
[29.209, 5.43145863011, 206.18554843720],
[23.255, 5.95197992848, 838.96928775040],
[22.841, 6.19262787685, 532.87235883230],
[23.202, 4.06473368575, 526.50957135690],
[24.436, 6.10947656959, 1169.58825140860],
[21.116, 4.96322972735, 2648.45482547300],
[17.879, 3.08704395969, 1795.25844372100],
[16.234, 4.83515727869, 1368.66025284500],
[21.314, 2.69476951059, 1045.15483618760],
[15.740, 1.15130330106, 942.06206196900],
[17.325, 1.61550009206, 14.22709400160],
[13.396, 2.30539585502, 853.19638175200],
[11.904, 3.09811974536, 2111.65031337760],
[11.734, 2.83006431723, 2008.55753915900],
[11.291, 0.98957560201, 433.71173787680],
[11.830, 4.76527836803, 309.27832265580],
[10.702, 3.70181397065, 2221.85663459700],
[10.815, 5.81958878617, 1272.68102562720],
[13.505, 3.28126975760, 1155.36115740700],
[10.179, 2.58691128827, 117.31986822020],
[10.632, 5.23487936086, 95.97922721780],
[8.771, 0.40456546655, 220.41264243880],
[7.439, 2.94638292086, 412.37109687440],
[6.151, 2.69100382247, 380.12776796000],
[5.028, 0.72750312028, 1055.44977692610],
[4.939, 0.73756716762, 1905.46476494040],
[5.421, 4.08612438558, 1685.05212250160],
[5.936, 4.32059910537, 1063.31408345230],
[4.737, 4.09303016850, 527.24328453980],
[4.010, 0.51530008355, 1073.60902419080],
[4.709, 1.84067645204, 984.60033162190],
[3.974, 1.33608029246, 2125.87740737920],
[3.762, 3.58647039394, 529.73914920440],
[4.731, 6.16377350841, 532.13864564940],
[4.666, 5.88762905802, 639.89728631400],
[3.763, 0.38865925413, 529.64278098480],
[3.409, 4.05398247269, 1898.35121793960],
[3.457, 3.43865563497, 1485.98012106520],
[4.229, 2.23767157901, 74.78159856730],
[3.091, 0.16470256025, 1699.27921650320],
[2.975, 0.72268908074, 530.65417294110],
[3.162, 1.25048416420, 330.61896365820],
[2.727, 4.37679213321, 149.56319713460],
[2.837, 0.05987107395, 1439.50969814920],
[2.983, 3.25251207220, 528.72775724810],
[2.232, 0.26149880534, 1062.56332392690],
[2.464, 1.16913304420, 453.42489381900],
[2.596, 3.30510149086, 2324.94940881560],
[1.988, 2.85269577619, 1574.84580128220],
[2.527, 5.94458202950, 909.81873305460],
[2.269, 1.30379329597, 3.93215326310],
[1.742, 4.49909767044, 1258.45393162560],
[1.714, 4.12945878208, 2001.44399215820],
[2.029, 3.97938086639, 1056.20053645150],
[1.667, 0.36037092553, 10213.28554621100],
[1.579, 6.11640144795, 1802.37199072180],
[1.393, 3.69324470827, 2214.74308759620],
[1.604, 1.98841031703, 38.13303563780],
[1.325, 1.74025919863, 529.16970023280],
[1.451, 2.39804501178, 2428.04218303420],
[1.594, 2.07556780757, 1021.24889455140],
[1.320, 1.33770977126, 618.55664531160],
[1.346, 3.27591492540, 2641.34127847220],
[1.230, 0.19552728220, 305.34616939270],
[1.223, 2.86681556337, 1382.88734684660],
[1.324, 2.23549334986, 530.21222995640],
[1.056, 3.80579750957, 76.26607127560],
[1.050, 4.68011652614, 1788.14489672020],
[1.226, 5.34003255221, 3178.14579056760],
[1.009, 3.19608028376, 2538.24850425360],
[1.266, 3.04704446731, 604.47256366190],
[0.954, 3.86932544808, 728.76296653100],
[1.124, 1.59560367480, 3.18139373770],
[0.978, 0.25223689838, 983.11585891360],
[0.948, 0.21552742733, 750.10360753340],
[0.946, 3.93927748120, 508.35032409220],
[0.920, 1.14672086939, 963.40270297140],
[0.817, 5.93809619876, 831.85574074960],
[0.770, 2.96062737592, 526.77020378780],
[1.017, 5.55711112145, 199.07200143640],
[0.761, 1.38163787157, 532.61172640140],
[0.726, 3.98337964395, 2317.83586181480],
[0.862, 0.87975657414, 490.33408917940],
[0.868, 3.44331872364, 569.04784100980],
[0.711, 4.11107052823, 2751.54759969160],
[0.708, 0.33555577415, 528.94020556920],
[0.708, 4.00539820601, 530.44172462000],
[0.656, 4.39568451439, 519.39602435610],
[0.801, 4.03984430862, 1364.72809958190],
[0.679, 1.18645749024, 525.49817940060],
[0.645, 5.10510349996, 1361.54670584420],
[0.668, 3.15607509055, 533.88375078860],
[0.663, 0.73722024843, 5223.69391980220],
[0.663, 1.57092786811, 6283.07584999140],
[0.543, 0.26376529935, 227.52618943960],
[0.525, 6.22318693939, 539.98590583310],
[0.513, 4.98337900151, 302.16477565500],
[0.544, 2.22227019273, 2744.43405269080],
[0.532, 2.62425372687, 99.16062095550],
[0.602, 1.56074089013, 454.90936652730],
[0.518, 0.26343805959, 551.03160609700],
[0.516, 1.09376390349, 934.94851496820],
[0.659, 0.62560671589, 1512.80682400820],
[0.524, 0.64710955846, 524.06189080210],
[0.516, 3.69478866795, 535.32003938710],
[0.491, 3.63039940597, 2531.13495725280],
[0.570, 0.61976758791, 540.73666535850],
[0.496, 2.19398015038, 1514.29129671650],
[0.532, 0.20040217534, 525.02509864860],
[0.493, 0.39160693598, 224.34479570190],
[0.449, 0.62392433691, 529.53090640020],
[0.449, 3.71676131146, 529.85102378900],
[0.450, 5.02467015031, 1048.33622992530],
[0.428, 5.44804660290, 11.04570026390],
[0.499, 4.13924061941, 534.35683154060],
[0.528, 1.76471074936, 524.27433912320],
[0.454, 4.53321742354, 1056.93424963440],
[0.520, 2.57406093768, 535.10759106600],
[0.398, 1.40345870113, 960.22130923370],
[0.457, 4.17708652827, 2104.53676637680],
[0.505, 5.36536256321, 1057.89745748090],
[0.535, 4.80455380313, 1593.00504854690],
[0.415, 0.96548127237, 2435.15573003500],
[0.519, 0.54543519483, 1061.82961074400],
[0.359, 4.02704454075, 1059.43011429900],
[0.356, 2.66818105522, 835.03713448730],
[0.443, 5.27513700376, 1.48447270830],
[0.358, 5.94423960514, 440.82528487760],
[0.471, 6.05791940453, 1471.75302706360],
[0.386, 2.15984900214, 9153.90361602180],
[0.424, 2.70929670030, 1038.04128918680],
[0.359, 0.82922836987, 1059.33374607940],
[0.310, 0.88102053266, 529.90341341570],
[0.310, 3.45966511571, 529.47851677350],
[0.300, 3.70331799503, 2634.22773147140],
[0.292, 2.63594456361, 415.55249061210],
[0.279, 1.60669121578, 643.82943957710],
[0.291, 5.83134071820, 1148.24761040620],
[0.370, 5.71572992274, 531.17543780290],
[0.268, 5.39275891813, 1891.23767093880],
[0.275, 3.34108666036, 518.64526483070],
[0.269, 1.06051406954, 1585.14074202070],
[0.306, 2.50289017370, 511.53171782990],
[0.295, 1.84394223501, 547.85021235930],
[0.254, 2.98312992496, 1134.16352875650],
[0.289, 1.86070918711, 21.34064100240],
[0.265, 4.93075479744, 679.25416222920],
[0.250, 0.42860925124, 1969.20066324380],
[0.308, 2.67237933272, 2957.73314812880],
[0.313, 4.88085697819, 528.20649238630],
[0.222, 4.78828764413, 514.71311156760],
[0.221, 4.32763468981, 1677.93857550080],
[0.217, 3.46278526461, 2950.61960112800],
[0.216, 0.52207667980, 2228.97018159780],
[0.214, 5.83569926578, 544.66881862160],
[0.283, 2.88709716090, 35.42472265210],
[0.272, 1.65708415457, 3060.82592234740],
[0.234, 1.68821537711, 2655.56837247380],
[0.205, 3.36186888290, 2847.52682690940],
[0.264, 3.62722625694, 2420.92863603340],
[0.191, 4.26821147044, 430.53034413910],
[0.179, 3.91470663005, 3340.61242669980],
[0.180, 0.04531671003, 387.24131496080],
[0.241, 4.03927631611, 494.26624244250],
[0.176, 4.26298906325, 672.14061522840],
[0.187, 2.72587420586, 299.12639426920],
[0.234, 1.34474827450, 173.94221952280],
[0.171, 0.85473611718, 1603.29998928540],
[0.224, 0.33130232434, 565.11568774670],
[0.200, 1.27632489123, 39.35687591520],
[0.170, 4.96479470273, 1464.63948006280],
[0.211, 1.00937080256, 523.54062594030],
[0.210, 3.75793720248, 2854.64037391020],
[0.162, 5.87784787295, 3480.31056622260],
[0.163, 4.62850343495, 2015.67108615980],
[0.191, 3.33159283750, 535.84130424890],
[0.151, 1.17096741034, 1060.34513803570],
[0.160, 1.81852636004, 312.45971639350],
[0.158, 2.59595816107, 529.43033266370],
[0.158, 1.74472748730, 529.95159752550],
[0.173, 3.62399350412, 230.56457082540],
[0.142, 0.70435921398, 522.52923398400],
[0.144, 5.35763122430, 107.02492748170],
[0.144, 6.13954848857, 1158.54255114470],
[0.178, 0.27566275049, 3906.90875709860],
[0.126, 5.14832919826, 2207.62954059540],
[0.126, 3.41994798109, 2.44768055480],
[0.127, 0.39825164051, 70.84944530420],
[0.123, 4.77865550523, 2524.02141025200],
[0.123, 0.46184813516, 647.01083331480],
[0.144, 3.60261852727, 1058.41872234270],
[0.158, 3.76231915252, 92.04707395470],
[0.119, 4.08266911415, 1585.89150154610],
[0.125, 2.35496721797, 3163.91869656600],
[0.122, 3.21027426317, 3377.21779200400],
[0.121, 3.39770381916, 18.15924726470],
[0.131, 1.67926417552, 1289.94650101460],
[0.115, 2.35735471566, 1550.93985964600],
[0.126, 2.40833814513, 106.27416795630],
[0.131, 1.37610474529, 1023.95720753710],
[0.121, 1.60252617273, 10.29494073850],
[0.121, 0.61420823557, 1592.25428902150],
[0.135, 3.60177675518, 124.43341522100],
[0.137, 2.41724947062, 3274.12501778540],
[0.129, 0.09702914345, 2332.06295581640],
[0.093, 4.88949890397, 1098.73880610440],
[0.106, 5.18592950792, 2281.23049651060],
[0.114, 2.96523316419, 1166.40685767090],
[0.092, 1.65166124027, 860.30992875280],
[0.102, 3.64093193142, 3171.03224356680],
[0.103, 1.63066232967, 1894.41906467650],
[0.080, 0.38766601876, 4694.00295470760],
[0.074, 3.86865238736, 3067.93946934820],
[0.095, 1.66362447044, 1151.42900414390],
],
# B1
[
[177351.787, 5.70166488486, 529.69096509460],
[3230.171, 5.77941619340, 1059.38193018920],
[3081.364, 5.47464296527, 522.57741809380],
[2211.914, 4.73477480209, 536.80451209540],
[1694.232, 3.14159265359, 0.00000000000],
[346.445, 4.74595174109, 1052.26838318840],
[234.264, 5.18856099929, 1066.49547719000],
[196.154, 6.18554286642, 7.11354700080],
[150.468, 3.92721226087, 1589.07289528380],
[114.128, 3.43897271830, 632.78373931320],
[96.667, 2.91426304090, 949.17560896980],
[76.599, 2.50522188662, 103.09277421860],
[81.671, 5.07666097497, 1162.47470440780],
[76.572, 0.61288981445, 419.48464387520],
[73.875, 5.49958292155, 515.46387109300],
[49.915, 3.94799616572, 735.87651353180],
[60.544, 5.44740084359, 213.29909543800],
[36.561, 4.69828392839, 543.91805909620],
[46.032, 0.53850360901, 110.20632121940],
[45.123, 1.89516645239, 846.08283475120],
[36.019, 6.10952578764, 316.39186965660],
[31.975, 4.92452714629, 1581.95934828300],
[21.015, 5.62957731410, 1596.18644228460],
[23.156, 5.84829490183, 323.50541665740],
[24.719, 3.94107395247, 2118.76386037840],
[17.274, 5.65310656429, 533.62311835770],
[16.521, 5.89840100621, 526.50957135690],
[16.698, 5.66663034948, 1265.56747862640],
[15.815, 4.43314786393, 1045.15483618760],
[13.398, 4.30179033605, 532.87235883230],
[11.744, 1.80990486955, 956.28915597060],
[11.925, 4.30094564154, 525.75881183150],
[9.514, 2.02589667166, 206.18554843720],
[10.542, 6.15533910933, 14.22709400160],
[8.414, 3.92910450340, 1478.86657406440],
[8.099, 4.20152809071, 1169.58825140860],
[7.712, 2.99160389601, 942.06206196900],
[8.825, 1.55897920307, 426.59819087600],
[8.884, 4.87430124264, 1155.36115740700],
[7.793, 3.84684930196, 625.67019231240],
[5.646, 3.40915964493, 639.89728631400],
[4.615, 0.83374662294, 117.31986822020],
[4.020, 5.50502127885, 433.71173787680],
[3.704, 0.90226777963, 95.97922721780],
[3.859, 0.69640284662, 853.19638175200],
[3.091, 5.09115860882, 1073.60902419080],
[3.360, 5.10133284081, 1692.16566950240],
[2.892, 4.90418916660, 220.41264243880],
[2.772, 5.09066125724, 2111.65031337760],
[2.425, 3.74438653232, 742.99006053260],
[2.558, 5.46955948791, 1795.25844372100],
[2.466, 4.22278355430, 2648.45482547300],
[1.968, 0.57192251841, 309.27832265580],
[1.794, 4.60765219417, 1272.68102562720],
[1.822, 1.98842964323, 1375.77379984580],
[1.703, 6.12660562937, 2125.87740737920],
[2.011, 5.00936865256, 412.37109687440],
[1.645, 0.08830372958, 1063.31408345230],
[1.875, 5.81006158403, 330.61896365820],
[1.741, 4.58650290431, 1574.84580128220],
[1.529, 5.81660291389, 1258.45393162560],
[1.916, 0.85150399517, 1368.66025284500],
[1.614, 4.36839107221, 728.76296653100],
[1.510, 2.79374165455, 1485.98012106520],
[1.333, 4.84260898693, 1062.56332392690],
[1.359, 5.16511980864, 838.96928775040],
[1.165, 5.66275740881, 508.35032409220],
[1.092, 4.68797557406, 1699.27921650320],
[1.438, 5.78105679279, 1056.20053645150],
[1.083, 3.99886917926, 1471.75302706360],
[1.002, 4.79949608524, 1055.44977692610],
[0.749, 6.14400862030, 519.39602435610],
[0.657, 5.63765568876, 1898.35121793960],
[0.702, 5.04126574492, 1685.05212250160],
[0.607, 3.15707515246, 618.55664531160],
[0.587, 1.37658820775, 199.07200143640],
[0.552, 4.80657729450, 551.03160609700],
[0.494, 4.43417307482, 539.98590583310],
[0.517, 0.05161181997, 3.18139373770],
[0.469, 3.81715950042, 2008.55753915900],
[0.415, 1.34693184108, 1382.88734684660],
[0.382, 4.86764073919, 227.52618943960],
[0.473, 1.72405831407, 532.13864564940],
[0.458, 4.44604993015, 1038.04128918680],
[0.376, 2.23190744786, 529.64278098480],
[0.451, 3.75869883836, 984.60033162190],
[0.376, 5.42971857629, 529.73914920440],
[0.389, 1.92698506631, 525.02509864860],
[0.364, 3.35456685746, 2221.85663459700],
[0.476, 5.93625415892, 527.24328453980],
[0.383, 6.12255867339, 149.56319713460],
[0.301, 4.09378934049, 440.82528487760],
[0.310, 5.58150418981, 2428.04218303420],
[0.282, 4.85996662231, 1788.14489672020],
[0.298, 5.09589374634, 528.72775724810],
[0.340, 4.56537070220, 750.10360753340],
[0.272, 2.35346960340, 534.35683154060],
[0.360, 3.91050161665, 74.78159856730],
[0.299, 1.43093538841, 909.81873305460],
[0.297, 2.56584512211, 530.65417294110],
[0.235, 4.81644489422, 535.10759106600],
[0.306, 0.68420442848, 380.12776796000],
[0.236, 4.63162956792, 526.77020378780],
[0.270, 0.18549916939, 21.34064100240],
[0.288, 4.26655874393, 1802.37199072180],
[0.196, 5.35950443033, 2214.74308759620],
[0.190, 4.54615193260, 2104.53676637680],
[0.193, 4.35426216497, 511.53171782990],
[0.178, 4.51895208036, 3178.14579056760],
[0.194, 0.57050756837, 1361.54670584420],
[0.200, 1.48040474749, 302.16477565500],
[0.168, 5.40141749419, 524.27433912320],
[0.152, 0.68077486546, 1905.46476494040],
[0.149, 1.06678990744, 831.85574074960],
[0.182, 3.62401009613, 38.13303563780],
[0.176, 5.64331384323, 963.40270297140],
[0.184, 4.48850356629, 604.47256366190],
[0.133, 5.45026366125, 2641.34127847220],
[0.143, 2.21577268292, 1439.50969814920],
[0.130, 4.88155705493, 2531.13495725280],
[0.129, 6.15206333598, 547.85021235930],
[0.133, 5.43193972385, 1603.29998928540],
[0.133, 3.49297492409, 529.16970023280],
[0.132, 3.98820790955, 530.21222995640],
[0.118, 5.38352943814, 1891.23767093880],
[0.133, 5.65694269884, 76.26607127560],
[0.145, 2.94976686191, 454.90936652730],
[0.115, 3.29206553804, 3.93215326310],
[0.102, 4.48856749557, 2001.44399215820],
[0.106, 6.08434275898, 10.29494073850],
[0.093, 5.84737771840, 2324.94940881560],
[0.101, 0.15815934254, 2655.56837247380],
[0.115, 3.59221021604, 2015.67108615980],
[0.103, 4.70399583323, 305.34616939270],
[0.084, 0.44180206332, 1593.00504854690],
[0.092, 2.44863388631, 490.33408917940],
[0.087, 6.23817512863, 6283.07584999140],
[0.095, 3.30154605532, 2317.83586181480],
[0.072, 1.90578907085, 528.94020556920],
[0.072, 5.57619428876, 530.44172462000],
[0.078, 5.97323507836, 1585.89150154610],
],
# B2
[
[8094.051, 1.46322843658, 529.69096509460],
[742.415, 0.95691639003, 522.57741809380],
[813.244, 3.14159265359, 0.00000000000],
[398.951, 2.89888666447, 536.80451209540],
[342.226, 1.44683789727, 1059.38193018920],
[73.948, 0.40724675866, 1052.26838318840],
[46.151, 3.48036895772, 1066.49547719000],
[29.314, 0.99088831805, 515.46387109300],
[29.717, 1.92504171329, 1589.07289528380],
[22.753, 4.27124052435, 7.11354700080],
[13.916, 2.92242387338, 543.91805909620],
[12.067, 5.22168932482, 632.78373931320],
[10.703, 4.88024222475, 949.17560896980],
[6.078, 6.21089108431, 1045.15483618760],
[5.935, 0.52977760072, 1581.95934828300],
[5.037, 1.43444929374, 526.50957135690],
[4.564, 0.91811732585, 1162.47470440780],
[4.547, 4.01953745202, 1596.18644228460],
[5.098, 6.03169795231, 735.87651353180],
[3.593, 4.54080164408, 110.20632121940],
[3.443, 1.38618954572, 533.62311835770],
[3.277, 4.39650286553, 14.22709400160],
[3.407, 0.42275631534, 419.48464387520],
[2.904, 2.06041641723, 316.39186965660],
[2.541, 3.98323842017, 323.50541665740],
[3.113, 2.48079280193, 2118.76386037840],
[3.061, 2.39880866911, 532.87235883230],
[2.155, 4.77990637140, 942.06206196900],
[2.143, 3.88727338786, 426.59819087600],
[2.252, 0.37196434120, 1155.36115740700],
[2.019, 3.89985000464, 846.08283475120],
[1.857, 1.19658907851, 103.09277421860],
[1.683, 1.42264195434, 1265.56747862640],
[2.313, 0.87671613055, 213.29909543800],
[1.443, 2.38565505909, 1169.58825140860],
[1.823, 5.80106463776, 625.67019231240],
[1.728, 2.24114678267, 525.75881183150],
[1.198, 0.03252059731, 956.28915597060],
[1.138, 3.46420904745, 1073.60902419080],
[1.086, 5.35279146700, 117.31986822020],
[0.840, 2.89946334223, 95.97922721780],
[0.746, 5.53017890231, 1478.86657406440],
[0.944, 4.05587053500, 206.18554843720],
[0.758, 3.74770617289, 433.71173787680],
[0.673, 1.26396626349, 508.35032409220],
[0.889, 6.07878453176, 728.76296653100],
[0.600, 1.82954494089, 639.89728631400],
[0.589, 1.23625943417, 1258.45393162560],
[0.619, 0.67923057477, 838.96928775040],
[0.566, 5.36336098734, 742.99006053260],
[0.648, 5.32990375008, 853.19638175200],
[0.553, 3.15511946637, 220.41264243880],
[0.432, 1.03719283016, 1692.16566950240],
[0.435, 1.65056479007, 519.39602435610],
[0.430, 1.41830384501, 412.37109687440],
[0.431, 2.20986254651, 1368.66025284500],
[0.415, 4.35372561905, 330.61896365820],
[0.438, 0.16552277290, 1574.84580128220],
[0.312, 4.50639455819, 2125.87740737920],
[0.280, 3.01441283033, 551.03160609700],
[0.309, 0.67399908949, 2111.65031337760],
[0.301, 3.06868080871, 1062.56332392690],
[0.236, 1.94696842200, 1485.98012106520],
[0.235, 3.41850395941, 199.07200143640],
[0.246, 2.61803442505, 309.27832265580],
[0.238, 2.56643737684, 539.98590583310],
[0.248, 2.96997778167, 2648.45482547300],
[0.209, 5.82481690851, 1471.75302706360],
[0.205, 1.20202002469, 1056.20053645150],
[0.188, 0.97113663101, 1685.05212250160],
[0.137, 2.91203499563, 1699.27921650320],
[0.131, 1.79274504072, 1063.31408345230],
[0.161, 1.05926568614, 1795.25844372100],
[0.112, 2.62660288825, 440.82528487760],
[0.110, 3.56263668146, 227.52618943960],
[0.114, 6.13907482464, 1038.04128918680],
[0.103, 4.64287101040, 3.18139373770],
[0.123, 4.81268110532, 21.34064100240],
[0.102, 4.27603827970, 1375.77379984580],
[0.089, 1.22926014128, 1898.35121793960],
[0.080, 0.62129648755, 831.85574074960],
],
# B3
[
[251.624, 3.38087923084, 529.69096509460],
[121.738, 2.73311837200, 522.57741809380],
[48.694, 1.03689996685, 536.80451209540],
[10.988, 2.31463561347, 1052.26838318840],
[8.067, 2.76729757621, 515.46387109300],
[6.205, 1.78115827370, 1066.49547719000],
[7.287, 4.25268318975, 1059.38193018920],
[3.627, 1.13028917221, 543.91805909620],
[2.798, 3.14159265359, 0.00000000000],
[1.898, 2.28934054087, 7.11354700080],
[1.643, 1.77507208483, 1045.15483618760],
[0.945, 0.45261136388, 632.78373931320],
[0.758, 0.30577920142, 949.17560896980],
[0.731, 2.63748223583, 14.22709400160],
[0.876, 0.32927768725, 1589.07289528380],
[0.678, 2.36909615348, 1581.95934828300],
[0.623, 2.48056213600, 1596.18644228460],
[0.736, 1.52532370632, 735.87651353180],
[0.499, 3.67985494258, 419.48464387520],
[0.454, 0.26977404624, 942.06206196900],
[0.453, 3.18232334886, 526.50957135690],
[0.409, 2.88147337106, 110.20632121940],
[0.347, 5.76244285870, 103.09277421860],
[0.310, 2.98017326384, 508.35032409220],
[0.321, 4.40642025933, 532.87235883230],
[0.300, 1.66936571536, 625.67019231240],
[0.295, 1.75924202728, 1073.60902419080],
[0.282, 3.11087801399, 533.62311835770],
[0.263, 0.55255030187, 426.59819087600],
[0.208, 2.17540496886, 1155.36115740700],
[0.183, 4.34670868038, 525.75881183150],
[0.180, 6.07777744541, 639.89728631400],
[0.159, 2.60843864402, 1162.47470440780],
[0.117, 4.70141431381, 95.97922721780],
[0.107, 5.48942805114, 433.71173787680],
[0.105, 3.75192101775, 316.39186965660],
[0.130, 1.37897716939, 323.50541665740],
[0.094, 3.05797832024, 1265.56747862640],
[0.114, 3.75170981478, 117.31986822020],
[0.095, 0.54905691533, 1169.58825140860],
[0.088, 3.26874502411, 213.29909543800],
[0.098, 2.00704668688, 1574.84580128220],
],
# B4
[
[15.050, 4.52956999637, 522.57741809380],
[5.370, 4.47427159142, 529.69096509460],
[4.456, 5.43908581047, 536.80451209540],
[3.422, 0.00000000000, 0.00000000000],
[1.833, 4.51807036227, 515.46387109300],
[1.322, 4.20117611581, 1052.26838318840],
[0.755, 5.59451554966, 543.91805909620],
[0.512, 0.05803177475, 1066.49547719000],
[0.282, 3.66807771223, 1059.38193018920],
[0.147, 3.56490986181, 1045.15483618760],
[0.142, 5.69936472988, 7.11354700080],
[0.112, 1.16718383135, 14.22709400160],
],
# B5
[
[1.445, 0.09198554072, 522.57741809380],
[0.368, 0.00874408003, 515.46387109300],
[0.304, 3.27902945138, 536.80451209540],
[0.129, 0.33959775247, 529.69096509460],
[0.095, 1.29305954542, 543.91805909620],
],
]
"""This table contains Jupiter's periodic terms (all of them) from the
planetary theory VSOP87 for the heliocentric latitude at the equinox of date
(taken from the 'D' solution). In Meeus' book a shortened version can be found
in pages 430-432."""
VSOP87_R = [
# R0
[
[520887429.471, 0.00000000000, 0.00000000000],
[25209327.020, 3.49108640015, 529.69096509460],
[610599.902, 3.84115365602, 1059.38193018920],
[282029.465, 2.57419879933, 632.78373931320],
[187647.391, 2.07590380082, 522.57741809380],
[86792.941, 0.71001090609, 419.48464387520],
[72062.869, 0.21465694745, 536.80451209540],
[65517.227, 5.97995850843, 316.39186965660],
[29134.620, 1.67759243710, 103.09277421860],
[30135.275, 2.16132058449, 949.17560896980],
[23453.209, 3.54023147303, 735.87651353180],
[22283.710, 4.19362773546, 1589.07289528380],
[23947.340, 0.27457854894, 7.11354700080],
[13032.600, 2.96043055741, 1162.47470440780],
[9703.346, 1.90669572402, 206.18554843720],
[12749.004, 2.71550102862, 1052.26838318840],
[9161.431, 4.41352618935, 213.29909543800],
[7894.539, 2.47907551404, 426.59819087600],
[7057.978, 2.18184753111, 1265.56747862640],
[6137.755, 6.26417542514, 846.08283475120],
[5477.093, 5.65729325169, 639.89728631400],
[3502.519, 0.56531297394, 1066.49547719000],
[4136.890, 2.72219979684, 625.67019231240],
[4170.012, 2.01605033912, 515.46387109300],
[2499.966, 4.55182055941, 838.96928775040],
[2616.955, 2.00993967129, 1581.95934828300],
[1911.876, 0.85621927419, 412.37109687440],
[2127.644, 6.12751461750, 742.99006053260],
[1610.549, 3.08867789275, 1368.66025284500],
[1479.484, 2.68026191372, 1478.86657406440],
[1230.708, 1.89042979701, 323.50541665740],
[1216.810, 1.80171561024, 110.20632121940],
[961.072, 4.54876989805, 2118.76386037840],
[885.708, 4.14785948471, 533.62311835770],
[776.700, 3.67696954690, 728.76296653100],
[998.579, 2.87208940110, 309.27832265580],
[1014.959, 1.38673237666, 454.90936652730],
[727.162, 3.98824686402, 1155.36115740700],
[655.289, 2.79065604219, 1685.05212250160],
[821.465, 1.59342534396, 1898.35121793960],
[620.798, 4.82284338962, 956.28915597060],
[653.981, 3.38150775269, 1692.16566950240],
[812.036, 5.94091899141, 909.81873305460],
[562.120, 0.08095987241, 543.91805909620],
[542.221, 0.28360266386, 525.75881183150],
[457.859, 0.12722694510, 1375.77379984580],
[614.784, 2.27624915604, 942.06206196900],
[435.805, 2.60272129748, 95.97922721780],
[496.066, 5.53005947761, 380.12776796000],
[469.965, 2.81896276101, 1795.25844372100],
[445.003, 0.14623567024, 14.22709400160],
[290.869, 3.89339143564, 1471.75302706360],
[276.627, 2.52238450687, 2001.44399215820],
[275.084, 2.98863518924, 526.50957135690],
[293.875, 2.04938438861, 199.07200143640],
[290.985, 6.03131226226, 1169.58825140860],
[338.342, 2.79873192583, 1045.15483618760],
[257.482, 6.13395478303, 532.87235883230],
[319.013, 1.34803130803, 2214.74308759620],
[309.352, 5.36855804945, 1272.68102562720],
[345.804, 1.56404293688, 491.55792945680],
[303.364, 1.15407454372, 5753.38488489680],
[192.325, 0.91996333387, 1596.18644228460],
[215.398, 2.63572815848, 2111.65031337760],
[200.738, 2.37259566683, 1258.45393162560],
[239.036, 3.57397189838, 835.03713448730],
[197.073, 5.92859096863, 453.42489381900],
[139.440, 3.63960322318, 1788.14489672020],
[191.373, 6.28251311870, 983.11585891360],
[176.551, 2.57669991654, 9683.59458111640],
[123.567, 2.26158186345, 2317.83586181480],
[128.176, 4.66585907670, 831.85574074960],
[112.430, 0.85604150812, 433.71173787680],
[128.817, 1.10567106595, 2531.13495725280],
[99.390, 4.50312054049, 518.64526483070],
[93.870, 2.72553879990, 853.19638175200],
[106.481, 5.81462222290, 220.41264243880],
[120.188, 2.95156363556, 3.93215326310],
[104.002, 2.22221906187, 74.78159856730],
[81.655, 3.23481337678, 1361.54670584420],
[112.513, 4.86216964016, 528.20649238630],
[79.539, 0.88542246830, 430.53034413910],
[85.801, 2.11458386763, 1574.84580128220],
[85.685, 2.33823884827, 2428.04218303420],
[68.311, 3.35727048905, 2104.53676637680],
[69.570, 3.04164697156, 302.16477565500],
[69.775, 3.22402404312, 305.34616939270],
[69.570, 0.20494979941, 532.13864564940],
[56.991, 2.00204191909, 2634.22773147140],
[77.062, 2.09816000231, 508.35032409220],
[56.716, 3.91743976711, 2221.85663459700],
[58.325, 5.72360355252, 628.85158605010],
[52.485, 4.02485010492, 527.24328453980],
[63.645, 1.09973563964, 1364.72809958190],
[53.607, 0.87425992614, 2847.52682690940],
[59.598, 0.95822471775, 494.26624244250],
[57.960, 3.45779497978, 2008.55753915900],
[41.512, 3.51955526735, 529.73914920440],
[44.666, 1.62313786651, 984.60033162190],
[44.883, 4.90091959557, 2648.45482547300],
[53.206, 1.19800364308, 760.25553592000],
[44.393, 4.42623747662, 1063.31408345230],
[37.566, 2.93021095213, 1677.93857550080],
[41.516, 0.32174409278, 529.64278098480],
[42.855, 0.03093594081, 1439.50969814920],
[45.963, 2.54342106514, 636.71589257630],
[40.181, 4.39381642864, 1148.24761040620],
[38.770, 4.31675565025, 149.56319713460],
[40.348, 2.10140891053, 2744.43405269080],
[48.851, 5.60297777544, 2810.92146160520],
[37.085, 5.07828164301, 1905.46476494040],
[43.875, 1.24536971083, 621.73803904930],
[34.005, 3.09360167248, 2420.92863603340],
[36.782, 0.84232174637, 530.65417294110],
[31.139, 5.35811251334, 1485.98012106520],
[39.295, 4.70800489067, 569.04784100980],
[39.700, 2.46163878814, 355.74874557180],
[31.527, 6.19284070863, 3.18139373770],
[28.399, 2.48456666067, 519.39602435610],
[32.432, 2.73281750275, 604.47256366190],
[27.119, 3.92341697086, 2324.94940881560],
[26.753, 1.74975198417, 2950.61960112800],
[28.986, 1.83535862643, 1891.23767093880],
[26.493, 0.60380196895, 1055.44977692610],
[33.525, 0.76068430639, 643.82943957710],
[26.568, 1.03594610835, 405.25754987360],
[25.534, 3.46320665375, 458.84151979040],
[24.421, 0.88181836930, 423.41679713830],
[32.949, 3.18597137308, 528.72775724810],
[22.456, 0.43129919683, 1073.60902419080],
[21.599, 1.41820425091, 540.73666535850],
[25.673, 0.52358194760, 511.53171782990],
[21.115, 3.08023522766, 629.60234557550],
[22.713, 0.65234613144, 3163.91869656600],
[19.189, 5.16589014963, 635.96513305090],
[26.042, 1.33629471285, 330.61896365820],
[18.263, 3.59973446951, 746.92221379570],
[18.210, 2.66819439927, 1994.33044515740],
[19.724, 4.13552133321, 1464.63948006280],
[19.480, 1.85656428109, 3060.82592234740],
[23.927, 4.99826361784, 1289.94650101460],
[21.886, 5.91718683551, 1802.37199072180],
[17.482, 2.82161612542, 2737.32050569000],
[16.608, 5.67394889755, 408.43894361130],
[22.892, 5.26731352093, 672.14061522840],
[18.349, 1.89869734949, 1021.24889455140],
[19.123, 3.65882402977, 415.55249061210],
[15.735, 3.34772676006, 1056.20053645150],
[16.373, 0.18094878053, 1699.27921650320],
[18.899, 3.69120638874, 88.86568021700],
[18.655, 1.97327300097, 38.13303563780],
[15.542, 3.82204881010, 721.64941953020],
[16.780, 1.90976657921, 217.23124870110],
[15.313, 1.05907174619, 114.13847448250],
[15.190, 1.32317039042, 117.31986822020],
[15.080, 3.74469077216, 2641.34127847220],
[19.836, 2.73184571324, 39.35687591520],
[14.708, 1.67270454473, 529.16970023280],
[14.036, 3.54305270022, 142.44965013380],
[12.931, 1.48829749349, 3267.01147078460],
[14.924, 1.32546085940, 490.33408917940],
[14.753, 4.64530618027, 6283.07584999140],
[14.672, 0.80451954754, 5223.69391980220],
[12.085, 3.67072510553, 750.10360753340],
[11.954, 2.97127390765, 505.31194270640],
[14.650, 2.16792930250, 530.21222995640],
[11.869, 1.66551754962, 2207.62954059540],
[12.273, 0.20690014405, 1062.56332392690],
[11.460, 1.11906683214, 561.93429400900],
[11.083, 3.22049096074, 535.10759106600],
[11.567, 5.22625628971, 524.06189080210],
[11.161, 3.82945634036, 76.26607127560],
[10.918, 1.27796962818, 2125.87740737920],
[12.685, 3.96848605476, 2538.24850425360],
[11.230, 3.23092119889, 422.66603761290],
[12.645, 0.73670428580, 908.33426034630],
[11.330, 5.56127247007, 531.17543780290],
[9.509, 5.00507284204, 597.35901666110],
[10.291, 3.84159025239, 1781.03134971940],
[10.762, 4.91380719453, 525.02509864860],
[11.786, 5.11863653538, 685.47393735270],
[11.980, 1.72470898635, 911.30320576290],
[8.937, 2.40338241992, 2310.72231481400],
[9.253, 2.57670338148, 3053.71237534660],
[9.488, 2.95089828501, 1382.88734684660],
[9.889, 0.43758517388, 3480.31056622260],
[8.781, 3.66562388594, 739.80866679490],
[8.664, 2.70398612383, 526.77020378780],
[9.505, 1.61249870019, 3377.21779200400],
[11.540, 1.59520481029, 1474.67378837040],
[9.533, 0.35468711552, 1512.80682400820],
[9.980, 4.80984684596, 558.00214074590],
[9.014, 1.21458362718, 416.30325013750],
[7.969, 0.08480602718, 528.94020556920],
[8.668, 5.29060005706, 945.24345570670],
[7.851, 1.46751861875, 963.40270297140],
[8.611, 1.13232641062, 532.61172640140],
[7.838, 6.26933498027, 647.01083331480],
[7.581, 2.90608705954, 533.88375078860],
[8.583, 6.06634530166, 10213.28554621100],
[10.198, 2.48743123636, 1819.63746610920],
[8.536, 2.22700701790, 9153.90361602180],
[9.759, 6.15593336218, 593.42686339800],
[7.968, 3.75535355212, 530.44172462000],
[7.142, 3.58836120327, 2957.73314812880],
[7.122, 0.11970048938, 224.34479570190],
[8.731, 0.75302913970, 960.22130923370],
[7.063, 2.16793037690, 724.83081326790],
[7.263, 2.29499675875, 520.12973753900],
[6.418, 1.25058991868, 3583.40334044120],
[8.270, 1.24806288317, 495.75071515080],
[6.483, 4.74567772640, 202.25339517410],
[7.197, 3.84169279666, 618.55664531160],
[8.146, 0.73147060302, 230.56457082540],
[6.165, 5.50124418381, 11.04570026390],
[7.946, 2.07754951174, 953.10776223290],
[7.675, 0.92400307662, 525.49817940060],
[6.210, 1.45641362115, 483.22054217860],
[7.359, 0.31355650764, 378.64329525170],
[6.707, 2.92071167098, 1038.04128918680],
[7.143, 0.18218134889, 731.94436026870],
[7.309, 6.27084533477, 21.34064100240],
[6.135, 2.67651237303, 312.45971639350],
[5.558, 3.83419160288, 534.35683154060],
[5.344, 5.25294750019, 1048.33622992530],
[7.504, 0.74281415471, 457.61767951300],
[5.335, 6.23059924424, 551.03160609700],
[5.613, 1.51210605952, 524.27433912320],
[5.284, 2.18579185671, 280.96714700450],
[5.475, 5.95864753605, 539.98590583310],
[5.056, 0.37387972537, 529.53090640020],
[6.202, 5.53813122743, 2.44768055480],
[5.490, 5.97692444199, 227.52618943960],
[6.266, 0.76632858238, 938.12990870590],
[5.750, 2.13496323512, 191.95845443560],
[5.218, 4.69335266854, 560.71045373160],
[5.480, 5.21157595558, 1057.89745748090],
[5.738, 0.34249718209, 535.91074021810],
[4.816, 1.51326236835, 2524.02141025200],
[5.056, 3.46671669992, 529.85102378900],
[4.710, 2.27813830550, 3370.10424500320],
[5.228, 3.61776977584, 2097.42321937600],
[4.878, 1.39829798223, 3693.60966166060],
[5.727, 4.80120381106, 598.84348936940],
[5.707, 3.94177950323, 2854.64037391020],
[4.988, 4.87244187719, 1.48447270830],
[5.424, 3.53268613904, 456.39383923560],
[4.288, 4.84438067847, 70.84944530420],
[5.944, 3.79180483544, 25558.21217647960],
[4.195, 2.09136830994, 2627.11418447060],
[4.582, 5.61707254513, 2435.15573003500],
[4.268, 6.20250525415, 775.23338944700],
[4.521, 0.20049967962, 92.04707395470],
[5.405, 4.66492781581, 833.55266177900],
[5.607, 3.30226645638, 535.32003938710],
[4.171, 3.14873010832, 944.98282327580],
[4.108, 5.84489743779, 440.82528487760],
[4.367, 4.68363584557, 327.43756992050],
[4.033, 3.30883782817, 3274.12501778540],
[4.292, 0.20604269202, 3796.70243587920],
[4.270, 0.98941708997, 387.24131496080],
[4.259, 3.21120589971, 696.51963761660],
[4.673, 1.96606729969, 107.02492748170],
[4.031, 4.62854606236, 2751.54759969160],
[5.115, 2.66416451377, 1215.16490244730],
[4.181, 4.74527698816, 988.53248488500],
[4.374, 1.50010561403, 1894.41906467650],
[3.803, 3.59911687954, 437.64389113990],
[3.761, 3.96903199782, 732.69511979410],
[3.620, 1.57847427805, 381.61224066830],
[3.490, 0.63097592112, 529.90341341570],
[4.019, 2.57664165720, 916.93228005540],
[4.133, 4.78417930217, 824.74219374880],
[4.411, 3.13179382423, 630.33605875840],
[4.099, 3.63702212253, 810.65811209910],
[3.704, 6.17243801274, 537.76771994190],
[4.124, 2.14248285449, 210.11770170030],
[3.490, 3.20962050417, 529.47851677350],
[3.281, 1.53106243317, 547.85021235930],
[3.554, 6.03787799174, 739.05790726950],
[4.101, 6.00406226999, 902.70518605380],
[3.267, 3.49354065789, 1166.40685767090],
[3.286, 2.55966870530, 945.99421523210],
[4.041, 4.78735413707, 850.01498801430],
[4.304, 0.11406117717, 1744.85586754190],
[4.043, 5.20417093600, 635.23141986800],
[3.115, 4.61986265585, 952.35700270750],
[3.016, 0.95126220905, 3899.79521009780],
[3.017, 2.59699501992, 632.83192342300],
[3.219, 1.83594791142, 18.15924726470],
[3.203, 6.12597544496, 10.29494073850],
[3.220, 6.14213423140, 1158.54255114470],
[3.000, 5.69509924353, 632.73555520340],
[3.226, 5.59910267099, 608.40471692500],
[3.118, 5.64998934505, 99.16062095550],
[3.745, 2.08111521615, 282.45161971280],
[2.837, 4.60175594220, 245.54242435240],
[3.093, 6.02049413961, 633.74694715970],
[3.120, 2.29047945342, 631.82053146670],
[2.662, 3.69016679729, 885.43971066640],
[3.150, 1.79784999553, 521.61421024730],
[2.822, 3.14927418161, 295.05122865420],
[2.615, 0.20732170653, 35.42472265210],
[2.971, 1.28795094653, 1023.95720753710],
[2.571, 2.01817133502, 1514.29129671650],
[2.592, 0.48790221200, 195.13984817330],
[3.263, 2.38820607343, 836.52160719560],
[2.501, 0.21653750027, 465.95506679120],
[2.451, 5.58559489768, 544.66881862160],
[2.535, 1.44414086617, 460.53844081980],
[2.666, 3.30350145485, 2413.81508903260],
[2.412, 4.36756580310, 1056.93424963440],
[2.452, 4.53818816565, 514.71311156760],
[3.239, 1.17022488774, 177.87437278590],
[3.218, 0.60551913257, 1061.82961074400],
[2.408, 0.65423523810, 523.54062594030],
[2.299, 2.15247752560, 319.57326339430],
[2.791, 2.71505085086, 610.69233878540],
[2.729, 1.77685979153, 252.65597135320],
[2.666, 3.77750458842, 3171.03224356680],
[2.303, 0.36676453766, 1969.20066324380],
[2.664, 0.09674841214, 565.11568774670],
[2.312, 2.07210502831, 3686.49611465980],
[2.680, 4.94445888050, 1593.00504854690],
[2.193, 0.55645982205, 2228.97018159780],
[2.526, 1.07528597373, 12036.46073488820],
[2.778, 1.48379350517, 447.79581952650],
[2.235, 5.95475282699, 6151.53388830500],
[2.759, 4.63976153480, 462.02291352810],
[2.175, 4.53588570240, 501.37978944330],
[2.323, 5.93670041006, 611.44309831080],
[2.384, 2.81746622971, 3340.61242669980],
[2.087, 3.10716079675, 1049.08698945070],
[1.994, 2.02500860064, 1058.86066532740],
[2.199, 2.20937490997, 1269.49963188950],
[2.705, 1.97665276677, 415.29185818120],
[2.787, 1.31053438756, 1041.22268292450],
[2.003, 4.66904374443, 679.25416222920],
[1.962, 1.82999730674, 2943.50605412720],
[2.289, 2.96480800939, 69.15252427480],
[2.192, 4.47837196209, 209.36694217490],
[2.020, 0.04621364490, 4113.09430553580],
[2.082, 1.11203059170, 4010.00153131720],
[1.991, 3.20108648275, 3590.51688744200],
[1.900, 3.32227077969, 421.93232443000],
[2.193, 2.82218305362, 292.01284726840],
[2.288, 1.94695631885, 1279.79457262800],
[1.843, 5.23293634337, 14.97785352700],
[1.932, 5.46684252030, 2281.23049651060],
[2.177, 2.93031976617, 429.04587143080],
[2.125, 0.06224847826, 24.37902238820],
[2.464, 5.39581078430, 1261.63532536330],
[1.938, 3.79908004671, 1059.43011429900],
[2.029, 3.95461157815, 771.30123618390],
[1.841, 4.74905354737, 78.71375183040],
[1.922, 2.21862085389, 99.91138048090],
[1.836, 5.75449805175, 623.22251175760],
[2.145, 3.87052575546, 451.94042111070],
[1.782, 0.40860352236, 754.03576079650],
[1.784, 1.49468287576, 529.95159752550],
[1.842, 3.49726261337, 1354.43315884340],
[1.748, 3.48730020953, 522.62560220360],
[1.816, 1.24334711210, 417.03696332040],
[1.752, 1.15500390019, 1060.34513803570],
[1.729, 2.69831073799, 642.34496686880],
[1.985, 1.99916658759, 934.94851496820],
[1.828, 5.44095029767, 1201.83158032300],
[2.158, 3.45672748590, 827.92358748650],
[1.959, 1.06033047373, 33.94024994380],
[1.751, 3.13572498964, 384.05992122310],
[1.781, 5.02895146997, 1098.73880610440],
[2.074, 3.18582065441, 1366.21257229020],
[1.757, 5.02778552877, 586.31331639720],
[2.045, 3.08816627459, 535.84130424890],
[2.273, 5.17998505813, 3178.14579056760],
[1.617, 3.16674916201, 67.66805156650],
[1.627, 6.10603469594, 432.01481684740],
[1.930, 1.63968957659, 5.41662597140],
[1.741, 0.99408274736, 1254.52177836250],
[1.607, 5.65498642076, 1165.65609814550],
[1.676, 3.06138410273, 1134.16352875650],
[1.821, 3.05183555090, 567.82400073240],
[1.677, 3.09175084930, 1251.34038462480],
[1.994, 2.52023134712, 1059.90319505100],
[2.204, 6.15376698510, 563.63121503840],
[1.692, 4.19142612803, 106.27416795630],
[1.906, 5.58417395051, 32.24332891440],
[2.206, 1.75883974012, 1151.42900414390],
[1.552, 3.04262360186, 385.54439393140],
[1.508, 0.42002830727, 313.21047591890],
[1.494, 1.43672345922, 2840.41327990860],
[1.678, 2.17255433434, 306.83064210100],
[1.511, 4.44377608685, 395.10562148700],
[1.958, 0.05215107058, 761.74000862830],
[1.760, 1.27045286501, 1173.52040467170],
[1.463, 6.07810373103, 0.96320784650],
[1.498, 2.79408561759, 277.03499374140],
[1.636, 0.26199351490, 522.52923398400],
[1.507, 0.48961801593, 4216.18707975440],
[1.530, 3.42953827550, 1159.29331067010],
[1.744, 2.39637837261, 203.00415469950],
[1.569, 2.55719070621, 4.19278569400],
[1.576, 3.45039607104, 1058.41872234270],
[1.466, 2.24427539934, 1550.93985964600],
[1.784, 2.34591354953, 529.43033266370],
[1.939, 4.73685428610, 3067.93946934820],
[1.938, 0.60126164334, 1059.33374607940],
[1.523, 2.98744673443, 2730.20695868920],
[1.834, 3.78099298791, 420.96911658350],
[1.372, 3.53997115825, 5.62907429250],
[1.361, 0.45533257707, 418.52143602870],
[1.833, 5.12743628215, 1578.02719501990],
[1.839, 4.24616044210, 981.63138620530],
[1.567, 3.32429870195, 532.39927808030],
[1.340, 1.94668282270, 528.41894070740],
[1.422, 1.83191577465, 4002.88798431640],
[1.745, 5.76913240451, 490.07345674850],
[1.437, 4.19470227783, 420.44785172170],
[1.419, 0.74849005330, 632.26247445140],
[1.447, 5.65611888743, 373.01422095920],
[1.578, 3.90273683089, 602.98809095360],
[1.385, 3.88479835656, 419.43645976540],
[1.352, 0.81697905853, 1585.14074202070],
[1.399, 1.24785452243, 633.30500417500],
[1.297, 5.57914023189, 1276.61317889030],
[1.491, 1.66541781223, 2655.56837247380],
[1.252, 0.72155670765, 173.94221952280],
[1.658, 5.60924662850, 362.86229257260],
[1.606, 3.95301396173, 2274.54683263650],
[1.213, 4.55264289565, 366.79444583570],
[1.521, 0.55773831071, 1592.25428902150],
[1.220, 3.63029788040, 497.44763618020],
[1.215, 4.42854185903, 531.38788612400],
[1.549, 5.73765962068, 320.32402291970],
[1.480, 4.29779032931, 303.86169668440],
[1.507, 2.27998567874, 758.77106321170],
[1.212, 3.38335836048, 536.85269620520],
[1.245, 4.21639959154, 4.66586644600],
[1.507, 3.52136655355, 774.00954916960],
[1.481, 3.06156044618, 1585.89150154610],
[1.462, 2.30628702634, 1363.24362687360],
[1.180, 3.52708055024, 1064.79855616060],
[1.193, 5.88284733845, 1060.86640289750],
[1.398, 4.99456521692, 842.90144101350],
[1.406, 1.53799746944, 1020.02505427400],
[1.367, 4.10254739443, 799.61241183520],
[1.336, 1.89387272380, 530.96298948180],
[1.238, 3.62226383331, 3487.42411322340],
[1.306, 3.39985119727, 539.25219265020],
[1.156, 0.77127511567, 1603.29998928540],
[1.482, 0.48451915093, 493.04240216510],
[1.247, 5.64344659992, 479.28838891550],
[1.195, 2.39909893341, 561.18353448360],
[1.106, 0.89453807282, 2.92076130680],
[1.227, 2.76231244946, 299.12639426920],
[1.128, 4.72319873338, 124.43341522100],
[1.086, 5.66180289525, 1053.75285589670],
[1.329, 0.16664094530, 536.75632798560],
[1.082, 4.51407359350, 528.25467649610],
[1.105, 1.93890691771, 244.31858407500],
[1.446, 0.65096230619, 1091.62525910360],
[1.071, 4.67974963103, 521.82665856840],
[1.413, 4.72936311016, 1141.13406340540],
[1.086, 2.88721124443, 1262.38608488870],
[1.254, 5.74156595137, 527.99404406520],
[1.082, 5.60975006771, 531.12725369310],
[1.148, 3.27410230525, 1035.00290780100],
[1.224, 3.68807537150, 81.75213321620],
[1.072, 0.48068438564, 1058.63117066380],
[1.036, 1.68789163831, 1070.42763045310],
[1.052, 4.72763208332, 913.75088631770],
[1.166, 4.97812626679, 450.97721326420],
[1.042, 2.90894542321, 3906.90875709860],
[0.997, 1.65967703856, 3259.89792378380],
[1.113, 3.06502453809, 1482.79872732750],
[0.991, 0.91568114148, 576.16138801060],
[0.987, 0.91349590742, 2332.06295581640],
[1.003, 6.17381204883, 391.17346822390],
[1.087, 3.19260020877, 151.04766984290],
[0.987, 2.48065918834, 1912.57831194120],
[0.975, 1.55458771092, 536.28324723360],
[1.193, 2.19383228000, 523.09868295560],
[0.979, 3.28693620660, 1379.70595310890],
[0.963, 2.29845109892, 1467.82087380050],
[1.279, 4.73978455573, 600.54041039880],
[1.269, 1.77171706595, 5120.60114558360],
[0.938, 3.13636271584, 1372.59240610810],
[0.956, 0.94045126791, 429.77958461370],
[1.130, 4.87259620358, 874.39401040250],
[1.044, 3.52819283674, 530.58473697190],
[1.244, 0.80634178279, 419.53282798500],
[0.914, 4.34324212455, 1127.04998175570],
[1.095, 3.17513475763, 6681.22485339960],
[0.926, 5.53099018797, 537.55527162080],
[1.025, 6.08315999637, 469.88722005430],
[0.928, 2.64064849636, 31.01948863700],
[0.887, 5.53922649066, 498.67147645760],
[1.153, 5.20213407651, 554.06998748280],
[0.976, 4.26047885490, 806.72595883600],
[0.871, 5.79751110150, 594.65070367540],
[1.044, 0.31244551729, 528.79719321730],
[0.911, 0.94039205468, 337.73251065900],
[1.197, 3.12884590029, 1966.23171782720],
[0.930, 2.88178471518, 1056.46116888240],
[1.052, 1.69484089706, 484.44438245600],
[0.862, 0.67309397482, 20426.57109242200],
[1.152, 1.16751621652, 1489.91227432830],
[0.847, 3.25831322825, 1063.57471588320],
[0.884, 0.71487680084, 2042.49778910280],
[0.888, 5.38714907441, 5621.84292321040],
[1.137, 4.02029739425, 1670.07426897460],
[0.844, 3.31846798590, 812.14258480740],
[0.860, 4.78175008217, 530.91480537200],
[0.835, 3.63117401608, 451.72797278960],
[0.931, 2.27352189963, 100.64509366380],
[0.939, 3.51238251326, 523.47118997110],
[0.860, 5.34207357904, 528.46712481720],
[0.875, 0.87775537110, 4326.39340097380],
[0.961, 5.69327275886, 498.19839570560],
[0.966, 6.25512226434, 700.45179087970],
[0.842, 3.20535945596, 1670.82502850000],
[0.808, 1.09148925587, 683.18631549230],
[0.810, 5.47935192896, 525.54636351040],
[0.855, 6.06969867736, 446.31134681820],
[0.989, 1.55623875216, 1493.09366806600],
[0.837, 1.49510080792, 1025.44168024540],
[0.974, 3.67667471757, 25565.32572348040],
[0.788, 0.51622458293, 526.98265210890],
[0.820, 1.86002542644, 629.86297800640],
[0.813, 0.45441968195, 4694.00295470760],
[0.953, 0.58786779132, 627.36711334180],
[0.908, 2.82093327912, 3046.59882834580],
[0.912, 2.69124310451, 946.72792841500],
[0.820, 4.14947931572, 1884.12412393800],
[0.948, 0.77931728039, 25551.09862947879],
[0.844, 0.00976249584, 628.59095361920],
[0.910, 0.99542530366, 5760.49843189760],
[0.844, 0.22630964490, 1123.11782849260],
[0.924, 4.41952345708, 5746.27133789600],
[0.967, 3.20618313117, 9050.81084180320],
[0.800, 0.10663079153, 4532.57894941100],
[0.748, 3.01376405927, 5481.75455838080],
[0.752, 5.82360472890, 701.93626358800],
[0.771, 0.12101982692, 635.70450062000],
[0.725, 2.81220410314, 3597.63043444280],
[0.944, 0.40327408174, 1140.38330388000],
[0.726, 5.28930472464, 1304.92435454160],
[0.994, 5.16391370100, 10316.37832042960],
[0.890, 4.10819809692, 1060.13268971460],
[0.962, 1.48376004549, 1062.30269149600],
[0.883, 5.26813169286, 1542.60247236780],
[0.916, 6.02908368648, 7.86430652620],
[0.725, 2.18773773010, 1176.70179840940],
[0.808, 5.81725174908, 1087.69310584050],
[0.757, 0.77440414330, 977.48678462110],
[0.838, 3.81585420192, 986.08480433020],
[0.888, 1.89634795578, 707.56533788050],
[0.854, 5.47701506544, 2818.03500860600],
[0.796, 1.08794807212, 987.30864460760],
[0.856, 2.58042139486, 2803.80791460440],
[0.708, 1.09492310353, 248.72381809010],
[0.811, 3.23726191865, 121.25202148330],
[0.727, 1.56150632966, 4319.27985397300],
[0.687, 2.65457835371, 1567.73225428140],
[0.675, 1.78690909614, 103.14095832840],
[0.853, 4.74476428852, 951.62328952460],
[0.832, 5.14362789810, 1054.71606374320],
[0.846, 1.47557828604, 898.77303279070],
[0.701, 1.72139817505, 5230.80746680300],
[0.863, 3.98700238575, 686.95841006100],
[0.703, 2.89202252444, 63.73589830340],
[0.673, 6.11618580510, 738.32419408660],
[0.806, 4.64475158248, 533.83556667880],
[0.670, 2.67625974048, 1012.91150727320],
[0.668, 4.93815253692, 5172.47623572500],
[0.818, 1.41973280302, 580.09354127370],
[0.652, 3.41422919445, 650.94298657790],
[0.643, 2.46566726278, 1049.82070263360],
[0.859, 2.50530106631, 782.34693644780],
[0.662, 4.13533996643, 733.42883297700],
[0.812, 1.30325352179, 1055.18914449520],
[0.638, 4.21760246824, 1064.04779663520],
[0.637, 6.13121700151, 4752.99159184980],
[0.636, 0.83411828974, 711.49749114360],
[0.642, 1.86741704507, 1053.96530421780],
[0.795, 4.54081089118, 1457.52593306200],
[0.783, 4.37652961667, 105.54045477340],
[0.640, 5.44039474349, 632.03297978780],
[0.651, 5.02431301146, 528.04643369190],
[0.686, 0.27079898498, 11.77941344680],
[0.644, 5.36935176134, 835.78789401270],
[0.639, 1.86699974431, 6172.86952877200],
[0.630, 2.86895754523, 633.53449883860],
[0.826, 1.46026926041, 2199.76523406920],
[0.687, 3.81221717134, 73.29712585900],
[0.697, 4.18082589322, 1.69692102940],
[0.788, 0.21278801649, 313.94418910180],
[0.686, 2.51807576494, 638.41281360570],
[0.847, 5.56263749391, 4429.48617519240],
[0.673, 4.87494072856, 103.04459010880],
[0.663, 4.80713895807, 991.71387862270],
[0.614, 3.87231597482, 767.36908292080],
[0.666, 5.71697262323, 661.09491496450],
[0.681, 2.33844767741, 501.23677709140],
[0.597, 3.03921014345, 6.95348830640],
[0.777, 3.08786050361, 441.57604440300],
[0.588, 0.08236113246, 4164.31198961300],
[0.693, 4.66190836234, 3384.33133900480],
[0.810, 1.97701084490, 860.30992875280],
[0.602, 5.56403449542, 1587.58842257550],
[0.622, 6.11554348965, 7.06536289100],
[0.592, 3.29013906024, 10103.07922499160],
[0.692, 6.10931942233, 12.74262129330],
[0.597, 6.13204711801, 7.27360569520],
[0.594, 2.58839673551, 849.26422848890],
[0.728, 2.73732195088, 6.15033915430],
[0.602, 5.28816527514, 949.12742486000],
[0.568, 1.75508433865, 1077.54117745390],
[0.575, 4.50676079721, 1230.14275597430],
[0.588, 0.65827893998, 4642.78527063040],
[0.561, 3.87565914360, 135.33610313300],
[0.558, 3.36094471852, 24498.83024629040],
[0.557, 3.45629457197, 19896.88012732740],
[0.558, 1.17103892689, 3576.28979344040],
[0.574, 5.19235074140, 104.05598206510],
[0.560, 3.57141429379, 5333.90024102160],
[0.555, 0.18349908409, 512.42548970720],
[0.571, 0.83070148820, 1570.91364801910],
[0.632, 3.67893818442, 1065.01100448170],
[0.744, 2.33083237537, 620.25356634100],
[0.540, 5.15775909675, 1751.53953141600],
[0.592, 3.07238123875, 1446.62324515000],
[0.537, 1.52803865425, 8094.52168583260],
[0.550, 5.50701003577, 1432.39615114840],
[0.546, 2.34388967045, 949.22379307960],
[0.534, 3.04076654796, 7.16173111060],
[0.619, 6.07865159203, 46.47042291600],
[0.562, 0.96641974928, 1438.02522544090],
[0.531, 1.06695547390, 100.17201291180],
[0.599, 3.59295739143, 1144.31545714310],
[0.526, 3.51641923371, 0.75075952540],
[0.564, 0.72677136494, 1059.22187149480],
[0.537, 5.72603965787, 513.22863885930],
[0.630, 2.31183143900, 2729.45619916380],
[0.530, 4.99510636441, 9264.10993724120],
[0.649, 0.95666735852, 920.86443331850],
[0.547, 1.18801926149, 11506.76976979360],
[0.516, 3.28562070858, 734.91330568530],
[0.567, 5.13926871155, 288.08069400530],
[0.538, 0.28159637680, 153.49535039770],
[0.718, 0.48326672359, 842.15068148810],
[0.526, 4.39778401928, 546.15329132990],
[0.695, 2.44235086902, 657.16276170140],
[0.697, 4.99042365686, 12.53017297220],
[0.519, 6.27847163164, 59.80374504030],
[0.504, 2.58550284000, 5378.66178416220],
[0.496, 2.43659402827, 990.22940591440],
[0.617, 5.73284985700, 745.43774108740],
[0.519, 3.10157097770, 9161.01716302260],
[0.654, 1.31181453784, 878.32616366560],
[0.619, 3.71554817226, 2090.30967237520],
[0.500, 4.28937439066, 5216.58037280140],
[0.621, 3.98893673383, 409.92341631960],
[0.685, 1.95310431695, 3156.80514956520],
[0.552, 2.81774132958, 344.70304530790],
[0.551, 1.91969778405, 113.38771495710],
[0.682, 0.87321578326, 6069.77675455340],
[0.651, 5.09951064975, 531.33549649730],
[0.537, 3.67357440226, 605.95703637020],
[0.525, 0.74584814988, 736.83972137830],
[0.505, 3.12494814307, 1475.68518032670],
[0.622, 3.00013939606, 2349.32843120380],
[0.644, 3.00156986335, 298.23262239190],
[0.564, 3.81960833949, 1059.54198888360],
[0.468, 3.50348554992, 4841.85727206680],
[0.491, 1.28535573072, 247.23934538180],
[0.458, 0.45056377876, 1065.60170531270],
[0.543, 2.39704308320, 9690.70812811720],
[0.459, 5.29870259698, 1474.93442080130],
[0.483, 3.63649121244, 131.40394986990],
[0.632, 2.75028345792, 334.55111692130],
[0.483, 0.42979609421, 735.82832942200],
[0.540, 0.54791737146, 51646.11531805379],
[0.531, 0.30026207053, 912.78767847120],
[0.449, 3.02583472996, 5901.23920225600],
[0.544, 2.98747240952, 4223.30062675520],
[0.557, 5.83542572008, 9676.48103411560],
[0.501, 0.03408180117, 1080.72257119160],
[0.517, 4.40400852026, 2545.36205125440],
[0.481, 3.63292807076, 5584.84733259940],
[0.557, 6.11443978190, 976.00231191280],
[0.481, 3.41035583659, 3803.81598288000],
[0.622, 2.29597570837, 9999.98645077300],
[0.454, 2.88584538455, 1987.21689815660],
[0.439, 4.83198101064, 50.40257617910],
[0.475, 2.69994471394, 491.81856188770],
[0.618, 0.72471290082, 1291.43097372290],
[0.503, 0.13449993622, 2015.67108615980],
[0.551, 2.13418546604, 1440.99417085750],
[0.595, 3.78181802545, 6386.16862421000],
[0.434, 2.64411689486, 748.40668650400],
[0.592, 0.32587740408, 737.36098624010],
[0.490, 2.37988828800, 2225.78878786010],
[0.439, 1.33582802018, 995.64603188580],
[0.543, 2.05067702505, 906.84978763800],
[0.466, 2.43707405011, 3362.99069800240],
[0.481, 2.32223226419, 1357.61455258110],
[0.566, 0.59740900184, 350.33211960040],
[0.429, 2.46287580628, 3914.02230409940],
[0.429, 1.01299906509, 4333.50694797460],
[0.425, 1.67255823369, 148.07872442630],
[0.412, 3.29630633921, 7.32599532190],
[0.508, 1.16158524676, 9.56122755560],
[0.524, 5.02562926120, 1090.40141882620],
[0.409, 5.80053072411, 9146.79006902100],
[0.497, 0.01579913593, 1069.67687092770],
[0.548, 6.03429743373, 9367.20271145980],
[0.433, 5.93688350840, 1688.23351623930],
[0.424, 4.18150111530, 550.13783421970],
[0.401, 0.11519846139, 970.51624997220],
[0.503, 5.28212300854, 668.20846196530],
[0.555, 1.00328633255, 141.22580985640],
[0.404, 2.48633976473, 519.65665678700],
[0.441, 6.06185501734, 25.12978191360],
[0.412, 5.87495245826, 6.90109867970],
[0.478, 0.71264950607, 1094.80665284130],
[0.446, 2.71248183031, 31.49256938900],
[0.404, 5.49462012486, 447.93883187840],
[0.391, 1.26105612700, 8.07675484730],
[0.463, 1.93535321271, 6275.96230299060],
[0.507, 3.61089992782, 546.95644048200],
[0.402, 5.86200127054, 927.83496796740],
[0.481, 6.21043578332, 683.98946464440],
[0.483, 5.02142924458, 857.12853501510],
[0.444, 0.84873092377, 1371.84164658270],
[0.391, 2.81753436573, 5798.14642803740],
[0.395, 0.22367886581, 51116.42435295920],
[0.378, 6.03765733432, 1268.74887236410],
[0.471, 6.24506463249, 946.46729598410],
[0.405, 0.57785207581, 107.28555991260],
[0.371, 6.15750793727, 509.24409596950],
[0.370, 4.90330687618, 1436.54075273260],
[0.448, 4.76565111029, 284.14854074220],
[0.474, 0.71146352197, 2108.46891963990],
[0.509, 5.53328407404, 1128.53445446400],
],
# R1
[
[1271801.596, 2.64937511122, 529.69096509460],
[61661.771, 3.00076251018, 1059.38193018920],
[53443.592, 3.89717644226, 522.57741809380],
[31185.167, 4.88276663526, 536.80451209540],
[41390.257, 0.00000000000, 0.00000000000],
[11847.190, 2.41329588176, 419.48464387520],
[9166.360, 4.75979408587, 7.11354700080],
[3175.763, 2.79297987071, 103.09277421860],
[3203.446, 5.21083285476, 735.87651353180],
[3403.605, 3.34688537997, 1589.07289528380],
[2600.003, 3.63435101622, 206.18554843720],
[2412.207, 1.46947308304, 426.59819087600],
[2806.064, 3.74223693580, 515.46387109300],
[2676.575, 4.33052878699, 1052.26838318840],
[2100.507, 3.92762682306, 639.89728631400],
[1646.182, 5.30953510947, 1066.49547719000],
[1641.257, 4.41628669824, 625.67019231240],
[1049.866, 3.16113622955, 213.29909543800],
[1024.802, 2.55432643018, 412.37109687440],
[740.996, 2.17094630558, 1162.47470440780],
[806.404, 2.67750801380, 632.78373931320],
[676.928, 6.24953479790, 838.96928775040],
[468.895, 4.70973463481, 543.91805909620],
[444.683, 0.40281181402, 323.50541665740],
[567.076, 4.57655414712, 742.99006053260],
[415.894, 5.36836018215, 728.76296653100],
[484.689, 2.46882793186, 949.17560896980],
[337.555, 3.16781951120, 956.28915597060],
[401.738, 4.60528841541, 309.27832265580],
[347.378, 4.68148808722, 14.22709400160],
[260.753, 5.34290306101, 846.08283475120],
[220.084, 4.84210964963, 1368.66025284500],
[203.217, 5.59995425432, 1155.36115740700],
[246.603, 3.92313823537, 942.06206196900],
[183.504, 4.26526769703, 95.97922721780],
[180.134, 4.40165491159, 532.87235883230],
[197.134, 3.70551461394, 2118.76386037840],
[196.005, 3.75877587139, 199.07200143640],
[200.190, 4.43888814441, 1045.15483618760],
[170.225, 4.84647488867, 526.50957135690],
[146.335, 6.12958365535, 533.62311835770],
[133.483, 1.32245735855, 110.20632121940],
[132.076, 4.51187950811, 525.75881183150],
[123.851, 2.04290370696, 1478.86657406440],
[121.861, 4.40581788491, 1169.58825140860],
[115.313, 4.46741278152, 1581.95934828300],
[98.527, 5.72833991647, 1596.18644228460],
[91.608, 4.52965592121, 1685.05212250160],
[110.638, 3.62504147403, 1272.68102562720],
[80.536, 4.11311699583, 1258.45393162560],
[79.552, 2.71898473954, 1692.16566950240],
[100.164, 5.24693885858, 1265.56747862640],
[77.854, 5.56722651753, 1471.75302706360],
[85.766, 0.07906707372, 831.85574074960],
[82.132, 3.80763015979, 508.35032409220],
[55.319, 0.35180851191, 316.39186965660],
[52.338, 5.53074272117, 433.71173787680],
[55.769, 4.75141241141, 302.16477565500],
[50.597, 4.85603161770, 1375.77379984580],
[43.554, 4.94441642712, 1361.54670584420],
[42.172, 1.22404278447, 853.19638175200],
[37.695, 4.26767539209, 2001.44399215820],
[49.395, 4.01422828967, 220.41264243880],
[38.263, 5.33025236797, 1788.14489672020],
[35.611, 1.76205571128, 1795.25844372100],
[36.296, 3.84995284393, 1574.84580128220],
[29.332, 5.16619257786, 3.93215326310],
[25.180, 4.33777727362, 519.39602435610],
[24.778, 2.72907897410, 405.25754987360],
[27.025, 6.09669947903, 1148.24761040620],
[22.604, 0.19173890105, 380.12776796000],
[20.499, 4.32881495378, 3.18139373770],
[19.925, 4.62967500111, 1677.93857550080],
[19.528, 5.10596326232, 1073.60902419080],
[18.427, 3.76522178300, 1485.98012106520],
[18.869, 5.05259402407, 2104.53676637680],
[17.031, 4.01843356903, 2317.83586181480],
[16.671, 5.42931676507, 88.86568021700],
[15.337, 2.92700926091, 2008.55753915900],
[14.499, 3.63339836845, 628.85158605010],
[14.575, 5.50832843322, 721.64941953020],
[13.728, 4.87623389735, 629.60234557550],
[18.481, 6.03032762264, 330.61896365820],
[13.499, 1.38539534821, 518.64526483070],
[15.740, 2.93038271684, 1905.46476494040],
[12.459, 1.58587053146, 2111.65031337760],
[12.272, 3.37671053917, 635.96513305090],
[11.836, 4.08486322993, 2648.45482547300],
[11.166, 4.62623267608, 636.71589257630],
[14.348, 2.74177797727, 2221.85663459700],
[11.221, 3.55311861205, 1891.23767093880],
[13.121, 5.83845065644, 1464.63948006280],
[11.351, 2.57606886230, 511.53171782990],
[10.487, 0.49850799841, 453.42489381900],
[9.728, 4.38837468002, 1994.33044515740],
[10.131, 2.76432756215, 423.41679713830],
[8.620, 5.16374493158, 1056.20053645150],
[8.952, 4.79407952752, 2420.92863603340],
[8.126, 3.72977106954, 2634.22773147140],
[8.078, 1.29246272894, 2428.04218303420],
[8.867, 1.85684753622, 750.10360753340],
[8.912, 4.80973516711, 1062.56332392690],
[8.552, 4.53818617984, 21.34064100240],
[9.468, 4.33472161983, 1802.37199072180],
[6.904, 5.96616555709, 540.73666535850],
[7.293, 4.97763580465, 1699.27921650320],
[7.083, 4.99096728816, 1055.44977692610],
[7.226, 4.97823884383, 1898.35121793960],
[6.464, 1.39173466879, 422.66603761290],
[6.214, 4.46490158256, 551.03160609700],
[6.794, 2.90878831415, 2324.94940881560],
[6.173, 3.65617162985, 621.73803904930],
[6.243, 6.13691919694, 2125.87740737920],
[5.936, 2.58312235120, 569.04784100980],
[6.504, 4.56908431757, 1038.04128918680],
[7.305, 3.02062127734, 416.30325013750],
[6.598, 5.55348005731, 1781.03134971940],
[5.133, 6.21646917980, 963.40270297140],
[5.876, 4.23153077453, 539.98590583310],
[5.119, 0.06942832171, 1063.31408345230],
[5.460, 4.91084384602, 835.03713448730],
[4.989, 1.35153694680, 1382.88734684660],
[5.224, 0.18468411116, 117.31986822020],
[6.187, 3.87193497099, 191.95845443560],
[4.681, 4.61057119508, 643.82943957710],
[4.627, 3.34644534691, 2207.62954059540],
[4.526, 4.07729737127, 2310.72231481400],
[4.718, 4.55578336947, 2737.32050569000],
[4.471, 1.47603161897, 408.43894361130],
[4.073, 1.13014903180, 415.55249061210],
[5.476, 5.63198569698, 618.55664531160],
[4.034, 4.09631702747, 430.53034413910],
[4.304, 4.60536378943, 647.01083331480],
[3.765, 3.42751259825, 2950.61960112800],
[4.559, 4.23723998745, 227.52618943960],
[3.695, 1.03127824978, 2744.43405269080],
[3.667, 4.12268925541, 440.82528487760],
[3.677, 2.19480200527, 534.35683154060],
[3.818, 1.14800596289, 74.78159856730],
[4.221, 2.37721579949, 2538.24850425360],
[3.488, 5.33792561596, 458.84151979040],
[3.437, 4.26164443643, 10.29494073850],
[4.394, 0.18808423412, 824.74219374880],
[3.339, 4.85708402591, 295.05122865420],
[3.329, 5.50043586719, 739.80866679490],
[3.623, 4.64011531952, 2214.74308759620],
[3.185, 2.69708590442, 561.93429400900],
[3.421, 3.38512615384, 149.56319713460],
[3.442, 4.34217280083, 305.34616939270],
[3.580, 5.29481665335, 2097.42321937600],
[3.401, 2.74761862893, 2641.34127847220],
[2.901, 0.91012525424, 984.60033162190],
[3.566, 1.63400343968, 525.02509864860],
[2.869, 1.31799241974, 611.44309831080],
[2.635, 5.25517910535, 532.13864564940],
[2.683, 4.24641945773, 3053.71237534660],
[2.614, 3.17862099921, 527.24328453980],
[2.251, 4.21598247360, 739.05790726950],
[2.268, 5.52248110560, 524.27433912320],
[2.372, 4.19741177512, 217.23124870110],
[2.623, 5.82647427958, 732.69511979410],
[2.666, 3.92538056951, 210.11770170030],
[2.036, 4.84043420813, 1049.08698945070],
[2.441, 2.63840901843, 760.25553592000],
[2.095, 5.76269812349, 529.64278098480],
[2.021, 3.81308146017, 2627.11418447060],
[2.089, 4.18463193132, 945.99421523210],
[2.305, 1.61220665690, 604.47256366190],
[1.969, 5.37427735384, 142.44965013380],
[1.923, 4.75088270631, 535.10759106600],
[1.955, 5.49000238006, 1439.50969814920],
[1.877, 3.26978877187, 3267.01147078460],
[2.286, 2.93885172004, 76.26607127560],
[2.074, 5.85386852879, 532.61172640140],
[2.121, 3.92430797099, 2435.15573003500],
[1.807, 3.17208959472, 2524.02141025200],
[1.712, 4.02986641257, 731.94436026870],
[2.119, 0.41049593984, 1279.79457262800],
[1.660, 2.34370903423, 528.72775724810],
[1.655, 0.78809717175, 3060.82592234740],
[1.729, 4.26127896267, 724.83081326790],
[2.060, 5.04785330873, 2413.81508903260],
[2.095, 2.67732367556, 529.73914920440],
[1.933, 2.49162437046, 2957.73314812880],
[1.898, 2.71948262975, 952.35700270750],
[1.634, 2.98113068812, 945.24345570670],
[1.582, 5.84373095005, 547.85021235930],
[1.662, 0.27359627181, 454.90936652730],
[1.595, 1.18530167095, 38.13303563780],
[1.550, 0.64264572959, 312.45971639350],
[1.525, 4.08789824989, 1158.54255114470],
[1.542, 1.12520322326, 1021.24889455140],
[1.539, 0.37324921979, 319.57326339430],
[1.628, 5.24285773388, 1354.43315884340],
[1.897, 3.79973291113, 953.10776223290],
[1.440, 4.37872256685, 3178.14579056760],
[1.439, 4.26513521887, 526.77020378780],
[1.557, 5.43779802371, 81.75213321620],
[1.656, 6.09667089740, 530.65417294110],
[1.548, 3.48799710267, 934.94851496820],
[1.772, 5.82549274759, 909.81873305460],
[1.615, 1.45018725033, 902.70518605380],
[1.387, 2.52840497309, 530.44172462000],
[1.574, 1.89565809136, 437.64389113990],
[1.459, 3.32546061506, 1041.22268292450],
[1.377, 0.10015418633, 490.33408917940],
[1.460, 4.00706825185, 3370.10424500320],
[1.605, 4.27993020192, 2531.13495725280],
[1.707, 6.28253681644, 18.15924726470],
[1.802, 2.23019296374, 2854.64037391020],
[1.390, 3.76737324192, 1165.65609814550],
[1.498, 0.17285954362, 1141.13406340540],
[1.401, 4.81225317549, 1251.34038462480],
[1.244, 2.83383980283, 124.43341522100],
[1.320, 5.80675430384, 387.24131496080],
[1.329, 0.88314574243, 916.93228005540],
[1.558, 6.17808619637, 983.11585891360],
[1.243, 0.29239666059, 597.35901666110],
[1.541, 3.51095241498, 2751.54759969160],
[1.482, 0.83066678204, 529.16970023280],
[1.149, 3.91142023857, 99.91138048090],
[1.114, 3.53339637290, 483.22054217860],
[1.195, 4.16301075999, 203.00415469950],
[1.100, 1.74769285223, 497.44763618020],
[1.458, 5.19315120878, 1592.25428902150],
[1.123, 1.45270581179, 533.88375078860],
[1.078, 5.23991792940, 1159.29331067010],
[1.083, 3.57026506855, 2943.50605412720],
[1.072, 0.07132659992, 1070.42763045310],
[1.037, 5.48955598976, 1585.89150154610],
[1.343, 0.29600445633, 860.30992875280],
[1.361, 3.46603373194, 107.02492748170],
[1.061, 2.44580706826, 1048.33622992530],
[1.002, 5.55216117410, 337.73251065900],
[0.981, 3.15500987023, 70.84944530420],
[1.007, 4.11504050436, 501.23677709140],
[0.965, 5.63719524421, 1603.29998928540],
[1.083, 4.88373909810, 1166.40685767090],
[0.953, 2.83352026342, 3583.40334044120],
[1.060, 3.18542176646, 447.79581952650],
[1.136, 2.26568590950, 525.49817940060],
[1.191, 2.25249961404, 106.27416795630],
[0.884, 4.69777781327, 960.22130923370],
[1.165, 1.56030440737, 630.33605875840],
[0.947, 0.50856414717, 842.90144101350],
[1.011, 0.30814674949, 1593.00504854690],
[0.924, 2.31939900786, 327.43756992050],
[0.896, 0.22222521202, 746.92221379570],
[1.078, 4.78329116086, 2730.20695868920],
[0.938, 5.42471506763, 1585.14074202070],
[0.923, 4.44469169065, 9676.48103411560],
[0.894, 0.26940821870, 2655.56837247380],
[1.131, 5.46382510304, 224.34479570190],
[0.808, 0.48295590141, 3377.21779200400],
[0.809, 4.14122746067, 114.13847448250],
[0.864, 1.83217006136, 4.66586644600],
[1.106, 2.60444312553, 209.36694217490],
[0.790, 0.11493626208, 460.53844081980],
[0.799, 1.60426497590, 5223.69391980220],
[0.933, 0.30976125598, 685.47393735270],
[1.053, 5.23433104008, 842.15068148810],
[0.846, 3.02878393490, 5746.27133789600],
[0.799, 2.08457026425, 77734.01845962799],
[0.820, 0.99821486743, 373.01422095920],
[0.892, 5.36446426391, 827.92358748650],
[0.821, 3.53889274951, 498.67147645760],
[0.741, 1.32379374647, 530.21222995640],
[0.790, 2.88034567513, 938.12990870590],
[0.842, 3.39449778904, 484.44438245600],
[0.785, 0.57841470897, 850.01498801430],
[0.759, 3.82014112009, 6283.07584999140],
[0.954, 2.94534072982, 462.02291352810],
[0.767, 3.33725133157, 99.16062095550],
[0.810, 4.69425300466, 2228.97018159780],
[0.700, 1.72050221502, 775.23338944700],
[0.764, 4.91747674296, 1670.82502850000],
[0.724, 6.08692841992, 2281.23049651060],
[0.711, 4.82250918143, 11.77941344680],
[0.692, 2.63705354662, 6.59228213900],
[0.771, 3.87410612014, 9690.70812811720],
[0.906, 2.47189948442, 3274.12501778540],
[0.781, 1.25357484582, 202.25339517410],
[0.757, 3.78079814332, 2818.03500860600],
[0.756, 4.28312053897, 2803.80791460440],
[0.663, 5.27704405712, 4532.57894941100],
[0.759, 5.45358686570, 9683.59458111640],
[0.698, 5.43712520216, 565.11568774670],
[0.709, 3.71117647887, 3686.49611465980],
[0.677, 4.27891183416, 25028.52121138500],
[0.643, 1.40239510103, 9161.01716302260],
[0.656, 0.60909845504, 835.78789401270],
[0.635, 5.75373871128, 429.77958461370],
[0.702, 6.10412979847, 4635.67172362960],
[0.627, 3.03666956129, 2840.41327990860],
[0.802, 4.18688054701, 5753.38488489680],
[0.838, 4.51386507097, 1069.67687092770],
[0.633, 4.37183361444, 5.41662597140],
[0.652, 5.79409889124, 1061.82961074400],
[0.638, 2.18896270346, 313.21047591890],
[0.827, 5.94231186039, 1457.52593306200],
[0.678, 2.45013730979, 5760.49843189760],
[0.814, 4.89578791170, 1567.73225428140],
[0.624, 0.61631100566, 1176.70179840940],
[0.600, 3.20918322285, 1098.73880610440],
[0.717, 1.82349064490, 3171.03224356680],
[0.651, 4.14419317491, 2847.52682690940],
[0.629, 1.75272560843, 92.04707395470],
[0.626, 3.53146082217, 3067.93946934820],
[0.667, 4.22974611158, 4539.69249641180],
[0.565, 0.99416346033, 1894.41906467650],
[0.752, 0.46063700150, 635.23141986800],
[0.622, 1.98136818407, 25565.32572348040],
[0.614, 2.48275371627, 25551.09862947879],
[0.560, 1.40733893388, 446.31134681820],
[0.558, 4.37217796469, 1057.89745748090],
[0.628, 4.65037810102, 6275.96230299060],
[0.659, 2.41470950463, 195.13984817330],
[0.616, 2.08837621877, 10.03430830760],
[0.692, 3.13229025530, 7.63481186260],
[0.685, 4.18539472904, 46.47042291600],
[0.624, 0.02693303471, 1493.09366806600],
[0.594, 2.13375704438, 121.25202148330],
[0.508, 2.13584300710, 1.69692102940],
[0.674, 1.47570122611, 4694.00295470760],
[0.559, 4.48852017557, 531.17543780290],
[0.640, 3.10239233469, 11.04570026390],
[0.496, 1.29000001439, 927.83496796740],
[0.587, 3.30651435298, 600.54041039880],
[0.582, 0.44540948860, 113.38771495710],
[0.492, 4.83275232000, 9492.14631500480],
[0.549, 4.34579166146, 3046.59882834580],
[0.576, 1.22846846364, 1514.29129671650],
[0.593, 5.86079640612, 524.06189080210],
[0.510, 2.62557031270, 529.85102378900],
[0.489, 6.26855707323, 3693.60966166060],
[0.480, 0.30754294369, 528.94020556920],
[0.582, 3.51934668795, 1056.93424963440],
[0.493, 5.52699906925, 512.28247735530],
[0.481, 2.99681040149, 9153.90361602180],
[0.562, 3.73437025868, 2015.67108615980],
[0.458, 3.86646994292, 11.30633269480],
[0.457, 1.80238019931, 3281.23856478620],
[0.453, 6.17995938655, 1059.33374607940],
[0.551, 0.13794958618, 1912.57831194120],
[0.446, 5.53828660924, 2332.06295581640],
[0.444, 5.06219342598, 7.86430652620],
[0.461, 0.16951411708, 26087.90314157420],
[0.439, 4.14986379679, 1151.42900414390],
[0.614, 5.42289673768, 2090.30967237520],
[0.488, 3.71681959056, 447.93883187840],
[0.592, 2.91424148255, 8624.21265092720],
[0.433, 2.55336268329, 1064.04779663520],
[0.449, 5.24955106938, 10213.28554621100],
[0.510, 5.81591864532, 529.53090640020],
[0.435, 5.34355963629, 560.71045373160],
[0.449, 0.72330388784, 2758.66114669240],
[0.430, 0.94519103478, 6.36278747540],
[0.563, 6.19175228344, 1884.12412393800],
[0.443, 3.39246520261, 1152.17976366930],
[0.430, 1.28652623263, 505.31194270640],
[0.422, 5.12631540623, 944.98282327580],
[0.464, 2.90444584145, 398.14400287280],
[0.410, 1.24248975309, 5069.38346150640],
[0.411, 2.95117124177, 4326.39340097380],
[0.418, 5.15499986314, 1173.52040467170],
[0.412, 2.98125446330, 554.06998748280],
[0.403, 0.34381388674, 32.24332891440],
[0.402, 5.88926765351, 1570.91364801910],
[0.505, 1.49028912471, 3782.47534187760],
[0.447, 0.03952029309, 245.54242435240],
[0.453, 3.09458004153, 1059.43011429900],
[0.411, 3.21727542472, 1475.68518032670],
[0.426, 3.12237794195, 12566.15169998280],
[0.434, 3.59362426939, 3259.89792378380],
[0.398, 4.91510709622, 4120.20785253660],
[0.399, 4.67075122011, 234.63973644040],
[0.386, 4.81320787761, 970.51624997220],
[0.427, 3.21176085113, 977.48678462110],
[0.411, 4.31566962034, 757.21715453420],
[0.392, 1.86527946688, 885.43971066640],
[0.416, 3.81408093105, 3156.80514956520],
],
# R2
[
[79644.833, 1.35865896596, 529.69096509460],
[8251.618, 5.77773935444, 522.57741809380],
[7029.864, 3.27476965833, 536.80451209540],
[5314.006, 1.83835109712, 1059.38193018920],
[1860.833, 2.97682139367, 7.11354700080],
[836.267, 4.19889881718, 419.48464387520],
[964.466, 5.48031822015, 515.46387109300],
[406.453, 3.78250730354, 1066.49547719000],
[426.570, 2.22753101795, 639.89728631400],
[377.316, 2.24248352873, 1589.07289528380],
[497.920, 3.14159265359, 0.00000000000],
[339.043, 6.12690864038, 625.67019231240],
[362.943, 5.36761847267, 206.18554843720],
[342.048, 6.09922969324, 1052.26838318840],
[279.920, 4.26162555827, 412.37109687440],
[332.578, 0.00328961161, 426.59819087600],
[229.777, 0.70530766213, 735.87651353180],
[200.783, 3.06850623368, 543.91805909620],
[199.807, 4.42884165317, 103.09277421860],
[257.290, 0.96295364983, 632.78373931320],
[138.606, 2.93235671606, 14.22709400160],
[113.535, 0.78713911289, 728.76296653100],
[86.025, 5.14434751994, 323.50541665740],
[94.565, 1.70498041073, 838.96928775040],
[83.469, 0.05834873484, 309.27832265580],
[75.198, 1.60495195911, 956.28915597060],
[70.451, 1.50988357484, 213.29909543800],
[80.328, 2.98122361797, 742.99006053260],
[56.203, 0.95534810533, 1162.47470440780],
[61.649, 6.10137889854, 1045.15483618760],
[66.572, 5.47307178077, 199.07200143640],
[50.057, 2.72063162317, 532.87235883230],
[51.904, 5.58435625607, 942.06206196900],
[39.833, 5.94566506227, 95.97922721780],
[44.548, 5.52445621411, 508.35032409220],
[44.282, 0.27118152557, 526.50957135690],
[29.944, 0.93641735919, 1155.36115740700],
[28.412, 2.87835720211, 525.75881183150],
[26.330, 4.26891877269, 1596.18644228460],
[27.039, 2.80607741398, 1169.58825140860],
[27.477, 2.64841266238, 2118.76386037840],
[22.705, 0.17830004133, 302.16477565500],
[29.347, 1.78589692350, 831.85574074960],
[19.991, 0.04328951895, 949.17560896980],
[19.906, 1.16072627347, 533.62311835770],
[21.714, 1.88820231818, 1272.68102562720],
[17.581, 4.14974757919, 846.08283475120],
[17.085, 5.89188996975, 1258.45393162560],
[21.407, 4.35468497204, 316.39186965660],
[21.295, 0.54429472455, 1265.56747862640],
[19.859, 0.06453825800, 1581.95934828300],
[17.025, 0.53383755278, 1368.66025284500],
[12.804, 3.90044242142, 433.71173787680],
[13.072, 0.79468040717, 110.20632121940],
[11.945, 0.40671403646, 1361.54670584420],
[11.695, 4.44394618065, 405.25754987360],
[11.979, 2.22872778682, 220.41264243880],
[9.633, 6.01002272123, 853.19638175200],
[10.163, 0.99504635158, 1471.75302706360],
[8.977, 1.60328709409, 1692.16566950240],
[8.701, 3.52167876799, 1073.60902419080],
[8.314, 5.60169732564, 1574.84580128220],
[8.958, 6.26708748901, 519.39602435610],
[7.828, 0.65241611799, 1478.86657406440],
[7.833, 0.17920601344, 1685.05212250160],
[7.451, 0.88421084942, 88.86568021700],
[7.320, 0.89341249264, 721.64941953020],
[9.135, 1.51210840939, 1148.24761040620],
[6.110, 2.50080005128, 3.18139373770],
[7.037, 4.44127496638, 330.61896365820],
[5.163, 2.79219166952, 21.34064100240],
[5.079, 2.97991736844, 1375.77379984580],
[4.930, 0.04683167622, 1677.93857550080],
[4.664, 2.28007273876, 1485.98012106520],
[4.692, 0.86220230505, 3.93215326310],
[5.307, 0.85008578245, 1788.14489672020],
[4.239, 0.40758287124, 629.60234557550],
[4.230, 1.61046658091, 635.96513305090],
[3.627, 2.71151441113, 551.03160609700],
[3.314, 0.55067236587, 1795.25844372100],
[4.409, 1.28127751050, 1464.63948006280],
[3.270, 1.18744032691, 1905.46476494040],
[3.226, 6.18716071251, 1038.04128918680],
[3.103, 6.22971614425, 2001.44399215820],
[3.410, 2.44624067925, 539.98590583310],
[3.174, 5.54870592599, 191.95845443560],
[2.590, 3.24430559059, 1062.56332392690],
[2.614, 0.55149554149, 2104.53676637680],
[2.174, 5.32613824409, 1891.23767093880],
[2.659, 4.82459974220, 416.30325013750],
[2.187, 1.71707514653, 628.85158605010],
[2.263, 6.19233486371, 1994.33044515740],
[2.328, 4.28236795066, 963.40270297140],
[2.579, 0.03256542251, 1898.35121793960],
[2.077, 3.32602157426, 1699.27921650320],
[2.529, 2.39697505835, 227.52618943960],
[2.468, 0.06551346218, 750.10360753340],
[1.989, 0.29206371261, 636.71589257630],
[1.927, 0.32286661566, 295.05122865420],
[1.904, 3.43534792123, 647.01083331480],
[1.940, 0.29170673525, 2111.65031337760],
[1.880, 3.14403615586, 611.44309831080],
[2.324, 1.94960720763, 824.74219374880],
[1.854, 4.71794950485, 2125.87740737920],
[2.547, 1.23908353090, 2221.85663459700],
[1.814, 1.60250861074, 2008.55753915900],
[1.611, 5.83466560322, 422.66603761290],
[1.667, 2.32455940876, 440.82528487760],
[1.622, 0.36650974375, 1056.20053645150],
[1.624, 2.42139677881, 10.29494073850],
[1.622, 3.51892791175, 1055.44977692610],
[1.606, 5.76205763975, 117.31986822020],
[1.646, 5.88662636573, 2317.83586181480],
[2.026, 4.61781314145, 423.41679713830],
[2.098, 1.04559231028, 1781.03134971940],
[1.868, 1.12487729469, 618.55664531160],
[1.885, 2.78775930564, 1802.37199072180],
[1.445, 0.08308050305, 1382.88734684660],
[1.797, 3.00776822706, 2648.45482547300],
[1.422, 0.17649746278, 2420.92863603340],
[1.129, 1.59030291320, 380.12776796000],
[1.126, 4.19989673600, 547.85021235930],
[1.186, 5.98943062173, 2310.72231481400],
[1.108, 4.22655117757, 934.94851496820],
[1.259, 1.19687222266, 1063.31408345230],
[1.072, 3.86169004168, 1603.29998928540],
[0.946, 5.59968097387, 99.91138048090],
[0.937, 1.03083276760, 81.75213321620],
[0.938, 6.18136092771, 945.99421523210],
[0.908, 2.54355964041, 6283.07584999140],
[0.874, 5.21903196047, 2207.62954059540],
[0.874, 6.01240284465, 511.53171782990],
[1.188, 0.75698357968, 2097.42321937600],
[0.789, 3.91035208173, 10213.28554621100],
[1.000, 1.34667100304, 732.69511979410],
[0.952, 1.55355777420, 2324.94940881560],
[0.811, 5.00475553271, 319.57326339430],
[0.763, 3.98527559630, 337.73251065900],
[0.880, 1.14789972199, 952.35700270750],
[0.780, 4.69463316930, 5746.27133789600],
[0.910, 0.08774541571, 2737.32050569000],
[0.773, 0.77131695762, 5760.49843189760],
[0.764, 6.11686539353, 9676.48103411560],
[0.758, 2.19350719860, 9690.70812811720],
[0.671, 1.19532387143, 124.43341522100],
[0.661, 5.99578306627, 501.23677709140],
[0.729, 0.65312263578, 2538.24850425360],
[0.825, 2.70770030205, 3370.10424500320],
[0.670, 5.44169923277, 107.02492748170],
[0.739, 1.14609907817, 2641.34127847220],
[0.866, 3.02831268213, 3046.59882834580],
[0.718, 4.83684196454, 860.30992875280],
[0.813, 6.01229270247, 2214.74308759620],
[0.746, 1.12371143332, 739.80866679490],
[0.741, 5.93171662010, 2634.22773147140],
[0.667, 0.89885058003, 106.27416795630],
[0.573, 2.42701822581, 739.05790726950],
[0.734, 0.72837704619, 1354.43315884340],
[0.662, 2.21768976390, 2015.67108615980],
[0.782, 2.52401202862, 3679.38256765900],
[0.779, 2.38608991574, 3267.01147078460],
[0.553, 1.85211127676, 453.42489381900],
[0.701, 4.23431087374, 9683.59458111640],
[0.571, 2.98435419019, 1262.38608488870],
[0.621, 1.24462887440, 3803.81598288000],
[0.563, 5.99845316446, 1049.08698945070],
[0.538, 4.92334194042, 447.79581952650],
[0.534, 0.99911551571, 462.02291352810],
[0.541, 6.19275150397, 1987.21689815660],
[0.511, 3.28553278370, 4.66586644600],
[0.539, 5.33214565622, 2751.54759969160],
[0.651, 5.12199308959, 3156.80514956520],
[0.483, 3.03782387056, 3281.23856478620],
[0.476, 2.17592053936, 149.56319713460],
[0.510, 5.35664230912, 9.56122755560],
[0.490, 1.57324553106, 1251.34038462480],
[0.467, 5.92343423840, 203.00415469950],
[0.528, 5.81786945766, 2627.11418447060],
[0.447, 3.51498961805, 18.15924726470],
[0.429, 0.16627197188, 74.78159856730],
[0.497, 0.30985248432, 2428.04218303420],
[0.516, 3.89424540015, 2516.90786325120],
[0.519, 2.43126348834, 3686.49611465980],
[0.404, 2.77840802846, 7.16173111060],
[0.533, 4.77083438961, 3473.19701922180],
[0.515, 3.54549816613, 3178.14579056760],
[0.533, 5.61415688189, 2524.02141025200],
[0.458, 4.91616403047, 3067.93946934820],
[0.400, 3.13887720912, 540.73666535850],
[0.378, 0.86122450940, 525.02509864860],
],
# R3
[
[3519.257, 6.05800633846, 529.69096509460],
[1073.239, 1.67321345760, 536.80451209540],
[915.666, 1.41329676116, 522.57741809380],
[341.593, 0.52296542656, 1059.38193018920],
[254.893, 1.19625473533, 7.11354700080],
[221.512, 0.95225226237, 515.46387109300],
[69.078, 2.26885282314, 1066.49547719000],
[89.729, 3.14159265359, 0.00000000000],
[57.827, 1.41389745339, 543.91805909620],
[57.653, 0.52580117593, 639.89728631400],
[51.079, 5.98016364677, 412.37109687440],
[46.935, 1.57864237959, 625.67019231240],
[42.824, 6.11689609099, 419.48464387520],
[37.477, 1.18262762330, 14.22709400160],
[33.816, 1.66671706951, 1052.26838318840],
[31.195, 1.04290245896, 1589.07289528380],
[30.023, 4.63236245032, 426.59819087600],
[33.531, 0.84784977903, 206.18554843720],
[20.804, 2.50071243814, 728.76296653100],
[14.466, 0.96040197071, 508.35032409220],
[12.969, 1.50233788550, 1045.15483618760],
[11.654, 3.55513510121, 323.50541665740],
[12.319, 2.60952614503, 735.87651353180],
[15.023, 0.89136998434, 199.07200143640],
[11.160, 1.79041437555, 309.27832265580],
[10.554, 6.27845112678, 956.28915597060],
[9.812, 6.26016859519, 103.09277421860],
[9.301, 3.45126812476, 838.96928775040],
[6.672, 1.87004905364, 302.16477565500],
[7.442, 1.28047007623, 742.99006053260],
[7.178, 0.92022189637, 942.06206196900],
[5.577, 1.37980792905, 95.97922721780],
[6.834, 3.45228722967, 831.85574074960],
[4.632, 2.82934545414, 1596.18644228460],
[3.969, 1.21290005054, 1169.58825140860],
[3.869, 5.99495313698, 213.29909543800],
[3.551, 6.10714791535, 405.25754987360],
[2.943, 2.32831075458, 1155.36115740700],
[2.442, 1.86965213405, 532.87235883230],
[2.410, 0.42627205128, 220.41264243880],
[2.289, 1.94941487274, 1073.60902419080],
[2.274, 0.09211517505, 632.78373931320],
[2.189, 1.58907745204, 2118.76386037840],
[2.387, 5.97080671477, 1162.47470440780],
[2.104, 1.06751462671, 21.34064100240],
[2.128, 1.51119399925, 1258.45393162560],
[2.491, 0.35125020737, 1272.68102562720],
[2.006, 5.94487388360, 110.20632121940],
[1.980, 2.54989377864, 88.86568021700],
[2.040, 2.16463966964, 433.71173787680],
[1.955, 2.70341589777, 721.64941953020],
[1.670, 4.46255717328, 853.19638175200],
[1.910, 2.25964760758, 1361.54670584420],
[1.710, 1.98372066321, 525.75881183150],
[1.520, 0.11641358425, 949.17560896980],
[2.003, 3.16520599208, 1148.24761040620],
[1.710, 2.70850417287, 330.61896365820],
[1.629, 0.47376028854, 526.50957135690],
[1.229, 3.01987279595, 963.40270297140],
[1.671, 0.44352103086, 533.62311835770],
[1.207, 1.15774089269, 1574.84580128220],
[1.146, 2.54505851138, 846.08283475120],
[1.355, 1.17462112647, 1038.04128918680],
[1.001, 2.70272799283, 519.39602435610],
[1.372, 0.67467128629, 551.03160609700],
[0.983, 4.17198081351, 2627.11418447060],
[1.084, 1.07011164067, 227.52618943960],
[0.892, 2.92543286761, 1368.66025284500],
[0.823, 4.86559196955, 611.44309831080],
[1.136, 1.78981738432, 1581.95934828300],
[0.897, 4.91073630270, 1670.82502850000],
[0.908, 3.68804047330, 824.74219374880],
[0.789, 3.23380893250, 2125.87740737920],
[0.771, 2.39070707004, 2317.83586181480],
[0.891, 0.59692950778, 539.98590583310],
[0.876, 4.52127091462, 750.10360753340],
[0.802, 0.20759322884, 1141.13406340540],
[0.850, 0.94145487094, 191.95845443560],
[0.762, 2.25149516048, 2538.24850425360],
[0.694, 0.67080348659, 440.82528487760],
[0.741, 5.79934203525, 1485.98012106520],
[0.643, 2.48127580335, 1265.56747862640],
[0.575, 6.13756590872, 1279.79457262800],
[0.636, 5.51001645505, 2413.81508903260],
[0.636, 4.40777238491, 1382.88734684660],
[0.555, 2.18233983981, 1062.56332392690],
[0.564, 1.92775967119, 2634.22773147140],
[0.531, 2.04824376019, 295.05122865420],
[0.541, 2.32424368689, 1471.75302706360],
[0.697, 2.27179476322, 1699.27921650320],
[0.546, 1.95774905730, 1677.93857550080],
[0.465, 4.35550844067, 1692.16566950240],
[0.508, 2.50298248836, 2207.62954059540],
[0.496, 5.77087043616, 1478.86657406440],
[0.440, 5.98661963879, 934.94851496820],
[0.424, 2.80194129521, 81.75213321620],
[0.406, 3.93940190897, 316.39186965660],
[0.506, 0.18719982992, 10.29494073850],
],
# R4
[
[128.628, 0.08419309557, 536.80451209540],
[113.458, 4.24858855779, 529.69096509460],
[82.650, 3.29754909408, 522.57741809380],
[37.883, 2.73326611144, 515.46387109300],
[26.694, 5.69142588558, 7.11354700080],
[17.650, 5.40012536918, 1059.38193018920],
[12.612, 6.01560416057, 543.91805909620],
[9.287, 0.76813946494, 1066.49547719000],
[8.107, 5.68228065707, 14.22709400160],
[6.271, 5.12286932534, 639.89728631400],
[6.978, 1.42751292055, 412.37109687440],
[5.377, 3.33501947275, 625.67019231240],
[2.911, 3.40334805052, 1052.26838318840],
[2.593, 4.16090412984, 728.76296653100],
[2.562, 2.89802035072, 426.59819087600],
[2.268, 6.22195938856, 1589.07289528380],
[2.114, 3.11758855774, 1045.15483618760],
[1.673, 2.81399290364, 206.18554843720],
[1.805, 2.60030006919, 199.07200143640],
[1.823, 1.89432426038, 419.48464387520],
[1.522, 1.33432648232, 1596.18644228460],
[1.697, 0.00000000000, 0.00000000000],
[1.039, 4.41904942302, 956.28915597060],
[1.161, 5.16181311538, 831.85574074960],
[0.916, 3.17245716108, 508.35032409220],
[0.870, 5.79387813500, 1169.58825140860],
[0.916, 1.87129662931, 1148.24761040620],
[0.955, 0.66801367802, 1361.54670584420],
[0.788, 1.47515450553, 1272.68102562720],
[0.966, 5.47457968043, 220.41264243880],
[0.788, 2.42252866885, 117.31986822020],
[0.712, 0.49655897030, 1073.60902419080],
[0.656, 3.53022740783, 302.16477565500],
[0.681, 2.84507174340, 191.95845443560],
[0.771, 2.19893222018, 942.06206196900],
[0.765, 5.31147257700, 551.03160609700],
[0.667, 3.72432305249, 88.86568021700],
[0.534, 1.83172084748, 647.01083331480],
[0.553, 0.85896003802, 330.61896365820],
[0.543, 5.26057584439, 21.34064100240],
[0.584, 3.82243061802, 618.55664531160],
[0.512, 4.44485521707, 110.20632121940],
[0.612, 1.59320941864, 3.18139373770],
[0.631, 1.83863158533, 10.29494073850],
[0.491, 1.52912023181, 405.25754987360],
[0.521, 0.24011424451, 433.71173787680],
],
# R5
[
[11.188, 4.75249399945, 536.80451209540],
[4.255, 5.91516229170, 522.57741809380],
[2.079, 5.56781555864, 515.46387109300],
[1.908, 4.29659647286, 543.91805909620],
[1.875, 3.69357495838, 7.11354700080],
[1.590, 5.49312796166, 1066.49547719000],
[1.612, 4.13222808529, 1059.38193018920],
[1.240, 3.77981722506, 14.22709400160],
[1.033, 4.50671820436, 529.69096509460],
],
]
"""This table contains Jupiter's periodic terms (all of them) from the
planetary theory VSOP87 for the radius vector at the equinox of date (taken
from the 'D' solution). In Meeus' book a shortened version can be found in
pages 432-434."""
ORBITAL_ELEM = [
[34.351519, 3036.3027748, 0.0002233, 0.000000037], # L
[5.202603209, 0.0000001913, 0.0, 0.0], # a
[0.04849793, 0.000163225, -0.0000004714, -0.00000000201], # e
[1.303267, -0.0054965, 0.00000466, -0.000000002], # i
[100.464407, 1.0209774, 0.00040315, 0.000000404], # Omega
[14.331207, 1.6126352, 0.00103042, -0.000004464] # pie
]
"""This table contains the parameters to compute Jupiter's orbital elements for
the mean equinox of date. Based in Table 31.A, page 213"""
ORBITAL_ELEM_J2000 = [
[34.351519, 3034.9056606, -0.00008501, 0.000000016], # L
[1.303267, -0.0019877, 0.0000332, 0.000000097], # i
[100.464407, 0.1767232, 0.000907, -0.000007272], # Omega
[14.331207, 0.2155209, 0.00072211, -0.000004485] # pie
]
"""This table contains the parameters to compute Jupiter's orbital elements for
the standard equinox J2000.0. Based on Table 31.B, page 215"""
class Jupiter(object):
"""
Class Jupiter models that planet.
"""
@staticmethod
def geometric_heliocentric_position(epoch, tofk5=True):
"""This method computes the geometric heliocentric position of planet
Jupiter for a given epoch, using the VSOP87 theory.
:param epoch: Epoch to compute Jupiter position, as an Epoch object
:type epoch: :py:class:`Epoch`
:param tofk5: Whether or not the small correction to convert to the FK5
system will be applied or not
:type tofk5: bool
:returns: A tuple with the heliocentric longitude and latitude (as
:py:class:`Angle` objects), and the radius vector (as a float,
in astronomical units), in that order
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(2018, 10, 27.0)
>>> l, b, r = Jupiter.geometric_heliocentric_position(epoch)
>>> print(round(l.to_positive(), 4))
241.5873
>>> print(round(b, 4))
0.8216
>>> print(round(r, 5))
5.36848
"""
return geometric_vsop_pos(epoch, VSOP87_L, VSOP87_B, VSOP87_R, tofk5)
@staticmethod
def apparent_heliocentric_position(epoch):
"""This method computes the apparent heliocentric position of planet
Jupiter for a given epoch, using the VSOP87 theory.
:param epoch: Epoch to compute Jupiter position, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple with the heliocentric longitude and latitude (as
:py:class:`Angle` objects), and the radius vector (as a float,
in astronomical units), in that order
:rtype: tuple
:raises: TypeError if input values are of wrong type.
"""
return apparent_vsop_pos(epoch, VSOP87_L, VSOP87_B, VSOP87_R)
@staticmethod
def orbital_elements_mean_equinox(epoch):
"""This method computes the orbital elements of Jupiter for the mean
equinox of the date for a given epoch.
:param epoch: Epoch to compute orbital elements, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple containing the following six orbital elements:
- Mean longitude of the planet (Angle)
- Semimajor axis of the orbit (float, astronomical units)
- eccentricity of the orbit (float)
- inclination on the plane of the ecliptic (Angle)
- longitude of the ascending node (Angle)
- argument of the perihelion (Angle)
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(2065, 6, 24.0)
>>> l, a, e, i, ome, arg = Jupiter.orbital_elements_mean_equinox(epoch)
>>> print(round(l, 6))
222.433723
>>> print(round(a, 8))
5.20260333
>>> print(round(e, 7))
0.0486046
>>> print(round(i, 6))
1.29967
>>> print(round(ome, 5))
101.13309
>>> print(round(arg, 6))
-85.745532
"""
return orbital_elements(epoch, ORBITAL_ELEM, ORBITAL_ELEM)
@staticmethod
def orbital_elements_j2000(epoch):
"""This method computes the orbital elements of Jupiter for the
standard equinox J2000.0 for a given epoch.
:param epoch: Epoch to compute orbital elements, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple containing the following six orbital elements:
- Mean longitude of the planet (Angle)
- Semimajor axis of the orbit (float, astronomical units)
- eccentricity of the orbit (float)
- inclination on the plane of the ecliptic (Angle)
- longitude of the ascending node (Angle)
- argument of the perihelion (Angle)
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(2065, 6, 24.0)
>>> l, a, e, i, ome, arg = Jupiter.orbital_elements_j2000(epoch)
>>> print(round(l, 6))
221.518802
>>> print(round(a, 8))
5.20260333
>>> print(round(e, 7))
0.0486046
>>> print(round(i, 6))
1.30198
>>> print(round(ome, 5))
100.58051
>>> print(round(arg, 6))
-86.107875
"""
return orbital_elements(epoch, ORBITAL_ELEM, ORBITAL_ELEM_J2000)
@staticmethod
def geocentric_position(epoch):
"""This method computes the geocentric position of Jupiter (right
ascension and declination) for the given epoch, as well as the
elongation angle.
:param epoch: Epoch to compute geocentric position, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple containing the right ascension, the declination and
the elongation angle as Angle objects
:rtype: tuple
:raises: TypeError if input value is of wrong type.
>>> epoch = Epoch(1992, 12, 20.0)
>>> ra, dec, elon = Jupiter.geocentric_position(epoch)
>>> print(ra.ra_str(n_dec=1))
12h 47' 9.6''
>>> print(dec.dms_str(n_dec=1))
-3d 41' 55.3''
>>> print(elon.dms_str(n_dec=1))
76d 2' 26.0''
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Compute the heliocentric position of Jupiter
l, b, r = Jupiter.geometric_heliocentric_position(epoch, tofk5=False)
# Compute the heliocentric position of the Earth
l0, b0, r0 = Earth.geometric_heliocentric_position(epoch, tofk5=False)
# Convert to radians
lr = l.rad()
br = b.rad()
l0r = l0.rad()
b0r = b0.rad()
# Compute first iteration
x = r * cos(br) * cos(lr) - r0 * cos(b0r) * cos(l0r)
y = r * cos(br) * sin(lr) - r0 * cos(b0r) * sin(l0r)
z = r * sin(br) - r0 * sin(b0r)
delta = sqrt(x * x + y * y + z * z)
tau = 0.0057755183 * delta
# Adjust the epoch for light-time
epoch -= tau
# Compute again Jupiter coordinates with this correction
l, b, r = Jupiter.geometric_heliocentric_position(epoch, tofk5=False)
# Compute second iteration
lr = l.rad()
br = b.rad()
x = r * cos(br) * cos(lr) - r0 * cos(b0r) * cos(l0r)
y = r * cos(br) * sin(lr) - r0 * cos(b0r) * sin(l0r)
z = r * sin(br) - r0 * sin(b0r)
# Compute longitude and latitude
lamb = atan2(y, x)
beta = atan2(z, sqrt(x * x + y * y))
# Now, let's compute the aberration effect
t = (epoch - JDE2000) / 36525
e = 0.016708634 + t * (-0.000042037 - t * 0.0000001267)
pie = 102.93735 + t * (1.71946 + t * 0.00046)
pie = radians(pie)
lon = l0 + 180.0
lon = lon.rad()
k = 20.49552 # The constant of aberration
deltal1 = k * (-cos(lon - lamb) + e * cos(pie - lamb)) / cos(beta)
deltab1 = -k * sin(beta) * (sin(lon - lamb) - e * sin(pie - lamb))
deltal1 = Angle(0, 0, deltal1)
deltab1 = Angle(0, 0, deltab1)
# Correction to FK5 system
lamb = Angle(lamb, radians=True)
lamb = lamb.to_positive()
beta = Angle(beta, radians=True)
l_prime = lamb - t * (1.397 + t * 0.00031)
deltal2 = Angle(0, 0, -0.09033)
a = 0.03916 * (cos(l_prime.rad()) + sin(l_prime.rad()))
a = a * tan(b.rad())
deltal2 += Angle(0, 0, a)
deltab2 = 0.03916 * (cos(l_prime.rad()) - sin(l_prime.rad()))
deltab2 = Angle(0, 0, deltab2)
# Apply the corrections
lamb = lamb + deltal1 + deltal2
beta = beta + deltab1 + deltab2
# Correction for nutation
dpsi = nutation_longitude(epoch)
lamb += dpsi
e = true_obliquity(epoch)
ra, dec = ecliptical2equatorial(lamb, beta, e)
# Let's compute the elongation angle
lons, lats, rs = Sun.apparent_geocentric_position(epoch)
lambr = lamb.rad()
lsr = lons.rad()
betar = beta.rad()
elon = acos(cos(betar) * cos(lambr - lsr))
elon = Angle(elon, radians=True)
return ra, dec, elon
@staticmethod
def conjunction(epoch):
"""This method computes the time of the conjunction closest to the
given epoch.
:param epoch: Epoch close to the desired conjunction
:type epoch: :py:class:`Epoch`
:returns: The time when the conjunction happens, as an Epoch
:rtype: :py:class:`Epoch`
:raises: TypeError if input value is of wrong type.
:raises: ValueError if input epoch outside the -2000/4000 range.
>>> epoch = Epoch(1993, 10, 1.0)
>>> conj = Jupiter.conjunction(epoch)
>>> y, m, d = conj.get_date()
>>> print(y)
1993
>>> print(m)
10
>>> print(round(d, 4))
18.3341
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Check that the input epoch is within valid range
y = epoch.year()
if y < -2000.0 or y > 4000.0:
raise ValueError("Epoch outside the -2000/4000 range")
# Set some specific constants for Jupiter's conjunction
a = 2451671.186
b = 398.884046
m0 = 121.898
m1 = 33.140229
k = round((365.2425 * y + 1721060.0 - a) / b)
jde0 = a + k * b
m = m0 + k * m1
m = Angle(m).to_positive()
m = m.rad()
t = (jde0 - 2451545.0) / 36525.0
# Compute an auxiliary angle
aa = 82.74 + 40.76 * t
aa = Angle(aa).rad() # Convert to radians
corr = (0.1027 + t * (0.0002 - t * 0.00009) +
sin(m) * (-2.2637 + t * (0.0163 - t * 0.00003)) +
cos(m) * (-6.154 + t * (-0.021 + t * 0.00008)) +
sin(2.0 * m) * (-0.2021 + t * (-0.0017 + t * 0.00001)) +
cos(2.0 * m) * (0.131 - t * 0.0008) +
sin(3.0 * m) * (0.0086) +
cos(3.0 * m) * (0.0087 + t * 0.0002) +
sin(aa) * (0.0 + t * (0.0144 - t * 0.00008)) +
cos(aa) * (0.3642 + t * (-0.0019 - t * 0.00029)))
to_return = jde0 + corr
return Epoch(to_return)
@staticmethod
def opposition(epoch):
"""This method computes the time of the opposition closest to the given
epoch.
:param epoch: Epoch close to the desired opposition
:type epoch: :py:class:`Epoch`
:returns: The time when the opposition happens, as an Epoch
:rtype: :py:class:`Epoch`
:raises: TypeError if input value is of wrong type.
:raises: ValueError if input epoch outside the -2000/4000 range.
>>> epoch = Epoch(-6, 9, 1.0)
>>> oppo = Jupiter.opposition(epoch)
>>> y, m, d = oppo.get_date()
>>> print(y)
-6
>>> print(m)
9
>>> print(round(d, 4))
15.2865
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Check that the input epoch is within valid range
y = epoch.year()
if y < -2000.0 or y > 4000.0:
raise ValueError("Epoch outside the -2000/4000 range")
# Set some specific constants for Jupiter's opposition
a = 2451870.628
b = 398.884046
m0 = 318.4681
m1 = 33.140229
k = round((365.2425 * y + 1721060.0 - a) / b)
jde0 = a + k * b
m = m0 + k * m1
m = Angle(m).to_positive()
m = m.rad()
t = (jde0 - 2451545.0) / 36525.0
# Compute an auxiliary angle
aa = 82.74 + 40.76 * t
aa = Angle(aa).rad() # Convert to radians
corr = (-0.1029 - t * t * 0.00009 +
sin(m) * (-1.9658 + t * (-0.0056 + t * 0.00007)) +
cos(m) * (6.1537 + t * (0.021 - t * 0.00006)) +
sin(2.0 * m) * (-0.2081 - t * 0.0013) +
cos(2.0 * m) * (-0.1116 - t * 0.001) +
sin(3.0 * m) * (0.0074 + t * 0.0001) +
cos(3.0 * m) * (-0.0097 - t * 0.0001) +
sin(aa) * (0.0 + t * (0.0144 - t * 0.00008)) +
cos(aa) * (0.3642 + t * (-0.0019 - t * 0.00029)))
to_return = jde0 + corr
return Epoch(to_return)
@staticmethod
def station_longitude_1(epoch):
"""This method computes the time of the 1st station in longitude
(i.e. when the planet is stationary and begins to move westward -
retrograde - among the starts) closest to the given epoch.
:param epoch: Epoch close to the desired opposition
:type epoch: :py:class:`Epoch`
:returns: Time when the 1st station in longitude happens, as an Epoch
:rtype: :py:class:`Epoch`
:raises: TypeError if input value is of wrong type.
:raises: ValueError if input epoch outside the -2000/4000 range.
>>> epoch = Epoch(2018, 11, 1.0)
>>> sta1 = Jupiter.station_longitude_1(epoch)
>>> y, m, d = sta1.get_date()
>>> print(y)
2018
>>> print(m)
3
>>> print(round(d, 4))
9.1288
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Check that the input epoch is within valid range
y = epoch.year()
if y < -2000.0 or y > 4000.0:
raise ValueError("Epoch outside the -2000/4000 range")
# Set some specific constants for Jupiter's opposition
a = 2451870.628
b = 398.884046
m0 = 318.4681
m1 = 33.140229
k = round((365.2425 * y + 1721060.0 - a) / b)
jde0 = a + k * b
m = m0 + k * m1
m = Angle(m).to_positive()
m = m.rad()
t = (jde0 - 2451545.0) / 36525.0
# Compute an auxiliary angle
aa = 82.74 + 40.76 * t
aa = Angle(aa).rad() # Convert to radians
corr = (-60.367 + t * (-0.0001 - t * 0.00009) +
sin(m) * (-2.3144 + t * (-0.0124 + t * 0.00007)) +
cos(m) * (6.7439 + t * (0.0166 - t * 0.00006)) +
sin(2.0 * m) * (-0.2259 - t * 0.001) +
cos(2.0 * m) * (-0.1497 - t * 0.0014) +
sin(3.0 * m) * (0.0105 + t * 0.0001) +
cos(3.0 * m) * (-0.0098) +
sin(aa) * (0.0 + t * (0.0144 - t * 0.00008)) +
cos(aa) * (0.3642 + t * (-0.0019 - t * 0.00029)))
to_return = jde0 + corr
return Epoch(to_return)
@staticmethod
def station_longitude_2(epoch):
"""This method computes the time of the 2nd station in longitude
(i.e. when the planet is stationary and begins to move eastward -
prograde - among the starts) closest to the given epoch.
:param epoch: Epoch close to the desired opposition
:type epoch: :py:class:`Epoch`
:returns: Time when the 1st station in longitude happens, as an Epoch
:rtype: :py:class:`Epoch`
:raises: TypeError if input value is of wrong type.
:raises: ValueError if input epoch outside the -2000/4000 range.
>>> epoch = Epoch(2018, 11, 1.0)
>>> sta2 = Jupiter.station_longitude_2(epoch)
>>> y, m, d = sta2.get_date()
>>> print(y)
2018
>>> print(m)
7
>>> print(round(d, 4))
10.6679
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Check that the input epoch is within valid range
y = epoch.year()
if y < -2000.0 or y > 4000.0:
raise ValueError("Epoch outside the -2000/4000 range")
# Set some specific constants for Jupiter's opposition
a = 2451870.628
b = 398.884046
m0 = 318.4681
m1 = 33.140229
k = round((365.2425 * y + 1721060.0 - a) / b)
jde0 = a + k * b
m = m0 + k * m1
m = Angle(m).to_positive()
m = m.rad()
t = (jde0 - 2451545.0) / 36525.0
# Compute an auxiliary angle
aa = 82.74 + 40.76 * t
aa = Angle(aa).rad() # Convert to radians
corr = (60.3023 + t * (0.0002 - t * 0.00009) +
sin(m) * (0.3506 + t * (-0.0034 + t * 0.00004)) +
cos(m) * (5.3635 + t * (0.0247 - t * 0.00007)) +
sin(2.0 * m) * (-0.1872 - t * 0.0016) +
cos(2.0 * m) * (-0.0037 - t * 0.0005) +
sin(3.0 * m) * (0.0012 + t * 0.0001) +
cos(3.0 * m) * (-0.0096 - t * 0.0001) +
sin(aa) * (0.0 + t * (0.0144 - t * 0.00008)) +
cos(aa) * (0.3642 + t * (-0.0019 - t * 0.00029)))
to_return = jde0 + corr
return Epoch(to_return)
@staticmethod
def perihelion_aphelion(epoch, perihelion=True):
"""This method computes the time of Perihelion (or Aphelion) closer to
a given epoch.
:param epoch: Epoch close to the desired Perihelion (or Aphelion)
:type epoch: :py:class:`Epoch`
:param peihelion: If True, the epoch of the closest Perihelion is
computed, if False, the epoch of the closest Aphelion is found.
:type bool:
:returns: The epoch of the desired Perihelion (or Aphelion)
:rtype: :py:class:`Epoch`
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(2019, 2, 23.0)
>>> e = Jupiter.perihelion_aphelion(epoch)
>>> y, m, d, h, mi, s = e.get_full_date()
>>> print(y)
2023
>>> print(m)
1
>>> print(d)
20
>>> print(h)
11
>>> epoch = Epoch(1981, 6, 1.0)
>>> e = Jupiter.perihelion_aphelion(epoch, perihelion=False)
>>> y, m, d, h, mi, s = e.get_full_date()
>>> print(y)
1981
>>> print(m)
7
>>> print(d)
28
>>> print(h)
6
"""
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input value")
# First approximation
k = 0.0843 * (epoch.year() - 2011.2)
if perihelion:
k = round(k)
else:
k = round(k + 0.5) - 0.5
jde = 2455636.936 + k * (4332.897065 - k * 0.0001367)
# Compute the epochs a month before and after
jde_before = jde - 30.0
jde_after = jde + 30.0
# Compute the Sun-Jupiter distance for each epoch
l, b, r_b = Jupiter.geometric_heliocentric_position(Epoch(jde_before))
l, b, r = Jupiter.geometric_heliocentric_position(Epoch(jde))
l, b, r_a = Jupiter.geometric_heliocentric_position(Epoch(jde_after))
# Call an interpolation object
m = Interpolation([jde_before, jde, jde_after], [r_b, r, r_a])
sol = m.minmax()
return Epoch(sol)
@staticmethod
def passage_nodes(epoch, ascending=True):
"""This function computes the time of passage by the nodes (ascending
or descending) of Jupiter, nearest to the given epoch.
:param epoch: Epoch closest to the node passage
:type epoch: :py:class:`Epoch`
:param ascending: Whether the time of passage by the ascending (True)
or descending (False) node will be computed
:type ascending: bool
:returns: Tuple containing:
- Time of passage through the node (:py:class:`Epoch`)
- Radius vector when passing through the node (in AU, float)
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(2019, 1, 1)
>>> time, r = Jupiter.passage_nodes(epoch)
>>> year, month, day = time.get_date()
>>> print(year)
2025
>>> print(month)
9
>>> print(round(day, 1))
15.6
>>> print(round(r, 4))
5.1729
"""
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input types")
# Get the orbital parameters
l, a, e, i, ome, arg = Jupiter.orbital_elements_mean_equinox(epoch)
# Compute the time of passage through perihelion
t = Jupiter.perihelion_aphelion(epoch)
# Get the time of passage through the node
time, r = passage_nodes_elliptic(arg, e, a, t, ascending)
return time, r
@staticmethod
def magnitude(sun_dist, earth_dist):
"""This function computes the approximate magnitude of Jupiter.
:param sun_dist: Distance from Jupiter to Sun, in Astronomical Units
:type sun_dist: float
:param earth_dist: Distance Jupiter to Earth, in Astronomical Units
:type earth_dist: float
:returns: Jupiter's magnitude
:rtype: float
:raises: TypeError if input values are of wrong type.
"""
if not (isinstance(sun_dist, float) and isinstance(earth_dist, float)):
raise TypeError("Invalid input types")
m = -8.93 + 5.0 * log10(sun_dist * earth_dist)
return round(m, 1)
def main():
# Let's define a small helper function
def print_me(msg, val):
print("{}: {}".format(msg, val))
# Let's show some uses of Jupiter class
print("\n" + 35 * "*")
print("*** Use of Jupiter class")
print(35 * "*" + "\n")
# Let's now compute the heliocentric position for a given epoch
epoch = Epoch(2018, 10, 27.0)
lon, lat, r = Jupiter.geometric_heliocentric_position(epoch)
print_me("Geometric Heliocentric Longitude", lon.to_positive())
print_me("Geometric Heliocentric Latitude", lat)
print_me("Radius vector", r)
print("")
# Compute the geocentric position for 1992/12/20:
epoch = Epoch(1992, 12, 20.0)
ra, dec, elon = Jupiter.geocentric_position(epoch)
print_me("Right ascension", ra.ra_str(n_dec=1))
print_me("Declination", dec.dms_str(n_dec=1))
print_me("Elongation", elon.dms_str(n_dec=1))
print("")
# Print mean orbital elements for Jupiter at 2065.6.24
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Jupiter.orbital_elements_mean_equinox(epoch)
print_me("Mean longitude of the planet", round(l, 6)) # 222.433723
print_me("Semimajor axis of the orbit (UA)", round(a, 8)) # 5.20260333
print_me("Eccentricity of the orbit", round(e, 7)) # 0.0486046
print_me("Inclination on plane of the ecliptic", round(i, 6)) # 1.29967
print_me("Longitude of the ascending node", round(ome, 5)) # 101.13309
print_me("Argument of the perihelion", round(arg, 6)) # -85.745532
print("")
# Compute the time of the conjunction close to 1993/10/1
epoch = Epoch(1993, 10, 1.0)
conj = Jupiter.conjunction(epoch)
y, m, d = conj.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Conjunction date", date)
# Compute the time of the opposition close to -6/9/1
epoch = Epoch(-6, 9, 1.0)
oppo = Jupiter.opposition(epoch)
y, m, d = oppo.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Opposition date", date)
print("")
# Compute the time of the station in longitude #1 close to 2018/11/1
epoch = Epoch(2018, 11, 1.0)
sta1 = Jupiter.station_longitude_1(epoch)
y, m, d = sta1.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Date of station in longitude #1", date)
# Compute the time of the station in longitude #2 close to 2018/11/1
epoch = Epoch(2018, 11, 1.0)
sta2 = Jupiter.station_longitude_2(epoch)
y, m, d = sta2.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Date of station in longitude #2", date)
print("")
# Find the epoch of the Aphelion closer to 1981/6/1
epoch = Epoch(1981, 6, 1.0)
e = Jupiter.perihelion_aphelion(epoch, perihelion=False)
y, m, d, h, mi, s = e.get_full_date()
peri = str(y) + '/' + str(m) + '/' + str(d) + ' at ' + str(h) + ' hours'
print_me("The Aphelion closest to 1981/6/1 will happen on", peri)
print("")
# Compute the time of passage through an ascending node
epoch = Epoch(2019, 1, 1)
time, r = Jupiter.passage_nodes(epoch)
y, m, d = time.get_date()
d = round(d, 1)
print("Time of passage through ascending node: {}/{}/{}".format(y, m, d))
# 2025/9/15.6
print("Radius vector at ascending node: {}".format(round(r, 4))) # 5.1729
if __name__ == "__main__":
main()
pymeeus-0.3.6/pymeeus/Mars.py 0000664 0000000 0000000 00001122255 13555455377 0016205 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from math import sin, cos, tan, acos, atan2, sqrt, radians, log10
from pymeeus.Angle import Angle
from pymeeus.Epoch import Epoch, JDE2000
from pymeeus.Interpolation import Interpolation
from pymeeus.Coordinates import (
geometric_vsop_pos, apparent_vsop_pos, orbital_elements,
nutation_longitude, true_obliquity, ecliptical2equatorial,
passage_nodes_elliptic
)
from pymeeus.Earth import Earth
from pymeeus.Sun import Sun
"""
.. module:: Mars
:synopsis: Class to model Mars planet
:license: GNU Lesser General Public License v3 (LGPLv3)
.. moduleauthor:: Dagoberto Salazar
"""
VSOP87_L = [
# L0
[
[620347711.583, 0.00000000000, 0.00000000000],
[18656368.100, 5.05037100303, 3340.61242669980],
[1108216.792, 5.40099836958, 6681.22485339960],
[91798.394, 5.75478745111, 10021.83728009940],
[27744.987, 5.97049512942, 3.52311834900],
[10610.230, 2.93958524973, 2281.23049651060],
[12315.897, 0.84956081238, 2810.92146160520],
[8926.772, 4.15697845939, 0.01725365220],
[8715.688, 6.11005159792, 13362.44970679920],
[6797.552, 0.36462243626, 398.14900340820],
[7774.867, 3.33968655074, 5621.84292321040],
[3575.079, 1.66186540141, 2544.31441988340],
[4161.101, 0.22814975330, 2942.46342329160],
[3075.250, 0.85696597082, 191.44826611160],
[2628.122, 0.64806143570, 3337.08930835080],
[2937.543, 6.07893711408, 0.06731030280],
[2389.420, 5.03896401349, 796.29800681640],
[2579.842, 0.02996706197, 3344.13554504880],
[1528.140, 1.14979306228, 6151.53388830500],
[1798.808, 0.65634026844, 529.69096509460],
[1264.356, 3.62275092231, 5092.15195811580],
[1286.232, 3.06795924626, 2146.16541647520],
[1546.408, 2.91579633392, 1751.53953141600],
[1024.907, 3.69334293555, 8962.45534991020],
[891.567, 0.18293899090, 16703.06213349900],
[858.760, 2.40093704204, 2914.01423582380],
[832.718, 2.46418591282, 3340.59517304760],
[832.724, 4.49495753458, 3340.62968035200],
[712.899, 3.66336014788, 1059.38193018920],
[748.724, 3.82248399468, 155.42039943420],
[723.863, 0.67497565801, 3738.76143010800],
[635.557, 2.92182704275, 8432.76438481560],
[655.163, 0.48864075176, 3127.31333126180],
[550.472, 3.81001205408, 0.98032106820],
[552.746, 4.47478863016, 1748.01641306700],
[425.972, 0.55365138172, 6283.07584999140],
[415.132, 0.49662314774, 213.29909543800],
[472.164, 3.62547819410, 1194.44701022460],
[306.552, 0.38052862973, 6684.74797174860],
[312.141, 0.99853322843, 6677.70173505060],
[293.199, 4.22131277914, 20.77539549240],
[302.377, 4.48618150321, 3532.06069281140],
[274.028, 0.54222141841, 3340.54511639700],
[281.073, 5.88163372945, 1349.86740965880],
[231.185, 1.28240685294, 3870.30339179440],
[283.600, 5.76885494123, 3149.16416058820],
[236.114, 5.75504515576, 3333.49887969900],
[274.035, 0.13372501211, 3340.67973700260],
[299.396, 2.78323705697, 6254.62666252360],
[204.161, 2.82133266185, 1221.84856632140],
[238.857, 5.37155471672, 4136.91043351620],
[188.639, 1.49103016486, 9492.14631500480],
[221.225, 3.50466672203, 382.89653222320],
[179.196, 1.00561112574, 951.71840625060],
[172.110, 0.43943041719, 5486.77784317500],
[193.126, 3.35715137745, 3.59042865180],
[144.305, 1.41874193418, 135.06508003540],
[160.011, 3.94854735192, 4562.46099302120],
[174.068, 2.41360332576, 553.56940284240],
[130.993, 4.04491720264, 12303.06777661000],
[138.245, 4.30145176915, 7.11354700080],
[128.062, 1.80665643332, 5088.62883976680],
[139.897, 3.32592516164, 2700.71514038580],
[128.102, 2.20806651008, 1592.59601363280],
[116.945, 3.12805282207, 7903.07341972100],
[110.375, 1.05195079687, 242.72860397400],
[113.486, 3.70070798123, 1589.07289528380],
[100.090, 3.24343740861, 11773.37681151540],
[95.592, 0.53954181149, 20043.67456019880],
[98.947, 4.84558294740, 6681.24210705180],
[104.541, 0.78535382076, 8827.39026987480],
[84.187, 3.98970720730, 4399.99435688900],
[86.931, 2.20186740523, 11243.68584642080],
[71.437, 2.80307550016, 3185.19202726560],
[72.091, 5.84672102525, 5884.92684658320],
[73.476, 2.18428012567, 8429.24126646660],
[98.946, 2.81481140371, 6681.20759974740],
[68.414, 2.73834914412, 2288.34404351140],
[86.751, 1.02092221563, 7079.37385680780],
[65.320, 2.68118597578, 28.44918746780],
[83.749, 3.20256130990, 4690.47983635860],
[75.034, 0.76643418252, 6467.92575796160],
[68.984, 3.76399731788, 6041.32756708560],
[66.706, 0.73630620766, 3723.50895892300],
[63.314, 4.52771470470, 426.59819087600],
[61.683, 6.16831509419, 2274.11694950980],
[52.256, 0.89941531307, 9623.68827669120],
[55.488, 4.60625467020, 4292.33083295040],
[51.332, 4.14823636534, 3341.59274776800],
[56.629, 5.06250410206, 15.25247118500],
[63.376, 0.91296240798, 3553.91152213780],
[45.829, 0.78784235062, 1990.74501704100],
[48.542, 3.95670418719, 4535.05943692440],
[41.223, 6.02019329922, 3894.18182954220],
[41.939, 3.58326425115, 8031.09226305840],
[56.396, 1.68727150304, 6872.67311951120],
[55.909, 3.46260833495, 263.08392337280],
[51.678, 2.81307492682, 3339.63210563160],
[40.671, 3.13832621829, 9595.23908922340],
[38.107, 0.73401946320, 10025.36039844840],
[39.495, 5.63225392160, 3097.88382272579],
[44.174, 3.19529736702, 5628.95647021120],
[36.716, 2.63720775102, 692.15760122680],
[45.905, 0.28718981497, 5614.72937620960],
[38.352, 5.82880707426, 3191.04922956520],
[38.206, 2.34835984063, 162.46663613220],
[32.562, 0.48400659333, 6681.29216370240],
[37.135, 0.68508150774, 2818.03500860600],
[31.168, 3.98160912982, 20.35531939880],
[32.561, 0.89250316888, 6681.15754309680],
[37.752, 4.15482955299, 2803.80791460440],
[33.626, 6.11992401052, 6489.77658728800],
[29.007, 2.42707385674, 3319.83703120740],
[38.790, 1.35198498795, 10018.31416175040],
[33.148, 1.14023770004, 5.52292430740],
[27.584, 1.59691203058, 7210.91581849420],
[28.686, 5.72055456734, 7477.52286021600],
[34.031, 2.59544082509, 11769.85369316640],
[25.380, 0.52093116112, 10.63666534980],
[26.357, 1.34532646574, 3496.03282613400],
[24.554, 4.00323183088, 11371.70468975820],
[25.637, 0.24963523420, 522.57741809380],
[27.278, 4.55645328122, 3361.38782219220],
[23.764, 1.84058377256, 12832.75874170460],
[22.816, 3.52628212106, 1648.44675719740],
[22.274, 0.72106133721, 266.60704172180],
[21.202, 3.11824472284, 2957.71589447660],
[20.158, 3.67131504946, 1758.65307841680],
[21.530, 6.15388757177, 3264.34635542420],
[20.093, 1.08247416065, 7064.12138562280],
[21.343, 4.28218757863, 4032.77002792660],
[27.540, 6.08389942337, 6674.11130639880],
[19.849, 2.37668920745, 10713.99488132620],
[25.512, 3.43242352804, 3443.70520091840],
[22.542, 5.64861703438, 2388.89402044920],
[24.378, 0.96994696413, 632.78373931320],
[23.079, 4.74990214223, 3347.72597370060],
[17.709, 3.69742343974, 3344.20285535160],
[22.662, 3.95446324417, 4989.05918389720],
[22.604, 5.24082917494, 3205.54734666440],
[16.811, 5.48619684111, 3.88133535800],
[18.422, 4.22535881468, 2787.04302385740],
[22.737, 4.98520896596, 7632.94325965020],
[16.648, 2.52823633184, 14584.29827312060],
[20.963, 4.27878216453, 5099.26550511660],
[16.042, 1.76786752521, 3475.67750673520],
[15.816, 3.13240869691, 59.37386191360],
[18.113, 3.25756020453, 3337.02199804800],
[19.295, 3.23911854642, 7.04623669800],
[16.772, 4.39731507110, 15643.68020330980],
[17.555, 4.09197396097, 74.78159856730],
[13.704, 2.54117018160, 4933.20844033260],
[16.011, 1.54669633224, 14054.60730802600],
[13.547, 4.04152185347, 4929.68532198360],
[14.566, 3.45210993051, 7373.38245462640],
[13.926, 5.40797129468, 10973.55568635000],
[14.246, 0.59808746067, 23.87843774780],
[14.023, 1.44218648988, 10404.73381232260],
[16.051, 3.79409950488, 2118.76386037840],
[13.714, 3.59050634457, 15113.98923821520],
[18.038, 4.25391532000, 2487.41604494780],
[15.846, 0.56901288692, 103.09277421860],
[13.403, 5.16920432994, 10213.28554621100],
[16.069, 2.36895958451, 3265.83082813250],
[12.773, 0.10483085657, 7234.79425624200],
[12.199, 1.73079687044, 36.02786667740],
[12.283, 5.19940030635, 10021.85453375160],
[11.945, 5.47997890162, 2921.12778282460],
[11.890, 4.76593905835, 5828.02847164760],
[12.283, 3.16862882612, 10021.82002644720],
[13.274, 6.17806905340, 1744.42598441520],
[11.777, 5.72731550900, 0.42007609361],
[12.340, 2.52146766331, 2906.90068882300],
[14.458, 4.38010658432, 316.39186965660],
[10.639, 3.45016942919, 639.89728631400],
[10.925, 0.60397688999, 5085.03841111500],
[10.645, 5.47696728127, 419.48464387520],
[10.797, 1.37191539718, 10419.98628350760],
[10.565, 1.09061610786, 12168.00269657460],
[9.578, 4.89489266197, 3230.40610548040],
[9.808, 5.83632873998, 14314.16811304980],
[9.720, 6.28282606427, 9225.53927328300],
[9.146, 1.10220667397, 9808.53818466140],
[12.733, 1.79883375851, 13745.34623902240],
[9.779, 3.60056884868, 206.18554843720],
[12.156, 4.42295240981, 14712.31711645800],
[8.801, 3.97218590685, 170.67287061920],
[10.685, 4.33894776374, 7740.60678358880],
[10.041, 1.38294666830, 3583.34103067380],
[8.499, 4.29275471153, 0.42988312670],
[9.882, 2.69148019691, 36.60536530420],
[10.585, 0.89641284928, 23384.28698689860],
[8.478, 2.86886131803, 9381.93999378540],
[9.560, 4.33382353581, 131.54196168640],
[8.433, 3.15239733970, 6525.80445396540],
[7.517, 1.24476310635, 6894.52394883760],
[6.753, 1.58869332894, 6836.64525283380],
[6.666, 4.38910103043, 66.48740891440],
[6.697, 5.77315870484, 5202.35827933520],
[6.188, 1.57847967850, 3325.35995551480],
[8.392, 2.90734956761, 43.71891230500],
[6.427, 6.03333185624, 574.34479833480],
[6.296, 0.06976040737, 1964.83862685400],
[6.144, 5.43713363624, 1861.74585263540],
[8.180, 0.43967386003, 2707.82868738660],
[6.532, 1.24907069366, 12964.30070339100],
[7.341, 4.95693808975, 3767.21061757580],
[6.134, 3.16322441707, 6680.24453233140],
[5.937, 4.22752447794, 4459.36821880260],
[5.848, 4.30379700916, 7875.67186362420],
[5.895, 0.77226207039, 2699.73481931760],
[5.962, 3.01318151415, 3369.06161416760],
[6.307, 1.77830983983, 2178.13772229200],
[6.103, 4.49866000852, 6682.20517446780],
[5.770, 0.96127853878, 13916.01910964160],
[5.725, 4.93042706875, 2384.32327072920],
[7.576, 6.16308742022, 6531.66165626500],
[7.285, 0.52756973131, 10575.40668294180],
[5.212, 3.48999909365, 12935.85151592320],
[5.266, 4.51201042373, 6144.42034130420],
[6.632, 3.48100908925, 1118.75579210280],
[5.182, 3.25459432228, 2391.43681773000],
[5.214, 0.01023839897, 533.21408344360],
[5.436, 6.18510045571, 8425.65083781480],
[5.491, 3.42235890731, 3134.42687826260],
[5.773, 3.55190490896, 8969.56889691100],
[5.093, 0.60873962999, 8955.34180290940],
[4.798, 4.63144694279, 4569.57454002200],
[5.773, 5.92316959013, 640.87760738220],
[5.661, 0.75892958537, 3120.19978426100],
[4.912, 1.70762118141, 13358.92658845020],
[5.438, 4.29256867866, 3503.07906283200],
[4.631, 3.34058594066, 3116.26763099790],
[5.823, 2.39009621568, 3302.47939106200],
[5.095, 1.12497131307, 5331.35744374080],
[4.409, 1.38708732950, 17256.63153634140],
[4.193, 0.19116539271, 9830.38901398780],
[4.164, 0.43798301495, 1066.49547719000],
[4.220, 1.69427060019, 13524.91634293140],
[5.192, 3.63500646439, 536.80451209540],
[5.664, 0.50446281443, 5305.45105355380],
[5.264, 5.40031180025, 3355.86489788480],
[5.403, 5.96867227489, 3074.00538497800],
[4.046, 0.83826342101, 10021.90459040220],
[4.153, 3.14497570817, 8439.87793181640],
[4.820, 1.09025983917, 13365.97282514820],
[4.906, 3.73078406569, 1228.96211332220],
[4.576, 0.99344843456, 6158.64743530580],
[4.211, 3.87091723842, 3312.16323923200],
[4.917, 6.25051681717, 17654.78053974960],
[3.597, 6.07298181151, 10818.13528691580],
[3.547, 1.87663674277, 17395.21973472580],
[3.734, 1.37011069213, 3973.39616601300],
[4.422, 2.89974680697, 6247.51311552280],
[3.975, 4.03441621102, 1052.26838318840],
[4.466, 4.59188422424, 5518.75014899180],
[3.445, 4.26610076208, 3178.14579056760],
[3.607, 4.24527056399, 8329.67161059700],
[3.511, 1.95133364438, 10177.25767953360],
[3.300, 0.68865737747, 149.56319713460],
[3.235, 3.90171358031, 27.40155609680],
[3.946, 5.81982010903, 6261.74020952440],
[3.387, 0.14377701728, 10014.72373309860],
[3.374, 0.74722238154, 6048.44111408640],
[3.090, 3.98540766861, 2648.45482547300],
[3.821, 5.23987859516, 5724.93569742900],
[3.026, 0.34314724795, 220.41264243880],
[4.052, 1.24671617482, 10021.76996979660],
[2.937, 0.73100893561, 2.75151061100],
[3.084, 3.79925632319, 169.58018313300],
[4.040, 2.91258200196, 22747.29071487440],
[3.246, 4.90760526525, 6702.00024889200],
[3.223, 0.92640008610, 16865.52876963120],
[2.879, 1.47180601483, 3346.13535100720],
[3.723, 0.49978317761, 1.48447270830],
[2.798, 3.26910698548, 9168.64089834740],
[3.347, 0.68791690253, 3863.18984479360],
[3.440, 2.77706064625, 6660.44945790720],
[2.798, 2.79673379094, 16858.48253293320],
[2.753, 4.41190782119, 3415.39402526710],
[2.703, 0.19222683184, 3237.51965248120],
[2.719, 3.26628341377, 3914.95722503460],
[2.941, 3.76169133143, 6784.31762761820],
[3.078, 5.48104322207, 3335.08950239240],
[2.701, 5.08537226206, 6688.33840040040],
[2.606, 4.83032556909, 4672.66731424060],
[2.883, 2.64068086362, 3320.25710730100],
[3.089, 4.39619824300, 1332.05488754080],
[3.438, 1.93467064449, 10551.52824519400],
[3.433, 0.20933510815, 6604.95878212400],
[2.513, 2.88151502604, 17924.91069982040],
[2.683, 3.68680362407, 3603.69635007260],
[2.696, 2.66931776730, 10184.30391623160],
[2.386, 1.05710815775, 3607.21946842160],
[2.444, 3.46901444423, 6298.32832117640],
[2.566, 5.55941956468, 6546.15977336420],
[2.354, 0.85896789940, 3351.24909204960],
[2.304, 6.07210985790, 1214.73501932060],
[2.387, 4.30419979225, 3360.96774609859],
[3.109, 2.18099805904, 16173.37116840440],
[2.907, 3.43894993113, 2693.60159338500],
[2.550, 4.18354174372, 3546.79797513700],
[2.991, 2.37500894603, 13517.87010623340],
[2.508, 5.99249607455, 5729.50644714900],
[2.202, 5.58486973955, 664.75604513000],
[2.467, 2.81052575497, 15110.46611986620],
[2.154, 3.59696831702, 6677.63442474780],
[2.166, 3.35965682842, 589.06482700820],
[2.112, 4.57048853017, 6127.65545055720],
[2.178, 3.21663279493, 20199.09495963300],
[2.260, 3.62776666288, 7799.98064550240],
[2.703, 5.89441421026, 6438.49624942560],
[2.201, 4.69972051344, 17277.40693183380],
[2.131, 2.51801264340, 1545.35398297880],
[2.093, 4.03688419630, 6684.81528205140],
[2.249, 5.26171743929, 5618.31980486140],
[2.117, 4.80404492675, 3657.00429635640],
[2.265, 3.87401620754, 110.20632121940],
[2.521, 4.21237950687, 2494.52959194860],
[2.492, 6.10452779411, 3329.97576135000],
[2.154, 4.59093274516, 5625.36604155940],
[1.929, 1.21920197307, 21.85082932640],
[2.343, 0.90613584736, 227.47613278900],
[1.871, 2.03707390080, 56.89837493560],
[1.894, 4.12432529517, 3399.98628861340],
[2.271, 3.78951734652, 7910.18696672180],
[1.876, 3.02034887080, 4885.96640967860],
[2.145, 4.74972617629, 18984.29263000960],
[2.035, 2.75110234296, 128.01884333740],
[1.770, 2.73496011079, 6606.44325483230],
[1.733, 1.70571779606, 6.68366387410],
[1.743, 2.22986352012, 17085.95866572220],
[1.723, 1.98207274526, 735.87651353180],
[1.814, 0.92405242552, 4555.34744602040],
[1.661, 3.07319305915, 1692.16566950240],
[2.332, 5.05223613332, 20618.01935853360],
[1.653, 3.86316179052, 699.27114822760],
[1.890, 4.14080522607, 5459.37628707820],
[1.680, 3.49750704538, 3347.65866339780],
[1.909, 2.11478314309, 6816.28993343500],
[1.918, 3.31232891649, 3333.56619000180],
[1.707, 4.88386665097, 3407.09983561420],
[1.577, 3.51777131580, 13362.43245314700],
[1.827, 1.14937084769, 2807.39834325620],
[2.094, 1.78938870686, 20597.24396304120],
[1.577, 5.54854302324, 13362.46696045140],
[1.677, 4.39073937265, 8270.29774868340],
[1.561, 0.80246904730, 3017.10701004240],
[1.552, 2.66876850182, 3024.22055704320],
[1.708, 2.09721350898, 2814.44457995420],
[2.109, 1.48733908496, 2679.37949991880],
[1.547, 2.12956399169, 661.23292678100],
[1.764, 5.90517079295, 3326.38533269820],
[1.503, 4.34389183170, 13936.79450513400],
[1.504, 0.83367652471, 4775.76008845920],
[1.543, 5.82417982389, 3344.49376205780],
[1.458, 1.42630589706, 15508.61512327440],
[1.648, 2.88801518612, 8273.82086703240],
[1.527, 1.10261249454, 2675.85638156980],
[1.800, 5.17144672709, 38.13303563780],
[1.439, 0.48751113425, 76.26607127560],
[1.478, 4.63008666184, 19800.94595622480],
[1.770, 2.18315009072, 2301.58581590939],
[1.712, 2.60291779744, 29.42950853600],
[1.416, 2.46912016889, 2597.62236616720],
[1.835, 3.93223068469, 6843.69148953180],
[1.437, 3.48241890037, 3281.23856478620],
[1.385, 4.18004525683, 2284.75361485960],
[1.479, 3.88994194685, 6034.21402008480],
[1.469, 2.91808856545, 12722.55242048520],
[1.824, 3.94139541752, 18454.60166491500],
[1.368, 1.71899681607, 13760.59871020740],
[1.406, 2.42916192473, 853.19638175200],
[1.361, 4.69126219798, 11081.21921028860],
[1.375, 4.90787845983, 3304.58456002240],
[1.544, 3.23251603238, 156.40072050240],
[1.543, 1.13497136095, 3336.73109134180],
[1.385, 2.90281983822, 1581.95934828300],
[1.311, 6.21748423079, 2547.83753823240],
[1.377, 2.56537541792, 568.82187402740],
[1.474, 4.65215247212, 394.62588505920],
[1.619, 0.07481583409, 1435.14766175940],
[1.369, 0.08979359617, 7895.95987272020],
[1.272, 5.84659079053, 21.33564046700],
[1.331, 3.80007277718, 13119.72110282519],
[1.202, 5.90681878458, 187.92514776260],
[1.284, 5.30205682052, 6571.01853218020],
[1.468, 5.91503888421, 3339.12795399150],
[1.497, 2.57629850836, 151.89728108520],
[1.270, 4.08996241400, 4356.27544458400],
[1.159, 0.00546309207, 799.82112516540],
[1.154, 1.81024985603, 158.94351778320],
[1.170, 4.15567553953, 14.22709400160],
[1.349, 0.39391022745, 2540.79130153440],
[1.403, 4.89956428847, 4039.88357492740],
[1.188, 3.46422365287, 1015.66301788420],
[1.136, 5.54132891775, 13553.89797291080],
[1.282, 4.52288421340, 3929.67725370800],
[1.124, 1.40102701439, 13149.15061136120],
[1.254, 3.84775964741, 3980.50971301380],
[1.121, 5.04552583589, 23141.55838292460],
[1.088, 0.89388884633, 3340.19235060619],
[1.476, 4.20852908107, 16460.33352952499],
[1.084, 5.70551481838, 3760.09707057500],
[1.197, 1.24543578245, 26724.89941359840],
[1.253, 5.82286965998, 3344.54457996290],
[1.078, 6.24742453183, 17.81252211800],
[1.462, 2.27467510211, 369.69981594040],
[1.044, 4.34158344243, 2277.70737816160],
[1.099, 4.08747611117, 802.36392244620],
[1.122, 4.31726854418, 107.66352393860],
[1.148, 0.42666214138, 949.17560896980],
[1.183, 0.31560034120, 1162.47470440780],
[1.130, 3.46061330657, 5732.04924442980],
[1.059, 1.34075999078, 2149.68853482420],
[1.126, 5.22902222299, 194.97138446060],
[0.977, 3.44426658417, 9779.10867612540],
[1.134, 0.13507173479, 12566.15169998280],
[1.185, 3.65682936623, 6456.88005769770],
[0.962, 4.85370284827, 3510.19260983280],
[1.033, 2.47380728164, 31.97230581680],
[1.172, 1.72927931309, 6923.95345737360],
[0.986, 1.05152205629, 16335.83780453660],
[1.292, 6.02388659607, 3316.73398895200],
[0.932, 1.56812178735, 111.18664228760],
[1.130, 2.06879370733, 3376.64029337720],
[0.924, 0.82106390115, 3364.49086444760],
[1.005, 5.48594935121, 11236.57229942000],
[0.936, 1.58837554752, 10235.13637553740],
[1.063, 1.93321644244, 87.30820453981],
[0.945, 5.10393817688, 8013.27974094040],
[0.957, 4.41421752360, 433.71173787680],
[0.921, 1.71021166461, 2067.93140107260],
[0.910, 1.91562889347, 401.67212175720],
[0.931, 4.61327789373, 5415.65737477320],
[1.033, 3.98512631089, 10596.18207843420],
[0.908, 5.30549216988, 7107.82304427560],
[0.945, 0.21610469082, 9872.27408296480],
[0.991, 2.76931703924, 5938.23479286700],
[0.918, 4.37217510741, 1854.63230563460],
[0.889, 1.81025662091, 2409.24933984800],
[1.058, 3.63303046818, 7255.56965173440],
[0.860, 2.78826625605, 5621.86017686260],
[0.860, 0.75749461239, 5621.82566955820],
[0.850, 3.82228424021, 272.67295735160],
[0.851, 0.25287875945, 11766.26326451460],
[0.853, 1.84243320985, 2142.64229812620],
[1.030, 0.42255009123, 1596.18644228460],
[0.826, 1.26069501589, 20206.14119633100],
[0.835, 4.64394754967, 127.95153303460],
[1.046, 3.50232998647, 9866.41688066520],
[0.824, 2.42928138519, 11.04570026390],
[1.090, 6.06536924506, 3341.03250279340],
[0.808, 1.17345081945, 6460.81221096080],
[0.821, 0.19617131185, 22743.40937951640],
[0.804, 5.03144428114, 2.54279728080],
[1.074, 2.80025232939, 3077.52850332700],
[0.794, 4.57067003887, 5223.69391980220],
[0.822, 0.90150471199, 8646.06348025360],
[0.884, 1.71007411939, 3.93215326310],
[0.850, 1.24977903471, 12295.95422960920],
[0.926, 3.02847055739, 3377.21779200400],
[0.779, 1.97930055918, 5408.54382777240],
[0.960, 6.16414205869, 8542.97070603500],
[0.785, 4.63077378309, 3341.04230982650],
[0.752, 3.51125131831, 10020.85695903120],
[0.749, 2.50286751020, 2295.45759051220],
[0.801, 4.54004277501, 1039.02661079040],
[0.735, 3.91703254169, 12310.18132361080],
[0.784, 3.24368310213, 3384.33133900480],
[0.719, 3.35536995801, 11780.49035851620],
[0.940, 3.58974561600, 23539.70738633280],
[0.865, 1.12444569157, 206.70073729660],
[0.731, 5.61232905415, 16062.18452611680],
[0.823, 2.65316808033, 3169.93955608060],
[0.903, 4.86743346013, 931.36308685180],
[0.705, 1.46305394620, 792.77488846740],
[0.754, 2.89691411536, 3296.89351439480],
[0.736, 2.21038016464, 146.81168652360],
[0.785, 2.32844966721, 3340.18254357310],
[0.685, 2.34948834397, 1.18064265210],
[0.677, 4.33803507050, 3877.41693879520],
[0.729, 3.56726385957, 485.97205278960],
[0.668, 5.16798891078, 12721.57209941700],
[0.713, 4.80558699772, 4142.97634914600],
[0.842, 1.59708732155, 16304.91313009080],
[0.698, 1.91829605833, 6665.97238221460],
[0.698, 4.64681188157, 11216.28429032400],
[0.684, 3.88514563357, 846.08283475120],
[0.666, 2.23927960017, 20735.83216142559],
[0.638, 2.05380863176, 16699.53901514999],
[0.726, 5.04566216294, 3329.56672643590],
[0.697, 0.30680314664, 19676.45023123640],
[0.650, 3.23944472757, 9588.12554222260],
[0.736, 2.24443728739, 11250.79939342160],
[0.692, 1.76465916332, 51.28033786241],
[0.645, 0.07661067442, 52.26031491280],
[0.685, 2.72118140264, 6643.09181776180],
[0.684, 1.26157751115, 142.17862703620],
[0.635, 3.85231847116, 6.06591562980],
[0.819, 6.04967230806, 19402.79695281660],
[0.664, 3.60223930010, 1903.43681250120],
[0.613, 4.96450118774, 8859.36257569160],
[0.615, 5.74467417840, 6696.47732458460],
[0.622, 1.64154132852, 24150.08005134500],
[0.659, 0.12506816965, 8116.37251515900],
[0.679, 1.94943016061, 12995.22537783680],
[0.616, 4.94607504516, 9485.03276800400],
[0.793, 2.84922599989, 29.49181830340],
[0.597, 5.72067567055, 3113.13629391080],
[0.763, 0.42513533173, 3873.82651014340],
[0.587, 1.31684217558, 9499.25986200560],
[0.592, 4.34796024028, 3826.58447948940],
[0.652, 5.53658742492, 9065.54812412880],
[0.583, 0.59190068342, 26084.02180621620],
[0.603, 0.77135566630, 3342.09689940810],
[0.701, 3.35897774328, 6709.67404086740],
[0.574, 1.08976979801, 6357.71943674220],
[0.750, 4.84737198179, 10022.81760116760],
[0.588, 5.65927128604, 2171.02417529120],
[0.632, 3.84852695407, 16276.46394262300],
[0.632, 1.43230388645, 16706.58525184800],
[0.780, 1.15181502540, 377.37360791580],
[0.554, 4.18192049239, 382.87927857100],
[0.568, 0.03816333919, 6414.61781167780],
[0.569, 2.57704345512, 35.56273446860],
[0.566, 0.62804830762, 3189.56475685690],
[0.687, 5.61456944029, 155.35308913140],
[0.563, 2.57358138188, 19406.67828817460],
[0.693, 1.15645091892, 966.97087743560],
[0.576, 1.60357663736, 3192.53370227350],
[0.621, 2.23214771591, 3274.12501778540],
[0.586, 6.17266280012, 9602.35263622420],
[0.541, 0.53968808391, 13171.00144068760],
[0.570, 3.11852290115, 2221.85663459700],
[0.542, 0.41889651002, 1641.33321019660],
[0.532, 0.16606105669, 5511.63660199100],
[0.530, 3.78205188174, 7270.28968040780],
[0.575, 5.48929613719, 2075.04494807340],
[0.670, 3.67090656417, 6475.03930496240],
[0.509, 4.21526585284, 7380.49600162720],
[0.510, 1.59587338243, 13362.38239649640],
[0.494, 2.13711598060, 2604.73591316800],
[0.534, 1.03109772656, 1478.86657406440],
[0.506, 5.92145494356, 685.04405422600],
[0.469, 0.83917541691, 3041.48603243060],
[0.468, 1.97135671591, 2412.77245819700],
[0.468, 4.57635781664, 11670.28403729680],
[0.559, 1.47641018288, 8671.96987044060],
[0.475, 2.07517976424, 5835.14201864840],
[0.466, 2.92801596791, 2277.29834324750],
[0.478, 6.13550464878, 4825.54491639400],
[0.502, 0.77928275348, 4407.10790388980],
[0.462, 3.80503324215, 11140.59307220220],
[0.499, 3.25557381873, 1744.49329471800],
[0.525, 0.74022979976, 1265.56747862640],
[0.521, 6.27577138682, 3981.49003408200],
[0.482, 0.14820337530, 14158.74771361560],
[0.460, 2.03348517376, 25685.87280280800],
[0.510, 4.27704405425, 3472.15438838620],
[0.444, 1.95486223268, 3226.21331978640],
[0.575, 0.59007504383, 2766.26762836500],
[0.437, 5.63861950911, 8958.93223156120],
[0.492, 6.10071747922, 2285.16264977370],
[0.572, 5.10308842466, 8564.30634650200],
[0.430, 4.12851356192, 13.24177239800],
[0.544, 4.78254843814, 9380.95967271720],
[0.430, 3.83861916944, 1765.76662541760],
[0.499, 4.26055736809, 6652.77566593180],
[0.541, 0.84245625839, 4981.94563689640],
[0.591, 2.01874828234, 27490.69247804480],
[0.438, 1.36437546581, 12509.25332504720],
[0.470, 4.70961176845, 3723.49170527080],
[0.421, 1.76100140625, 956.28915597060],
[0.413, 0.49206034039, 13355.33615979840],
[0.412, 0.29353415123, 2810.93871525740],
[0.412, 3.24865417750, 18451.07854656599],
[0.412, 1.70721395764, 7314.00859271280],
[0.412, 4.54594776716, 2810.90420795300],
[0.448, 3.04254429984, 5636.07001721200],
[0.510, 1.18739936388, 13362.51701710200],
[0.408, 1.32068176489, 20809.46762464520],
[0.427, 1.16100742040, 19004.64794940840],
[0.420, 3.49180180953, 1655.56030419820],
[0.433, 0.55429134487, 9945.57120882380],
[0.424, 4.60854671688, 6518.75821726740],
[0.415, 5.67120343816, 99.56965586960],
[0.476, 5.94537443289, 48835.19385644859],
[0.405, 5.63206200287, 3450.81874791920],
[0.495, 4.38317490235, 2480.30249794700],
[0.415, 3.61905205961, 2089.78223039900],
[0.395, 0.25208772249, 1375.77379984580],
[0.421, 2.26337694295, 13892.14067189380],
[0.391, 5.25566087245, 10042.61267559180],
[0.504, 4.91016850189, 8965.97846825920],
[0.417, 3.45088934666, 279.78650435240],
[0.389, 0.98703891513, 7203.80227149340],
[0.431, 2.11881719623, 56.80326216980],
[0.497, 1.63121523594, 22345.26037610820],
[0.377, 4.06263841184, 10124.93005431800],
[0.377, 3.16019395941, 224.34479570190],
[0.378, 5.82532048605, 6675.70192909220],
[0.377, 0.05833226835, 905.45669666480],
[0.445, 0.33560120738, 515.46387109300],
[0.426, 2.66458973231, 4076.48894023160],
[0.489, 0.75760372851, 3561.02506913860],
[0.389, 0.50283826580, 2825.14855560680],
[0.396, 5.14198726837, 5195.24473233440],
[0.414, 3.12530321804, 10001.06188460700],
[0.502, 5.02356488339, 73.29712585900],
[0.432, 3.31538359140, 5617.91076994730],
[0.359, 4.97622870666, 5820.91492464680],
[0.359, 5.42072227300, 6019.99192661860],
[0.449, 3.79544854612, 4996.17273089800],
[0.374, 2.85563965649, 2111.65031337760],
[0.426, 0.24129917209, 5625.77507647350],
[0.423, 3.60507971235, 8226.57883637840],
[0.402, 4.51813719510, 4392.88080988820],
[0.391, 4.26714089799, 21795.21409161479],
[0.447, 4.25776540974, 18052.92954315780],
[0.355, 4.17584780659, 6740.59871531320],
[0.353, 1.81574804066, 6686.74777770700],
[0.462, 3.22304237134, 2011.10033643980],
[0.341, 3.22071023668, 4253.18267036540],
[0.475, 4.28822688035, 367.22432896240],
[0.462, 2.91312544527, 418.92439890060],
[0.416, 4.83203726375, 8535.85715903420],
[0.431, 3.22440150226, 21265.52312652020],
[0.333, 3.99300815003, 1353.39052800780],
[0.340, 0.71636465254, 15664.03552270859],
[0.416, 2.58443168474, 5753.38488489680],
[0.356, 2.35639379021, 4.57074972000],
[0.330, 4.04831945983, 3.10304225540],
[0.381, 4.06283076724, 1062.90504853820],
[0.431, 5.42246026973, 26482.17080962440],
[0.328, 4.06276954550, 6944.30877677240],
[0.334, 5.10221163477, 22324.90505670940],
[0.400, 2.28211698182, 3209.07046501340],
[0.420, 2.44159662565, 6155.05700665400],
[0.375, 1.09229714548, 4246.06912336460],
[0.449, 4.38183542571, 5106.37905211740],
[0.330, 2.55172725319, 19513.98359510420],
[0.319, 4.05704496382, 5430.39465709880],
[0.310, 4.99907184482, 5095.67507646480],
[0.344, 0.62691832180, 9389.05354078620],
[0.319, 3.31673970253, 596.17837400900],
[0.305, 4.66942910910, 6756.00645196690],
[0.409, 6.07568936266, 50.83245930580],
[0.377, 5.42211267415, 1190.92389187560],
[0.342, 2.67821304845, 6148.01076995600],
[0.298, 5.91093444215, 9886.77220006400],
[0.299, 5.44077050156, 10028.95082710020],
[0.315, 1.03304445564, 3490.17562383440],
[0.369, 3.93279262125, 1879.55837475340],
[0.304, 4.56372485787, 7483.58877584580],
[0.330, 3.29725079066, 286.96236112060],
[0.290, 3.43850024020, 6418.14093002680],
[0.289, 2.82766045300, 3171.03224356680],
[0.317, 4.13345374602, 1883.08149310240],
[0.294, 0.01906732590, 202.25339517410],
[0.310, 4.37565854379, 2796.69436760360],
[0.364, 0.54935210242, 290.48547946960],
[0.291, 2.39413982848, 29026.48522950779],
[0.286, 5.76562894312, 5642.19824260920],
[0.392, 3.01171327788, 10721.10842832700],
[0.318, 4.93376925851, 1197.97012857360],
[0.315, 2.84437840100, 10610.90210710760],
[0.299, 1.18299169304, 550.04628449340],
[0.336, 4.30769818760, 5989.06725217280],
[0.315, 1.41407863340, 6947.83189512140],
[0.294, 6.16453752963, 8982.81066930900],
[0.285, 2.82644088669, 9654.61295113700],
[0.281, 0.27739627997, 8166.15734309380],
[0.279, 4.08648927643, 5355.23588148860],
[0.330, 3.11968019451, 41.55079098480],
[0.275, 5.89019272334, 3337.86091608880],
[0.275, 4.00268079937, 3620.39893105220],
[0.292, 3.06830662617, 4.36203638980],
[0.317, 0.01919037405, 2267.00340250900],
[0.272, 1.70373580224, 3742.28454845700],
[0.294, 0.16019381973, 6670.58818804980],
[0.264, 2.07967576148, 3735.23831175900],
[0.262, 4.49437120405, 6887.41040183680],
[0.307, 3.03375977801, 6660.86953400080],
[0.280, 0.47728086796, 5401.43028077160],
[0.268, 0.46331887242, 6578.13207918100],
[0.312, 3.62016422039, 255.97037637200],
[0.278, 5.62032972822, 3378.74546233760],
[0.268, 2.97528422526, 21947.11137270000],
[0.303, 2.71946492092, 3313.21087060300],
[0.263, 3.85883671333, 28628.33622609960],
[0.257, 0.25607724431, 19146.75926614180],
[0.282, 2.29169514758, 2008.55753915900],
[0.301, 0.83275594655, 2806.98930834210],
[0.264, 3.78635346388, 3936.79080070880],
[0.254, 1.28062508539, 95.97922721780],
[0.250, 5.58493858560, 412.37109687440],
[0.284, 4.71065509252, 5621.91023351320],
[0.286, 5.11854366190, 5621.77561290760],
[0.254, 5.77068701321, 5813.29118932200],
[0.311, 2.67573060947, 912.57024366560],
[0.252, 4.19548440341, 24.85875881600],
[0.255, 1.80023727978, 3193.80074017620],
[0.247, 2.94199704738, 310.84079886840],
[0.261, 5.68285399692, 3133.91168940320],
[0.255, 4.46589323429, 5490.30096152400],
[0.247, 2.28207487665, 246.25172232300],
[0.257, 5.64335704456, 10706.88133432540],
[0.246, 0.26910281348, 22.76849660940],
[0.241, 0.03931394254, 9070.11887384880],
[0.283, 1.30585259585, 4025.65648092580],
[0.272, 1.28327911416, 1442.26120876020],
[0.294, 4.02082336381, 2814.85361486830],
[0.249, 4.92144829429, 31022.75317085620],
[0.237, 3.07683243726, 9947.05568153210],
[0.236, 6.05766380360, 948.19528790160],
[0.309, 3.45153658664, 25287.72379939980],
[0.232, 4.99538565545, 1505.28780909299],
[0.275, 1.20294105507, 6691.86151874940],
[0.305, 2.73902403412, 176.69373013380],
[0.231, 5.13610567818, 6997.61672305620],
[0.237, 0.90339496046, 8.09386806900],
[0.229, 0.63250047970, 23017.06265793620],
[0.249, 6.05357589804, 2060.81785407180],
[0.270, 2.14769161882, 2973.38809773740],
[0.241, 4.63019900075, 1612.95133303160],
[0.227, 5.94537053649, 2942.48067694380],
[0.269, 5.93687481153, 4005.36847182980],
[0.227, 3.91459879933, 2942.44616963940],
[0.238, 5.14570745178, 721.13923120620],
[0.275, 1.06902528739, 3343.36393731080],
[0.232, 3.52110290510, 6674.17861670160],
[0.277, 0.19619249083, 270.19747037360],
[0.274, 0.30235979008, 5607.61582920880],
[0.233, 5.75237138576, 604.84974070480],
[0.214, 3.38626276995, 647.01083331480],
[0.282, 0.29694635625, 12323.42309600880],
[0.282, 3.18114716742, 6364.83298374300],
[0.264, 4.64751563064, 1346.34429130980],
[0.280, 4.64995184564, 6701.58017279840],
[0.246, 3.03036675631, 3304.00706139560],
[0.213, 4.80555095681, 8830.91338822380],
[0.220, 1.54642908481, 23546.75362303080],
[0.214, 1.35475764936, 184.84990797020],
[0.228, 4.29420876593, 2970.91261075940],
[0.229, 2.53361265404, 3710.31224264020],
[0.273, 1.89943168433, 270.13016007080],
[0.284, 3.28345980607, 16063.16484718500],
[0.211, 5.84341192825, 1971.95217385480],
[0.214, 0.22905754741, 5.19919116580],
[0.246, 4.55971876123, 6040.34724601740],
[0.229, 1.24432891752, 3568.08855948880],
[0.216, 3.20098680120, 362.12113673080],
[0.201, 2.45025935972, 20426.57109242200],
[0.223, 2.07804482295, 17101.21113690720],
[0.271, 3.49210901141, 3436.59165391760],
[0.226, 0.42945734871, 557.09252119140],
[0.264, 5.05794940070, 2938.94030494260],
[0.207, 6.03491870748, 22487.37169284160],
[0.197, 5.62923956977, 5209.47182633600],
[0.211, 2.26445749553, 765.79306444640],
[0.202, 0.88670673933, 767.84881934860],
[0.212, 1.85965510753, 4782.87363546000],
[0.194, 4.77420671032, 6850.80503653260],
[0.192, 0.51565572072, 323.50541665740],
[0.209, 4.79794980231, 14047.49376102520],
[0.193, 2.56057288512, 18606.49894600020],
[0.209, 1.46088434217, 5.85720229960],
[0.214, 0.97578687412, 17468.85519794540],
[0.196, 4.08789826861, 3262.86188271590],
[0.198, 3.99111216230, 10018.24685144760],
[0.235, 1.11133081576, 625.67019231240],
[0.197, 0.48692287381, 15106.87569121440],
[0.214, 5.33581901309, 955.24152459960],
[0.199, 0.40088144456, 7586.68155006440],
[0.251, 5.57906426342, 138.58819838440],
[0.208, 4.11480858445, 1755.06264976500],
[0.210, 2.30499661227, 53.30794628380],
[0.253, 1.27099771143, 309.27832265580],
[0.242, 3.71426781511, 3212.59358336240],
[0.178, 3.06961783443, 1437.17561419860],
[0.203, 0.28410501881, 582.99891137840],
[0.190, 0.10457198807, 26087.90314157420],
[0.178, 0.53068485806, 7366.26890762560],
[0.245, 4.20195166994, 8436.28750316460],
[0.176, 3.66697456425, 6688.27109009760],
[0.177, 4.48104044431, 8799.98871377800],
[0.181, 3.57461078885, 15121.10278521600],
[0.198, 3.55065962909, 24606.13555322000],
[0.187, 3.45440079747, 1329.51209026000],
[0.176, 5.81532365473, 12406.16055082860],
[0.235, 1.28568802052, 4427.39591298580],
[0.179, 1.55718466444, 3362.46325602620],
[0.174, 1.61086801253, 30065.51184029820],
[0.199, 0.07164714815, 375.76573157020],
[0.174, 4.58412775793, 3283.71405176420],
[0.171, 5.82189798695, 23937.85638974100],
[0.182, 2.57146189845, 418.50432280700],
[0.168, 5.13131619552, 21393.54196985760],
[0.183, 4.93161962050, 9468.26787725700],
[0.167, 1.48091400654, 2619.47319549360],
[0.169, 5.12437031125, 3223.29255847960],
[0.188, 3.41823914376, 5032.77809620220],
[0.181, 0.50010974122, 2125.87740737920],
[0.164, 1.71077130702, 15849.86575174700],
[0.202, 6.21085922593, 3909.43430072720],
[0.171, 5.86158194602, 625.62513619720],
[0.165, 3.85569118220, 13207.02930736500],
[0.163, 2.04373367430, 3347.29609057390],
[0.160, 2.83784244321, 5888.44996493220],
[0.212, 2.32801112252, 3232.94890276120],
[0.163, 4.23488695195, 31968.94865279940],
[0.159, 1.48046671186, 249.90446074220],
[0.160, 0.21960307161, 12942.96506292400],
[0.220, 3.90787704883, 9638.94074787620],
[0.161, 2.94093367568, 3370.04193523580],
[0.159, 5.59017475732, 1442.27846241240],
[0.221, 3.82548751198, 1954.71715036360],
[0.192, 4.62595272276, 3336.68027343670],
[0.164, 1.59200641542, 386.41965057220],
[0.169, 5.45784867095, 259.56080502380],
[0.201, 0.95077053594, 29424.63423291600],
[0.174, 1.15216485688, 6382.09845913040],
[0.163, 1.16606667991, 4289.78803566960],
[0.187, 3.22135956460, 2751.54759969160],
[0.162, 4.79372588575, 24889.57479599160],
[0.192, 0.88040946364, 5244.04923920100],
[0.160, 2.85034784370, 9374.82644678460],
[0.172, 2.38601254063, 2281.24775016280],
[0.202, 4.12164786769, 7321.12213971360],
[0.156, 4.55171204694, 27682.14074415640],
[0.170, 4.62851491273, 10824.20120254560],
[0.157, 0.91363725609, 4503.08713110760],
[0.156, 5.58255618318, 10448.43547097540],
[0.157, 0.92229160815, 15636.56665630900],
[0.171, 5.43820628341, 11904.91877320180],
[0.180, 1.89091405241, 13575.74880223720],
[0.198, 4.42539692212, 10025.42770875120],
[0.158, 4.12087914642, 11240.16272807180],
[0.211, 2.42218772392, 8749.15625447220],
[0.183, 1.47934835951, 6677.34351804160],
[0.197, 1.43469282909, 14061.72085502680],
[0.170, 4.32424842659, 742.99006053260],
[0.170, 2.92905324873, 9093.99731159660],
[0.160, 2.79797608932, 1461.05405194640],
[0.174, 5.37738922471, 3318.76159737340],
[0.172, 0.35524089578, 2281.21324285840],
[0.147, 2.76602235522, 4193.80880845180],
[0.151, 4.23962231148, 3368.01398279660],
[0.157, 1.01295201512, 24336.00539314920],
[0.165, 0.58335652806, 15906.76412668260],
[0.149, 5.69553079999, 31570.79964939120],
[0.154, 5.28504381510, 1481.40937134520],
[0.163, 1.81288628510, 18849.22754997420],
[0.145, 3.57053080979, 3497.01314720220],
[0.156, 3.56978076425, 21791.69097326579],
[0.143, 0.56704903096, 13212.88650966460],
[0.155, 0.08429188155, 6657.34641565180],
[0.184, 2.54999403339, 24076.44458812540],
[0.146, 1.16594990123, 526.16784674560],
[0.144, 4.19229335185, 2771.79055267240],
[0.169, 3.10771037057, 239.20548562500],
[0.144, 6.26688878164, 6679.74038069130],
[0.174, 2.37509025280, 3397.51080163540],
[0.163, 3.88047919138, 16703.04487984680],
[0.161, 1.73958633312, 2185.25126929280],
[0.164, 0.62146994730, 1538.24043597800],
[0.182, 6.16856014864, 6685.10618875760],
[0.140, 4.08200595943, 4186.69526145100],
[0.192, 4.47709998867, 57.87869600380],
[0.151, 3.06451266512, 838.96928775040],
[0.139, 1.12767399649, 6682.70932610790],
[0.187, 4.97174626997, 6681.65473652630],
[0.150, 5.69209290362, 9360.60435331840],
[0.160, 5.66336382679, 10927.29397676420],
[0.137, 3.46860408347, 5562.46906129680],
[0.192, 5.27908098216, 34363.36559755600],
[0.137, 5.87023088486, 2945.98654164060],
[0.180, 1.07686767816, 15806.14683944200],
[0.135, 0.34109799474, 7322.10246078180],
[0.169, 2.27408583150, 379.37341387420],
[0.172, 3.83276777655, 6621.85099148600],
[0.134, 0.89486611090, 13286.18363552360],
[0.168, 3.24434245132, 11614.43329373220],
[0.135, 6.03727673544, 1214.80232962340],
[0.150, 0.81912738038, 3416.87849797540],
[0.136, 5.06627117467, 14421.83163698840],
[0.138, 5.19336961955, 13363.43002786740],
[0.163, 5.91124428824, 16703.07938715119],
[0.181, 3.31978654659, 139.69813952280],
[0.162, 4.05905033891, 1795.25844372100],
[0.132, 0.40901506100, 1083.26036793700],
[0.156, 0.12304144640, 1107.13880568480],
[0.158, 6.25022915072, 6666.99775939800],
[0.131, 3.95250083817, 3.45580804620],
[0.147, 4.94673462086, 15010.89646399660],
[0.140, 6.13853404667, 12729.66596748600],
[0.131, 5.43398849473, 25665.51748340920],
[0.135, 5.06017183369, 11876.46958573400],
[0.128, 2.86969332730, 6549.68289171320],
[0.174, 5.18169887171, 28230.18722269139],
[0.179, 3.25589354429, 4922.57177498280],
[0.139, 5.33624615245, 23958.63178523340],
[0.127, 5.78406495652, 14577.18472611980],
[0.128, 1.27276688747, 8584.66166590080],
[0.133, 0.39052474466, 12410.73130054860],
[0.134, 1.09641189843, 8962.43809625800],
[0.125, 3.20445201519, 29.88204361020],
[0.136, 3.62250122667, 3511.28529731900],
[0.162, 5.36465149996, 2472.67876262220],
[0.150, 0.40179894287, 1111.64224510200],
[0.129, 1.94909076932, 19645.52555679060],
[0.172, 5.21328160366, 6747.71226231400],
[0.126, 4.39378462616, 21548.96236929180],
[0.146, 3.85987749053, 13361.46938573100],
[0.156, 5.24740844581, 6645.19698672220],
[0.137, 4.94588047257, 20995.39296644940],
[0.131, 1.72431469184, 11925.27409260060],
[0.136, 2.04268940441, 10654.62101941260],
[0.140, 1.54439148652, 8219.46528937760],
[0.127, 6.16695075115, 10016.31435579200],
[0.155, 5.47145482987, 2.96894541660],
[0.132, 6.25626202928, 13227.38462676380],
[0.121, 3.74135485334, 10294.51023745100],
[0.134, 3.12718351732, 8962.47260356240],
[0.122, 0.77282907794, 4936.79886898440],
[0.125, 4.23213631052, 15650.79375031060],
[0.157, 1.79175545524, 16489.76303806100],
[0.155, 4.15655698197, 56.38318607620],
[0.134, 1.53268827347, 708.98980227659],
[0.136, 4.01025697673, 9797.49248439750],
[0.156, 4.61556268820, 3354.83952070140],
[0.131, 4.47476808853, 11776.89992986440],
[0.118, 1.17466010141, 4606.17990532620],
[0.128, 0.12648796247, 6681.64492949320],
[0.122, 0.13511377940, 8322.55806359620],
[0.119, 1.29139116350, 10544.41469819320],
[0.128, 4.44966050740, 13465.54248101780],
[0.119, 4.01709629990, 14481.20549890200],
[0.147, 1.81590279650, 685.11136452880],
[0.137, 4.78402836071, 3613.28538405140],
[0.151, 1.48428558337, 9698.33186344200],
[0.136, 2.47757608387, 10156.90236013480],
[0.123, 2.42353206298, 6.13322593260],
[0.117, 5.40635440024, 688.63448287780],
[0.153, 5.00372030984, 14556.89671702380],
[0.133, 3.15773785434, 1125.86933910360],
[0.153, 1.94292660454, 6533.14612897330],
[0.124, 4.94608245253, 12825.64519470380],
[0.117, 1.13528750738, 4452.25467180180],
[0.115, 3.34121813462, 10001.48196070061],
[0.115, 3.44586362144, 7696.88787128380],
[0.117, 0.72489390402, 27.46886639960],
[0.132, 2.41318250916, 6717.25272007700],
[0.118, 0.35995031424, 27832.03821928320],
[0.157, 1.73929012934, 11560.07771607740],
[0.148, 2.14023976341, 15265.88651930040],
[0.113, 1.29183863745, 26880.31981303260],
[0.151, 0.95890610457, 6530.17718355670],
[0.153, 5.62679784282, 9911.63095888000],
[0.157, 0.09791378159, 138.51749687070],
[0.119, 2.16883964744, 7082.89697515680],
[0.113, 5.43102427558, 422.02744115600],
[0.130, 2.13493506322, 117.81280289200],
[0.140, 2.51194591630, 28.98162997940],
[0.128, 1.23822751200, 6680.80477730600],
[0.111, 4.60294776614, 25135.82651831460],
[0.118, 0.34226497704, 4140.43355186520],
[0.112, 4.02233737541, 6314.00052443720],
[0.134, 3.35926214730, 11247.20896476980],
[0.120, 6.09430372868, 4106.40549114620],
[0.117, 0.03006245187, 7.67379197540],
[0.109, 3.62630036582, 3344.11829139661],
[0.109, 1.94277745743, 16702.99482319620],
[0.114, 4.87315937546, 6151.51663465280],
[0.109, 5.65707270595, 3344.15279870100],
[0.108, 0.72637519191, 10.56935504700],
[0.128, 5.77326416186, 13369.56325380000],
[0.147, 4.73848506543, 11610.91017538320],
[0.145, 4.95495312886, 9859.37064396720],
[0.111, 3.28808788953, 257.01800774300],
[0.112, 4.79777726412, 12140.60114047780],
[0.109, 3.73199687068, 13635.12266415080],
[0.117, 1.20057736014, 6705.10329114740],
[0.149, 4.91688353237, 277.03499374140],
[0.108, 3.37299798972, 6717.83021870380],
[0.106, 0.53379407701, 5085.10572141780],
[0.125, 4.62770076269, 9329.67967887260],
[0.107, 4.60288570375, 1957.72507985320],
[0.113, 4.04786119569, 6953.89781075120],
[0.106, 0.75378922686, 149.89747512680],
[0.114, 0.62074562387, 6151.55114195720],
[0.108, 5.22204692781, 1556.56814695540],
[0.104, 1.02502614223, 4878.85286267780],
[0.133, 1.15811543786, 816.65332621520],
[0.134, 1.69834857217, 183.86958690200],
[0.104, 2.58832774275, 14591.41182012140],
[0.107, 4.42117075795, 7.13080065300],
[0.126, 0.03750399181, 16.83220104979],
[0.102, 1.20624870972, 11986.67590695340],
[0.102, 2.97579561878, 29822.78323632420],
[0.116, 4.73049067619, 13366.04013545100],
[0.130, 4.10484632841, 35.60779058380],
[0.113, 3.69200525056, 44.65383324020],
[0.111, 5.12900291511, 146.79443287140],
[0.126, 1.82187459534, 26887.36604973060],
[0.121, 6.08309355316, 7100.70949727480],
[0.105, 6.16606590276, 9175.75444534820],
[0.132, 2.97955203077, 1250.83019630080],
[0.106, 5.08419485009, 8742.04270747140],
[0.120, 0.59116561391, 31172.65064598300],
[0.112, 3.70888430091, 10050.28646756720],
[0.100, 1.82077956276, 12012.58229714040],
[0.107, 4.86100312387, 7899.55030137200],
[0.099, 0.72997085174, 18977.17908300880],
[0.107, 5.25025570307, 63.73589830340],
[0.099, 2.79139996703, 17932.02424682120],
[0.097, 4.94370173613, 28109.21461605200],
[0.122, 4.18676567644, 19617.07636932279],
[0.121, 3.14207351411, 9278.84721956680],
[0.112, 1.43537110436, 16232.74503031800],
[0.096, 2.57929371627, 12715.43887348440],
[0.096, 2.51396484677, 3535.58381116040],
[0.112, 6.19137312195, 6685.15700666270],
[0.109, 1.53428110338, 16703.12944380180],
[0.096, 4.29245810274, 7906.59653807000],
[0.096, 3.08847844641, 3468.63127003720],
[0.095, 6.09186084700, 10037.08975128440],
[0.094, 1.79812841802, 20047.19767854780],
[0.110, 4.24859410294, 3337.07205469860],
[0.093, 2.17945548408, 16066.06586147480],
[0.115, 5.44548079869, 11353.89216764020],
[0.098, 1.89605054783, 33406.12426699800],
[0.101, 3.00793005829, 3528.53757446240],
[0.096, 5.40659912420, 5749.86176654780],
[0.113, 3.93443805059, 7167.19690618920],
[0.092, 3.58985964414, 6724.94376570460],
[0.119, 3.90561570260, 11346.77862063940],
[0.097, 2.57280790230, 1747.60737815290],
[0.118, 3.82111723459, 9072.66167112960],
[0.096, 0.72646224606, 3152.68727893721],
[0.092, 6.23928508055, 24491.42579258340],
[0.099, 1.86991802881, 72.05573335480],
[0.094, 1.51091806861, 9801.42463766060],
[0.091, 4.94377681711, 8756.26980147300],
[0.095, 2.58771497236, 11663.17049029600],
[0.093, 0.66092443320, 30.99198474860],
[0.088, 2.47386826588, 17232.75309859360],
[0.100, 0.19616913512, 11883.58313273480],
[0.094, 0.61277732908, 73.63546321960],
[0.091, 6.04139177526, 153.92523352440],
[0.095, 0.30865798871, 29168.59654624120],
[0.110, 6.27936643935, 3337.10656200300],
[0.087, 2.09287965409, 10264.56588407340],
[0.089, 3.27633365389, 3002.36972771680],
[0.091, 1.89622049447, 37895.42629036740],
[0.118, 3.88268323672, 1236.07566032300],
[0.094, 2.27819061990, 4845.90023579280],
[0.085, 3.07438636612, 9983.70424446160],
[0.086, 3.94463425808, 16.76489074700],
[0.099, 4.58890225582, 3774.32416457660],
[0.086, 1.27758598252, 34513.26307268280],
[0.118, 6.10625309129, 454.90936652730],
[0.096, 6.08772700197, 1755.47168467910],
[0.085, 4.73193631802, 4576.68808702280],
[0.116, 0.88573303872, 16511.61386738740],
[0.083, 3.13948373813, 10191.41746323240],
[0.083, 0.36972674664, 9755.23023837760],
[0.112, 2.26524635842, 10006.58480891440],
[0.087, 4.25461508452, 8.16813658240],
[0.087, 5.31716927554, 1868.85939963620],
[0.115, 3.30507830050, 14157.70008224460],
[0.087, 2.90507350729, 36.99559061100],
[0.083, 3.58400049244, 12928.73796892240],
[0.086, 2.46839611271, 113.72943956840],
[0.096, 2.99829695985, 6510.55198278040],
[0.084, 1.34333260788, 4133.38731516720],
[0.093, 2.41895388985, 20040.15144184979],
[0.085, 5.92093268818, 12299.54465826100],
[0.082, 4.71321236549, 7733.49323658800],
[0.081, 5.26971110105, 12199.97500239140],
[0.080, 4.34410099751, 7218.02936549500],
[0.095, 0.02613500045, 2.90101428980],
[0.094, 6.22018441621, 20043.69181385099],
[0.085, 4.66573809999, 8638.94993325280],
[0.079, 2.89839604813, 22854.59602180400],
[0.104, 0.94882888784, 2735.76268599500],
[0.080, 1.68097745917, 12839.87228870540],
[0.085, 1.95515305721, 4686.95671800959],
[0.094, 0.58147434179, 14128.24277124560],
[0.091, 1.16317999954, 3495.96551583120],
[0.084, 4.04104644774, 9815.65173166220],
[0.082, 1.83662951627, 19190.47817844680],
[0.080, 4.04733274699, 3188.71514561460],
[0.084, 2.71620952175, 12089.76868117200],
[0.080, 2.77363158210, 9495.66943335380],
[0.078, 5.77285430206, 10397.60301166960],
[0.084, 0.78188080031, 7214.43893684320],
[0.094, 2.14762315943, 13532.02988993220],
[0.101, 5.76349087526, 1484.93248969420],
[0.082, 3.11421789241, 8446.99147881720],
[0.096, 5.85152670536, 3492.50970778500],
[0.079, 4.69625309523, 5298.33750655300],
[0.097, 3.97960395898, 18208.34994259200],
[0.105, 1.74376904536, 36.64856292950],
[0.094, 4.18941238607, 20043.65730654660],
[0.075, 3.46629875063, 13341.67431130680],
[0.092, 2.67278833288, 6680.79497027290],
[0.075, 4.59723160021, 9993.38809263160],
[0.087, 0.91979096638, 8425.71814811760],
[0.074, 0.42228487063, 48429.28218232440],
[0.074, 0.48470953224, 11456.98494185880],
[0.077, 0.10707484151, 1371.41176345600],
[0.093, 1.38010528069, 3145.64104223920],
[0.075, 5.28061257070, 12306.59089495900],
[0.079, 3.78666386040, 7.57867920960],
[0.073, 4.42902162523, 14.73728232560],
[0.084, 3.41538432898, 6637.50594109460],
[0.093, 3.41302342683, 1596.11913198180],
[0.071, 3.13537213242, 9488.62319665580],
[0.079, 2.33442828498, 12465.53441274220],
[0.078, 2.21525134547, 2810.98877190800],
[0.099, 0.48801369293, 17499.36014031540],
[0.075, 4.10299895268, 5525.86369599260],
[0.071, 4.04186021414, 259.49349472100],
[0.073, 2.20102876718, 30774.50164257480],
[0.074, 4.93439968296, 13517.80279593060],
[0.071, 5.32625652676, 6670.17915313570],
[0.078, 2.17664185326, 13421.82356871280],
[0.088, 5.38469204503, 17762.44406368820],
[0.081, 2.48353174238, 73.60095591520],
[0.092, 1.13088448190, 7747.72033058960],
[0.070, 1.16361323015, 5220.17080145320],
[0.084, 5.83220387910, 22.37827130260],
[0.076, 5.21065604639, 4271.97551355160],
[0.080, 4.01817623627, 3311.18291816379],
[0.068, 2.45937697940, 6279.55273164240],
[0.067, 4.31723563048, 2281.29780681340],
[0.067, 4.88776321797, 4379.63903749020],
[0.069, 3.57006764536, 14955.04572043200],
[0.078, 2.62374773232, 2810.85415130240],
[0.067, 4.76301301456, 6812.76681508600],
[0.070, 5.60319851277, 13383.22510229160],
[0.070, 3.05647570196, 10081.21114201300],
[0.081, 4.91537623765, 3333.92876282570],
[0.082, 5.49204987110, 5483.25472482600],
[0.065, 3.50466797067, 9161.52735134660],
[0.065, 2.79212460026, 13497.51478683460],
[0.070, 0.93640431668, 6106.88005506480],
[0.073, 2.57583496978, 6614.73744448520],
[0.070, 0.84170070580, 16695.94858649819],
[0.069, 1.10040627005, 2544.33167353560],
[0.063, 6.05841309176, 6453.74872061060],
[0.069, 2.67053540192, 2641.34127847220],
[0.086, 1.73112264739, 6286.59896834040],
[0.062, 5.49002783256, 4957.08687808040],
[0.072, 3.38857910283, 3184.21170619740],
[0.069, 5.35281990892, 2544.29716623120],
[0.064, 4.79175268505, 3181.66890891660],
[0.060, 6.18449904353, 3361.94806716680],
[0.065, 1.48236627574, 4819.47900076420],
[0.054, 3.66018290396, 2917.53735417280],
[0.064, 4.72286914683, 2281.16318620780],
[0.053, 4.65521663671, 3448.27595063840],
[0.060, 0.77450276964, 3319.27678623280],
[0.051, 1.45142985881, 3547.31316399640],
[0.051, 4.81258158513, 4403.51747523800],
[0.050, 0.37366902835, 3322.79990458180],
[0.050, 4.68787711774, 3253.30422216000],
[0.067, 4.63578431535, 4694.00295470760],
[0.049, 3.17471347671, 5452.26274007740],
[0.051, 2.54791773443, 4001.84535348080],
[0.048, 2.81171553464, 3372.58473251660],
[0.054, 4.45945188023, 10284.92120347220],
[0.053, 3.85131213520, 9758.75335672660],
[0.051, 1.11244863072, 6901.63749583840],
[0.062, 1.42198009630, 6830.78805053420],
[0.055, 5.61672988180, 45494.58142974879],
[0.054, 0.61701959453, 4716.38622654560],
[0.054, 4.28556326526, 2910.49111747480],
[0.045, 3.14626081312, 13951.51453380740],
[0.050, 4.16235480519, 12979.55317457600],
[0.046, 1.66182208107, 7768.00833968560],
[0.045, 5.07701425888, 14951.52260208300],
[0.043, 4.31723459530, 5881.40372823420],
[0.045, 2.39713581676, 8852.24902869080],
[0.043, 2.10202660495, 3337.15661865360],
[0.048, 0.19934255781, 1905.46476494040],
[0.056, 5.25687695855, 12808.88030395680],
[0.049, 2.06320966659, 4296.90158267040],
[0.042, 6.07282126953, 4295.85395129940],
[0.043, 1.74571613780, 3130.83644961080],
[0.050, 2.27112469544, 3427.92063123960],
[0.050, 0.30214747765, 3358.42494881780],
[0.043, 5.05297177283, 3229.42578441220],
[0.054, 6.11998016428, 16894.51039961060],
[0.043, 1.90603004035, 3451.79906898740],
[0.039, 0.50727886431, 10011.20061474960],
[0.052, 3.17851184154, 2324.94940881560],
[0.038, 4.88249540246, 3499.55594448300],
[0.039, 5.28113083211, 3343.15522398060],
[0.039, 4.98185580267, 3468.56395973440],
[0.047, 2.16244218985, 10027.36020440680],
[0.037, 5.84953090935, 6791.43117461900],
[0.048, 5.03779546898, 7064.10413197060],
[0.038, 0.58076516432, 8966.38750317330],
[0.051, 3.36181117037, 8976.68244391180],
[0.042, 4.13725767158, 8336.78515759780],
[0.038, 5.75425648893, 4531.53631857540],
[0.038, 3.55681323215, 5351.71276313960],
[0.040, 2.79414141035, 3067.93946934820],
[0.040, 4.99798468494, 10042.19259949820],
[0.037, 1.82286411009, 10017.95594474140],
[0.036, 6.02115369796, 6474.52411610300],
[0.044, 3.01299253859, 7417.10136693140],
[0.045, 2.33470159894, 3123.79021291280],
[0.039, 4.91767933978, 8034.61538140740],
],
# L1
[
[334085627474.342, 0.00000000000, 0.00000000000],
[1458227.051, 3.60426053609, 3340.61242669980],
[164901.343, 3.92631250962, 6681.22485339960],
[19963.338, 4.26594061030, 10021.83728009940],
[3452.399, 4.73210386365, 3.52311834900],
[2485.480, 4.61277567318, 13362.44970679920],
[841.551, 4.45858256765, 2281.23049651060],
[537.566, 5.01589727492, 398.14900340820],
[521.041, 4.99422678175, 3344.13554504880],
[432.614, 2.56066402860, 191.44826611160],
[429.656, 5.31646162367, 155.42039943420],
[381.747, 3.53881289437, 796.29800681640],
[314.129, 4.96335266049, 16703.06213349900],
[282.804, 3.15967518204, 2544.31441988340],
[205.664, 4.56891455660, 2146.16541647520],
[168.805, 1.32894813366, 3337.08930835080],
[157.587, 4.18501035954, 1751.53953141600],
[133.686, 2.23325104196, 0.98032106820],
[116.561, 2.21347652545, 1059.38193018920],
[117.591, 6.02407213861, 6151.53388830500],
[113.595, 5.42803224317, 3738.76143010800],
[133.563, 5.97421903927, 1748.01641306700],
[91.098, 1.09627836591, 1349.86740965880],
[83.301, 5.29636626272, 6684.74797174860],
[113.876, 2.12869455089, 1194.44701022460],
[80.776, 4.42813405865, 529.69096509460],
[79.531, 2.24864266330, 8962.45534991020],
[72.505, 5.84208163240, 242.72860397400],
[72.946, 2.50189460554, 951.71840625060],
[71.487, 3.85636094435, 2914.01423582380],
[85.342, 3.90854841008, 553.56940284240],
[67.582, 5.02327686473, 382.89653222320],
[65.089, 1.01802439311, 3340.59517304760],
[65.089, 3.04879603978, 3340.62968035200],
[61.508, 4.15183159800, 3149.16416058820],
[48.477, 4.87362121538, 213.29909543800],
[46.584, 1.31452419914, 3185.19202726560],
[56.520, 3.88813699320, 4136.91043351620],
[47.613, 1.18238046057, 3333.49887969900],
[41.343, 0.71385375517, 1592.59601363280],
[40.055, 5.31611875491, 20043.67456019880],
[40.272, 2.72542480614, 7.11354700080],
[32.886, 5.41067411968, 6283.07584999140],
[28.244, 0.04534124888, 9492.14631500480],
[22.294, 5.88516997273, 3870.30339179440],
[22.431, 5.46592525433, 20.35531939880],
[22.612, 0.83775884934, 3097.88382272579],
[21.418, 5.37934044204, 3340.54511639700],
[23.335, 6.16762213077, 3532.06069281140],
[26.579, 3.88960724782, 1221.84856632140],
[22.797, 1.54504711003, 2274.11694950980],
[20.431, 2.36353950189, 1589.07289528380],
[20.186, 3.36375535766, 5088.62883976680],
[26.554, 5.11271747607, 2700.71514038580],
[19.675, 2.57805423988, 12303.06777661000],
[19.468, 0.49216434489, 6677.70173505060],
[21.104, 3.52525428062, 15.25247118500],
[21.425, 4.97081508139, 3340.67973700260],
[18.505, 5.57863503922, 1990.74501704100],
[17.811, 6.12537931996, 4292.33083295040],
[16.472, 2.60291845066, 3341.59274776800],
[16.599, 1.25519718278, 3894.18182954220],
[19.455, 2.53112676345, 4399.99435688900],
[15.000, 1.03464802434, 2288.34404351140],
[20.029, 4.73119428749, 4690.47983635860],
[15.381, 2.47009470350, 4535.05943692440],
[19.964, 5.78652958398, 7079.37385680780],
[15.307, 2.26515985343, 3723.50895892300],
[14.705, 3.36979890389, 6681.24210705180],
[13.535, 2.12334410410, 5486.77784317500],
[12.950, 5.61929676688, 10025.36039844840],
[12.682, 2.95022113262, 3496.03282613400],
[13.644, 1.97739547259, 5614.72937620960],
[13.013, 1.51424752315, 5628.95647021120],
[14.705, 1.33902715586, 6681.20759974740],
[11.353, 6.23438193885, 135.06508003540],
[13.275, 3.42243595774, 5621.84292321040],
[10.867, 5.28184140482, 2818.03500860600],
[11.850, 3.12701832949, 426.59819087600],
[10.472, 2.73581537999, 2787.04302385740],
[11.132, 5.84178807242, 2803.80791460440],
[11.764, 2.58551521265, 8432.76438481560],
[11.854, 5.47630686910, 3553.91152213780],
[8.490, 1.91378007528, 11773.37681151540],
[9.708, 4.52957217749, 6489.77658728800],
[8.562, 3.16141186861, 162.46663613220],
[10.958, 4.15771850822, 2388.89402044920],
[8.133, 1.61295625304, 2957.71589447660],
[8.840, 4.23294294197, 7477.52286021600],
[8.034, 5.69983564288, 6041.32756708560],
[8.344, 2.18273563186, 23.87843774780],
[7.696, 5.71877332978, 9623.68827669120],
[8.695, 4.43542512603, 5092.15195811580],
[8.434, 3.16292250873, 3347.72597370060],
[6.664, 5.07517838003, 8031.09226305840],
[8.650, 4.33256981793, 3339.63210563160],
[7.372, 6.17831593269, 3583.34103067380],
[5.726, 3.68120120299, 8429.24126646660],
[6.186, 3.54165967734, 692.15760122680],
[5.438, 1.05129689580, 4933.20844033260],
[6.108, 1.66240879939, 6525.80445396540],
[5.154, 1.14703246368, 28.44918746780],
[4.850, 5.29254832907, 6681.29216370240],
[5.467, 6.12511022569, 2487.41604494780],
[4.866, 3.10475368803, 5.52292430740],
[6.360, 2.11896608283, 5884.92684658320],
[5.223, 0.37446264120, 12832.75874170460],
[4.710, 0.23326120326, 36.02786667740],
[4.954, 2.44806818502, 5099.26550511660],
[4.861, 5.60505298870, 6467.92575796160],
[4.706, 0.02998416568, 7210.91581849420],
[4.845, 5.70115105957, 6681.15754309680],
[5.496, 2.01006612503, 522.57741809380],
[4.964, 1.51006845561, 1744.42598441520],
[4.443, 0.31208413867, 10018.31416175040],
[5.381, 0.18359380473, 2942.46342329160],
[4.075, 3.95582108330, 3.88133535800],
[5.462, 0.19274227117, 7632.94325965020],
[4.110, 1.59535768711, 7234.79425624200],
[4.287, 2.87635993968, 2810.92146160520],
[5.276, 2.22638595594, 3127.31333126180],
[4.450, 4.17005729081, 2906.90068882300],
[5.144, 5.66878565669, 23384.28698689860],
[3.844, 2.26442183160, 2699.73481931760],
[3.514, 1.76463961051, 1758.65307841680],
[3.351, 2.66194137496, 4929.68532198360],
[4.299, 4.43057446968, 640.87760738220],
[3.140, 1.75866226873, 9595.23908922340],
[3.716, 2.91969220147, 15643.68020330980],
[3.249, 6.13937134379, 10419.98628350760],
[3.077, 2.56115174488, 7064.12138562280],
[3.208, 2.32519453080, 5085.03841111500],
[2.930, 1.27797225349, 574.34479833480],
[2.771, 1.75664216142, 639.89728631400],
[3.325, 2.58945297384, 2118.76386037840],
[3.187, 2.86646751510, 7740.60678358880],
[2.780, 0.43157089331, 5828.02847164760],
[2.824, 0.98500544471, 3191.04922956520],
[3.016, 1.86555882509, 7.04623669800],
[3.364, 1.52847138842, 6674.11130639880],
[2.672, 3.70855172347, 10021.85453375160],
[2.636, 3.11790581052, 6836.64525283380],
[2.672, 1.67778079449, 10021.82002644720],
[2.563, 3.77294986894, 2921.12778282460],
[2.509, 0.30454165124, 3475.67750673520],
[2.400, 0.96972421975, 3319.83703120740],
[2.262, 2.81394314950, 7875.67186362420],
[2.395, 2.96002707485, 6682.20517446780],
[2.210, 0.61263930586, 10973.55568635000],
[2.248, 4.12382007742, 59.37386191360],
[2.426, 5.91508357946, 5331.35744374080],
[2.158, 2.17583545077, 15113.98923821520],
[1.941, 5.47668312685, 11371.70468975820],
[1.903, 5.11165653855, 1066.49547719000],
[2.370, 3.87889340214, 3355.86489788480],
[2.299, 1.15914205086, 3320.25710730100],
[1.944, 5.89081872133, 6894.52394883760],
[1.843, 3.07643314617, 3325.35995551480],
[1.809, 4.97905218276, 1648.44675719740],
[2.136, 1.91364787635, 8969.56889691100],
[2.099, 3.00410255642, 6254.62666252360],
[1.915, 3.55907431740, 3767.21061757580],
[1.991, 5.37274107053, 206.18554843720],
[1.685, 5.49701299817, 266.60704172180],
[1.646, 1.31923405548, 3264.34635542420],
[1.732, 1.81361103995, 536.80451209540],
[1.723, 3.25900379342, 7903.07341972100],
[1.564, 5.75428852012, 3360.96774609859],
[1.589, 1.73273563259, 3134.42687826260],
[1.690, 2.43213510013, 3120.19978426100],
[1.549, 1.54016426558, 8425.65083781480],
[1.536, 5.88431472627, 20.77539549240],
[1.460, 4.89733072879, 9830.38901398780],
[2.023, 5.94808387002, 13365.97282514820],
[1.991, 3.11613326265, 3361.38782219220],
[1.401, 2.24482184868, 3344.20285535160],
[1.365, 4.58006320751, 10818.13528691580],
[1.392, 5.48931017516, 170.67287061920],
[1.360, 3.07974035205, 6127.65545055720],
[1.345, 1.18653158091, 14584.29827312060],
[1.717, 5.62501515015, 6158.64743530580],
[1.408, 1.82072980335, 3337.02199804800],
[1.736, 2.01921900546, 10575.40668294180],
[1.402, 4.50079374387, 5729.50644714900],
[1.266, 5.91088435118, 9808.53818466140],
[1.433, 6.05024653324, 12964.30070339100],
[1.223, 0.82796258263, 419.48464387520],
[1.393, 1.05117949107, 6438.49624942560],
[1.272, 1.50116723856, 8439.87793181640],
[1.143, 4.89747373731, 220.41264243880],
[1.183, 3.52587190041, 6688.33840040040],
[1.132, 6.19236255633, 6144.42034130420],
[1.154, 2.23058485970, 8955.34180290940],
[1.129, 3.44264300692, 10177.25767953360],
[1.152, 5.29913300616, 27.40155609680],
[1.274, 4.58421238440, 6247.51311552280],
[1.093, 2.82623332360, 4569.57454002200],
[1.303, 0.44350560735, 87.30820453981],
[1.335, 2.14204457730, 11243.68584642080],
[1.102, 1.96260837539, 6298.32832117640],
[1.066, 2.89865914321, 10404.73381232260],
[1.027, 4.79269049654, 3914.95722503460],
[1.015, 0.22847818730, 3230.40610548040],
[1.041, 3.73274497451, 10213.28554621100],
[1.154, 4.14326179244, 6261.74020952440],
[1.306, 3.67645557029, 2301.58581590939],
[1.145, 5.12292846748, 4562.46099302120],
[1.275, 5.14333847164, 2693.60159338500],
[0.914, 1.22398892152, 103.09277421860],
[0.955, 1.52875141393, 3369.06161416760],
[0.908, 0.48223420834, 13358.92658845020],
[0.892, 1.35161136807, 1214.73501932060],
[0.998, 3.29665881950, 3178.14579056760],
[0.980, 1.69212466625, 43.71891230500],
[0.919, 2.45445889752, 13916.01910964160],
[0.899, 5.94990531529, 12168.00269657460],
[0.891, 5.63297246408, 10021.90459040220],
[0.922, 3.91483430303, 9225.53927328300],
[0.930, 0.24073004700, 6923.95345737360],
[0.923, 1.10396074450, 29.42950853600],
[0.816, 4.65198282005, 2707.82868738660],
[0.791, 6.08595583868, 2384.32327072920],
[0.820, 4.80968546763, 533.21408344360],
[0.758, 2.06012386134, 12935.85151592320],
[0.738, 1.03564559078, 14314.16811304980],
[0.908, 0.69862047595, 16173.37116840440],
[0.700, 4.08788234610, 5202.35827933520],
[0.829, 2.01062325398, 9866.41688066520],
[0.887, 6.04145842617, 10021.76996979660],
[0.768, 1.39532897827, 8273.82086703240],
[0.873, 4.45446600602, 3316.73398895200],
[0.673, 3.02440642752, 1039.02661079040],
[0.660, 2.83410276989, 107.66352393860],
[0.838, 0.39195370222, 10551.52824519400],
[0.708, 3.27560955336, 18984.29263000960],
[0.658, 6.01853128902, 26724.89941359840],
[0.685, 1.98132615912, 1228.96211332220],
[0.595, 0.10260171285, 111.18664228760],
[0.563, 1.59138368358, 2391.43681773000],
[0.555, 2.70801962190, 4555.34744602040],
[0.696, 2.89276686038, 2648.45482547300],
[0.587, 4.56017988729, 6680.24453233140],
[0.540, 2.86002662919, 5459.37628707820],
[0.530, 5.64877399946, 6034.21402008480],
[0.520, 0.20012848836, 13760.59871020740],
[0.552, 5.08766140543, 1903.43681250120],
[0.512, 3.21411265909, 11081.21921028860],
[0.641, 5.19459033638, 6048.44111408640],
[0.677, 3.87723948458, 13517.87010623340],
[0.534, 0.23224033336, 51.28033786241],
[0.670, 3.69368226469, 3335.08950239240],
[0.486, 2.41879628327, 3364.49086444760],
[0.500, 4.31447859057, 3344.49376205780],
[0.481, 1.56481992611, 1964.83862685400],
[0.504, 2.47456295599, 3863.18984479360],
[0.523, 0.65856269237, 853.19638175200],
[0.481, 0.12971954679, 66.48740891440],
[0.535, 2.98601678918, 8270.29774868340],
[0.450, 2.02303462834, 13362.43245314700],
[0.448, 5.59827312967, 149.56319713460],
[0.519, 2.75931838722, 3503.07906283200],
[0.534, 4.77352933347, 1118.75579210280],
[0.450, 4.05380888708, 13362.46696045140],
[0.439, 4.83194205477, 3116.26763099790],
[0.567, 5.67483490268, 227.47613278900],
[0.459, 3.44555998004, 6702.00024889200],
[0.545, 2.01193901951, 7910.18696672180],
[0.425, 2.79854459343, 433.71173787680],
[0.429, 4.30113040289, 16858.48253293320],
[0.409, 0.05448009540, 3304.58456002240],
[0.434, 5.70806855136, 21.85082932640],
[0.399, 4.93233684937, 9779.10867612540],
[0.532, 1.31038986189, 6660.44945790720],
[0.398, 5.31345458361, 13119.72110282519],
[0.459, 2.53671963587, 74.78159856730],
[0.384, 2.29906801437, 12310.18132361080],
[0.467, 5.12562716972, 1596.18644228460],
[0.516, 5.84767782422, 1052.26838318840],
[0.414, 4.75409582610, 3981.49003408200],
[0.365, 3.73271671549, 5518.75014899180],
[0.367, 0.13506394328, 56.89837493560],
[0.459, 0.15582180531, 9381.93999378540],
[0.392, 2.15845463651, 3980.50971301380],
[0.396, 1.48538591462, 17924.91069982040],
[0.456, 0.64517343174, 6816.28993343500],
[0.358, 5.87219240658, 3607.21946842160],
[0.490, 0.65766946042, 3376.64029337720],
[0.365, 1.91816243676, 3347.65866339780],
[0.397, 1.80006148744, 7895.95987272020],
[0.336, 2.14687780119, 6677.63442474780],
[0.340, 2.88185925998, 17256.63153634140],
[0.334, 6.13670038311, 5724.93569742900],
[0.339, 4.08527025169, 664.75604513000],
[0.432, 2.52188285182, 18454.60166491500],
[0.336, 4.22863444521, 6696.47732458460],
[0.342, 5.96724705923, 3546.79797513700],
[0.326, 4.02557052581, 6872.67311951120],
[0.323, 5.05444843838, 3237.51965248120],
[0.324, 2.89151245241, 8329.67161059700],
[0.321, 6.25886976298, 10235.13637553740],
[0.333, 2.57725424455, 6684.81528205140],
[0.356, 6.27424874986, 8671.96987044060],
[0.319, 5.05665355586, 36.60536530420],
[0.305, 3.88755666972, 7107.82304427560],
[0.322, 6.28125601341, 16706.58525184800],
[0.334, 3.15240620873, 11216.28429032400],
[0.287, 6.16467002771, 3973.39616601300],
[0.283, 2.67802456636, 3877.41693879520],
[0.283, 1.66293157090, 1692.16566950240],
[0.276, 2.94210551399, 3415.39402526710],
[0.275, 0.53418048945, 17395.21973472580],
[0.355, 3.31406527401, 10022.81760116760],
[0.311, 1.50310910269, 6660.86953400080],
[0.269, 1.84517097065, 11780.49035851620],
[0.270, 4.42425307819, 310.84079886840],
[0.275, 3.58464612058, 128.01884333740],
[0.275, 2.22523539580, 3017.10701004240],
[0.312, 5.15950395287, 7255.56965173440],
[0.299, 0.72552273097, 155.35308913140],
[0.353, 5.70047798350, 16460.33352952499],
[0.267, 5.97864271046, 9499.25986200560],
[0.270, 0.77063210836, 11236.57229942000],
[0.339, 3.36092148900, 5625.36604155940],
[0.315, 2.33795159922, 3281.23856478620],
[0.247, 3.71002922076, 7373.38245462640],
[0.328, 0.18162415648, 5618.31980486140],
[0.247, 6.27486009856, 15508.61512327440],
[0.292, 0.14989609091, 16304.91313009080],
[0.326, 4.53606745007, 2178.13772229200],
[0.286, 5.47710043383, 9168.64089834740],
[0.246, 1.49838712480, 15110.46611986620],
[0.262, 2.58821936465, 3336.73109134180],
[0.244, 0.84015413449, 16062.18452611680],
[0.245, 0.37772563756, 12721.57209941700],
[0.250, 2.26824758119, 6784.31762761820],
[0.248, 6.22740483254, 13149.15061136120],
[0.255, 4.93078809107, 14158.74771361560],
[0.240, 6.15843594225, 19800.94595622480],
[0.249, 5.47044926479, 4407.10790388980],
[0.235, 5.38750866169, 76.26607127560],
[0.258, 6.10384464886, 2480.30249794700],
[0.306, 5.35546231697, 2766.26762836500],
[0.236, 5.25670707064, 13171.00144068760],
[0.224, 4.52466909993, 12566.15169998280],
[0.220, 5.83694256642, 13936.79450513400],
[0.271, 1.42460945147, 14054.60730802600],
[0.213, 0.21127914063, 1505.28780909299],
[0.267, 5.16501015011, 3205.54734666440],
[0.212, 4.26202838353, 6546.15977336420],
[0.211, 6.21401684263, 3253.30422216000],
[0.233, 3.72007597749, 3346.13535100720],
[0.274, 2.91986569135, 10713.99488132620],
[0.201, 3.36695295492, 6.68366387410],
[0.223, 3.08788599159, 401.67212175720],
[0.234, 2.24268269202, 110.20632121940],
[0.264, 2.08178742740, 6475.03930496240],
[0.231, 4.53806384480, 9602.35263622420],
[0.213, 2.85452302656, 5415.65737477320],
[0.195, 0.99589439506, 5642.19824260920],
[0.259, 0.00464351114, 9380.95967271720],
[0.197, 3.32573550633, 3657.00429635640],
[0.228, 5.33299975472, 3561.02506913860],
[0.193, 1.25502846507, 6606.44325483230],
[0.199, 1.13665869139, 685.04405422600],
[0.227, 4.49610509002, 589.06482700820],
[0.217, 5.48740879816, 10596.18207843420],
[0.192, 4.26501800444, 3333.56619000180],
[0.188, 1.44301618203, 4885.96640967860],
[0.178, 4.82506490541, 9070.11887384880],
[0.184, 5.69637552141, 3351.24909204960],
[0.187, 0.76021337348, 16699.53901514999],
[0.226, 0.82767654373, 3265.83082813250],
[0.204, 6.20933387021, 394.62588505920],
[0.176, 3.89567349231, 10028.95082710020],
[0.174, 3.68843293982, 735.87651353180],
[0.173, 2.44269377255, 3603.69635007260],
[0.177, 1.24154853329, 12722.55242048520],
[0.184, 4.77203925989, 286.96236112060],
[0.171, 4.67140116008, 20199.09495963300],
[0.170, 5.13753345526, 1332.05488754080],
[0.201, 2.37863157745, 16276.46394262300],
[0.209, 0.57156268506, 11250.79939342160],
[0.164, 1.98441291396, 10014.72373309860],
[0.191, 0.60250751218, 56.80326216980],
[0.171, 6.22556266993, 17277.40693183380],
[0.166, 1.05948008727, 19513.98359510420],
[0.163, 1.59661610701, 1437.17561419860],
[0.165, 3.36308723589, 6665.97238221460],
[0.184, 3.20554894393, 263.08392337280],
[0.212, 3.10485836003, 4039.88357492740],
[0.176, 3.41768939214, 9468.26787725700],
[0.163, 1.39275730949, 8982.81066930900],
[0.213, 3.39734274482, 931.36308685180],
[0.189, 4.54004144896, 8542.97070603500],
[0.191, 1.15555618959, 3169.93955608060],
[0.155, 1.41249963094, 22.76849660940],
[0.153, 5.14168081601, 156.40072050240],
[0.159, 3.64996617906, 8013.27974094040],
[0.151, 1.93804487507, 3384.33133900480],
[0.157, 0.58554505759, 158.94351778320],
[0.173, 2.72517427493, 2807.39834325620],
[0.159, 0.67192454133, 13892.14067189380],
[0.150, 2.66045714174, 19004.64794940840],
[0.192, 5.73782632783, 206.70073729660],
[0.143, 3.19213280913, 6843.69148953180],
[0.194, 1.32358882667, 19402.79695281660],
[0.143, 2.36478163720, 13207.02930736500],
[0.140, 1.88800568840, 11766.26326451460],
[0.144, 0.69018080218, 17085.95866572220],
[0.183, 5.98085295555, 13362.51701710200],
[0.161, 2.92764155222, 5.85720229960],
[0.162, 6.07051064413, 6701.58017279840],
[0.192, 0.86266150575, 2814.44457995420],
[0.182, 5.26446797092, 3873.82651014340],
[0.137, 0.41563614709, 5820.91492464680],
[0.144, 3.02314051168, 708.98980227659],
[0.184, 4.61314496499, 3329.97576135000],
[0.131, 3.48156082643, 367.22432896240],
[0.173, 3.09922849765, 12295.95422960920],
[0.135, 2.23311632892, 15664.03552270859],
[0.147, 1.95810911154, 5732.04924442980],
[0.158, 1.48909254724, 29.49181830340],
[0.127, 5.55534080040, 3368.01398279660],
[0.129, 1.78002583252, 22743.40937951640],
[0.132, 2.81496895377, 21795.21409161479],
[0.127, 5.73090203501, 3340.19235060619],
[0.164, 1.87613918877, 6709.67404086740],
[0.123, 3.61238958991, 22324.90505670940],
[0.129, 4.92064308735, 2540.79130153440],
[0.121, 6.16922638434, 20206.14119633100],
[0.122, 5.79901866314, 1854.63230563460],
[0.133, 0.50941998058, 3274.12501778540],
[0.151, 1.61342807879, 1107.13880568480],
[0.165, 2.02795177586, 290.48547946960],
[0.125, 0.52719797619, 2604.73591316800],
[0.144, 5.68526782434, 8827.39026987480],
[0.126, 3.80246508251, 765.79306444640],
[0.116, 1.79450246249, 647.01083331480],
[0.126, 2.00195272473, 699.27114822760],
[0.147, 6.22619740782, 6040.34724601740],
[0.119, 2.05840518265, 15121.10278521600],
[0.114, 2.74877091470, 6460.81221096080],
[0.155, 1.78154091696, 21265.52312652020],
[0.146, 3.37351237411, 1861.74585263540],
[0.118, 4.07281676691, 418.50432280700],
[0.116, 0.10434606071, 13362.38239649640],
[0.129, 0.78419803719, 3427.92063123960],
[0.152, 0.32620694442, 3443.70520091840],
[0.110, 0.56398082486, 661.23292678100],
[0.111, 4.05380946072, 568.82187402740],
[0.108, 3.17700641574, 3448.27595063840],
[0.138, 4.47698517191, 3326.38533269820],
[0.108, 4.89922372003, 9588.12554222260],
[0.114, 4.80828825403, 6657.34641565180],
[0.108, 4.10637483972, 13553.89797291080],
[0.125, 0.33573243959, 18849.22754997420],
[0.115, 3.18885465852, 2409.24933984800],
[0.104, 3.23074163851, 3472.15438838620],
[0.104, 0.09799515047, 30065.51184029820],
[0.112, 1.64487733528, 10001.06188460700],
[0.143, 3.53781769283, 6518.75821726740],
[0.113, 5.20979306912, 2125.87740737920],
[0.104, 2.77582098882, 38.13303563780],
[0.133, 5.88513337452, 5835.14201864840],
[0.105, 4.11662579413, 6675.70192909220],
[0.102, 0.60100887043, 10264.56588407340],
[0.101, 3.78636130664, 10042.61267559180],
[0.139, 1.80936944447, 12323.42309600880],
[0.101, 2.47217208753, 7380.49600162720],
[0.130, 2.53454569863, 11769.85369316640],
[0.100, 5.72291104291, 14.22709400160],
[0.135, 4.20237564510, 4672.66731424060],
[0.133, 0.34413768012, 16489.76303806100],
[0.098, 1.44874403589, 3370.04193523580],
[0.131, 1.31336606248, 3313.21087060300],
[0.111, 3.12463539337, 309.27832265580],
[0.101, 3.15369992044, 24150.08005134500],
[0.102, 6.13479937096, 2277.70737816160],
[0.099, 0.10085261274, 12839.87228870540],
[0.134, 2.91637947295, 57.87869600380],
[0.104, 3.30283052330, 3399.98628861340],
[0.108, 4.92699760221, 802.36392244620],
[0.106, 2.89298330043, 7799.98064550240],
[0.112, 3.12761163915, 5989.06725217280],
[0.094, 3.42562596561, 3510.19260983280],
[0.102, 0.94285421551, 3209.07046501340],
[0.096, 0.79636181668, 3024.22055704320],
[0.093, 1.08979608844, 14577.18472611980],
[0.097, 3.56551535742, 14421.83163698840],
[0.092, 5.02279637510, 2494.52959194860],
[0.123, 5.83481108101, 7747.72033058960],
[0.111, 3.31406538379, 11610.91017538320],
[0.118, 5.00845322960, 1581.95934828300],
[0.091, 2.36839307589, 11140.59307220220],
[0.099, 2.93269536697, 2067.93140107260],
[0.124, 3.15220420912, 22345.26037610820],
[0.090, 0.85462370851, 17232.75309859360],
[0.125, 1.54866979468, 1435.14766175940],
[0.113, 4.57220387105, 14712.31711645800],
[0.103, 0.11158194413, 11.04570026390],
[0.113, 2.41110151532, 5244.04923920100],
[0.091, 1.77184730280, 2221.85663459700],
[0.114, 1.92696878615, 8226.57883637840],
[0.118, 0.29322259611, 2945.98654164060],
[0.089, 4.49875865671, 21947.11137270000],
[0.104, 1.36766858693, 4032.77002792660],
[0.116, 4.67476277278, 272.67295735160],
[0.105, 3.73327973850, 4989.05918389720],
[0.095, 0.34653808205, 13517.80279593060],
[0.086, 2.70925448214, 7218.02936549500],
[0.112, 5.27572276726, 17499.36014031540],
[0.114, 3.37335971932, 2938.94030494260],
[0.090, 0.26623024836, 9485.03276800400],
[0.086, 3.66786582491, 6997.61672305620],
[0.087, 4.07823608680, 18606.49894600020],
[0.117, 5.61863859185, 16511.61386738740],
[0.084, 2.80171829534, 8584.66166590080],
[0.086, 5.87459621301, 73.60095591520],
[0.090, 1.07789160729, 10721.10842832700],
[0.084, 0.78729386249, 146.81168652360],
[0.112, 2.31690430881, 9638.94074787620],
[0.083, 5.90575201511, 16858.41522263039],
[0.082, 4.31690557700, 9374.82644678460],
[0.083, 1.41315204958, 22854.59602180400],
[0.084, 0.90320571725, 2171.02417529120],
[0.082, 1.59442952041, 9947.05568153210],
[0.082, 0.44163602941, 4782.87363546000],
[0.086, 5.18335054161, 12410.73130054860],
[0.085, 3.61669636863, 8965.97846825920],
[0.097, 5.35511765140, 4996.17273089800],
[0.085, 2.36814442737, 1062.90504853820],
[0.078, 1.75580354602, 2060.81785407180],
[0.087, 0.98702744399, 10156.90236013480],
[0.098, 0.35294347682, 23546.75362303080],
[0.101, 1.03298143418, 20040.15144184979],
[0.088, 0.56201084357, 17101.21113690720],
[0.082, 2.65765057749, 12979.55317457600],
[0.085, 1.07007237991, 10706.88133432540],
[0.082, 0.80588396320, 20735.83216142559],
[0.092, 4.87180501294, 9389.05354078620],
[0.078, 3.22869264518, 11925.27409260060],
[0.074, 5.59171946181, 8535.85715903420],
[0.080, 0.42260849968, 956.28915597060],
[0.082, 1.47379060963, 16.83220104979],
[0.073, 3.76950560688, 8859.36257569160],
[0.073, 4.59130182630, 362.12113673080],
[0.072, 5.15373872266, 9872.27408296480],
[0.098, 2.47740242208, 5401.43028077160],
[0.071, 0.08395696279, 15849.86575174700],
[0.078, 0.04212599783, 16703.12944380180],
[0.075, 3.77172360793, 4845.90023579280],
[0.072, 2.01742377451, 1329.51209026000],
[0.076, 0.30413402871, 72.05573335480],
[0.097, 5.15109318550, 1.48447270830],
[0.070, 0.33648335823, 23141.55838292460],
[0.068, 0.34828385806, 20047.19767854780],
[0.078, 1.42772075938, 16063.16484718500],
[0.081, 2.37498404818, 16703.04487984680],
[0.069, 3.66727984195, 13363.43002786740],
[0.067, 1.77194706681, 18451.07854656599],
[0.073, 0.41181711796, 33406.12426699800],
[0.067, 3.15946840380, 8799.98871377800],
[0.067, 4.07602260745, 10448.43547097540],
[0.068, 1.78981361818, 224.34479570190],
[0.066, 1.01449371817, 4193.80880845180],
[0.067, 4.89249339125, 12082.65513417120],
[0.081, 0.61914094848, 949.17560896980],
[0.066, 3.39914635235, 10184.30391623160],
[0.064, 5.50528849889, 4936.79886898440],
[0.064, 1.82608235490, 3077.52850332700],
[0.069, 2.48571574894, 10018.24685144760],
[0.064, 2.80447322320, 20809.46762464520],
[0.068, 0.97907335430, 6717.25272007700],
[0.087, 2.45966764758, 7321.12213971360],
[0.062, 1.69131771765, 632.78373931320],
[0.081, 4.40575713075, 16703.07938715119],
[0.063, 3.63625395496, 25685.87280280800],
[0.075, 5.54907590704, 16872.64231663200],
[0.061, 0.33159827734, 12012.58229714040],
[0.063, 3.16314818302, 11670.28403729680],
[0.062, 0.23148800541, 7314.00859271280],
[0.078, 1.65377731167, 11614.43329373220],
[0.068, 1.10866475394, 6155.05700665400],
[0.068, 4.45713540461, 9175.75444534820],
[0.081, 3.66553577428, 15265.88651930040],
[0.068, 5.59792852411, 377.37360791580],
[0.059, 6.25689995147, 41427.48698317880],
[0.072, 3.39739853142, 685.11136452880],
[0.062, 0.11206359088, 14047.49376102520],
[0.057, 4.31819630987, 95.97922721780],
[0.070, 5.98596344975, 6531.66165626500],
[0.066, 5.93804470886, 3490.17562383440],
[0.056, 5.11205539684, 7322.10246078180],
[0.056, 3.36788837326, 4379.63903749020],
[0.056, 2.20908914878, 6688.27109009760],
[0.057, 4.57828186723, 10037.08975128440],
[0.057, 0.04695703833, 24889.57479599160],
[0.065, 2.70973517401, 19617.07636932279],
[0.068, 3.51423189318, 14556.89671702380],
[0.056, 5.94452825242, 21548.96236929180],
[0.056, 3.94541346495, 25665.51748340920],
[0.055, 0.45166365461, 16702.99482319620],
[0.062, 0.05229160039, 14061.72085502680],
[0.055, 1.14774475393, 4459.36821880260],
[0.065, 6.21442820689, 6947.83189512140],
[0.056, 5.01712943722, 485.97205278960],
[0.065, 1.51615558729, 5511.63660199100],
[0.072, 4.90742373357, 25287.72379939980],
[0.057, 5.31542907454, 28628.33622609960],
[0.055, 4.02023620788, 4005.36847182980],
[0.054, 5.51196184505, 44.65383324020],
[0.053, 0.46840976995, 19645.52555679060],
[0.053, 4.51539970261, 9886.77220006400],
[0.069, 3.37092084432, 41.55079098480],
[0.072, 4.66520155151, 6685.10618875760],
[0.052, 2.05209599225, 7366.26890762560],
[0.052, 6.25882226723, 12509.25332504720],
[0.060, 0.33350021257, 13575.74880223720],
[0.059, 5.94433755684, 625.67019231240],
[0.050, 2.65624501709, 10124.93005431800],
[0.068, 2.92105834159, 10025.42770875120],
[0.051, 2.88289068067, 39601.89191244960],
[0.069, 1.09637075565, 24076.44458812540],
[0.052, 2.65290577481, 15650.79375031060],
[0.052, 3.28683313010, 6756.00645196690],
[0.054, 5.34683925496, 6578.13207918100],
[0.054, 2.77410607136, 6705.10329114740],
[0.049, 2.65700209900, 6944.30877677240],
[0.053, 5.67436244967, 1883.08149310240],
[0.048, 5.68336050679, 8646.06348025360],
[0.051, 0.11390643300, 17402.33328172660],
[0.065, 1.03099992649, 4106.40549114620],
[0.060, 1.00159365247, 151.89728108520],
[0.050, 3.84651247899, 45494.58142974879],
[0.047, 3.03959709242, 5408.54382777240],
[0.063, 4.16165369755, 8186.51266249260],
[0.046, 2.69368087378, 16547.64173406480],
[0.051, 2.99576014378, 3774.32416457660],
[0.044, 2.00664763411, 6418.14093002680],
[0.045, 4.01853755929, 19406.67828817460],
[0.058, 3.14474753550, 4025.65648092580],
[0.050, 2.59881540437, 6621.85099148600],
[0.043, 4.87912487459, 6414.61781167780],
[0.042, 5.20400092044, 4447.75123238460],
[0.051, 1.99634375899, 5032.77809620220],
[0.043, 1.28813888865, 6643.09181776180],
[0.040, 0.96801618560, 14591.41182012140],
[0.039, 1.84985100829, 10001.48196070061],
[0.039, 5.69967200167, 6106.88005506480],
[0.038, 3.27498743518, 18052.92954315780],
[0.039, 2.84167905068, 6652.77566593180],
[0.044, 0.57891618854, 16865.52876963120],
[0.043, 4.61937364869, 3341.03250279340],
[0.042, 6.02555835659, 6691.86151874940],
[0.034, 4.97734992350, 6670.58818804980],
[0.033, 1.39167727215, 4825.54491639400],
[0.035, 6.02955363644, 3568.08855948880],
[0.035, 0.31961016732, 6645.19698672220],
[0.032, 5.63043769073, 3511.28529731900],
[0.031, 5.42978464210, 9945.57120882380],
[0.038, 5.66461657503, 3416.87849797540],
[0.030, 0.98518793666, 20426.57109242200],
[0.038, 0.12870962242, 6604.95878212400],
[0.037, 5.48374357342, 3311.18291816379],
[0.032, 6.11106979810, 4392.88080988820],
[0.031, 3.18481282781, 3341.04230982650],
[0.034, 2.32358226279, 9072.66167112960],
[0.039, 4.11042361929, 3312.16323923200],
[0.027, 0.57810321636, 3391.89276456221],
[0.029, 2.48646403166, 9815.65173166220],
[0.031, 0.44265747667, 3451.79906898740],
[0.027, 6.13498177783, 3362.46325602620],
[0.027, 6.21846173482, 5223.69391980220],
[0.027, 2.94945830517, 7203.80227149340],
[0.027, 3.26179855800, 8756.26980147300],
[0.027, 3.94385271700, 23958.63178523340],
[0.033, 3.77237326006, 12808.88030395680],
[0.030, 4.75096367323, 15906.76412668260],
[0.031, 0.88248871193, 3340.18254357310],
[0.025, 0.31303295413, 6571.01853218020],
[0.031, 4.29076841627, 10020.85695903120],
[0.026, 2.22427360058, 10050.28646756720],
[0.025, 0.67881122439, 23937.85638974100],
[0.031, 1.72899093511, 13745.34623902240],
[0.024, 0.20355912395, 3229.42578441220],
[0.032, 3.37195631109, 2284.75361485960],
],
# L2
[
[58015.791, 2.04979463279, 3340.61242669980],
[54187.645, 0.00000000000, 0.00000000000],
[13908.426, 2.45742359888, 6681.22485339960],
[2465.104, 2.80000020929, 10021.83728009940],
[398.379, 3.14118428289, 13362.44970679920],
[222.022, 3.19436080019, 3.52311834900],
[120.957, 0.54325292454, 155.42039943420],
[61.517, 3.48529427371, 16703.06213349900],
[53.638, 3.54191121461, 3344.13554504880],
[34.268, 6.00188499119, 2281.23049651060],
[31.665, 4.14015171788, 191.44826611160],
[29.839, 1.99870679845, 796.29800681640],
[23.168, 4.33403365928, 242.72860397400],
[21.659, 3.44532466378, 398.14900340820],
[16.044, 6.11000472441, 2146.16541647520],
[20.370, 5.42191375400, 553.56940284240],
[14.927, 6.09541783564, 3185.19202726560],
[16.227, 0.65678953303, 0.98032106820],
[14.317, 2.61851897591, 1349.86740965880],
[14.416, 4.01923812101, 951.71840625060],
[11.934, 3.86122163021, 6684.74797174860],
[15.648, 1.22086121940, 1748.01641306700],
[11.260, 4.71822363671, 2544.31441988340],
[13.352, 0.60189008414, 1194.44701022460],
[10.396, 0.25038714677, 382.89653222320],
[9.468, 0.68170713564, 1059.38193018920],
[9.229, 3.83209092321, 20043.67456019880],
[9.005, 3.88271826102, 3738.76143010800],
[7.501, 5.46498630412, 1751.53953141600],
[6.497, 5.47773072872, 1592.59601363280],
[6.311, 2.34104793674, 3097.88382272579],
[6.859, 2.57522504136, 3149.16416058820],
[5.870, 1.14783576679, 7.11354700080],
[6.681, 2.37843690339, 4136.91043351620],
[4.647, 4.42957708526, 6151.53388830500],
[4.166, 3.68631477611, 5614.72937620960],
[4.764, 2.89684755585, 3333.49887969900],
[4.045, 6.12493402657, 5628.95647021120],
[3.653, 4.06679068397, 1990.74501704100],
[3.618, 2.46868561769, 529.69096509460],
[3.277, 0.68101740787, 8962.45534991020],
[3.253, 2.79565340390, 3894.18182954220],
[3.091, 4.56861203364, 3496.03282613400],
[2.921, 5.41458945995, 2914.01423582380],
[2.921, 1.23050883841, 2787.04302385740],
[2.784, 1.38911141844, 4292.33083295040],
[2.620, 1.04061894134, 3341.59274776800],
[2.888, 3.41062353663, 3337.08930835080],
[2.418, 0.96341462666, 4535.05943692440],
[2.357, 4.84628239765, 9492.14631500480],
[2.593, 5.74934234498, 3340.59517304760],
[2.191, 3.26449527357, 213.29909543800],
[2.594, 1.49510566123, 3340.62968035200],
[2.344, 4.18104725028, 10025.36039844840],
[2.630, 4.67640929857, 3583.34103067380],
[2.602, 2.64911714813, 2388.89402044920],
[1.830, 0.97181050149, 1589.07289528380],
[2.416, 1.04749173375, 4399.99435688900],
[2.386, 4.27072575550, 7079.37385680780],
[2.187, 0.16036551231, 6525.80445396540],
[2.344, 0.01425578204, 4690.47983635860],
[1.617, 4.95614491689, 5088.62883976680],
[1.633, 1.10703599922, 12303.06777661000],
[2.126, 0.48290227706, 2700.71514038580],
[1.629, 4.94267977718, 1221.84856632140],
[1.504, 0.11031912519, 2957.71589447660],
[1.759, 3.81170701376, 3723.50895892300],
[1.401, 3.85907867678, 6283.07584999140],
[1.338, 5.29685392418, 6677.70173505060],
[1.763, 2.51660121293, 2810.92146160520],
[1.392, 2.73498041122, 7477.52286021600],
[1.431, 2.97747408389, 6489.77658728800],
[1.236, 3.77245965590, 2699.73481931760],
[1.234, 1.88931735265, 6681.24210705180],
[1.513, 2.92614134711, 640.87760738220],
[1.234, 6.14168429036, 6681.20759974740],
[1.408, 1.54395721611, 3347.72597370060],
[1.038, 5.82880072933, 4933.20844033260],
[1.156, 1.50825464304, 426.59819087600],
[1.362, 4.17794297520, 23384.28698689860],
[1.135, 3.77506455273, 3870.30339179440],
[0.916, 3.81726339298, 5092.15195811580],
[0.853, 3.82520490669, 3340.54511639700],
[1.077, 5.05062828760, 5621.84292321040],
[1.074, 3.81446920470, 3553.91152213780],
[0.847, 3.41702696402, 3340.67973700260],
[0.920, 1.91108056416, 3532.06069281140],
[0.738, 4.25786145387, 9623.68827669120],
[0.908, 4.12911006922, 162.46663613220],
[0.647, 3.10301033831, 7234.79425624200],
[0.800, 5.20674574801, 87.30820453981],
[0.657, 1.57895580467, 2487.41604494780],
[0.650, 2.78932995437, 574.34479833480],
[0.659, 5.16655918817, 12832.75874170460],
[0.712, 5.79288230676, 3339.63210563160],
[0.660, 0.25125103909, 8969.56889691100],
[0.527, 4.62218528897, 10419.98628350760],
[0.607, 3.84724721085, 5486.77784317500],
[0.500, 4.66323134619, 6836.64525283380],
[0.509, 0.32548381735, 8031.09226305840],
[0.613, 1.72250879737, 7632.94325965020],
[0.516, 1.37906978509, 7740.60678358880],
[0.469, 1.31324778369, 7875.67186362420],
[0.442, 5.34515135225, 10018.31416175040],
[0.496, 4.49656852602, 692.15760122680],
[0.544, 1.44465369200, 15643.68020330980],
[0.467, 1.40928870138, 6682.20517446780],
[0.547, 4.42021065522, 5331.35744374080],
[0.433, 1.25048504108, 4929.68532198360],
[0.409, 3.80689273098, 6681.29216370240],
[0.403, 1.57190239310, 6127.65545055720],
[0.401, 4.59976459753, 7210.91581849420],
[0.406, 0.60945437905, 11773.37681151540],
[0.367, 0.97726583907, 6041.32756708560],
[0.361, 0.13117924893, 639.89728631400],
[0.411, 4.21323421517, 6681.15754309680],
[0.441, 4.49050100878, 13365.97282514820],
[0.474, 5.18562524130, 2301.58581590939],
[0.334, 2.21001303889, 10021.85453375160],
[0.370, 5.02880065186, 6923.95345737360],
[0.333, 0.18229887483, 10021.82002644720],
[0.342, 2.49988747611, 6438.49624942560],
[0.320, 1.32374476890, 2118.76386037840],
[0.330, 2.98027481579, 5729.50644714900],
[0.340, 0.51409045792, 9866.41688066520],
[0.283, 4.03219455446, 8955.34180290940],
[0.281, 3.33891891806, 9830.38901398780],
[0.271, 1.53144358045, 1039.02661079040],
[0.252, 3.04356928941, 10818.13528691580],
[0.270, 2.22972724035, 5828.02847164760],
[0.259, 4.24406546278, 6894.52394883760],
[0.237, 5.07818982743, 8429.24126646660],
[0.263, 2.00552313665, 3767.21061757580],
[0.241, 4.06396704332, 7064.12138562280],
[0.250, 0.45422818547, 6298.32832117640],
[0.240, 1.94655459341, 6688.33840040040],
[0.209, 0.03043017984, 3914.95722503460],
[0.218, 4.53201818250, 26724.89941359840],
[0.246, 3.85272742042, 4562.46099302120],
[0.254, 1.19313236635, 8432.76438481560],
[0.231, 1.70340106651, 2942.46342329160],
[0.209, 3.82345999055, 6467.92575796160],
[0.175, 3.26444055581, 3981.49003408200],
[0.210, 3.55052707697, 10575.40668294180],
[0.162, 5.95176683701, 310.84079886840],
[0.165, 5.04267055142, 10177.25767953360],
[0.198, 0.80464315638, 15113.98923821520],
[0.188, 1.99007233842, 3127.31333126180],
[0.188, 4.55406803143, 12964.30070339100],
[0.163, 2.14874886056, 10973.55568635000],
[0.154, 4.35708331036, 3360.96774609859],
[0.169, 2.40504327781, 3355.86489788480],
[0.164, 5.53875620970, 16173.37116840440],
[0.144, 0.30186831602, 1903.43681250120],
[0.161, 3.18977924032, 6674.11130639880],
[0.135, 1.65570006128, 3325.35995551480],
[0.143, 6.25825818399, 9595.23908922340],
[0.158, 6.14255608340, 8273.82086703240],
[0.170, 5.98413937993, 3320.25710730100],
[0.124, 1.74571336137, 11081.21921028860],
[0.146, 2.22851709304, 3178.14579056760],
[0.126, 5.02927593525, 3475.67750673520],
[0.123, 4.99342648375, 13760.59871020740],
[0.141, 4.56735815490, 10021.76996979660],
[0.118, 5.42945437851, 13358.92658845020],
[0.116, 4.22080571309, 5884.92684658320],
[0.119, 4.09962692144, 10021.90459040220],
[0.124, 1.79723243306, 18984.29263000960],
[0.135, 1.00085140609, 18454.60166491500],
[0.106, 5.76342924005, 2288.34404351140],
[0.103, 0.63812052706, 12310.18132361080],
[0.100, 4.37946945260, 9808.53818466140],
[0.104, 4.01151451052, 13916.01910964160],
[0.125, 4.94825577002, 10551.52824519400],
[0.098, 5.91086068785, 14584.29827312060],
[0.126, 1.55752034021, 8270.29774868340],
[0.098, 2.52869810530, 3191.04922956520],
[0.095, 5.50808311620, 3319.83703120740],
[0.108, 1.67115668669, 11216.28429032400],
[0.090, 1.71281301325, 1505.28780909299],
[0.088, 0.42472333366, 11371.70468975820],
[0.089, 4.83867235269, 16706.58525184800],
[0.106, 1.78998252916, 10022.81760116760],
[0.087, 5.89602688150, 16858.48253293320],
[0.085, 0.55423657166, 13362.43245314700],
[0.091, 1.61117547913, 24093.27678917520],
[0.083, 0.55328893146, 3344.20285535160],
[0.083, 1.06830368571, 3364.49086444760],
[0.084, 6.22980173043, 3369.06161416760],
[0.085, 2.58442459869, 13362.46696045140],
[0.079, 3.08636079495, 2818.03500860600],
[0.077, 1.53791408869, 5459.37628707820],
[0.075, 3.34890581175, 9070.11887384880],
[0.097, 2.99973987655, 3316.73398895200],
[0.084, 5.55309637085, 3427.92063123960],
[0.089, 4.16432726564, 6158.64743530580],
[0.078, 3.72375730390, 13171.00144068760],
[0.083, 0.11917380846, 3337.02199804800],
[0.073, 4.91632010974, 13362.38239649640],
[0.076, 4.52961122356, 708.98980227659],
[0.071, 5.37905772348, 10264.56588407340],
[0.084, 1.93007660929, 9468.26787725700],
[0.073, 5.28498987702, 4845.90023579280],
[0.080, 4.81193020727, 13149.15061136120],
[0.076, 4.77873149036, 8671.96987044060],
[0.069, 0.86312560839, 13207.02930736500],
[0.070, 1.22001285505, 2274.11694950980],
[0.070, 0.53977528244, 13119.72110282519],
[0.070, 0.09801356525, 1437.17561419860],
[0.069, 2.23597403243, 7107.82304427560],
[0.074, 0.67876411085, 16460.33352952499],
[0.068, 0.54393617190, 12935.85151592320],
[0.084, 5.11617356640, 13892.14067189380],
[0.078, 5.27206373031, 853.19638175200],
[0.065, 4.74504626032, 6144.42034130420],
[0.065, 2.89744951086, 7903.07341972100],
[0.089, 5.44755326514, 13517.87010623340],
[0.073, 3.81554166604, 3503.07906283200],
[0.066, 0.47312197978, 3980.50971301380],
[0.065, 1.38901912957, 3253.30422216000],
[0.086, 5.44050231013, 6816.28993343500],
[0.072, 3.44697351738, 14158.74771361560],
[0.086, 4.50213985772, 13362.51701710200],
[0.074, 1.34701853675, 3361.38782219220],
[0.076, 6.04002959430, 5085.03841111500],
[0.065, 0.07623776004, 5099.26550511660],
[0.066, 2.09160717290, 14421.83163698840],
[0.077, 2.75740817982, 19402.79695281660],
[0.059, 3.61679189501, 7322.10246078180],
[0.060, 4.67079289372, 10235.13637553740],
[0.064, 6.17220244155, 9381.93999378540],
[0.066, 0.35824154106, 7255.56965173440],
[0.059, 4.52818219212, 9499.25986200560],
[0.065, 1.86765892646, 11610.91017538320],
[0.074, 3.12276411101, 1107.13880568480],
[0.060, 1.35069679183, 19800.94595622480],
[0.055, 0.64581579779, 6677.63442474780],
[0.055, 0.65206957868, 7373.38245462640],
[0.055, 0.41979092764, 9779.10867612540],
[0.074, 3.85276242820, 2766.26762836500],
[0.056, 2.49261586879, 5642.19824260920],
[0.055, 2.62555306434, 14314.16811304980],
[0.054, 3.95212835807, 4032.77002792660],
[0.055, 0.51062350773, 15110.46611986620],
[0.053, 5.88757767795, 21265.52312652020],
[0.051, 5.99253934388, 21947.11137270000],
[0.049, 5.16723732129, 20047.19767854780],
[0.067, 1.53758821512, 9380.95967271720],
[0.057, 5.34893894346, 17101.21113690720],
[0.049, 1.92678602770, 12721.57209941700],
[0.046, 2.31590320480, 10028.95082710020],
[0.052, 4.92463460288, 16304.91313009080],
[0.050, 1.69803302925, 9225.53927328300],
[0.045, 2.91271003676, 8982.81066930900],
[0.044, 4.38728556203, 12168.00269657460],
[0.047, 4.44933635857, 6872.67311951120],
[0.043, 2.13295656057, 22324.90505670940],
[0.050, 1.34759191325, 8439.87793181640],
[0.044, 0.89037464728, 20752.66436247540],
[0.041, 2.76164156557, 6696.47732458460],
[0.042, 4.45031185062, 10404.73381232260],
[0.044, 3.20262780268, 22743.40937951640],
[0.042, 3.54559408987, 30376.35263916660],
[0.042, 0.82118836477, 20597.24396304120],
[0.052, 4.59037852162, 22345.26037610820],
[0.042, 3.79872109079, 28628.33622609960],
[0.041, 2.36253602080, 16062.18452611680],
[0.050, 1.48377570574, 6040.34724601740],
[0.041, 5.33088551342, 765.79306444640],
[0.039, 1.57984331116, 24889.57479599160],
[0.038, 0.21571600948, 9168.64089834740],
[0.038, 3.47667842127, 1066.49547719000],
[0.052, 0.81427285458, 9638.94074787620],
[0.041, 0.04356010851, 6660.86953400080],
[0.046, 0.89345529755, 16703.04487984680],
[0.044, 0.85335841824, 17468.85519794540],
[0.039, 0.27098916103, 11614.43329373220],
[0.036, 3.93388136028, 33716.96506586640],
[0.047, 3.90896957151, 5244.04923920100],
[0.034, 2.37310468308, 10213.28554621100],
[0.034, 4.85454495742, 14469.58851248400],
[0.035, 1.96497348634, 6702.00024889200],
[0.033, 2.14488758889, 13363.43002786740],
[0.046, 2.92422266239, 16703.07938715119],
[0.035, 1.78692835372, 2648.45482547300],
[0.033, 4.24484480826, 8584.66166590080],
[0.043, 6.09391349922, 6660.44945790720],
[0.035, 5.72426647579, 16699.53901514999],
[0.031, 1.95254273311, 6665.97238221460],
[0.028, 5.88548900893, 19513.98359510420],
[0.030, 4.38908125588, 12295.95422960920],
[0.029, 6.25276686131, 17924.91069982040],
[0.025, 4.89000247975, 30065.51184029820],
[0.026, 2.43119321236, 6518.75821726740],
[0.028, 3.97032105354, 4407.10790388980],
[0.025, 1.88631752737, 4379.63903749020],
[0.028, 3.06196380356, 6247.51311552280],
[0.029, 5.98057498931, 6680.24453233140],
[0.032, 4.65556810177, 6701.58017279840],
[0.026, 0.76018385758, 3863.18984479360],
[0.023, 0.31107548102, 8827.39026987480],
[0.022, 1.11553014451, 6684.81528205140],
[0.020, 4.81193192299, 15508.61512327440],
[0.019, 5.11656455993, 12012.58229714040],
[0.026, 1.07254469525, 8425.65083781480],
[0.021, 2.68436255141, 6261.74020952440],
[0.022, 2.15631095909, 3335.08950239240],
[0.017, 0.03684125273, 3877.41693879520],
[0.017, 2.84467149903, 3344.49376205780],
[0.020, 5.41519706836, 3205.54734666440],
],
# L3
[
[1482.423, 0.44434694876, 3340.61242669980],
[662.095, 0.88469178686, 6681.22485339960],
[188.268, 1.28799982497, 10021.83728009940],
[41.474, 1.64850786997, 13362.44970679920],
[22.661, 2.05267665262, 155.42039943420],
[25.994, 0.00000000000, 0.00000000000],
[8.024, 1.99858757687, 16703.06213349900],
[10.454, 1.58006906385, 3.52311834900],
[4.900, 2.82452457966, 242.72860397400],
[3.782, 2.01914272515, 3344.13554504880],
[3.176, 4.59144897927, 3185.19202726560],
[3.134, 0.65044714325, 553.56940284240],
[1.684, 5.53835848782, 951.71840625060],
[1.511, 5.71795850828, 191.44826611160],
[1.448, 0.45869142895, 796.29800681640],
[1.442, 2.34368495577, 20043.67456019880],
[1.302, 5.36284013048, 0.98032106820],
[1.169, 4.14601161433, 1349.86740965880],
[1.133, 2.38180830662, 6684.74797174860],
[1.037, 1.76892750558, 382.89653222320],
[0.894, 5.33688328934, 1194.44701022460],
[0.807, 2.74798886181, 1748.01641306700],
[0.640, 6.10665147849, 3496.03282613400],
[0.558, 1.85212342360, 398.14900340820],
[0.567, 5.85922384979, 7.11354700080],
[0.647, 3.17645475605, 3583.34103067380],
[0.452, 5.98109989317, 2787.04302385740],
[0.508, 1.01139298015, 3149.16416058820],
[0.519, 4.93376176788, 6525.80445396540],
[0.405, 1.27295444059, 2281.23049651060],
[0.399, 2.32888685659, 3738.76143010800],
[0.472, 0.84411483892, 4136.91043351620],
[0.333, 5.42704539231, 1059.38193018920],
[0.313, 3.70599897858, 3097.88382272579],
[0.281, 5.74581724084, 3341.59274776800],
[0.287, 2.69304799864, 10025.36039844840],
[0.237, 5.68519881994, 4535.05943692440],
[0.215, 2.49494803822, 1990.74501704100],
[0.260, 2.67996877129, 23384.28698689860],
[0.269, 1.10390153866, 2388.89402044920],
[0.186, 4.86408411823, 2957.71589447660],
[0.176, 3.86618588087, 1592.59601363280],
[0.177, 0.85374318134, 3894.18182954220],
[0.191, 4.58805692093, 3337.08930835080],
[0.185, 5.80899316550, 4399.99435688900],
[0.143, 1.15592612974, 7477.52286021600],
[0.173, 2.70622920014, 7079.37385680780],
[0.146, 1.37569151302, 6489.77658728800],
[0.121, 3.24333934982, 9492.14631500480],
[0.116, 5.71639819530, 12303.06777661000],
[0.111, 2.69566947038, 6151.53388830500],
[0.103, 3.53587741373, 6923.95345737360],
[0.097, 5.23712981002, 8962.45534991020],
[0.089, 0.05951324220, 6127.65545055720],
[0.093, 5.29818155587, 9866.41688066520],
[0.084, 5.68544044325, 4292.33083295040],
[0.091, 6.16223680965, 6682.20517446780],
[0.081, 4.32723330620, 4933.20844033260],
[0.077, 5.63189824170, 1589.07289528380],
[0.102, 6.26937663026, 3347.72597370060],
[0.076, 3.05724276091, 13365.97282514820],
[0.063, 3.12770931753, 10419.98628350760],
[0.062, 1.45647168723, 7234.79425624200],
[0.069, 4.82266605869, 6677.70173505060],
[0.064, 1.73713448446, 3870.30339179440],
[0.058, 4.85723088492, 5486.77784317500],
[0.058, 6.09849516790, 7875.67186362420],
[0.063, 4.14716431158, 3340.59517304760],
[0.065, 6.17932665318, 3340.62968035200],
[0.057, 1.48905992502, 5729.50644714900],
[0.060, 6.08710604997, 7740.60678358880],
[0.056, 1.96253427165, 3553.91152213780],
[0.059, 0.89874385953, 3339.63210563160],
[0.053, 3.04776975379, 26724.89941359840],
[0.061, 3.63390789623, 12832.75874170460],
[0.059, 0.22989746040, 6681.24210705180],
[0.053, 3.97996929188, 5092.15195811580],
[0.059, 4.48255178273, 6681.20759974740],
[0.045, 3.88055745121, 10264.56588407340],
[0.058, 4.85371375265, 5621.84292321040],
[0.049, 4.03623343126, 16173.37116840440],
[0.061, 2.90942510134, 5331.35744374080],
[0.043, 1.80990718340, 9830.38901398780],
[0.044, 4.10828944542, 4690.47983635860],
[0.044, 3.49332765553, 13760.59871020740],
[0.048, 1.81207342615, 3723.50895892300],
[0.041, 1.59906754314, 10818.13528691580],
[0.041, 2.05797417369, 6681.29216370240],
[0.038, 3.38619280993, 16706.58525184800],
[0.041, 2.53336616026, 6681.15754309680],
[0.041, 1.79026132252, 3340.54511639700],
[0.050, 4.70324784090, 8273.82086703240],
[0.037, 3.37898394417, 30065.51184029820],
[0.039, 2.65566008587, 6894.52394883760],
[0.035, 2.58475025674, 9623.68827669120],
[0.037, 6.07442797404, 4929.68532198360],
[0.042, 3.04642561189, 12964.30070339100],
[0.037, 5.23784488646, 6298.32832117640],
[0.043, 6.17835198533, 15643.68020330980],
[0.034, 2.44806511268, 7210.91581849420],
[0.038, 0.26295105909, 10022.81760116760],
[0.028, 0.74281728305, 10021.85453375160],
[0.028, 4.99536302577, 10021.82002644720],
[0.034, 5.04118058624, 8969.56889691100],
[0.025, 2.59849002421, 8955.34180290940],
[0.030, 1.14354290938, 2146.16541647520],
[0.027, 0.26980783576, 18984.29263000960],
[0.025, 0.39810308575, 6688.33840040040],
[0.024, 5.64558695441, 13207.02930736500],
[0.027, 6.24398988438, 5088.62883976680],
[0.024, 0.25455613132, 11081.21921028860],
[0.023, 0.53673547304, 3333.49887969900],
[0.024, 1.80155161992, 6674.11130639880],
[0.029, 4.39953507920, 10018.31416175040],
[0.023, 2.91040060956, 10551.52824519400],
[0.022, 1.20895727897, 529.69096509460],
[0.026, 0.08254324904, 7632.94325965020],
[0.026, 1.81668969835, 6283.07584999140],
[0.021, 0.67232850824, 6836.64525283380],
[0.017, 5.19518401928, 2914.01423582380],
[0.017, 5.16488977775, 8031.09226305840],
[0.021, 3.62973082412, 5884.92684658320],
[0.018, 5.06870872024, 2544.31441988340],
[0.014, 2.50522181917, 7064.12138562280],
[0.017, 0.41835598950, 9468.26787725700],
[0.011, 2.21363101654, 6438.49624942560],
[0.013, 1.38424462832, 3340.67973700260],
[0.012, 3.28248484262, 8671.96987044060],
[0.014, 0.23027665815, 3767.21061757580],
],
# L4
[
[113.969, 3.14159265359, 0.00000000000],
[28.725, 5.63662412043, 6681.22485339960],
[24.447, 5.13868481454, 3340.61242669980],
[11.187, 6.03161074431, 10021.83728009940],
[3.190, 3.56267988299, 155.42039943420],
[3.252, 0.13228350651, 13362.44970679920],
[0.787, 0.49340783377, 16703.06213349900],
[0.776, 1.31734531594, 242.72860397400],
[0.494, 3.06356214498, 3185.19202726560],
[0.374, 2.15785846355, 553.56940284240],
[0.331, 6.23159792887, 3.52311834900],
[0.197, 0.44350153983, 3344.13554504880],
[0.181, 0.81531283571, 20043.67456019880],
[0.168, 3.73509781785, 3496.03282613400],
[0.086, 0.79259553758, 6684.74797174860],
[0.115, 1.66898531261, 3583.34103067380],
[0.092, 3.40530361815, 6525.80445396540],
[0.064, 4.47443580658, 2787.04302385740],
[0.045, 5.17216217058, 3097.88382272579],
[0.041, 1.21875027733, 23384.28698689860],
[0.036, 5.53975653407, 3149.16416058820],
[0.039, 5.40966345885, 4136.91043351620],
[0.028, 4.85378781404, 6127.65545055720],
[0.027, 0.42811091036, 3738.76143010800],
[0.032, 1.22337093927, 10025.36039844840],
[0.025, 1.56348878811, 26724.89941359840],
[0.029, 2.40178626971, 3894.18182954220],
[0.023, 4.16371253947, 3341.59274776800],
[0.022, 5.98429191667, 7477.52286021600],
[0.019, 2.03228980685, 6923.95345737360],
[0.020, 3.79275573433, 9866.41688066520],
[0.021, 4.27532111122, 6836.64525283380],
[0.015, 1.56315497374, 13365.97282514820],
[0.011, 1.33261955275, 2281.23049651060],
[0.009, 6.15390464542, 6489.77658728800],
[0.007, 4.23894194106, 4535.05943692440],
],
# L5
[
[0.710, 4.04089996521, 6681.22485339960],
[0.868, 3.14159265359, 0.00000000000],
[0.510, 4.49214901625, 10021.83728009940],
[0.357, 5.07435505061, 155.42039943420],
[0.223, 3.51351884241, 3340.61242669980],
[0.199, 4.85313666795, 13362.44970679920],
[0.100, 6.09089356066, 242.72860397400],
[0.069, 5.19017483537, 16703.06213349900],
[0.064, 1.55783055571, 3185.19202726560],
[0.035, 3.68246171643, 553.56940284240],
[0.025, 5.22079788019, 3496.03282613400],
[0.024, 0.17861991485, 3583.34103067380],
[0.019, 5.59184714460, 20043.67456019880],
[0.014, 5.95565787085, 23384.28698689860],
[0.012, 1.93859256739, 6525.80445396540],
],
]
"""This table contains Mars' periodic terms (all of them) from the planetary
theory VSOP87 for the heliocentric longitude at the equinox of date (taken from
the 'D' solution). In Meeus' book a shortened version can be found in pages
421-424."""
VSOP87_B = [
# B0
[
[3197134.986, 3.76832042432, 3340.61242669980],
[298033.234, 4.10616996243, 6681.22485339960],
[289104.742, 0.00000000000, 0.00000000000],
[31365.538, 4.44651052853, 10021.83728009940],
[3484.100, 4.78812547889, 13362.44970679920],
[442.999, 5.65233015876, 3337.08930835080],
[443.401, 5.02642620491, 3344.13554504880],
[399.109, 5.13056814700, 16703.06213349900],
[292.506, 3.79290644595, 2281.23049651060],
[181.982, 6.13648011704, 6151.53388830500],
[163.159, 4.26399626634, 529.69096509460],
[159.678, 2.23194610246, 1059.38193018920],
[139.323, 2.41796344238, 8962.45534991020],
[149.297, 2.16501209917, 5621.84292321040],
[142.686, 1.18215016110, 3340.59517304760],
[142.685, 3.21292180820, 3340.62968035200],
[82.544, 5.36667872319, 6684.74797174860],
[73.640, 5.09187524843, 398.14900340820],
[72.660, 5.53775710437, 6283.07584999140],
[86.377, 5.74429648412, 3738.76143010800],
[83.276, 5.98866315739, 6677.70173505060],
[60.116, 3.67960808826, 796.29800681640],
[63.111, 0.73049113369, 5884.92684658320],
[62.338, 4.85071999184, 2942.46342329160],
[46.951, 5.54339723804, 3340.54511639700],
[46.953, 5.13486627234, 3340.67973700260],
[46.630, 5.47361665459, 20043.67456019880],
[45.588, 2.13262507507, 2810.92146160520],
[41.269, 0.20003189001, 9492.14631500480],
[47.199, 4.52184736343, 3149.16416058820],
[38.540, 4.08008443274, 4136.91043351620],
[33.069, 4.06581918329, 1751.53953141600],
[29.694, 5.92218297386, 3532.06069281140],
[32.736, 2.62071056958, 2914.01423582380],
[29.521, 2.75342566734, 12303.06777661000],
[28.169, 2.06282533993, 5486.77784317500],
[28.618, 4.94710527914, 3870.30339179440],
[26.603, 3.55085844020, 6681.24210705180],
[26.603, 1.52008675291, 6681.20759974740],
[23.336, 2.27624532707, 1589.07289528380],
[26.052, 2.60064548916, 4399.99435688900],
[22.637, 2.27507466406, 1194.44701022460],
[18.887, 6.04416196149, 7079.37385680780],
[14.846, 3.41358603159, 5088.62883976680],
[19.947, 2.67365368471, 8432.76438481560],
[14.682, 5.89211938785, 9623.68827669120],
[14.152, 2.42512744356, 3333.49887969900],
[13.310, 2.62839773036, 426.59819087600],
[14.008, 1.67425558329, 6254.62666252360],
[15.104, 2.81013535571, 3496.03282613400],
[13.011, 5.70759434129, 10025.36039844840],
[12.080, 1.51804981987, 3185.19202726560],
[13.183, 0.04521207632, 10018.31416175040],
[11.554, 5.57418971820, 191.44826611160],
[11.196, 0.55829576311, 5092.15195811580],
[11.530, 2.13314819584, 11773.37681151540],
[10.435, 5.72414012635, 6467.92575796160],
[9.846, 0.86942245495, 1592.59601363280],
[9.761, 1.09342288660, 2544.31441988340],
[8.754, 5.47281660412, 6681.29216370240],
[8.937, 4.83790385610, 6489.77658728800],
[8.652, 4.72118876809, 213.29909543800],
[8.797, 2.86597575792, 3341.59274776800],
[8.384, 2.65895230037, 4535.05943692440],
[8.213, 4.82608134710, 3553.91152213780],
[8.799, 1.52910882795, 3339.63210563160],
[8.103, 1.00994045172, 9225.53927328300],
[8.754, 5.88131160438, 6681.15754309680],
[7.209, 4.41679446871, 7477.52286021600],
[8.560, 4.79003986337, 4690.47983635860],
[6.087, 1.89071507516, 9595.23908922340],
[6.974, 0.53246284561, 12832.75874170460],
[5.584, 6.18909308524, 4292.33083295040],
[5.038, 6.06393121994, 7210.91581849420],
[5.126, 0.11856805000, 4562.46099302120],
[4.863, 1.33051301524, 3894.18182954220],
[5.592, 3.97792577165, 3127.31333126180],
[4.965, 5.74589127183, 1990.74501704100],
[5.530, 5.81711987294, 23384.28698689860],
[4.184, 3.88899446923, 10021.85453375160],
[4.184, 1.85821885540, 10021.82002644720],
[4.685, 1.11750235736, 3319.83703120740],
[3.954, 2.65573703692, 4929.68532198360],
[5.174, 3.62343554596, 2700.71514038580],
[4.639, 6.14089337232, 7.11354700080],
[4.686, 3.27731664264, 3361.38782219220],
[4.999, 3.09121636067, 15643.68020330980],
[3.919, 2.96552252075, 7740.60678358880],
[3.361, 1.85016770821, 2957.71589447660],
[4.246, 4.19639278630, 2146.16541647520],
[4.101, 6.22532797325, 10213.28554621100],
[3.124, 0.08536218671, 10419.98628350760],
[3.079, 2.41163389513, 3344.20285535160],
[3.093, 1.98041729732, 3337.02199804800],
[3.044, 4.38894419912, 1221.84856632140],
[2.879, 2.93292197885, 2787.04302385740],
[3.372, 4.45558202843, 6674.11130639880],
[2.510, 4.06249795775, 6872.67311951120],
[2.616, 1.23659420897, 4933.20844033260],
[3.011, 4.33965766608, 2388.89402044920],
[3.094, 2.40385309455, 2118.76386037840],
[2.516, 2.30275910483, 3723.50895892300],
[2.192, 1.68877598700, 639.89728631400],
[2.157, 6.07600403318, 9808.53818466140],
[2.686, 2.38172448359, 15113.98923821520],
[2.156, 2.87771528495, 6041.32756708560],
[2.495, 3.87395320804, 7903.07341972100],
[2.253, 0.47469626036, 3475.67750673520],
[2.443, 3.02632351975, 3767.21061757580],
[1.937, 0.38000997629, 13358.92658845020],
[2.213, 3.91982326360, 3205.54734666440],
[2.385, 6.23883456815, 12964.30070339100],
[1.806, 2.38408432339, 11243.68584642080],
[2.265, 1.85773885180, 6525.80445396540],
[1.642, 1.86812936557, 6680.24453233140],
[1.616, 3.39954231101, 8429.24126646660],
[1.646, 0.73261192032, 2274.11694950980],
[1.910, 6.04319894051, 13365.97282514820],
[1.492, 2.99360929050, 7875.67186362420],
[1.567, 1.76860259924, 382.89653222320],
[1.459, 1.40571286543, 14584.29827312060],
[1.527, 5.79343536555, 6894.52394883760],
[1.409, 5.17099876287, 9830.38901398780],
[1.665, 3.60183854165, 2288.34404351140],
[1.616, 2.19447775480, 8827.39026987480],
[1.746, 0.10485504333, 3583.34103067380],
[1.637, 3.20410489018, 6682.20517446780],
[1.269, 2.02253791623, 155.42039943420],
[1.507, 5.80795976424, 1748.01641306700],
[1.296, 2.92899986522, 9381.93999378540],
[1.291, 2.98932404463, 6836.64525283380],
[1.377, 5.80980821450, 10021.90459040220],
[1.357, 0.32856318286, 4032.77002792660],
[1.377, 6.21830533138, 10021.76996979660],
[1.227, 2.20421067322, 12935.85151592320],
[1.080, 4.75502761725, 10818.13528691580],
[1.016, 1.33950348904, 12566.15169998280],
[1.083, 0.87622049125, 16173.37116840440],
[0.957, 5.29505019432, 1066.49547719000],
[1.035, 2.44286811558, 1052.26838318840],
[1.153, 4.73786864168, 8031.09226305840],
[1.042, 1.73541825729, 3369.06161416760],
[0.899, 1.87265511538, 3077.52850332700],
[0.892, 2.51347636401, 3603.69635007260],
[0.904, 0.27361540197, 3325.35995551480],
[0.883, 5.46537936740, 5614.72937620960],
[0.949, 0.04595688771, 7064.12138562280],
[0.872, 3.61205859852, 6702.00024889200],
[0.842, 5.61713543212, 8955.34180290940],
[0.842, 0.57536275896, 3191.04922956520],
[0.904, 4.11832249537, 3355.86489788480],
[1.044, 2.65889542110, 3312.16323923200],
[0.807, 2.26443259820, 8969.56889691100],
[1.046, 6.11317298058, 5331.35744374080],
[0.933, 0.82551054416, 3503.07906283200],
[0.946, 1.92368414869, 5628.95647021120],
[0.978, 4.55697167317, 3097.88382272579],
[0.846, 4.65096242323, 6438.49624942560],
[0.901, 1.46788821922, 6660.44945790720],
[0.739, 4.97716008834, 10014.72373309860],
[0.762, 3.42576079312, 18984.29263000960],
[0.934, 0.35014113954, 3264.34635542420],
[0.894, 0.34991139502, 10551.52824519400],
[0.665, 6.05561837558, 7632.94325965020],
[0.605, 4.68480399923, 5729.50644714900],
[0.593, 2.97207045977, 3178.14579056760],
[0.617, 2.19529512598, 13362.43245314700],
[0.579, 3.32303439858, 11081.21921028860],
[0.579, 2.31217959727, 6677.63442474780],
[0.572, 4.27984088783, 6546.15977336420],
[0.584, 4.51625727923, 1648.44675719740],
[0.626, 4.60715188203, 2487.41604494780],
[0.649, 2.17894376907, 6298.32832117640],
[0.617, 4.22635718375, 13362.46696045140],
[0.550, 3.11161314141, 6144.42034130420],
[0.551, 3.27081871281, 6127.65545055720],
[0.536, 0.18973312148, 3346.13535100720],
[0.557, 6.13686769377, 26724.89941359840],
[0.571, 5.65341463660, 2921.12778282460],
[0.552, 5.75724124958, 149.56319713460],
[0.638, 4.49647258906, 3.52311834900],
[0.552, 1.07795672495, 536.80451209540],
[0.537, 4.19207200801, 3335.08950239240],
[0.567, 2.62806466971, 2648.45482547300],
[0.641, 3.24534699403, 3347.72597370060],
[0.546, 2.76744357149, 5459.37628707820],
[0.556, 4.98610303145, 6531.66165626500],
[0.578, 2.74445077242, 6684.81528205140],
[0.613, 3.01718810256, 8270.29774868340],
[0.558, 5.89236366633, 6158.64743530580],
[0.489, 4.59082197201, 522.57741809380],
[0.445, 3.64293918046, 10713.99488132620],
[0.539, 0.59284523316, 553.56940284240],
[0.434, 1.99641894213, 26087.90314157420],
[0.459, 4.84216944554, 1758.65307841680],
[0.423, 3.77854586358, 6688.33840040040],
[0.421, 3.10245838137, 8329.67161059700],
[0.421, 4.43540354818, 103.09277421860],
[0.502, 3.03141512630, 3360.96774609859],
[0.422, 5.99158563064, 242.72860397400],
[0.401, 2.06012045711, 3980.50971301380],
[0.410, 5.85255605682, 3351.24909204960],
[0.375, 2.50803340920, 6784.31762761820],
[0.407, 0.30117328390, 16304.91313009080],
[0.507, 1.35016417800, 3320.25710730100],
[0.385, 1.06248122739, 7234.79425624200],
[0.519, 4.61705823333, 7373.38245462640],
[0.401, 0.51161484292, 17085.95866572220],
[0.371, 0.41707432281, 13760.59871020740],
[0.476, 0.81142637639, 6816.28993343500],
[0.348, 3.36497054127, 8439.87793181640],
[0.366, 6.05186692577, 3607.21946842160],
[0.402, 2.67375675473, 18454.60166491500],
[0.439, 0.41122589061, 10404.73381232260],
[0.412, 4.81039654306, 3329.97576135000],
[0.413, 0.21011211689, 13149.15061136120],
[0.363, 2.19017574725, 9866.41688066520],
[0.337, 5.46398740226, 6604.95878212400],
[0.340, 1.73392662280, 1692.16566950240],
[0.344, 3.58310197017, 7107.82304427560],
[0.420, 2.77274750272, 2906.90068882300],
[0.335, 2.02339633221, 3333.56619000180],
[0.336, 2.78173647754, 4989.05918389720],
[0.354, 5.41265456299, 951.71840625060],
[0.328, 0.43464916253, 6923.95345737360],
[0.422, 1.57591737080, 8273.82086703240],
[0.324, 4.99165215532, 11371.70468975820],
[0.351, 4.60766539695, 3074.00538497800],
[0.333, 4.86991808664, 3863.18984479360],
[0.319, 1.44510282827, 11769.85369316640],
[0.296, 5.25637576704, 76.26607127560],
[0.349, 1.62483962938, 17924.91069982040],
[0.293, 2.20643287367, 3347.65866339780],
[0.315, 4.55227306770, 5828.02847164760],
[0.280, 1.42134291540, 6606.44325483230],
[0.336, 1.56854533505, 1581.95934828300],
[0.343, 0.27605726543, 10973.55568635000],
[0.271, 0.08314924409, 10235.13637553740],
[0.280, 0.76436434398, 853.19638175200],
[0.317, 4.91466081381, 3443.70520091840],
[0.257, 0.15709629188, 12168.00269657460],
[0.237, 3.13380421805, 74.78159856730],
[0.271, 1.83008759256, 3399.98628861340],
[0.233, 3.20163702613, 10177.25767953360],
[0.312, 0.28436027987, 13745.34623902240],
[0.273, 4.53535816659, 3344.49376205780],
[0.235, 0.67980074869, 17395.21973472580],
[0.262, 3.84436620806, 9168.64089834740],
[0.271, 4.94509131052, 692.15760122680],
[0.254, 2.19491751584, 3281.23856478620],
[0.220, 1.65400798925, 3546.79797513700],
[0.283, 5.57884389098, 3973.39616601300],
[0.229, 5.93153003758, 3364.49086444760],
[0.223, 4.82744958322, 9779.10867612540],
[0.222, 0.71788606092, 16699.53901514999],
[0.219, 0.09831940529, 16706.58525184800],
[0.221, 1.66596576205, 10575.40668294180],
[0.259, 1.10208840059, 1744.42598441520],
[0.243, 1.52425310144, 14054.60730802600],
[0.273, 6.12932898811, 3336.73109134180],
[0.232, 4.73422268172, 3316.73398895200],
[0.210, 5.97305256642, 419.48464387520],
[0.213, 5.35378111313, 1596.18644228460],
[0.197, 3.32400761027, 5085.03841111500],
[0.193, 0.90522037315, 14314.16811304980],
[0.192, 2.63243342989, 433.71173787680],
[0.188, 1.14983778034, 13892.14067189380],
[0.200, 4.79567916236, 6261.74020952440],
[0.204, 2.32272167710, 13916.01910964160],
[0.191, 5.08454560792, 2178.13772229200],
[0.191, 5.88821293073, 3340.19235060619],
[0.236, 0.97341490472, 3230.40610548040],
[0.200, 3.60041329896, 3304.58456002240],
[0.165, 2.91701234796, 3415.39402526710],
[0.191, 4.77647338120, 3341.03250279340],
[0.174, 2.20549134205, 10020.85695903120],
[0.161, 2.64795288862, 3304.00706139560],
[0.173, 3.54115285115, 10022.81760116760],
[0.154, 2.45916882835, 12722.55242048520],
[0.160, 1.73968020026, 3377.21779200400],
[0.196, 0.78013533938, 3376.64029337720],
[0.153, 0.27328628499, 13362.38239649640],
[0.190, 2.65143864216, 3657.00429635640],
[0.172, 5.71092117488, 2384.32327072920],
[0.157, 1.00235389487, 3209.07046501340],
[0.150, 3.39592748537, 3472.15438838620],
[0.165, 5.86551673354, 2803.80791460440],
[0.154, 0.32136196834, 6665.97238221460],
[0.178, 3.34059693754, 11216.28429032400],
[0.192, 0.66079944629, 3134.42687826260],
[0.161, 2.87915391245, 4392.88080988820],
[0.159, 3.72249746113, 13517.87010623340],
[0.168, 0.55746622745, 110.20632121940],
[0.158, 5.67248197213, 4407.10790388980],
[0.161, 1.76789928464, 6709.67404086740],
[0.158, 5.50643845256, 13171.00144068760],
[0.129, 1.21297315367, 19513.98359510420],
[0.173, 0.17070148373, 3024.22055704320],
[0.132, 4.25407099272, 16858.48253293320],
[0.125, 2.88510294667, 17256.63153634140],
[0.124, 2.59724598646, 12310.18132361080],
[0.170, 4.05945259741, 2818.03500860600],
[0.121, 5.23997785185, 9872.27408296480],
[0.142, 3.02798835989, 3511.28529731900],
[0.165, 2.53171951288, 16276.46394262300],
[0.153, 6.14783670557, 13362.51701710200],
[0.119, 4.15694365082, 3760.09707057500],
[0.120, 0.64287725481, 4459.36821880260],
[0.130, 4.95002309460, 13553.89797291080],
[0.120, 0.17087854222, 8671.96987044060],
[0.112, 0.16822264326, 135.06508003540],
[0.137, 3.34809361979, 3341.04230982650],
[0.125, 1.32195559043, 1349.86740965880],
[0.111, 3.14151030451, 13524.91634293140],
[0.119, 5.95361348050, 12295.95422960920],
[0.131, 5.09769375731, 14158.74771361560],
[0.141, 1.37128440708, 3169.93955608060],
[0.112, 3.35831868034, 5989.06725217280],
[0.104, 5.00696041032, 13119.72110282519],
[0.110, 5.23317664736, 1375.77379984580],
[0.105, 2.72692368303, 1162.47470440780],
[0.104, 1.73769165705, 2221.85663459700],
[0.137, 1.04576950390, 3340.18254357310],
[0.106, 6.13415161313, 162.46663613220],
[0.119, 2.63312561442, 7321.12213971360],
[0.105, 3.09551802365, 20618.01935853360],
[0.099, 4.25515697974, 23539.70738633280],
[0.108, 1.01854506729, 3265.83082813250],
[0.119, 4.07277528003, 10184.30391623160],
[0.096, 1.81122023425, 10001.06188460700],
[0.093, 3.58905885066, 5099.26550511660],
[0.095, 4.94756054764, 3981.49003408200],
[0.094, 5.37493368020, 13355.33615979840],
[0.095, 0.13037485775, 15508.61512327440],
[0.103, 0.43484130196, 1861.74585263540],
[0.090, 3.76370412628, 22324.90505670940],
[0.091, 3.95041101283, 10042.61267559180],
[0.106, 4.30186500383, 640.87760738220],
[0.109, 6.18873749839, 1478.86657406440],
[0.088, 1.79608901332, 6247.51311552280],
[0.102, 5.58754073056, 2766.26762836500],
[0.110, 0.94707767481, 3274.12501778540],
[0.084, 4.45487801845, 6696.47732458460],
[0.085, 2.74791518135, 3407.09983561420],
[0.087, 4.51145821088, 220.41264243880],
[0.101, 5.94930983227, 8425.65083781480],
[0.082, 0.01837230371, 9499.25986200560],
[0.080, 0.42550989980, 18052.92954315780],
[0.083, 2.96589752213, 6652.77566593180],
[0.080, 4.61446168762, 3914.95722503460],
[0.079, 1.50228636499, 2111.65031337760],
[0.089, 3.52977975496, 9485.03276800400],
[0.086, 0.41976545794, 956.28915597060],
[0.088, 5.46013317934, 16460.33352952499],
[0.091, 2.09965252231, 949.17560896980],
[0.104, 1.72206104768, 3296.89351439480],
[0.103, 1.25691413032, 3384.33133900480],
[0.084, 5.78647729498, 5518.75014899180],
[0.079, 1.79313426804, 38.13303563780],
[0.073, 0.10667695992, 29822.78323632420],
[0.087, 2.11654357529, 3450.81874791920],
[0.072, 3.89476829327, 9380.95967271720],
[0.075, 2.59340305340, 1964.83862685400],
[0.098, 4.01577665825, 6843.69148953180],
[0.074, 5.32032289064, 11766.26326451460],
[0.068, 0.04775525953, 2125.87740737920],
[0.069, 6.07427052412, 26482.17080962440],
[0.069, 2.05018999200, 29424.63423291600],
[0.084, 0.16960920719, 263.08392337280],
[0.068, 5.03013252197, 9070.11887384880],
[0.076, 2.00296087293, 224.34479570190],
[0.078, 2.17362706851, 30220.93223973240],
[0.066, 3.85497672006, 19406.67828817460],
[0.066, 5.70059718737, 33561.54466643220],
[0.067, 0.16600936321, 22743.40937951640],
[0.065, 4.65423392949, 2807.39834325620],
[0.069, 3.34387224268, 11670.28403729680],
[0.087, 4.97838021880, 1118.75579210280],
[0.063, 0.18907106180, 30065.51184029820],
[0.064, 4.61909647015, 9886.77220006400],
[0.073, 0.93706647938, 20735.83216142559],
[0.060, 5.83757395809, 8646.06348025360],
[0.062, 4.81389895867, 20199.09495963300],
[0.059, 5.00150762621, 6414.61781167780],
[0.068, 3.84252763135, 6571.01853218020],
[0.062, 2.81689634717, 6944.30877677240],
[0.065, 4.49078808776, 632.78373931320],
[0.058, 5.64889513615, 9945.57120882380],
[0.070, 2.51605694403, 9638.94074787620],
[0.057, 3.28105791201, 206.18554843720],
[0.057, 2.97448265957, 21795.21409161479],
[0.056, 2.23565630779, 20995.39296644940],
[0.057, 1.88614831237, 18451.07854656599],
[0.071, 4.82445647307, 8542.97070603500],
[0.061, 3.65945073900, 14421.83163698840],
[0.056, 3.13789031275, 8799.98871377800],
[0.057, 4.89927831599, 9602.35263622420],
[0.065, 3.37109873211, 11610.91017538320],
[0.067, 1.92945007459, 21265.52312652020],
[0.055, 1.95164531764, 9588.12554222260],
[0.057, 2.82240075154, 10124.93005431800],
[0.057, 6.10407356832, 19800.94595622480],
[0.055, 5.20976473824, 3237.51965248120],
[0.057, 4.12235760406, 10028.95082710020],
[0.055, 1.41700952855, 15906.76412668260],
[0.053, 2.16328741039, 6418.14093002680],
[0.060, 2.64683840328, 10018.24685144760],
[0.068, 5.36539876845, 1228.96211332220],
[0.051, 5.73824213507, 6048.44111408640],
[0.053, 0.31937174553, 12721.57209941700],
[0.051, 0.06312524105, 20206.14119633100],
[0.049, 4.53401402385, 6675.70192909220],
[0.051, 1.15475560534, 10156.90236013480],
[0.064, 4.56332268770, 16703.07938715119],
[0.060, 3.61007443614, 9468.26787725700],
[0.059, 3.08413561767, 10025.42770875120],
[0.064, 2.53229538141, 16703.04487984680],
[0.056, 3.31988072467, 6518.75821726740],
[0.047, 1.44559165677, 6643.09181776180],
[0.050, 1.92342238827, 11614.43329373220],
[0.047, 4.03794177027, 23958.63178523340],
[0.046, 3.70927352724, 8859.36257569160],
[0.060, 2.55506470511, 11780.49035851620],
[0.047, 1.69256878711, 6660.86953400080],
[0.044, 6.09481217162, 6460.81221096080],
[0.044, 2.63040622140, 13936.79450513400],
[0.053, 0.77878945764, 16865.52876963120],
[0.049, 1.83368544550, 17654.78053974960],
[0.048, 0.52828042378, 6686.74777770700],
[0.042, 4.30347553493, 9065.54812412880],
[0.042, 5.71964550673, 7203.80227149340],
[0.041, 0.98427208931, 20426.57109242200],
[0.051, 3.54335413699, 20597.24396304120],
[0.041, 0.21219617682, 7314.00859271280],
[0.038, 2.53074981011, 13207.02930736500],
[0.039, 5.15577369902, 6670.58818804980],
[0.051, 3.25271478667, 7799.98064550240],
[0.049, 0.77060706107, 17101.21113690720],
[0.038, 6.06684699984, 9389.05354078620],
[0.043, 0.51983815091, 16489.76303806100],
[0.036, 0.84102576439, 23937.85638974100],
],
# B1
[
[350068.845, 5.36847836211, 3340.61242669980],
[14116.030, 3.14159265359, 0.00000000000],
[9670.755, 5.47877786506, 6681.22485339960],
[1471.918, 3.20205766795, 10021.83728009940],
[425.864, 3.40843812875, 13362.44970679920],
[102.039, 0.77617286189, 3337.08930835080],
[78.848, 3.71768293865, 16703.06213349900],
[26.171, 2.48293558065, 2281.23049651060],
[32.708, 3.45803723682, 5621.84292321040],
[20.712, 1.44120802297, 6151.53388830500],
[18.294, 6.03102943125, 529.69096509460],
[15.680, 3.93075566599, 8962.45534991020],
[16.975, 4.81115186866, 3344.13554504880],
[13.067, 0.97324736181, 6677.70173505060],
[15.622, 2.78241383265, 3340.59517304760],
[15.622, 4.81318636318, 3340.62968035200],
[13.771, 1.67983063909, 3532.06069281140],
[12.711, 4.04546734935, 20043.67456019880],
[14.268, 0.24640247719, 2942.46342329160],
[12.493, 2.25620513522, 5884.92684658320],
[8.800, 0.34079528233, 398.14900340820],
[8.637, 1.75213704409, 2544.31441988340],
[8.903, 5.95437916504, 2810.92146160520],
[8.102, 0.84279830287, 6283.07584999140],
[9.250, 4.35071778619, 3496.03282613400],
[8.085, 4.29614034209, 6684.74797174860],
[5.811, 3.55479498415, 5092.15195811580],
[5.864, 3.69652093329, 5486.77784317500],
[5.618, 0.03475872145, 3185.19202726560],
[5.148, 0.85886443528, 3340.54511639700],
[5.145, 0.45169791514, 3340.67973700260],
[4.898, 4.12922007874, 1059.38193018920],
[3.471, 5.07253485267, 5088.62883976680],
[3.102, 3.11487063736, 3339.63210563160],
[3.013, 1.00910437496, 2914.01423582380],
[3.171, 1.24730004776, 3738.76143010800],
[3.194, 2.86899092087, 1751.53953141600],
[2.304, 1.38460565999, 3870.30339179440],
[2.233, 2.91238180064, 3894.18182954220],
[2.792, 4.27117916474, 8432.76438481560],
[2.431, 0.14615904873, 4690.47983635860],
[2.577, 2.78651098185, 6254.62666252360],
[1.996, 1.51200589223, 4292.33083295040],
[1.860, 5.15222219319, 796.29800681640],
[2.014, 5.48528849094, 3127.31333126180],
[1.922, 4.37668623732, 23384.28698689860],
[2.248, 4.46756441051, 10025.36039844840],
[1.782, 2.70229954651, 4136.91043351620],
[1.621, 2.26742355334, 3149.16416058820],
[1.452, 1.53948251192, 9492.14631500480],
[1.373, 3.20232312108, 2146.16541647520],
[1.332, 5.67966837010, 1592.59601363280],
[1.378, 4.12087865376, 3723.50895892300],
[1.215, 0.33914405698, 6674.11130639880],
[1.168, 3.52407129935, 11773.37681151540],
[1.179, 6.15475441355, 213.29909543800],
[1.173, 1.26036608440, 3341.59274776800],
[1.211, 0.97241747335, 6467.92575796160],
[1.204, 0.95200561837, 10018.31416175040],
[1.107, 1.44142157852, 2787.04302385740],
[1.194, 0.84501638145, 1194.44701022460],
[1.043, 3.98123209815, 12303.06777661000],
[1.029, 1.21951732572, 4535.05943692440],
[0.939, 2.99716248257, 7477.52286021600],
[1.303, 1.12409937702, 4399.99435688900],
[1.032, 4.26592917807, 1990.74501704100],
[1.230, 0.37904885593, 6525.80445396540],
[0.989, 2.37220445455, 9225.53927328300],
[0.946, 3.14940196742, 6489.77658728800],
[1.013, 5.90131661122, 3097.88382272579],
[0.913, 2.86098924372, 2388.89402044920],
[0.954, 4.90448639106, 3583.34103067380],
[0.866, 4.92421595837, 6681.24210705180],
[0.797, 4.53307543814, 7079.37385680780],
[0.866, 2.89344915945, 6681.20759974740],
[0.659, 0.33901474348, 2957.71589447660],
[0.670, 3.23650405278, 9595.23908922340],
[0.782, 1.56739177814, 3333.49887969900],
[0.641, 4.46918721250, 6836.64525283380],
[0.611, 3.97393774087, 6041.32756708560],
[0.738, 3.78715624780, 4562.46099302120],
[0.558, 2.92718433901, 1589.07289528380],
[0.513, 0.96852780537, 9623.68827669120],
[0.508, 4.07262127921, 7.11354700080],
[0.512, 1.53960708348, 7740.60678358880],
[0.481, 3.51023225206, 155.42039943420],
[0.528, 6.06190721770, 4933.20844033260],
[0.558, 2.09491968451, 2288.34404351140],
[0.445, 3.42439886280, 6680.24453233140],
[0.482, 4.73460866232, 13365.97282514820],
[0.534, 4.88536251621, 3361.38782219220],
[0.520, 6.19100285186, 6438.49624942560],
[0.441, 1.82408206251, 3325.35995551480],
[0.487, 2.72879191049, 3319.83703120740],
[0.417, 4.48716253276, 7903.07341972100],
[0.430, 0.62845892205, 5614.72937620960],
[0.395, 4.89021898045, 10419.98628350760],
[0.380, 1.91138845097, 3553.91152213780],
[0.358, 4.21584518245, 426.59819087600],
[0.409, 4.53421956625, 3360.96774609859],
[0.426, 5.47172830908, 3205.54734666440],
[0.330, 1.00078638665, 8955.34180290940],
[0.322, 2.42607399606, 2274.11694950980],
[0.316, 3.22064089430, 1221.84856632140],
[0.312, 3.66073476074, 3337.02199804800],
[0.310, 4.09100416919, 3344.20285535160],
[0.295, 2.87635162282, 7210.91581849420],
[0.329, 5.64440592793, 12832.75874170460],
[0.306, 1.52567836482, 7875.67186362420],
[0.284, 0.56373187712, 6681.29216370240],
[0.358, 4.21258737082, 1052.26838318840],
[0.347, 1.52200237477, 10213.28554621100],
[0.268, 3.57749600251, 9830.38901398780],
[0.346, 1.65247014273, 6682.20517446780],
[0.269, 4.45182417080, 9381.93999378540],
[0.285, 0.97118840317, 6681.15754309680],
[0.256, 3.67744143301, 1066.49547719000],
[0.269, 1.78448639785, 6127.65545055720],
[0.312, 4.63751658715, 5331.35744374080],
[0.317, 6.15274242841, 3320.25710730100],
[0.245, 4.71030710599, 26724.89941359840],
[0.249, 3.31328995337, 10818.13528691580],
[0.240, 4.87364672707, 6144.42034130420],
[0.239, 1.35709001659, 7064.12138562280],
[0.237, 3.19837233399, 5729.50644714900],
[0.278, 1.50842060340, 4929.68532198360],
[0.274, 3.61160906396, 191.44826611160],
[0.248, 3.93789974497, 11243.68584642080],
[0.242, 2.57630671866, 3355.86489788480],
[0.241, 1.89683861728, 15643.68020330980],
[0.228, 0.71217112323, 9866.41688066520],
[0.246, 0.16913226579, 2700.71514038580],
[0.219, 0.03864812268, 522.57741809380],
[0.215, 3.44260776071, 8827.39026987480],
[0.206, 5.23615052385, 6923.95345737360],
[0.202, 0.60277862639, 10021.82002644720],
[0.226, 2.43332503270, 8429.24126646660],
[0.202, 2.63373646725, 10021.85453375160],
[0.199, 3.26545613445, 382.89653222320],
[0.198, 4.50685315424, 242.72860397400],
[0.215, 2.12744795327, 553.56940284240],
[0.177, 3.92599588022, 8031.09226305840],
[0.162, 3.94498519498, 2921.12778282460],
[0.199, 4.22948972595, 3312.16323923200],
[0.188, 0.67072289565, 6298.32832117640],
[0.160, 2.90951395323, 6872.67311951120],
[0.155, 1.24529852403, 3364.49086444760],
[0.186, 2.44723831367, 3503.07906283200],
[0.139, 5.75493557040, 7632.94325965020],
[0.149, 0.49665393273, 8969.56889691100],
[0.132, 4.97828413367, 1748.01641306700],
[0.130, 0.66881298338, 10014.72373309860],
[0.128, 2.80753554051, 14584.29827312060],
[0.176, 2.37291314099, 2118.76386037840],
[0.127, 1.76223414864, 11081.21921028860],
[0.127, 0.26234206855, 13358.92658845020],
[0.163, 5.83356697025, 639.89728631400],
[0.129, 2.02607662846, 3346.13535100720],
[0.155, 1.57189307640, 3767.21061757580],
[0.133, 4.20989922795, 11371.70468975820],
[0.114, 2.12636383988, 6688.33840040040],
[0.130, 1.33114943655, 3347.72597370060],
[0.110, 5.78893316282, 16173.37116840440],
[0.105, 3.27202438053, 15113.98923821520],
[0.117, 5.66812806862, 536.80451209540],
[0.106, 1.21268139587, 7234.79425624200],
[0.108, 0.94652521237, 9808.53818466140],
[0.121, 4.22204758443, 6158.64743530580],
[0.124, 4.92495255567, 12964.30070339100],
[0.142, 3.85764234922, 6894.52394883760],
[0.099, 5.62543167000, 10973.55568635000],
[0.100, 2.56456804207, 3178.14579056760],
[0.131, 0.08971075365, 8273.82086703240],
[0.112, 3.14240135508, 3316.73398895200],
[0.095, 0.64723185059, 2487.41604494780],
[0.087, 4.14322802003, 3603.69635007260],
[0.087, 3.50260474148, 3077.52850332700],
[0.096, 5.13010621713, 3304.58456002240],
[0.082, 4.87880877413, 5828.02847164760],
[0.083, 2.04400907684, 18984.29263000960],
[0.085, 3.33671991814, 1758.65307841680],
[0.099, 3.28955694324, 17654.78053974960],
[0.078, 0.89238228021, 2699.73481931760],
[0.095, 0.32948273562, 3863.18984479360],
[0.083, 0.80327899268, 5085.03841111500],
[0.091, 1.48623539837, 8270.29774868340],
[0.075, 4.91191036053, 10021.76996979660],
[0.079, 4.25171159471, 7373.38245462640],
[0.084, 2.16662156833, 12566.15169998280],
[0.088, 2.78893554858, 11769.85369316640],
[0.095, 0.29428946155, 5628.95647021120],
[0.076, 5.23354729169, 13760.59871020740],
[0.092, 1.40883592065, 3336.73109134180],
[0.069, 3.50477916910, 10713.99488132620],
[0.079, 0.61833410504, 951.71840625060],
[0.070, 1.93458925881, 3475.67750673520],
[0.066, 5.01996258363, 16706.58525184800],
[0.067, 3.68731475523, 4032.77002792660],
[0.071, 1.71691035008, 10575.40668294180],
[0.086, 1.82073461894, 10404.73381232260],
[0.064, 2.43149744819, 2648.45482547300],
[0.062, 0.25250107112, 3980.50971301380],
[0.062, 3.16420520010, 13517.87010623340],
[0.078, 1.41762772678, 3.52311834900],
[0.086, 3.34935714534, 1581.95934828300],
[0.064, 3.75812808116, 1596.18644228460],
[0.061, 1.37421861116, 419.48464387520],
[0.055, 1.11154560464, 433.71173787680],
[0.061, 5.33515994167, 853.19638175200],
[0.059, 0.80382380790, 13362.43245314700],
[0.055, 0.37478855406, 149.56319713460],
[0.053, 0.55329112916, 14314.16811304980],
[0.059, 0.07234691744, 6531.66165626500],
[0.059, 2.83458587563, 13362.46696045140],
[0.059, 4.13409540555, 4407.10790388980],
[0.057, 5.57913927474, 3376.64029337720],
[0.049, 4.58036235824, 10551.52824519400],
[0.050, 2.01769015785, 10022.81760116760],
[0.055, 1.36081433917, 21393.54196985760],
[0.048, 1.59939595487, 18052.92954315780],
[0.045, 4.97928157994, 8671.96987044060],
[0.044, 2.58542985685, 13916.01910964160],
[0.047, 1.40206686464, 8425.65083781480],
[0.043, 0.21864618144, 9779.10867612540],
[0.042, 6.22365857047, 3914.95722503460],
[0.048, 3.44104044998, 692.15760122680],
[0.043, 3.21191030055, 6247.51311552280],
[0.055, 4.01321481700, 10177.25767953360],
[0.053, 2.93285711320, 3981.49003408200],
[0.039, 5.54634215618, 6702.00024889200],
[0.041, 2.46188112193, 6660.44945790720],
[0.049, 3.04236065330, 640.87760738220],
[0.039, 1.62689158397, 3335.08950239240],
[0.038, 3.31198341709, 1744.42598441520],
[0.038, 6.16317067723, 2818.03500860600],
[0.038, 4.03534957207, 103.09277421860],
[0.044, 0.91040525278, 5459.37628707820],
[0.049, 1.88325571471, 11216.28429032400],
[0.046, 5.62762941168, 9168.64089834740],
[0.035, 1.65976191407, 12168.00269657460],
[0.047, 4.52334272666, 10021.90459040220],
[0.039, 2.08367076229, 13745.34623902240],
[0.039, 4.76186135572, 20597.24396304120],
[0.039, 3.00951950244, 3344.49376205780],
[0.037, 1.33065895739, 12295.95422960920],
[0.040, 3.96893429107, 13171.00144068760],
[0.032, 0.91212661789, 12310.18132361080],
[0.032, 2.22618836835, 7107.82304427560],
[0.032, 4.96078703650, 24734.15439655740],
[0.037, 3.30085609301, 20995.39296644940],
[0.033, 3.70858397913, 10020.85695903120],
[0.031, 4.18674524484, 17256.63153634140],
[0.034, 3.25657016622, 14054.60730802600],
[0.032, 5.75360661734, 6546.15977336420],
[0.031, 3.16209740784, 12935.85151592320],
[0.037, 2.14901622101, 6665.97238221460],
[0.030, 0.21926429217, 6660.86953400080],
[0.030, 3.55459460301, 9070.11887384880],
[0.029, 2.97927335664, 2766.26762836500],
[0.029, 4.65051930186, 10235.13637553740],
[0.030, 5.16882435400, 16304.91313009080],
[0.032, 5.01760544488, 3191.04922956520],
[0.029, 2.93988761068, 6696.47732458460],
[0.029, 5.06447742493, 5099.26550511660],
[0.029, 5.68073325802, 3329.97576135000],
[0.029, 0.43949269085, 3351.24909204960],
[0.032, 1.37056688814, 6040.34724601740],
[0.032, 1.42334455474, 76.26607127560],
[0.033, 0.36423446435, 6604.95878212400],
[0.033, 4.85478789063, 6701.58017279840],
[0.030, 3.33348460172, 3369.06161416760],
[0.028, 0.60182098585, 11766.26326451460],
[0.026, 1.05197848649, 13207.02930736500],
[0.026, 5.03535225585, 30065.51184029820],
[0.034, 3.65553061498, 14158.74771361560],
[0.025, 4.60925601393, 8329.67161059700],
[0.025, 2.05970140678, 17395.21973472580],
[0.030, 5.22285260441, 9485.03276800400],
[0.025, 4.84964369679, 1648.44675719740],
[0.026, 5.47626814223, 3074.00538497800],
[0.024, 2.45239543931, 17085.95866572220],
[0.029, 5.36428737888, 2707.82868738660],
[0.024, 5.57488544800, 10264.56588407340],
[0.025, 4.22744782935, 1692.16566950240],
[0.023, 6.09244870438, 20199.09495963300],
[0.028, 1.30366587075, 8439.87793181640],
[0.032, 2.13597148493, 9468.26787725700],
],
# B2
[
[16726.690, 0.60221392419, 3340.61242669980],
[4986.799, 3.14159265359, 0.00000000000],
[302.141, 5.55871276021, 6681.22485339960],
[25.767, 1.89662673499, 13362.44970679920],
[21.452, 0.91749968618, 10021.83728009940],
[11.820, 2.24240738700, 3337.08930835080],
[7.985, 2.24892866611, 16703.06213349900],
[2.960, 5.89425825808, 3496.03282613400],
[2.445, 5.18770525274, 5621.84292321040],
[1.428, 1.25238140580, 2281.23049651060],
[1.779, 2.58759968520, 20043.67456019880],
[1.501, 3.18533003542, 3532.06069281140],
[1.259, 4.80695172904, 3185.19202726560],
[1.029, 2.35029907056, 6677.70173505060],
[1.109, 3.80982317372, 5884.92684658320],
[0.928, 0.29719160927, 3344.13554504880],
[0.860, 3.11698318930, 6151.53388830500],
[0.853, 1.33003321402, 529.69096509460],
[0.883, 5.18681316017, 5486.77784317500],
[1.100, 1.82962075794, 2942.46342329160],
[0.815, 3.40910567373, 2544.31441988340],
[0.702, 5.49076132554, 8962.45534991020],
[0.644, 0.31400306761, 5088.62883976680],
[0.745, 4.30248377111, 3340.59517304760],
[0.586, 4.48071459693, 3894.18182954220],
[0.681, 5.40951261308, 2810.92146160520],
[0.745, 0.05006463495, 3340.62968035200],
[0.542, 4.68895461946, 3339.63210563160],
[0.497, 4.65665197749, 5092.15195811580],
[0.460, 1.06670343610, 3097.88382272579],
[0.423, 3.08034568777, 4292.33083295040],
[0.381, 2.24933115190, 6283.07584999140],
[0.429, 1.70668733378, 4690.47983635860],
[0.339, 2.92195933142, 23384.28698689860],
[0.310, 5.63324402105, 3723.50895892300],
[0.287, 1.98619629868, 398.14900340820],
[0.298, 2.58990636818, 6684.74797174860],
[0.323, 5.15230144390, 6525.80445396540],
[0.247, 2.36923535528, 3340.54511639700],
[0.247, 1.96071951597, 3340.67973700260],
[0.223, 4.75562842441, 2146.16541647520],
[0.240, 3.53331653789, 3583.34103067380],
[0.238, 4.69268478666, 6254.62666252360],
[0.198, 6.21548965568, 2787.04302385740],
[0.202, 4.25439775032, 3333.49887969900],
[0.158, 1.89216973387, 6674.11130639880],
[0.185, 2.99350590687, 10025.36039844840],
[0.177, 1.41002572971, 6438.49624942560],
[0.138, 1.23172102079, 3127.31333126180],
[0.153, 5.93528616595, 6836.64525283380],
[0.106, 5.35414400998, 3738.76143010800],
[0.102, 3.67040445208, 1059.38193018920],
[0.136, 1.06039656714, 2388.89402044920],
[0.093, 5.04434801864, 155.42039943420],
[0.093, 2.70817394910, 8955.34180290940],
[0.108, 6.13917250674, 1748.01641306700],
[0.116, 5.97739483530, 2914.01423582380],
[0.099, 1.50221319099, 1751.53953141600],
[0.092, 2.68470906437, 1990.74501704100],
[0.077, 4.01966292109, 1592.59601363280],
[0.076, 4.49660101731, 4562.46099302120],
[0.076, 5.67354102576, 6041.32756708560],
[0.078, 0.79220883728, 2288.34404351140],
[0.074, 5.84795427965, 3341.59274776800],
[0.080, 5.48556941416, 8432.76438481560],
[0.065, 2.11705931744, 10018.31416175040],
[0.066, 5.08073805943, 2957.71589447660],
[0.059, 3.79695096075, 6923.95345737360],
[0.061, 4.51116100631, 4933.20844033260],
[0.059, 0.27765984344, 6127.65545055720],
[0.052, 5.84885902302, 4535.05943692440],
[0.051, 1.45495904398, 7477.52286021600],
[0.054, 1.50278239577, 6489.77658728800],
[0.056, 5.23212313891, 9866.41688066520],
[0.057, 4.73711357046, 2274.11694950980],
[0.051, 2.48654805044, 6467.92575796160],
[0.047, 3.25899585469, 26724.89941359840],
[0.048, 1.12255878532, 1349.86740965880],
[0.048, 2.87122326236, 242.72860397400],
[0.045, 1.61358524585, 5729.50644714900],
[0.043, 2.24334731490, 7.11354700080],
[0.044, 4.61065704096, 11773.37681151540],
[0.042, 3.32038536161, 13365.97282514820],
[0.047, 5.10736479739, 8969.56889691100],
[0.044, 4.64194663616, 4399.99435688900],
[0.039, 5.45779680648, 8031.09226305840],
[0.044, 5.21409542420, 4136.91043351620],
[0.045, 4.26206063790, 796.29800681640],
[0.048, 3.04342098072, 5331.35744374080],
[0.042, 2.12882700518, 213.29909543800],
[0.038, 2.49365585516, 951.71840625060],
[0.037, 3.44816851943, 3325.35995551480],
[0.038, 3.13981385980, 3149.16416058820],
[0.039, 3.64984946180, 553.56940284240],
[0.036, 0.54858124109, 7632.94325965020],
[0.032, 4.29985057106, 3355.86489788480],
[0.037, 6.26349600634, 6682.20517446780],
[0.037, 3.83188032092, 3870.30339179440],
[0.031, 4.94959395405, 6680.24453233140],
[0.035, 6.14813219827, 3360.96774609859],
[0.029, 0.54115054572, 6681.29216370240],
[0.035, 1.49899662719, 3320.25710730100],
[0.033, 0.19183878029, 3347.72597370060],
[0.036, 3.28055425527, 1589.07289528380],
[0.031, 5.66015228291, 1066.49547719000],
[0.028, 4.18178455540, 7210.91581849420],
[0.025, 1.21627749818, 9492.14631500480],
[0.029, 2.02283118033, 7234.79425624200],
[0.024, 2.96777681837, 7064.12138562280],
[0.024, 2.16823248221, 10419.98628350760],
[0.022, 4.67496434823, 1194.44701022460],
[0.022, 5.01797528499, 9595.23908922340],
[0.028, 4.19843924702, 8429.24126646660],
[0.023, 6.21195010050, 7740.60678358880],
[0.025, 1.45100528915, 6872.67311951120],
[0.024, 1.93342510858, 2699.73481931760],
[0.028, 5.87009898150, 1052.26838318840],
[0.025, 2.49707182259, 2118.76386037840],
[0.020, 0.15682384975, 3205.54734666440],
[0.019, 3.82087005916, 12303.06777661000],
[0.020, 6.26534330674, 7875.67186362420],
[0.019, 0.99282533197, 522.57741809380],
[0.018, 4.11668144665, 426.59819087600],
[0.020, 3.28531167827, 9225.53927328300],
[0.019, 5.72169822815, 11371.70468975820],
[0.018, 4.76871968197, 382.89653222320],
[0.017, 0.96519535826, 191.44826611160],
[0.017, 0.86184324841, 10973.55568635000],
[0.018, 6.22706341047, 9381.93999378540],
[0.015, 0.54135050421, 640.87760738220],
],
# B3
[
[606.506, 1.98050633529, 3340.61242669980],
[42.611, 0.00000000000, 0.00000000000],
[13.652, 1.79588228800, 6681.22485339960],
[2.730, 3.45377082121, 10021.83728009940],
[0.929, 3.75226159072, 3337.08930835080],
[0.607, 0.10618486408, 13362.44970679920],
[0.617, 1.14471772765, 3496.03282613400],
[0.479, 0.70504966293, 16703.06213349900],
[0.185, 3.28778562029, 3185.19202726560],
[0.169, 0.29980532608, 5621.84292321040],
[0.158, 1.09025317222, 20043.67456019880],
[0.123, 2.55664973413, 3097.88382272579],
[0.126, 4.74517022983, 3532.06069281140],
[0.093, 6.03607685759, 3894.18182954220],
[0.099, 4.92257049901, 2544.31441988340],
[0.106, 3.41315845439, 2942.46342329160],
[0.062, 6.25738949900, 3339.63210563160],
[0.058, 4.64867983361, 4292.33083295040],
[0.050, 3.75358626972, 6677.70173505060],
[0.050, 1.89408668049, 5088.62883976680],
[0.058, 3.65295480755, 6525.80445396540],
[0.045, 0.38295906298, 5486.77784317500],
[0.052, 3.25535694335, 4690.47983635860],
[0.044, 1.89342588822, 3583.34103067380],
[0.037, 0.04871920725, 2146.16541647520],
[0.039, 0.91787211117, 3723.50895892300],
[0.051, 5.24063514394, 5884.92684658320],
[0.036, 2.79633276263, 529.69096509460],
[0.032, 1.44641701752, 23384.28698689860],
[0.024, 5.41362501363, 3340.59517304760],
[0.023, 4.70639896508, 2787.04302385740],
[0.021, 1.12581894224, 3340.62968035200],
[0.021, 0.51744721589, 8962.45534991020],
[0.018, 0.36433365806, 155.42039943420],
[0.018, 5.53170427847, 3333.49887969900],
[0.019, 4.34401282378, 6151.53388830500],
[0.021, 2.94765501590, 398.14900340820],
[0.020, 5.96181389299, 5092.15195811580],
[0.017, 0.80891817293, 1194.44701022460],
[0.011, 0.43817745316, 1059.38193018920],
[0.014, 1.06654064248, 6836.64525283380],
],
# B4
[
[11.334, 3.45724352586, 3340.61242669980],
[13.369, 0.00000000000, 0.00000000000],
[0.744, 0.50445805257, 6681.22485339960],
[0.148, 1.05056602649, 10021.83728009940],
[0.102, 2.66185835593, 3496.03282613400],
[0.053, 5.27888218929, 3337.08930835080],
[0.022, 4.09971603267, 3097.88382272579],
[0.023, 1.72422342130, 3185.19202726560],
[0.013, 5.41704779112, 16703.06213349900],
[0.013, 2.06957065662, 13362.44970679920],
[0.010, 0.95989595600, 3894.18182954220],
],
# B5
[
[0.457, 4.86794125358, 3340.61242669980],
[0.053, 5.30547050586, 6681.22485339960],
[0.012, 5.75114070583, 10021.83728009940],
[0.013, 4.17736925293, 3496.03282613400],
[0.007, 0.00000000000, 0.00000000000],
],
]
"""This table contains Mars' periodic terms (all of them) from the planetary
theory VSOP87 for the heliocentric latitude at the equinox of date (taken from
the 'D' solution). In Meeus' book a shortened version can be found in pages
424-425."""
VSOP87_R = [
# R0
[
[153033488.276, 0.00000000000, 0.00000000000],
[14184953.153, 3.47971283519, 3340.61242669980],
[660776.357, 3.81783442097, 6681.22485339960],
[46179.117, 4.15595316284, 10021.83728009940],
[8109.738, 5.55958460165, 2810.92146160520],
[7485.315, 1.77238998069, 5621.84292321040],
[5523.193, 1.36436318880, 2281.23049651060],
[3825.160, 4.49407182408, 13362.44970679920],
[2306.539, 0.09081742493, 2544.31441988340],
[1999.399, 5.36059605227, 3337.08930835080],
[2484.385, 4.92545577893, 2942.46342329160],
[1960.198, 4.74249386323, 3344.13554504880],
[1167.115, 2.11261501155, 5092.15195811580],
[1102.828, 5.00908264160, 398.14900340820],
[899.077, 4.40790433994, 529.69096509460],
[992.252, 5.83862401067, 6151.53388830500],
[807.348, 2.10216647104, 1059.38193018920],
[797.910, 3.44839026172, 796.29800681640],
[740.980, 1.49906336892, 2146.16541647520],
[692.340, 2.13378814785, 8962.45534991020],
[633.144, 0.89353285018, 3340.59517304760],
[725.583, 1.24516913473, 8432.76438481560],
[633.140, 2.92430448169, 3340.62968035200],
[574.352, 0.82896196337, 2914.01423582380],
[526.187, 5.38292276228, 3738.76143010800],
[629.976, 1.28738135858, 1751.53953141600],
[472.776, 5.19850457873, 3127.31333126180],
[348.095, 4.83219198908, 16703.06213349900],
[283.702, 2.90692294913, 3532.06069281140],
[279.552, 5.25749247548, 6283.07584999140],
[233.827, 5.10546492529, 5486.77784317500],
[219.428, 5.58340248784, 191.44826611160],
[269.891, 3.76394728622, 5884.92684658320],
[208.333, 5.25476080773, 3340.54511639700],
[275.224, 2.90818883832, 1748.01641306700],
[275.501, 1.21767967781, 6254.62666252360],
[239.133, 2.03669896238, 1194.44701022460],
[223.190, 4.19861593779, 3149.16416058820],
[182.686, 5.08062683355, 6684.74797174860],
[186.213, 5.69871555748, 6677.70173505060],
[175.995, 5.95341786369, 3870.30339179440],
[178.613, 4.18423025538, 3333.49887969900],
[208.336, 4.84626442122, 3340.67973700260],
[228.128, 3.25529020620, 6872.67311951120],
[144.286, 0.21296012258, 5088.62883976680],
[163.534, 3.79889068111, 4136.91043351620],
[133.120, 1.53910106710, 7903.07341972100],
[141.759, 2.47790321309, 4562.46099302120],
[114.941, 4.31745088059, 1349.86740965880],
[118.781, 2.12178071222, 1589.07289528380],
[102.096, 6.18138550087, 9492.14631500480],
[128.555, 5.49883294915, 8827.39026987480],
[111.538, 0.55339169625, 11243.68584642080],
[82.498, 1.62227044590, 11773.37681151540],
[83.212, 0.61553380568, 8429.24126646660],
[84.470, 0.62274593110, 1592.59601363280],
[86.659, 1.74988330093, 2700.71514038580],
[71.826, 2.47489899385, 12303.06777661000],
[85.312, 1.61621097912, 4690.47983635860],
[63.641, 2.67334126661, 426.59819087600],
[68.599, 2.40197828418, 4399.99435688900],
[58.559, 4.72052787516, 213.29909543800],
[62.015, 1.10065866221, 1221.84856632140],
[66.509, 2.21307705185, 6041.32756708560],
[55.811, 1.23288325946, 3185.19202726560],
[54.989, 5.72691385306, 951.71840625060],
[52.418, 3.02366828926, 4292.33083295040],
[55.686, 5.44686699242, 3723.50895892300],
[58.959, 3.26242666052, 6681.24210705180],
[44.629, 2.01473640390, 8031.09226305840],
[58.959, 1.23165502899, 6681.20759974740],
[42.444, 2.26551590902, 155.42039943420],
[38.956, 2.57760416009, 3341.59274776800],
[51.561, 5.72326937712, 7079.37385680780],
[48.939, 5.61614696751, 3553.91152213780],
[45.414, 5.43290921705, 6467.92575796160],
[36.435, 4.43921812388, 3894.18182954220],
[35.980, 1.15966567007, 2288.34404351140],
[35.265, 5.49029710802, 1990.74501704100],
[42.191, 1.63253742760, 5628.95647021120],
[44.292, 5.00341366850, 5614.72937620960],
[33.623, 5.17029029766, 20043.67456019880],
[43.256, 1.03732072925, 11769.85369316640],
[39.237, 1.24237122859, 3339.63210563160],
[31.943, 4.59258406791, 2274.11694950980],
[30.345, 2.44177670130, 11371.70468975820],
[32.259, 2.38215172582, 4535.05943692440],
[31.870, 4.37521442752, 3.52311834900],
[29.350, 4.06034813442, 3097.88382272579],
[31.972, 1.93970478412, 382.89653222320],
[26.166, 5.58466944895, 9623.68827669120],
[27.904, 4.25805969214, 3191.04922956520],
[33.065, 0.85467740581, 553.56940284240],
[27.543, 1.57668567401, 9595.23908922340],
[25.159, 0.81355213242, 10713.99488132620],
[22.070, 0.85747723964, 3319.83703120740],
[24.772, 5.38970742761, 2818.03500860600],
[23.359, 6.01453778225, 3496.03282613400],
[24.732, 2.58034797703, 2803.80791460440],
[19.365, 5.18528750472, 6681.29216370240],
[19.122, 5.41968559451, 10025.36039844840],
[19.364, 5.59378382138, 6681.15754309680],
[18.330, 5.79567324240, 7064.12138562280],
[18.193, 5.61307426173, 7.11354700080],
[20.392, 4.53637816869, 6489.77658728800],
[21.260, 6.19160142215, 14054.60730802600],
[17.094, 1.55004739305, 2957.71589447660],
[22.791, 3.41709388606, 7632.94325965020],
[20.585, 2.98697279083, 3361.38782219220],
[18.005, 2.81431094394, 4032.77002792660],
[17.049, 6.15528099726, 10404.73381232260],
[16.488, 3.84534700818, 10973.55568635000],
[16.052, 0.92823508003, 14584.29827312060],
[21.027, 2.38474290907, 4989.05918389720],
[16.267, 1.92321585819, 7373.38245462640],
[16.291, 6.28233085307, 7210.91581849420],
[18.585, 4.07325116588, 2388.89402044920],
[15.977, 4.58368417141, 3264.34635542420],
[19.913, 2.73518445950, 5099.26550511660],
[19.661, 1.86285979000, 3443.70520091840],
[16.500, 4.14061745086, 7477.52286021600],
[19.495, 6.03778234182, 10018.31416175040],
[15.104, 2.65433427561, 2787.04302385740],
[19.099, 0.22623441108, 13745.34623902240],
[17.163, 3.18825562972, 3347.72597370060],
[13.423, 2.12818658793, 3344.20285535160],
[15.410, 2.20773507960, 2118.76386037840],
[17.238, 3.67067776368, 3205.54734666440],
[13.113, 4.27490214998, 14314.16811304980],
[16.451, 2.86641622696, 14712.31711645800],
[13.734, 1.68629769646, 3337.02199804800],
[16.659, 4.52130808861, 6674.11130639880],
[11.830, 0.19684525299, 3475.67750673520],
[11.767, 3.22897247987, 5828.02847164760],
[11.886, 4.82057654742, 7234.79425624200],
[10.609, 1.73997337551, 639.89728631400],
[11.154, 0.23859830185, 12832.75874170460],
[11.030, 0.44541706440, 10213.28554621100],
[10.240, 5.74758340632, 242.72860397400],
[10.051, 2.45102946726, 4929.68532198360],
[10.061, 0.78907665448, 9381.93999378540],
[10.065, 5.37506605762, 5085.03841111500],
[11.902, 0.79897698904, 3265.83082813250],
[8.990, 0.96463418322, 4933.20844033260],
[8.970, 4.18326774405, 9225.53927328300],
[8.982, 1.98501418026, 15113.98923821520],
[8.324, 1.93694866513, 1648.44675719740],
[7.833, 2.04997447879, 1758.65307841680],
[7.957, 3.92331072722, 2921.12778282460],
[10.224, 2.66497189021, 2487.41604494780],
[8.277, 0.94860765546, 2906.90068882300],
[7.371, 0.84378341481, 692.15760122680],
[7.545, 5.68031160782, 13916.01910964160],
[7.912, 2.81294761885, 15643.68020330980],
[6.958, 3.32193127272, 3230.40610548040],
[7.426, 6.09656283295, 3583.34103067380],
[6.402, 4.19806996774, 5202.35827933520],
[6.529, 6.11929252710, 135.06508003540],
[6.130, 0.00117252232, 6836.64525283380],
[6.226, 6.10683955669, 17256.63153634140],
[8.193, 5.24811458833, 10575.40668294180],
[6.168, 3.60069207439, 10021.85453375160],
[6.169, 1.56992114335, 10021.82002644720],
[5.671, 0.13650306660, 13524.91634293140],
[6.257, 4.50450768937, 8425.65083781480],
[5.249, 2.70122358603, 4459.36821880260],
[6.479, 2.74267498287, 7740.60678358880],
[5.530, 6.06408145092, 10419.98628350760],
[5.536, 5.74996063243, 12168.00269657460],
[6.826, 4.69327545839, 17654.78053974960],
[5.005, 4.68382632238, 522.57741809380],
[6.328, 3.31896726895, 3767.21061757580],
[4.734, 0.00755678425, 3325.35995551480],
[5.032, 2.33696685608, 1052.26838318840],
[4.661, 5.15051711401, 1066.49547719000],
[4.724, 5.77956037309, 9808.53818466140],
[5.136, 1.57259709878, 6525.80445396540],
[4.522, 1.44218620352, 3369.06161416760],
[6.189, 4.58996159356, 6531.66165626500],
[6.205, 4.48164856516, 22747.29071487440],
[5.329, 4.55145599182, 1744.42598441520],
[4.511, 5.94511266539, 6894.52394883760],
[4.330, 3.10901365758, 4569.57454002200],
[5.366, 5.08043436437, 2707.82868738660],
[5.134, 1.28568358496, 8439.87793181640],
[4.127, 5.48538052912, 2699.73481931760],
[5.394, 5.21695066244, 5305.45105355380],
[4.449, 5.56764082611, 16865.52876963120],
[3.898, 1.48782434790, 9168.64089834740],
[3.863, 1.23050803930, 16858.48253293320],
[3.766, 0.27090392616, 17395.21973472580],
[4.683, 3.05668892586, 5518.75014899180],
[4.258, 2.79090145790, 3503.07906283200],
[3.864, 0.37957291785, 10177.25767953360],
[3.992, 1.84424768030, 3134.42687826260],
[3.643, 2.95318600206, 6144.42034130420],
[3.654, 1.58063207414, 6680.24453233140],
[3.931, 1.98436570971, 8969.56889691100],
[3.350, 2.72637081667, 7875.67186362420],
[3.623, 2.91544991631, 6682.20517446780],
[4.392, 0.81931997702, 3302.47939106200],
[4.062, 5.46935175827, 3120.19978426100],
[3.319, 1.77193665786, 3116.26763099790],
[3.510, 1.18027333874, 10184.30391623160],
[4.008, 1.33675167812, 6247.51311552280],
[3.603, 0.15469852619, 2178.13772229200],
[3.313, 3.12853663982, 17277.40693183380],
[4.138, 4.39568891039, 3074.00538497800],
[3.201, 3.36492925275, 2384.32327072920],
[3.991, 3.82867836910, 3355.86489788480],
[4.205, 1.90532279170, 263.08392337280],
[3.743, 4.25458024187, 6261.74020952440],
[3.111, 1.65445053349, 20199.09495963300],
[3.634, 5.55063049451, 632.78373931320],
[2.892, 1.91514920700, 12935.85151592320],
[3.373, 5.50812408522, 23384.28698689860],
[3.312, 5.83174680245, 5331.35744374080],
[3.124, 5.44069658195, 6048.44111408640],
[3.813, 0.80274487430, 13517.87010623340],
[3.612, 3.68140265686, 5724.93569742900],
[2.813, 1.68598843422, 2391.43681773000],
[2.902, 5.30666239739, 8955.34180290940],
[3.225, 2.29832592489, 3312.16323923200],
[3.863, 3.48188264725, 20618.01935853360],
[2.738, 5.49768261369, 149.56319713460],
[2.809, 4.76933217397, 1964.83862685400],
[2.711, 2.69244730345, 3178.14579056760],
[2.711, 2.38275660721, 2648.45482547300],
[2.743, 1.09492569851, 536.80451209540],
[2.821, 5.91845472246, 12964.30070339100],
[2.716, 6.10377796874, 3973.39616601300],
[2.487, 3.87703916286, 1861.74585263540],
[2.617, 2.65526535627, 8329.67161059700],
[2.938, 5.68402398615, 6158.64743530580],
[2.336, 3.24847913311, 4672.66731424060],
[2.318, 1.69214259672, 3914.95722503460],
[2.371, 4.75067664712, 103.09277421860],
[2.963, 0.23381699914, 20597.24396304120],
[2.190, 6.18344448099, 3346.13535100720],
[2.444, 1.92547995169, 7799.98064550240],
[2.121, 4.87491216115, 9830.38901398780],
[2.532, 5.39550087270, 3863.18984479360],
[2.101, 2.84309138388, 3415.39402526710],
[2.176, 0.58632570025, 162.46663613220],
[2.106, 3.06229353931, 19800.94595622480],
[2.347, 3.90795942709, 3335.08950239240],
[2.031, 5.52057907797, 10021.90459040220],
[1.997, 2.77243710569, 13936.79450513400],
[2.139, 5.40620646615, 266.60704172180],
[2.147, 0.08966987600, 13358.92658845020],
[1.996, 2.62541669265, 20.77539549240],
[1.961, 4.88521794174, 3237.51965248120],
[2.216, 1.06829128652, 3320.25710730100],
[2.131, 3.02112533027, 5625.36604155940],
[2.124, 3.68620121537, 5618.31980486140],
[1.938, 1.29006691721, 17924.91069982040],
[2.555, 4.91826220321, 6604.95878212400],
[2.561, 2.10055088914, 7910.18696672180],
[1.820, 5.57528712663, 3351.24909204960],
[1.786, 5.77310414452, 3607.21946842160],
[1.780, 4.48010071981, 10818.13528691580],
[2.106, 5.75526661975, 13365.97282514820],
[1.987, 2.61151965233, 3546.79797513700],
[1.799, 2.73192475257, 3360.96774609859],
[1.715, 1.50805385053, 1692.16566950240],
[1.752, 2.21455466761, 13119.72110282519],
[1.913, 3.32230688971, 6702.00024889200],
[1.724, 1.43449979531, 4885.96640967860],
[2.050, 1.19293239093, 6660.44945790720],
[1.774, 2.18404386388, 6784.31762761820],
[1.722, 4.86031154305, 10014.72373309860],
[1.773, 2.09448668554, 3603.69635007260],
[1.606, 3.48105136801, 23141.55838292460],
[1.621, 5.73820120882, 4555.34744602040],
[1.579, 1.88769198841, 6298.32832117640],
[1.530, 5.16381564230, 76.26607127560],
[1.615, 3.24110713658, 3657.00429635640],
[1.576, 3.52622401575, 6688.33840040040],
[2.034, 2.63620520451, 16460.33352952499],
[2.025, 5.92907541624, 10021.76996979660],
[1.689, 4.41053057494, 5729.50644714900],
[1.878, 4.53291044847, 3329.97576135000],
[1.530, 4.76331644411, 7895.95987272020],
[1.529, 1.35289110986, 1581.95934828300],
[1.807, 1.86212004697, 2693.60159338500],
[1.855, 2.38561742394, 6843.69148953180],
[1.518, 3.98476157750, 6546.15977336420],
[1.389, 1.82099537095, 9779.10867612540],
[1.447, 2.35649936427, 6034.21402008480],
[1.386, 5.55304113895, 4775.76008845920],
[1.372, 1.07224580315, 12722.55242048520],
[1.423, 4.46530428193, 574.34479833480],
[1.424, 2.57162391016, 3399.98628861340],
[1.380, 5.76156315252, 16335.83780453660],
[1.338, 2.97604558638, 6127.65545055720],
[1.479, 4.74310691166, 12566.15169998280],
[1.706, 0.30579918494, 10551.52824519400],
[1.281, 2.00285974432, 6677.63442474780],
[1.350, 0.78892333409, 853.19638175200],
[1.534, 4.33326399444, 640.87760738220],
[1.247, 1.02503908468, 3024.22055704320],
[1.289, 1.92786975543, 3347.65866339780],
[1.243, 2.44217806237, 6684.81528205140],
[1.453, 1.74218016403, 3333.56619000180],
[1.675, 1.79693456330, 1118.75579210280],
[1.491, 2.59386711806, 2494.52959194860],
[1.293, 3.31710472549, 3407.09983561420],
[1.188, 4.92989260576, 22743.40937951640],
[1.329, 1.99426530402, 1228.96211332220],
[1.373, 2.53354987340, 5459.37628707820],
[1.183, 4.25338096667, 3344.49376205780],
[1.231, 2.50206227837, 4356.27544458400],
[1.243, 2.65176267860, 74.78159856730],
[1.285, 4.34087881585, 3326.38533269820],
[1.119, 1.91321862491, 3281.23856478620],
[1.094, 5.50748655535, 3017.10701004240],
[1.259, 3.77654662830, 11236.57229942000],
[1.285, 1.38335267684, 3077.52850332700],
[1.100, 1.17130732373, 6606.44325483230],
[1.115, 5.81275569652, 2675.85638156980],
[1.380, 5.70641426169, 2807.39834325620],
[1.256, 3.35479933251, 4039.88357492740],
[1.187, 2.41348693872, 10596.18207843420],
[1.052, 3.33521939538, 3304.58456002240],
[1.188, 5.84735836632, 3336.73109134180],
[1.072, 2.78383184435, 8270.29774868340],
[1.105, 3.03463252672, 3929.67725370800],
[1.013, 3.52026711847, 8013.27974094040],
[1.079, 0.51857999039, 2814.44457995420],
[0.999, 4.72734008760, 533.21408344360],
[1.131, 0.52584038526, 6816.28993343500],
[1.191, 0.60874292520, 2301.58581590939],
[1.313, 2.07273299121, 23539.70738633280],
[0.996, 4.03971126547, 16062.18452611680],
[0.954, 5.90340414098, 20206.14119633100],
[0.993, 0.07132588892, 24150.08005134500],
[1.051, 2.22096534870, 3980.50971301380],
[1.089, 1.25512213569, 5938.23479286700],
[0.912, 2.54221161167, 433.71173787680],
[1.249, 0.60003625956, 16173.37116840440],
[1.027, 4.95999945094, 19676.45023123640],
[1.108, 4.34209448160, 3339.12795399150],
[1.188, 6.21563747433, 2679.37949991880],
[0.849, 0.82548606454, 2597.62236616720],
[1.145, 4.48151980872, 19402.79695281660],
[0.948, 1.30280088857, 8273.82086703240],
[1.016, 5.14464815830, 1596.18644228460],
[0.832, 5.60623652030, 3340.19235060619],
[1.035, 4.71893106874, 419.48464387520],
[0.903, 0.45419000582, 12995.22537783680],
[1.089, 0.51294377637, 11250.79939342160],
[0.840, 5.30858028008, 26084.02180621620],
[0.990, 2.06776368865, 7255.56965173440],
[0.808, 6.25630819993, 15508.61512327440],
[0.806, 3.09007612135, 5415.65737477320],
[0.782, 4.62274599734, 2547.83753823240],
[0.963, 2.10680539916, 6456.88005769770],
[0.778, 3.56602161857, 12721.57209941700],
[0.873, 5.09097164784, 2540.79130153440],
[0.772, 3.08101797047, 11081.21921028860],
[0.965, 2.33106703115, 18454.60166491500],
[0.859, 4.14788214122, 6438.49624942560],
[1.012, 4.45011664540, 3316.73398895200],
[0.906, 4.29336078401, 3344.54457996290],
[0.741, 2.61446403580, 2284.75361485960],
[0.790, 6.03436225041, 12509.25332504720],
[0.738, 0.52092422137, 18052.92954315780],
[0.737, 4.11165247543, 3760.09707057500],
[0.727, 3.28066632751, 3510.19260983280],
[1.006, 0.45037465289, 27490.69247804480],
[0.923, 2.78717931388, 1332.05488754080],
[0.756, 0.86881841787, 1545.35398297880],
[0.774, 3.71535541900, 6571.01853218020],
[0.900, 2.74944190055, 316.39186965660],
[0.704, 1.89617185328, 13362.43245314700],
[0.701, 2.21328293796, 20995.39296644940],
[0.701, 3.92689438700, 13362.46696045140],
[0.695, 5.52658147215, 3364.49086444760],
[0.764, 1.88253040972, 5732.04924442980],
[0.693, 0.34849213821, 5835.14201864840],
[0.698, 1.79132650081, 206.18554843720],
[0.687, 0.11649928911, 13760.59871020740],
[0.827, 0.49766945172, 3376.64029337720],
[0.686, 0.23965591265, 2409.24933984800],
[0.672, 0.51352450554, 25685.87280280800],
[0.699, 5.90167595080, 19004.64794940840],
[0.647, 3.01091875955, 5223.69391980220],
[0.643, 4.88507402785, 11766.26326451460],
[0.723, 3.28296530537, 4142.97634914600],
[0.660, 4.27334393830, 1214.73501932060],
[0.675, 0.48874492682, 5408.54382777240],
[0.809, 3.13310075522, 18984.29263000960],
[0.646, 3.63004914186, 7107.82304427560],
[0.831, 4.49449658957, 3341.03250279340],
[0.680, 0.16949964513, 110.20632121940],
[0.592, 6.03272224596, 20809.46762464520],
[0.627, 4.93438097728, 9872.27408296480],
[0.698, 1.45709305452, 3377.21779200400],
[0.583, 4.01887095237, 664.75604513000],
[0.591, 4.01381288194, 19406.67828817460],
[0.571, 1.20823284619, 5621.86017686260],
[0.680, 4.72905586557, 8116.37251515900],
[0.739, 3.19765996917, 9380.95967271720],
[0.571, 5.46064659057, 5621.82566955820],
[0.702, 0.14107083764, 6923.95345737360],
[0.598, 3.05986754375, 3341.04230982650],
[0.601, 2.17944973698, 7270.28968040780],
[0.572, 0.42001145821, 15110.46611986620],
[0.655, 1.08706089359, 3169.93955608060],
[0.582, 1.68224967199, 26087.90314157420],
[0.543, 2.42716241058, 170.67287061920],
[0.543, 1.68460678113, 11780.49035851620],
[0.533, 2.63982684952, 2277.70737816160],
[0.550, 2.54220679987, 7380.49600162720],
[0.576, 1.69042028754, 3384.33133900480],
[0.535, 5.01279223460, 1375.77379984580],
[0.579, 5.99182453047, 2149.68853482420],
[0.598, 0.75754342787, 3340.18254357310],
[0.575, 1.33793171924, 3296.89351439480],
[0.689, 0.02993986536, 22345.26037610820],
[0.526, 6.14212516186, 13149.15061136120],
[0.540, 5.54137118955, 8646.06348025360],
[0.528, 2.74183495775, 3826.58447948940],
[0.689, 6.28205551764, 12295.95422960920],
[0.499, 0.25665224668, 2142.64229812620],
[0.498, 5.91370528026, 6460.81221096080],
[0.588, 3.39977690249, 3329.56672643590],
[0.507, 0.63367870048, 20735.83216142559],
[0.590, 3.87951788923, 9065.54812412880],
[0.509, 2.59333214746, 3877.41693879520],
[0.486, 4.01113864377, 23937.85638974100],
[0.541, 1.55072392536, 2221.85663459700],
[0.482, 0.00200643783, 10235.13637553740],
[0.474, 4.14503805378, 3113.13629391080],
[0.523, 2.89171162726, 6040.34724601740],
[0.458, 4.08131432844, 1162.47470440780],
[0.493, 2.98933582802, 1039.02661079040],
[0.489, 4.88201647585, 5511.63660199100],
[0.537, 1.24870344441, 48835.19385644859],
[0.585, 5.53384919340, 4981.94563689640],
[0.462, 5.38999453893, 15664.03552270859],
[0.531, 1.22287288928, 10721.10842832700],
[0.440, 4.69966067585, 799.82112516540],
[0.588, 5.15076051189, 3873.82651014340],
[0.465, 5.49236978535, 3342.09689940810],
[0.545, 5.91813092143, 1478.86657406440],
[0.440, 2.28287871244, 12310.18132361080],
[0.436, 0.12478564862, 956.28915597060],
[0.573, 3.86388572602, 26482.17080962440],
[0.429, 1.20474317285, 28.44918746780],
[0.435, 3.75437730899, 5195.24473233440],
[0.457, 1.45606713663, 5636.07001721200],
[0.553, 5.30628175145, 2766.26762836500],
[0.494, 0.63303483918, 3274.12501778540],
[0.530, 3.18458612574, 8535.85715903420],
[0.535, 1.89165024367, 9866.41688066520],
[0.433, 0.33270291162, 6665.97238221460],
[0.404, 4.67939964590, 4825.54491639400],
[0.402, 3.25727658426, 5820.91492464680],
[0.415, 1.41915166067, 21947.11137270000],
[0.414, 3.32843373219, 8859.36257569160],
[0.403, 1.68400791606, 9588.12554222260],
[0.399, 0.93465630912, 2295.45759051220],
[0.402, 0.85364636108, 29026.48522950779],
[0.494, 4.57792960199, 8542.97070603500],
[0.413, 2.60545132222, 38.13303563780],
[0.413, 5.44081623497, 4407.10790388980],
[0.404, 5.33168348188, 3189.56475685690],
[0.385, 1.90313951519, 10020.85695903120],
[0.454, 1.18358809702, 10610.90210710760],
[0.381, 4.90212003667, 19146.75926614180],
[0.415, 3.07892141478, 11216.28429032400],
[0.378, 0.19461412344, 2067.93140107260],
[0.418, 1.14626975196, 6643.09181776180],
[0.426, 4.33863084563, 220.41264243880],
[0.412, 0.02314567339, 3192.53370227350],
[0.391, 4.75902617217, 6414.61781167780],
[0.399, 1.37708573980, 9654.61295113700],
[0.381, 2.74120772781, 1854.63230563460],
[0.378, 4.16366866018, 13553.89797291080],
[0.409, 3.12117409635, 3723.49170527080],
[0.379, 5.87578711682, 6357.71943674220],
[0.375, 3.29175394061, 31022.75317085620],
[0.358, 3.99134138048, 8958.93223156120],
[0.390, 2.01175211992, 1903.43681250120],
[0.373, 1.27018251531, 2111.65031337760],
[0.493, 4.66294641806, 1435.14766175940],
[0.379, 4.08720452061, 10706.88133432540],
[0.461, 1.90122301470, 25287.72379939980],
[0.364, 3.25231136840, 5095.67507646480],
[0.382, 2.18684874688, 16276.46394262300],
[0.359, 2.29096599931, 28628.33622609960],
[0.362, 4.15084528423, 6696.47732458460],
[0.374, 5.78780163439, 3490.17562383440],
[0.386, 4.73230339383, 3981.49003408200],
[0.344, 5.79156714790, 26880.31981303260],
[0.368, 3.44405073824, 15.25247118500],
[0.410, 1.76294940448, 6709.67404086740],
[0.339, 1.71242500987, 224.34479570190],
[0.373, 2.71286157688, 3472.15438838620],
[0.334, 1.10569460106, 59.37386191360],
[0.394, 4.02046774116, 2075.04494807340],
[0.402, 3.27520695853, 931.36308685180],
[0.318, 3.28892524780, 9485.03276800400],
[0.319, 4.05344391333, 3450.81874791920],
[0.341, 6.08567978892, 17085.95866572220],
[0.378, 0.71609301686, 3209.07046501340],
[0.326, 4.58257191106, 8982.81066930900],
[0.369, 6.17228742886, 8671.96987044060],
[0.308, 1.01924467785, 18606.49894600020],
[0.370, 2.84011243059, 4392.88080988820],
[0.303, 5.00239879717, 2810.93871525740],
[0.303, 2.97162741204, 2810.90420795300],
[0.419, 2.79830562400, 5106.37905211740],
[0.358, 1.15955325186, 4076.48894023160],
[0.360, 5.83226123310, 26724.89941359840],
[0.298, 5.57160706753, 3041.48603243060],
[0.298, 3.06970285022, 11670.28403729680],
[0.388, 5.01197738185, 12323.42309600880],
[0.336, 4.60208332758, 9602.35263622420],
[0.371, 2.23508025241, 4996.17273089800],
[0.300, 6.04069385215, 9499.25986200560],
[0.345, 1.74260482164, 5617.91076994730],
[0.302, 3.01127349940, 7483.58877584580],
[0.289, 0.39479288685, 2412.77245819700],
[0.289, 2.21430640344, 11140.59307220220],
[0.330, 5.81605457596, 4246.06912336460],
[0.394, 2.12229107240, 6475.03930496240],
[0.301, 5.26147877814, 9945.57120882380],
[0.338, 4.94717046909, 5625.77507647350],
[0.372, 5.46968662800, 3561.02506913860],
[0.279, 0.54063870001, 3226.21331978640],
[0.291, 5.21021494024, 13171.00144068760],
[0.384, 3.23921380878, 10022.81760116760],
[0.309, 3.17514941939, 14047.49376102520],
[0.273, 1.68203034215, 4253.18267036540],
[0.272, 0.11218647217, 7314.00859271280],
[0.281, 5.15132055967, 2825.14855560680],
[0.292, 3.33720586058, 9468.26787725700],
[0.316, 1.41719074976, 589.06482700820],
[0.264, 0.48845594730, 16699.53901514999],
[0.266, 1.69694779915, 647.01083331480],
[0.318, 2.47072726153, 8436.28750316460],
[0.260, 2.54459932529, 20.35531939880],
[0.275, 2.78608579994, 2970.91261075940],
[0.295, 5.96367554548, 4025.65648092580],
[0.268, 3.01034973031, 6518.75821726740],
[0.259, 5.20888482695, 7366.26890762560],
[0.298, 2.71010678192, 6652.77566593180],
[0.276, 0.78545108300, 3735.23831175900],
[0.305, 6.19137255377, 6677.34351804160],
[0.265, 3.25145629239, 24889.57479599160],
[0.260, 3.99612605351, 2171.02417529120],
[0.252, 4.14773813625, 5642.19824260920],
[0.254, 1.38470256851, 846.08283475120],
[0.258, 2.03261985834, 2089.78223039900],
[0.298, 3.81212222628, 28230.18722269139],
[0.241, 2.96550398155, 27682.14074415640],
[0.259, 4.79545870271, 6657.34641565180],
[0.238, 1.18977479528, 3171.03224356680],
[0.256, 1.01427800277, 568.82187402740],
[0.236, 5.56425829084, 14.22709400160],
[0.304, 3.81556245925, 1190.92389187560],
[0.237, 1.37222961867, 2277.29834324750],
[0.239, 2.47752611026, 5430.39465709880],
[0.234, 4.34929504798, 6675.70192909220],
[0.239, 0.14012746335, 3742.28454845700],
[0.286, 5.04045301355, 5607.61582920880],
[0.305, 4.59739079660, 6685.10618875760],
[0.254, 5.03693878366, 1905.46476494040],
[0.323, 1.67390215145, 4922.57177498280],
[0.232, 4.82565548677, 9070.11887384880],
[0.236, 2.40662610715, 3620.39893105220],
[0.260, 5.72282468723, 17468.85519794540],
[0.259, 6.15179402778, 16706.58525184800],
[0.263, 0.63922292958, 2008.55753915900],
[0.300, 3.78527265088, 34363.36559755600],
[0.226, 1.86970344963, 6418.14093002680],
[0.239, 0.04616997400, 13362.38239649640],
[0.241, 4.85896907298, 14158.74771361560],
[0.225, 1.70179250908, 18451.07854656599],
[0.288, 2.26316945288, 6621.85099148600],
[0.231, 2.19861265305, 3936.79080070880],
[0.251, 5.51232121883, 3416.87849797540],
[0.245, 3.30613942274, 1197.97012857360],
[0.253, 4.54308131689, 2285.16264977370],
[0.225, 5.50822507089, 4936.79886898440],
[0.249, 1.06089727346, 3313.21087060300],
[0.309, 6.21936675838, 16304.91313009080],
[0.244, 1.94855224181, 3.59042865180],
[0.287, 5.70461951656, 792.77488846740],
[0.254, 5.34446995416, 5401.43028077160],
[0.263, 1.49663212332, 6364.83298374300],
[0.223, 2.66825139116, 31968.94865279940],
[0.222, 2.48370132727, 5355.23588148860],
[0.220, 5.20799024654, 23017.06265793620],
[0.215, 2.72743996418, 6740.59871531320],
[0.218, 1.30797197521, 29822.78323632420],
[0.270, 0.90714939427, 6155.05700665400],
[0.216, 4.73975263349, 6679.74038069130],
[0.211, 3.72756562629, 10042.61267559180],
[0.211, 2.61999755641, 10124.93005431800],
[0.293, 6.07059383381, 14061.72085502680],
[0.219, 2.98472846458, 131.54196168640],
[0.210, 5.27496906319, 13355.33615979840],
[0.259, 1.25267305830, 2641.34127847220],
[0.208, 3.30241021109, 6850.80503653260],
[0.226, 5.48438086246, 7203.80227149340],
[0.243, 2.44748800604, 3311.18291816379],
[0.208, 1.13500579457, 5888.44996493220],
[0.251, 4.67012983729, 6666.99775939800],
[0.227, 1.59926413307, 10001.06188460700],
[0.264, 3.72622435628, 6747.71226231400],
[0.216, 0.34122804918, 6686.74777770700],
[0.260, 3.67749190896, 6645.19698672220],
[0.209, 4.31928920378, 3337.86091608880],
[0.218, 4.08068730999, 3378.74546233760],
[0.275, 1.64274205426, 2011.10033643980],
[0.204, 0.73237459784, 3.93215326310],
[0.219, 0.88584017263, 19513.98359510420],
[0.205, 2.60851826933, 2771.79055267240],
[0.215, 2.99299817517, 10824.20120254560],
[0.249, 0.99914444136, 5753.38488489680],
[0.225, 0.23309143434, 4782.87363546000],
[0.275, 0.86215660461, 8749.15625447220],
[0.201, 2.87118854159, 21548.96236929180],
[0.246, 3.34468800742, 3333.92876282570],
[0.203, 4.11410443276, 31570.79964939120],
[0.202, 4.96805650734, 8166.15734309380],
[0.232, 2.69372584349, 5989.06725217280],
[0.214, 4.83852070026, 6681.64492949320],
[0.258, 2.66551831451, 1062.90504853820],
[0.197, 0.55202541352, 735.87651353180],
[0.256, 2.76274941586, 2480.30249794700],
[0.216, 4.02506717011, 3133.91168940320],
[0.193, 1.52645682146, 949.17560896980],
[0.209, 0.67348618655, 13892.14067189380],
[0.220, 1.52502617699, 6660.86953400080],
[0.223, 1.09348882524, 6148.01076995600],
[0.192, 2.90571322264, 8799.98871377800],
[0.243, 3.36420301442, 8965.97846825920],
[0.206, 5.11175800472, 4140.43355186520],
[0.189, 1.06641624209, 9374.82644678460],
[0.240, 5.92078519032, 13362.51701710200],
[0.248, 5.79997873732, 15806.14683944200],
[0.193, 3.19008521814, 6756.00645196690],
[0.237, 4.11979030463, 22487.37169284160],
[0.218, 0.84212090761, 6717.25272007700],
[0.200, 2.43100846630, 10018.24685144760],
[0.199, 5.81238461796, 4289.78803566960],
[0.214, 5.95026024979, 6680.80477730600],
[0.192, 3.06285109033, 32765.24665961580],
[0.229, 1.68884404323, 11614.43329373220],
[0.185, 3.13072183492, 3253.30422216000],
[0.246, 2.58151525126, 1795.25844372100],
[0.187, 4.06797969837, 14577.18472611980],
[0.185, 0.96747889626, 2604.73591316800],
[0.184, 1.46731725339, 1437.17561419860],
[0.186, 2.55094700069, 3188.71514561460],
[0.211, 4.23522784526, 16703.07938715119],
[0.196, 2.80582160764, 2796.69436760360],
[0.198, 5.92372067560, 4133.38731516720],
[0.238, 2.30957041178, 1879.55837475340],
[0.224, 3.13550652378, 3613.28538405140],
[0.223, 1.81801741599, 3184.21170619740],
[0.199, 3.64983703995, 4271.97551355160],
[0.181, 2.71721121316, 4186.69526145100],
[0.184, 2.03051030984, 6674.17861670160],
[0.182, 1.54431442810, 9947.05568153210],
[0.179, 4.38762678121, 9886.77220006400],
[0.181, 1.80044971979, 6717.83021870380],
[0.190, 4.97714900529, 6670.58818804980],
[0.247, 5.77972128678, 29424.63423291600],
[0.194, 5.90745451439, 6705.10329114740],
[0.224, 5.61893896091, 227.47613278900],
[0.182, 2.77233344458, 6887.41040183680],
[0.224, 1.94094757956, 8226.57883637840],
[0.181, 4.61381081330, 3361.94806716680],
[0.203, 5.24659800837, 7586.68155006440],
[0.183, 5.23826533455, 6578.13207918100],
[0.207, 0.88292186428, 10156.90236013480],
[0.232, 0.75375986797, 3232.94890276120],
[0.179, 5.89794151802, 4452.25467180180],
[0.177, 6.16223629155, 3547.31316399640],
[0.177, 0.19292898030, 401.67212175720],
[0.173, 3.89814064100, 6019.99192661860],
[0.172, 2.42933586666, 6944.30877677240],
[0.201, 6.18392570315, 6947.83189512140],
[0.183, 5.82189570737, 8962.43809625800],
[0.189, 2.71231990816, 742.99006053260],
[0.172, 3.86810071059, 10028.95082710020],
[0.188, 5.22462530948, 2125.87740737920],
[0.196, 1.88388569900, 5032.77809620220],
[0.209, 5.78130707501, 3343.36393731080],
[0.167, 6.26758992296, 15849.86575174700],
[0.189, 2.38894304278, 3212.59358336240],
[0.208, 5.62485439431, 31172.65064598300],
[0.170, 1.07346401060, 20426.57109242200],
[0.183, 5.21160560654, 27832.03821928320],
[0.181, 2.19756653553, 16703.04487984680],
[0.214, 1.66101921272, 21265.52312652020],
[0.165, 2.10517924574, 6688.27109009760],
[0.172, 0.85495655009, 14591.41182012140],
[0.164, 1.68898542913, 3468.63127003720],
[0.183, 1.56948199057, 8962.47260356240],
[0.191, 5.54553650068, 2806.98930834210],
[0.162, 4.06699160265, 5209.47182633600],
[0.165, 3.44003333876, 14421.83163698840],
[0.163, 2.42152585351, 6314.00052443720],
[0.189, 0.57681608522, 2973.38809773740],
[0.169, 2.86190807726, 5490.30096152400],
[0.174, 1.69333072403, 1744.49329471800],
[0.224, 2.35886332922, 9638.94074787620],
[0.207, 3.13737248079, 3336.68027343670],
[0.221, 3.14807587279, 11610.91017538320],
[0.158, 5.87599422932, 4606.17990532620],
[0.166, 4.61834424167, 9175.75444534820],
[0.162, 5.40045489036, 23.87843774780],
[0.158, 5.57047764661, 4503.08713110760],
[0.156, 3.08339691033, 3448.27595063840],
[0.202, 2.56469307457, 7321.12213971360],
[0.164, 1.10347159072, 3710.31224264020],
[0.158, 3.65995745934, 6997.61672305620],
[0.169, 1.85985317117, 1329.51209026000],
[0.211, 1.66624816725, 3304.00706139560],
[0.206, 1.81572746145, 1596.11913198180],
[0.169, 0.46310427277, 17101.21113690720],
[0.159, 5.73384451559, 1265.56747862640],
[0.159, 0.92643196778, 4001.84535348080],
[0.189, 2.74163850920, 2910.49111747480],
[0.181, 5.48699984659, 3319.27678623280],
[0.156, 5.95462118470, 8584.66166590080],
[0.158, 3.38732507447, 8742.04270747140],
[0.171, 3.11406750626, 5621.91023351320],
[0.199, 2.86370198218, 10025.42770875120],
[0.173, 4.73384838991, 9389.05354078620],
[0.160, 3.06861532268, 1612.95133303160],
[0.203, 1.71629299113, 699.27114822760],
[0.198, 0.56267868345, 15265.88651930040],
[0.186, 2.44573687199, 2814.85361486830],
[0.167, 0.44417942260, 37895.42629036740],
[0.152, 5.08616610530, 3322.79990458180],
[0.162, 2.58982908935, 1883.08149310240],
[0.178, 4.58774508034, 6685.15700666270],
[0.191, 4.12771141768, 9911.63095888000],
[0.185, 4.32284898739, 323.50541665740],
[0.199, 1.83524172935, 3436.59165391760],
[0.199, 6.00292619279, 4427.39591298580],
[0.153, 3.46447669590, 22324.90505670940],
[0.171, 3.52256446633, 5621.77561290760],
[0.165, 3.32970937124, 1272.68102562720],
[0.149, 0.13370088791, 36.02786667740],
[0.149, 1.23280447264, 4193.80880845180],
[0.156, 0.13018524921, 11925.27409260060],
[0.146, 1.24102730441, 3372.58473251660],
[0.154, 5.63537863362, 3185.25933756840],
[0.197, 3.23364188440, 3774.32416457660],
[0.180, 3.47485722477, 8564.30634650200],
[0.185, 2.18248214016, 802.36392244620],
[0.145, 2.62035460481, 3368.01398279660],
[0.180, 6.01236697222, 6691.86151874940],
[0.148, 2.51710178830, 3262.86188271590],
[0.151, 4.17118896078, 16894.51039961060],
[0.185, 3.03939668350, 3354.83952070140],
[0.143, 3.37267915445, 3468.56395973440],
[0.160, 2.16705959730, 0.98032106820],
[0.190, 1.63240538938, 2324.94940881560],
[0.140, 1.27592043896, 6549.68289171320],
[0.186, 1.44849264278, 1015.66301788420],
[0.141, 4.19208049402, 5813.29118932200],
[0.153, 5.97405255778, 3568.08855948880],
[0.136, 0.45455359025, 3193.80074017620],
[0.188, 0.98977442882, 2538.24850425360],
[0.157, 3.32117477144, 3181.66890891660],
[0.164, 1.67705754742, 2751.54759969160],
[0.134, 5.26327877742, 13212.88650966460],
[0.184, 0.73082474043, 369.69981594040],
[0.145, 5.54086212771, 3152.68727893721],
[0.139, 3.30464120245, 6151.51663465280],
[0.132, 0.96753793729, 3487.42411322340],
[0.148, 1.55321724063, 7696.88787128380],
[0.140, 5.39000757800, 2945.98654164060],
[0.155, 4.35207037526, 4005.36847182980],
[0.142, 5.13441372991, 1641.33321019660],
[0.131, 2.48606821423, 1353.39052800780],
[0.131, 2.18754536881, 1765.76662541760],
[0.133, 3.01300582040, 3283.71405176420],
[0.177, 2.37558492362, 11346.77862063940],
[0.145, 0.79525636457, 2281.24775016280],
[0.133, 5.96263652624, 34513.26307268280],
[0.165, 1.32559153826, 6510.55198278040],
[0.132, 4.31118469609, 1971.95217385480],
[0.176, 3.17539133688, 6701.58017279840],
[0.140, 1.18723558164, 1461.05405194640],
[0.128, 6.07261046225, 3362.46325602620],
[0.139, 5.33541181199, 6151.55114195720],
[0.143, 1.04060603784, 3351.65812696370],
[0.138, 1.96009952022, 2014.62345478880],
[0.127, 2.12310260285, 2917.53735417280],
[0.142, 0.29094317859, 3212.66089366520],
[0.128, 0.49974456440, 10264.56588407340],
[0.125, 1.62548810323, 10191.41746323240],
[0.128, 3.55358985291, 3223.29255847960],
[0.140, 5.87379732521, 6382.09845913040],
[0.129, 2.90428606882, 6812.76681508600],
[0.127, 4.03101399507, 10448.43547097540],
[0.128, 3.23265469000, 4576.68808702280],
[0.124, 2.02283056331, 6724.94376570460],
[0.134, 0.19295362623, 3130.83644961080],
[0.145, 5.04767049759, 2281.21324285840],
[0.143, 4.45744983982, 7100.70949727480],
[0.133, 5.00404182123, 11883.58313273480],
[0.124, 0.73925895836, 1485.98012106520],
[0.123, 0.47283015475, 3347.29609057390],
[0.137, 5.73370922615, 5244.04923920100],
[0.152, 5.01464455460, 3358.42494881780],
[0.122, 1.37003015612, 3370.04193523580],
[0.143, 1.95740753086, 2921.68802779920],
[0.123, 3.94139290312, 4957.08687808040],
[0.130, 0.90844304292, 3427.92063123960],
[0.135, 3.56996218538, 3229.42578441220],
[0.143, 5.30225767870, 14128.24277124560],
[0.134, 2.47836558803, 7167.19690618920],
[0.150, 5.89116199733, 966.97087743560],
[0.123, 3.58787674774, 3318.76159737340],
[0.153, 0.37199746202, 6533.14612897330],
[0.145, 1.73326841661, 6637.50594109460],
[0.133, 3.27553306809, 11876.46958573400],
[0.119, 5.15087396729, 15636.56665630900],
[0.117, 3.70999224131, 3343.15522398060],
[0.115, 5.99541570797, 11986.67590695340],
[0.152, 5.66662339960, 6530.17718355670],
[0.123, 0.05231448642, 9801.42463766060],
[0.130, 1.42377926040, 16063.16484718500],
[0.120, 4.19579234337, 604.84974070480],
[0.126, 1.38788085609, 169.58018313300],
[0.122, 0.18785107006, 18849.22754997420],
[0.113, 4.67731144918, 24491.42579258340],
[0.122, 1.21803689218, 3067.93946934820],
[0.118, 3.92389195187, 2963.23881878400],
[0.137, 0.80076862963, 3123.79021291280],
[0.124, 0.77274469912, 12465.53441274220],
[0.132, 4.73888023892, 2267.00340250900],
[0.122, 3.66231014052, 8756.26980147300],
[0.113, 3.74955221887, 21393.54196985760],
[0.153, 5.00596002145, 15906.76412668260],
[0.109, 1.46394078440, 2854.64037391020],
[0.125, 6.00744459186, 1442.26120876020],
[0.140, 0.64532646558, 13532.02988993220],
[0.108, 2.11691804278, 43.71891230500],
[0.130, 1.43185911960, 3370.10424500320],
[0.133, 2.31239626151, 9072.66167112960],
[0.107, 5.68864833782, 4878.85286267780],
[0.116, 3.91262234002, 11904.91877320180],
[0.106, 1.99989592271, 3497.01314720220],
[0.106, 5.79020088316, 1.48447270830],
[0.105, 1.79751699456, 3517.30615683360],
[0.130, 0.80396347034, 3397.51080163540],
[0.107, 5.29449090921, 10.63666534980],
[0.137, 0.47037516401, 13575.74880223720],
[0.104, 5.03145022037, 1751.52227776380],
[0.146, 2.57659804831, 3308.64012088300],
[0.103, 3.29589452622, 4379.63903749020],
[0.104, 0.77903634693, 1751.55678506820],
[0.118, 4.11892224522, 10927.29397676420],
[0.106, 2.25714927822, 13207.02930736500],
[0.126, 1.10289326962, 6680.79497027290],
[0.105, 1.41449747957, 10081.21114201300],
[0.110, 6.16072219971, 3338.06962941900],
[0.113, 0.61947991056, 13421.82356871280],
[0.139, 2.21345603147, 1954.71715036360],
[0.102, 3.81767069895, 6670.17915313570],
[0.101, 3.44583422545, 1505.28780909299],
[0.105, 2.46134952447, 5525.86369599260],
[0.119, 5.64454862995, 8425.71814811760],
[0.101, 1.87446179141, 9161.52735134660],
[0.111, 5.46183253107, 7214.43893684320],
[0.123, 0.14056284625, 16489.76303806100],
[0.128, 0.00452525697, 2185.25126929280],
[0.106, 6.20225179330, 3717.98603461560],
[0.099, 1.70554147455, 1655.56030419820],
[0.100, 1.76373681853, 3002.36972771680],
[0.101, 0.55693458655, 3337.15661865360],
[0.101, 0.56441794685, 30774.50164257480],
[0.098, 1.93983799659, 5562.46906129680],
[0.130, 5.65255471249, 2735.76268599500],
[0.125, 6.18575288406, 9698.33186344200],
[0.100, 2.35767934317, 3337.07205469860],
[0.100, 3.76317527562, 3344.15279870100],
[0.105, 5.33897491215, 5096.08411137890],
[0.103, 1.24189801298, 1385.89527633620],
[0.101, 1.42727612221, 37455.72649597440],
[0.096, 2.55328478399, 4466.48176580340],
[0.097, 5.86779127410, 5220.17080145320],
[0.101, 2.61513508379, 16858.41522263039],
[0.107, 4.23943588615, 8823.86715152580],
[0.100, 4.38845221965, 3337.10656200300],
[0.100, 1.73240240188, 3344.11829139661],
[0.101, 3.51764169063, 4694.00295470760],
[0.096, 3.16895015703, 12825.64519470380],
[0.101, 6.24060604565, 2942.53073359440],
[0.103, 1.09500325425, 12089.76868117200],
[0.106, 5.57931664756, 39048.32250960720],
[0.126, 3.40521738550, 6681.65473652630],
[0.105, 2.52404371984, 1755.06264976500],
[0.115, 6.10031030713, 3145.64104223920],
[0.092, 5.06385191401, 5085.10572141780],
[0.097, 1.11670836674, 3341.79306935190],
[0.092, 5.83209800268, 6682.70932610790],
[0.121, 2.39411154886, 18208.34994259200],
[0.110, 2.51677822824, 1045.15483618760],
[0.091, 1.07173725022, 927.83996850280],
[0.096, 3.60155667418, 13363.43002786740],
[0.097, 5.34224904711, 7636.46637799920],
[0.094, 1.20811080231, 9495.66943335380],
[0.090, 4.17568982529, 0.06731030280],
[0.097, 3.20862890174, 5298.33750655300],
[0.092, 3.20029831258, 4403.51747523800],
[0.090, 3.79900428724, 685.04405422600],
[0.101, 2.12778329280, 10050.28646756720],
[0.098, 3.89390262307, 2373.64154926420],
[0.090, 4.49046504054, 6453.74872061060],
[0.096, 5.13129666936, 7792.86709850160],
[0.089, 4.51228904794, 10037.08975128440],
[0.098, 0.65689906709, 2810.98877190800],
[0.114, 4.15908543927, 9090.47419324760],
[0.094, 4.78960145866, 35707.71008290740],
[0.087, 6.26525215858, 34554.81386366760],
[0.087, 1.50181194995, 9983.70424446160],
[0.087, 1.43790822626, 9488.62319665580],
[0.090, 2.79573736864, 47477.56377607380],
[0.094, 5.68919291448, 6106.88005506480],
[0.087, 0.74049208991, 41990.78593289880],
[0.101, 0.99308133443, 6614.73744448520],
[0.115, 3.49732055752, 4.50343941720],
[0.086, 0.18628425275, 216.82221378700],
[0.099, 1.06539589813, 2810.85415130240],
[0.087, 3.02856210899, 7218.02936549500],
[0.085, 4.58476007089, 1699.27921650320],
[0.088, 4.47996444588, 21957.68072774700],
[0.106, 6.12011880730, 4819.47900076420],
[0.089, 3.88600719587, 12199.97500239140],
[0.097, 2.70091698598, 3339.43178404770],
[0.118, 1.02739527200, 34115.11406927460],
[0.101, 0.36591831115, 2942.39611298880],
[0.084, 5.66081869654, 1169.58825140860],
[0.086, 1.91214909013, 55516.41870984820],
[0.084, 4.30909434949, 4150.08989614680],
[0.094, 1.36645151323, 9093.99731159660],
[0.097, 2.26544245706, 13361.46938573100],
[0.099, 1.16054562056, 128.01884333740],
[0.094, 1.10573952457, 4591.44262300060],
[0.092, 0.74386387542, 4845.90023579280],
[0.101, 1.51570299040, 7807.09419250320],
[0.096, 1.02187746571, 2899.78714182220],
[0.086, 0.66787658068, 2957.73314812880],
[0.087, 3.49676189640, 4061.75165790600],
[0.095, 3.35452781355, 661.23292678100],
[0.087, 0.04840436087, 23546.75362303080],
[0.114, 2.83270741566, 394.62588505920],
[0.081, 3.44420073782, 148.07872442630],
[0.081, 1.27062968985, 4893.07995667940],
[0.083, 5.48462687348, 4349.16189758320],
[0.105, 3.47842036130, 3413.90955255880],
[0.084, 4.33209852801, 51449.32426327820],
[0.093, 1.59775582035, 5088.21980485270],
[0.088, 3.29950478012, 2655.50106217100],
[0.081, 1.65543714666, 78263.70942472259],
[0.086, 1.19342535692, 4029.24690957760],
[0.079, 4.41964678009, 151.04766984290],
[0.084, 1.96289182788, 14867.73751589219],
[0.091, 5.76229906142, 2544.33167353560],
[0.086, 3.78659802914, 1481.40937134520],
[0.082, 2.85633413428, 14164.81362924540],
[0.078, 4.29426812598, 187.92514776260],
[0.078, 5.38566529072, 2655.56837247380],
[0.084, 2.15121245434, 3311.12060839640],
[0.078, 2.01651247942, 9124.92198604240],
[0.083, 4.28280129037, 74923.09699802278],
[0.077, 1.45903147715, 2544.38173018620],
[0.081, 3.62204400197, 12306.59089495900],
[0.100, 1.33498371324, 9278.84721956680],
[0.089, 2.62080312892, 24341.52831745660],
[0.098, 3.78877505378, 3198.43379966360],
[0.081, 4.34306418828, 10177.19036923080],
[0.080, 5.80054348103, 2751.01515718000],
[0.092, 2.80228448795, 3707.83675566220],
[0.082, 2.45812896240, 9815.65173166220],
[0.076, 3.03616461584, 9993.38809263160],
[0.076, 3.92674885488, 2910.08208256070],
[0.076, 3.20004040720, 7733.49323658800],
[0.098, 3.28574616663, 3289.33208883739],
[0.077, 2.05948930010, 12928.73796892240],
[0.075, 0.85784191736, 28638.90558114660],
[0.078, 0.29690749181, 10654.62101941260],
[0.101, 0.72388999452, 48827.43118573260],
[0.085, 5.19438010130, 2146.14816282300],
[0.083, 4.42475849926, 2060.81785407180],
[0.075, 5.19097428778, 1055.44977692610],
[0.096, 6.24132708357, 11.04570026390],
[0.074, 3.37882325472, 8006.16619393960],
[0.101, 0.95332927487, 8186.51266249260],
[0.092, 0.96173005100, 151.89728108520],
[0.074, 2.22716630210, 272.67295735160],
[0.092, 5.56705883046, 27873.58901026800],
[0.091, 3.73152787182, 2544.29716623120],
[0.084, 0.41493230617, 4296.90158267040],
[0.074, 5.09669613096, 9755.23023837760],
[0.078, 1.79565224435, 3564.95722240170],
[0.075, 4.58345774133, 9153.90361602180],
[0.074, 3.88658218247, 25298.29315444680],
[0.085, 5.31472029744, 4716.38622654560],
[0.074, 1.46907693289, 11527.12508919240],
[0.101, 2.94847804254, 12032.93761653920],
[0.072, 0.24413748615, 1324.94134054000],
[0.078, 0.17721609024, 3391.89276456221],
[0.073, 1.65072742864, 5452.26274007740],
[0.073, 4.91730083470, 10787.63034454580],
[0.073, 3.28285909319, 8830.91338822380],
[0.081, 5.46340742050, 3856.07629779280],
[0.073, 4.61913155968, 3288.35211178700],
[0.096, 5.71767221046, 206.70073729660],
[0.080, 4.47918417138, 12299.54465826100],
[0.071, 4.98130328330, 12942.96506292400],
[0.073, 2.86057567032, 4960.60999642940],
[0.072, 5.14120362338, 4665.55376723980],
[0.076, 0.00928867041, 6534.41316687600],
[0.090, 5.38224594245, 2125.81009707640],
[0.085, 0.94196641948, 2146.18267012740],
[0.096, 0.68069708134, 10006.58480891440],
[0.073, 1.06048379839, 3866.78027344540],
[0.072, 0.84342376295, 3334.54651107000],
[0.091, 5.12701600437, 3392.87274161260],
[0.076, 5.96038992872, 3482.79105373600],
[0.090, 1.46230169383, 5092.16921176800],
[0.071, 1.16745785331, 1574.84580128220],
[0.072, 3.86137692169, 16762.43599541260],
[0.070, 0.07310763691, 12839.87228870540],
[0.073, 0.11725123446, 10507.80933288900],
[0.081, 5.86817748181, 3495.96551583120],
[0.071, 2.07963275673, 1063.31408345230],
[0.068, 3.30993028662, 4106.40549114620],
[0.069, 0.33467954461, 5.52292430740],
[0.068, 1.56404561711, 2398.55036473080],
[0.090, 2.61953849393, 3346.67834232960],
[0.068, 1.06108185791, 191.38095580880],
[0.077, 0.87794040199, 2917.94638908690],
[0.067, 0.29712068423, 12012.58229714040],
[0.067, 2.55451787747, 11567.19126307820],
[0.083, 1.82578570364, 3511.28529731900],
[0.068, 2.68247854175, 20213.25474333179],
[0.086, 2.79273636804, 367.22432896240],
[0.086, 0.81171860574, 209.77597708900],
[0.067, 5.28035928877, 8966.38750317330],
[0.067, 0.20258020424, 27433.88921587499],
[0.071, 2.76410148218, 15650.79375031060],
[0.090, 0.71593793107, 3451.79906898740],
[0.067, 6.18148420146, 3966.28261901220],
[0.074, 3.61959120765, 7064.10413197060],
[0.068, 2.69550405031, 12725.45343477500],
[0.074, 1.24854309783, 8027.56914470940],
[0.084, 2.47006028699, 3738.74417645580],
[0.077, 5.89874180572, 4307.58330413540],
[0.067, 0.33285041428, 19645.52555679060],
[0.083, 3.79134493696, 2472.67876262220],
[0.064, 0.43216125634, 1994.26813539000],
[0.071, 0.65707804543, 860.30992875280],
[0.064, 0.98960038205, 3376.17516116840],
[0.070, 0.96227192685, 8428.83223155250],
[0.066, 0.65425879867, 8219.46528937760],
[0.070, 4.36060455306, 8436.69653807870],
[0.084, 4.50083253887, 3738.77868376020],
[0.073, 5.69670871544, 14687.39104733920],
[0.071, 0.36334330253, 2619.47319549360],
[0.080, 5.85771861744, 7747.72033058960],
[0.068, 3.06409889136, 8446.99147881720],
[0.066, 1.07137364271, 1987.22189869200],
[0.061, 3.71171429905, 1055.85881184020],
[0.079, 0.06487001849, 6286.59896834040],
[0.075, 1.54177744365, 1059.39918384140],
[0.061, 1.47350010728, 1685.05212250160],
[0.061, 0.46897959303, 1727.66109366820],
[0.064, 2.11869877898, 3305.04969223120],
[0.060, 1.17940250396, 97670.38771289718],
[0.060, 5.13953821352, 1898.33396428740],
[0.064, 4.04058406722, 3945.46216740460],
[0.063, 5.20562384814, 24606.13555322000],
[0.061, 0.55428968913, 7082.89697515680],
[0.075, 4.81208819076, 27299.24421193320],
[0.059, 1.75511446129, 12082.65513417120],
[0.061, 5.88333855610, 6901.63749583840],
[0.074, 3.46408580786, 14556.89671702380],
[0.074, 4.40649822049, 9360.60435331840],
[0.058, 4.22827613192, 4531.53631857540],
[0.080, 2.14103357856, 7917.30051372260],
[0.075, 1.85618011420, 52566.19261584059],
[0.075, 5.15830659680, 45884.96776244100],
[0.068, 2.06915254754, 8958.52319664710],
[0.056, 3.77847713307, 299.12639426920],
[0.062, 2.25564130818, 9758.75335672660],
[0.059, 2.68657637673, 6283.05859633920],
[0.056, 5.54148283448, 13286.18363552360],
[0.056, 3.89200811600, 8962.38803960740],
[0.063, 2.07254352069, 7593.79509706520],
[0.061, 4.31994402891, 4709.27267954480],
[0.075, 5.79419108898, 1059.36467653700],
[0.056, 0.18569912415, 7768.00833968560],
[0.059, 5.49627068572, 7322.10246078180],
[0.064, 3.95992112220, 3050.12694723020],
[0.055, 2.19506741266, 7.04623669800],
[0.057, 4.05252695300, 3930.20969621960],
[0.075, 3.99788100837, 5483.25472482600],
[0.060, 4.61703903739, 6990.50317605540],
[0.073, 4.20362525534, 21150.81336588360],
[0.066, 2.82009591985, 8771.00708379860],
[0.054, 0.38782719267, 360.11078196160],
[0.059, 4.71734799803, 6283.09310364360],
[0.068, 5.74655335863, 987.74627292800],
],
# R1
[
[1107433.340, 2.03250524950, 3340.61242669980],
[103175.886, 2.37071845682, 6681.22485339960],
[12877.200, 0.00000000000, 0.00000000000],
[10815.880, 2.70888093803, 10021.83728009940],
[1194.550, 3.04702182503, 13362.44970679920],
[438.579, 2.88835072628, 2281.23049651060],
[395.698, 3.42324611291, 3344.13554504880],
[182.572, 1.58428644001, 2544.31441988340],
[135.850, 3.38507017993, 16703.06213349900],
[128.204, 0.62991220570, 1059.38193018920],
[127.068, 1.95389775740, 796.29800681640],
[118.443, 2.99761345074, 2146.16541647520],
[128.362, 6.04343360441, 3337.08930835080],
[87.537, 3.42052758979, 398.14900340820],
[83.026, 3.85574986653, 3738.76143010800],
[75.598, 4.45101839349, 6151.53388830500],
[71.999, 2.76442180680, 529.69096509460],
[66.542, 2.54892602695, 1751.53953141600],
[54.314, 0.67750943459, 8962.45534991020],
[51.035, 3.72585409207, 6684.74797174860],
[66.430, 4.40597549957, 1748.01641306700],
[47.863, 2.28527896843, 2914.01423582380],
[49.428, 5.72959428364, 3340.59517304760],
[49.424, 1.47717922226, 3340.62968035200],
[57.518, 0.54354327916, 1194.44701022460],
[48.318, 2.58061691301, 3149.16416058820],
[36.384, 6.02728752344, 3185.19202726560],
[37.176, 5.81439911546, 1349.86740965880],
[36.036, 5.89508336048, 3333.49887969900],
[31.115, 0.97832506960, 191.44826611160],
[38.953, 2.31900090554, 4136.91043351620],
[27.244, 5.41367977087, 1592.59601363280],
[24.300, 3.75843924498, 155.42039943420],
[22.804, 1.74830773908, 5088.62883976680],
[22.324, 0.93932040730, 951.71840625060],
[21.708, 3.83571581352, 6283.07584999140],
[21.304, 0.78049229782, 1589.07289528380],
[21.631, 4.56895741061, 3532.06069281140],
[17.956, 4.21930481803, 3870.30339179440],
[18.237, 0.41328624131, 5486.77784317500],
[16.251, 3.80760134974, 3340.54511639700],
[16.803, 5.54857987615, 3097.88382272579],
[16.850, 4.53690440252, 4292.33083295040],
[15.755, 4.75736730681, 9492.14631500480],
[15.746, 3.72356090283, 20043.67456019880],
[20.428, 3.13540712557, 4690.47983635860],
[14.699, 5.95325006816, 3894.18182954220],
[16.251, 3.39910907599, 3340.67973700260],
[14.259, 3.99897353022, 1990.74501704100],
[16.528, 0.96752074938, 4399.99435688900],
[13.010, 5.14230107067, 6677.70173505060],
[12.492, 1.03211063742, 3341.59274776800],
[16.463, 3.53882915214, 2700.71514038580],
[16.171, 2.34870953554, 553.56940284240],
[13.169, 0.41461716663, 5614.72937620960],
[11.272, 1.02375627844, 12303.06777661000],
[12.408, 6.23142869816, 5628.95647021120],
[12.747, 0.69046314049, 3723.50895892300],
[11.827, 6.25283898676, 2274.11694950980],
[10.384, 1.23257236014, 426.59819087600],
[11.208, 1.31750963435, 3496.03282613400],
[10.345, 0.90062464690, 4535.05943692440],
[12.215, 4.22316056098, 7079.37385680780],
[9.765, 3.45310940204, 382.89653222320],
[8.586, 1.16471901139, 2787.04302385740],
[7.879, 5.73808861790, 2288.34404351140],
[9.195, 1.81689739851, 6681.24210705180],
[7.751, 4.15046998466, 6041.32756708560],
[9.195, 6.06945250657, 6681.20759974740],
[9.026, 2.58210941053, 2388.89402044920],
[6.771, 0.23987737854, 11773.37681151540],
[7.087, 3.51414944377, 8031.09226305840],
[9.159, 3.90158590550, 3553.91152213780],
[6.702, 4.25572879119, 242.72860397400],
[7.232, 3.70287400141, 2818.03500860600],
[6.546, 0.04353472459, 2957.71589447660],
[8.781, 2.19735028572, 1221.84856632140],
[6.540, 2.11834687923, 8429.24126646660],
[6.836, 4.04512263654, 10025.36039844840],
[7.280, 4.26943100715, 2803.80791460440],
[7.676, 1.00782250264, 8432.76438481560],
[5.732, 3.13956241764, 213.29909543800],
[5.344, 3.78220670098, 5092.15195811580],
[5.991, 2.96408254428, 6489.77658728800],
[5.132, 3.98288453952, 7.11354700080],
[6.261, 1.90346469972, 5621.84292321040],
[5.241, 2.67093795050, 7477.52286021600],
[6.261, 1.60056695152, 3347.72597370060],
[6.526, 2.76281601349, 3339.63210563160],
[4.591, 1.81986278078, 2810.92146160520],
[5.460, 4.60874445963, 3583.34103067380],
[4.733, 0.90560026340, 5099.26550511660],
[5.486, 4.91408093456, 7632.94325965020],
[4.004, 4.14067157211, 9623.68827669120],
[3.837, 0.03343295627, 7234.79425624200],
[3.621, 5.76532393672, 4933.20844033260],
[3.747, 0.08778985966, 6525.80445396540],
[3.016, 3.73838855125, 6681.29216370240],
[3.975, 4.91288592965, 2942.46342329160],
[3.911, 0.67451768877, 3127.31333126180],
[3.923, 3.07703531632, 3.52311834900],
[3.944, 0.53974754515, 5884.92684658320],
[2.901, 4.66281989264, 7210.91581849420],
[2.803, 1.00530177454, 7064.12138562280],
[3.153, 4.54673175664, 2487.41604494780],
[2.784, 0.05495331967, 639.89728631400],
[2.759, 5.17099857257, 5828.02847164760],
[3.017, 4.14668877243, 6681.15754309680],
[2.999, 0.82918667275, 5085.03841111500],
[2.677, 0.69427974692, 2699.73481931760],
[3.023, 2.59489020298, 2906.90068882300],
[2.596, 1.08693013783, 4929.68532198360],
[3.126, 1.00027692782, 2118.76386037840],
[2.598, 5.01195749912, 10018.31416175040],
[2.606, 5.34420770679, 10973.55568635000],
[2.779, 3.98358744953, 6467.92575796160],
[2.460, 1.52653571249, 6836.64525283380],
[2.382, 3.93610586965, 11371.70468975820],
[2.590, 5.08892664109, 12832.75874170460],
[2.201, 0.18880589605, 9595.23908922340],
[2.128, 5.69450469171, 3191.04922956520],
[2.065, 3.54133174600, 1066.49547719000],
[1.868, 5.01592531810, 3475.67750673520],
[2.081, 1.30274459220, 7740.60678358880],
[1.830, 5.68365327697, 3319.83703120740],
[2.022, 6.16092328060, 1744.42598441520],
[1.708, 2.21675931288, 2921.12778282460],
[1.836, 6.16477009621, 8425.65083781480],
[2.060, 6.24041853265, 6674.11130639880],
[1.735, 4.58243571826, 10419.98628350760],
[1.852, 1.36883022935, 15643.68020330980],
[1.689, 1.92829590736, 3767.21061757580],
[1.954, 0.46215988899, 10575.40668294180],
[1.800, 2.30913343660, 3355.86489788480],
[1.444, 2.15042616899, 10021.85453375160],
[1.760, 5.87267582299, 3320.25710730100],
[1.845, 4.06123235448, 23384.28698689860],
[1.423, 4.65085713203, 4562.46099302120],
[1.410, 1.50438410845, 3325.35995551480],
[1.444, 0.11969993808, 10021.82002644720],
[1.443, 0.55828572929, 15113.98923821520],
[1.334, 1.25483731308, 7875.67186362420],
[1.442, 1.38958943728, 6682.20517446780],
[1.606, 4.34241260905, 5331.35744374080],
[1.377, 0.14791683820, 1758.65307841680],
[1.282, 5.78533014319, 14584.29827312060],
[1.281, 1.35125896423, 10404.73381232260],
[1.471, 0.34649469321, 8969.56889691100],
[1.245, 6.02681709446, 3264.34635542420],
[1.234, 1.88341938354, 10177.25767953360],
[1.552, 5.92727420332, 8439.87793181640],
[1.182, 4.18100226016, 3360.96774609859],
[1.333, 1.86551437099, 692.15760122680],
[1.189, 0.89892514263, 13916.01910964160],
[1.192, 4.30473818946, 6894.52394883760],
[1.145, 0.15197504252, 3134.42687826260],
[1.299, 1.44631688592, 6254.62666252360],
[1.494, 1.54417907271, 3361.38782219220],
[1.054, 0.67591855339, 3344.20285535160],
[1.210, 0.85117132607, 3120.19978426100],
[1.061, 0.13258232364, 522.57741809380],
[1.003, 1.28021784912, 4569.57454002200],
[1.012, 5.77497169905, 14314.16811304980],
[1.169, 2.99767730172, 6247.51311552280],
[1.062, 0.25467691252, 3337.02199804800],
[1.032, 5.69833683620, 536.80451209540],
[1.082, 2.58016159997, 6261.74020952440],
[0.867, 1.50283829131, 6127.65545055720],
[0.953, 2.92377030638, 5729.50644714900],
[0.887, 5.28743574972, 10213.28554621100],
[1.108, 2.84339171890, 640.87760738220],
[0.861, 3.21491381593, 3914.95722503460],
[1.069, 0.49400181869, 11243.68584642080],
[0.800, 4.64154002129, 6144.42034130420],
[0.799, 3.33215212691, 9830.38901398780],
[1.046, 4.05907877700, 6158.64743530580],
[0.743, 4.93337997290, 3230.40610548040],
[0.740, 3.01511102229, 10818.13528691580],
[0.716, 2.52567242762, 5202.35827933520],
[0.705, 4.39344403231, 9808.53818466140],
[0.786, 1.72357089999, 3178.14579056760],
[0.719, 0.38924465445, 6298.32832117640],
[0.717, 6.23927283856, 3369.06161416760],
[0.704, 1.96763488855, 6688.33840040040],
[0.882, 2.10339285493, 2301.58581590939],
[0.913, 2.30662326829, 13517.87010623340],
[0.914, 4.36610748804, 13365.97282514820],
[0.659, 3.40905557071, 1648.44675719740],
[0.828, 2.13305589137, 7903.07341972100],
[0.652, 5.97050449428, 574.34479833480],
[0.688, 4.02232587894, 1052.26838318840],
[0.709, 2.24658423912, 9225.53927328300],
[0.590, 0.67418318613, 8955.34180290940],
[0.604, 2.73550395152, 16858.48253293320],
[0.785, 3.58704322751, 2693.60159338500],
[0.570, 4.11146135269, 6034.21402008480],
[0.624, 4.45415856101, 12964.30070339100],
[0.563, 3.72383942144, 13119.72110282519],
[0.547, 3.04142188931, 2707.82868738660],
[0.536, 4.65546776421, 135.06508003540],
[0.680, 3.62640859214, 6048.44111408640],
[0.535, 3.32503801413, 9779.10867612540],
[0.615, 0.31792697641, 7910.18696672180],
[0.506, 1.24339056369, 4555.34744602040],
[0.633, 1.32124830132, 2648.45482547300],
[0.671, 2.88173567087, 3316.73398895200],
[0.570, 4.94522781693, 6923.95345737360],
[0.489, 0.48479532469, 12935.85151592320],
[0.490, 1.57712746955, 162.46663613220],
[0.492, 4.08592823251, 10021.90459040220],
[0.468, 4.50628939729, 2384.32327072920],
[0.462, 1.30653882308, 17256.63153634140],
[0.444, 5.20556841675, 13358.92658845020],
[0.511, 5.29436707935, 853.19638175200],
[0.458, 5.52316111365, 6438.49624942560],
[0.443, 4.37626774329, 12168.00269657460],
[0.429, 4.06329082027, 149.56319713460],
[0.502, 6.12188881856, 8273.82086703240],
[0.420, 3.51990468754, 9168.64089834740],
[0.452, 0.15931716927, 7895.95987272020],
[0.401, 0.93276882765, 433.71173787680],
[0.491, 4.49372643902, 10021.76996979660],
[0.390, 1.26790524143, 5459.37628707820],
[0.460, 3.56765356005, 1596.18644228460],
[0.514, 4.14617297678, 16460.33352952499],
[0.510, 2.12338136542, 3335.08950239240],
[0.365, 0.84035244694, 3364.49086444760],
[0.444, 0.42154996651, 9866.41688066520],
[0.380, 2.74315160117, 3344.49376205780],
[0.355, 2.20831807719, 5518.75014899180],
[0.374, 0.93920520997, 3863.18984479360],
[0.380, 0.60825828556, 3980.50971301380],
[0.366, 1.45297694305, 1039.02661079040],
[0.458, 5.01867719021, 10551.52824519400],
[0.352, 5.59661824792, 16062.18452611680],
[0.361, 5.43698827477, 11236.57229942000],
[0.323, 3.25474887566, 3116.26763099790],
[0.396, 5.43635200834, 16173.37116840440],
[0.316, 5.10862851689, 17395.21973472580],
[0.325, 4.59103320065, 19800.94595622480],
[0.320, 0.10022132590, 1692.16566950240],
[0.313, 4.76509182263, 3304.58456002240],
[0.329, 3.51515201342, 1903.43681250120],
[0.361, 1.40179572820, 8270.29774868340],
[0.380, 1.11278812152, 3503.07906283200],
[0.309, 1.63585786252, 11081.21921028860],
[0.304, 6.27804875103, 2391.43681773000],
[0.336, 2.95777936427, 6680.24453233140],
[0.299, 0.48751113813, 3347.65866339780],
[0.327, 3.19951479738, 3981.49003408200],
[0.298, 4.26967988388, 13936.79450513400],
[0.309, 5.05775078180, 12721.57209941700],
[0.310, 6.10243075443, 17924.91069982040],
[0.290, 4.52880846817, 5724.93569742900],
[0.279, 4.30091602167, 3607.21946842160],
[0.293, 1.90646493379, 6702.00024889200],
[0.375, 5.37146136739, 3376.64029337720],
[0.268, 4.93796347898, 13760.59871020740],
[0.269, 5.63342755549, 4032.77002792660],
[0.361, 4.70448724123, 9380.95967271720],
[0.285, 4.37639190605, 6040.34724601740],
[0.305, 3.60878132297, 7255.56965173440],
[0.265, 5.82002998533, 1214.73501932060],
[0.246, 3.48844723382, 3237.51965248120],
[0.339, 6.05128485092, 6660.44945790720],
[0.325, 5.12798981834, 11250.79939342160],
[0.243, 0.48346700024, 13362.43245314700],
[0.246, 4.41923388458, 3546.79797513700],
[0.239, 3.73073204843, 76.26607127560],
[0.239, 6.27709788173, 1964.83862685400],
[0.242, 2.51411096474, 13362.46696045140],
[0.238, 4.61745673345, 17277.40693183380],
[0.232, 3.13987850882, 20199.09495963300],
[0.245, 3.88310965561, 4407.10790388980],
[0.242, 3.07232693388, 12566.15169998280],
[0.277, 3.88618268628, 10596.18207843420],
[0.277, 6.14459469980, 19402.79695281660],
[0.222, 2.20253799065, 7107.82304427560],
[0.218, 1.37621606096, 3415.39402526710],
[0.297, 3.78408680173, 2766.26762836500],
[0.264, 5.35345322905, 6816.28993343500],
[0.213, 1.10915354432, 19004.64794940840],
[0.213, 4.60032427636, 3973.39616601300],
[0.230, 4.39356021431, 26724.89941359840],
[0.202, 0.60981942427, 6677.63442474780],
[0.268, 5.05058237041, 9381.93999378540],
[0.199, 1.34402137469, 8329.67161059700],
[0.198, 5.08527311506, 5820.91492464680],
[0.201, 0.05002970566, 11780.49035851620],
[0.199, 2.66187512344, 6696.47732458460],
[0.227, 1.69939961119, 18984.29263000960],
[0.217, 4.71565260831, 8671.96987044060],
[0.199, 0.66532566162, 15664.03552270859],
[0.201, 3.90133282111, 266.60704172180],
[0.242, 0.76562027191, 3281.23856478620],
[0.254, 6.07712146530, 14054.60730802600],
[0.193, 6.08798590746, 8982.81066930900],
[0.202, 1.12506176909, 6684.81528205140],
[0.212, 0.41763591084, 5732.04924442980],
[0.191, 0.63315794517, 3017.10701004240],
[0.184, 5.68898048651, 5642.19824260920],
[0.180, 4.60366258431, 10235.13637553740],
[0.198, 1.01742381306, 3336.73109134180],
[0.207, 0.80702499658, 3877.41693879520],
[0.202, 1.61753574776, 11216.28429032400],
[0.177, 0.20305783491, 22743.40937951640],
[0.181, 6.17864681592, 4885.96640967860],
[0.228, 0.90779655425, 18454.60166491500],
[0.165, 3.97299091423, 20.35531939880],
[0.206, 3.58770221682, 3205.54734666440],
[0.185, 2.77088436060, 220.41264243880],
[0.163, 0.00569068383, 1437.17561419860],
[0.185, 6.23128875160, 6660.86953400080],
[0.164, 4.64548469502, 3253.30422216000],
[0.210, 4.85590304986, 5618.31980486140],
[0.226, 1.76563729092, 5625.36604155940],
[0.163, 0.67931390118, 12310.18132361080],
[0.211, 1.51278040364, 4039.88357492740],
[0.177, 2.14779710666, 3346.13535100720],
[0.154, 3.33525296567, 9070.11887384880],
[0.178, 1.65162116131, 10713.99488132620],
[0.156, 6.12783235584, 103.09277421860],
[0.155, 3.51854579269, 7373.38245462640],
[0.157, 4.91614155659, 15508.61512327440],
[0.191, 1.74459210202, 10022.81760116760],
[0.178, 3.53665589741, 533.21408344360],
[0.154, 2.64640687885, 3333.56619000180],
[0.162, 1.27235392680, 5415.65737477320],
[0.144, 1.30886254982, 6460.81221096080],
[0.173, 3.76291627342, 3561.02506913860],
[0.144, 0.86629692094, 7380.49600162720],
[0.150, 0.23529641094, 1228.96211332220],
[0.144, 0.12285484149, 647.01083331480],
[0.160, 0.24157324936, 11614.43329373220],
[0.146, 4.76067886088, 16706.58525184800],
[0.188, 2.96688973732, 2178.13772229200],
[0.175, 1.66915420767, 22345.26037610820],
[0.141, 1.75571255457, 3657.00429635640],
[0.145, 0.71777671857, 6784.31762761820],
[0.138, 2.74151377335, 6546.15977336420],
[0.139, 4.12056692213, 3351.24909204960],
[0.152, 4.88528890547, 110.20632121940],
[0.134, 0.86682710306, 3603.69635007260],
[0.170, 5.54401695608, 3265.83082813250],
[0.165, 2.74557093704, 4672.66731424060],
[0.129, 0.94520493983, 419.48464387520],
[0.167, 3.43007767272, 1581.95934828300],
[0.136, 3.68877945956, 13171.00144068760],
[0.160, 0.68321924763, 6475.03930496240],
[0.129, 4.46548223743, 9499.25986200560],
[0.144, 1.88085102951, 9468.26787725700],
[0.149, 3.49118810274, 14158.74771361560],
[0.138, 1.92770959208, 15.25247118500],
[0.172, 0.23189971635, 12323.42309600880],
[0.121, 1.75813513715, 4379.63903749020],
[0.120, 6.04299490267, 6606.44325483230],
[0.134, 1.98845453946, 8965.97846825920],
[0.118, 0.22641710036, 11766.26326451460],
[0.122, 2.92219895926, 21947.11137270000],
[0.147, 5.86576524955, 3169.93955608060],
[0.121, 5.75886629308, 19513.98359510420],
[0.119, 3.93419985914, 4936.79886898440],
[0.123, 4.65853055862, 13149.15061136120],
[0.151, 4.38870879458, 13362.51701710200],
[0.134, 4.49208622602, 2480.30249794700],
[0.115, 5.78268772131, 12722.55242048520],
[0.126, 4.43971496486, 3568.08855948880],
[0.114, 0.36704570747, 3384.33133900480],
[0.117, 0.67607782416, 13207.02930736500],
[0.124, 5.80386208894, 10721.10842832700],
[0.115, 0.23672592056, 224.34479570190],
[0.110, 0.26402316132, 3077.52850332700],
[0.112, 3.50979462224, 1375.77379984580],
[0.108, 5.30086016687, 10264.56588407340],
[0.146, 2.36972522432, 4989.05918389720],
[0.143, 0.92798026058, 5401.43028077160],
[0.111, 2.47771615302, 18606.49894600020],
[0.124, 1.13870545502, 2807.39834325620],
[0.105, 5.87122793977, 4193.80880845180],
[0.115, 3.01754571849, 1118.75579210280],
[0.107, 2.03274473347, 25685.87280280800],
[0.107, 4.82345245872, 13362.38239649640],
[0.105, 1.21018340855, 8584.66166590080],
[0.104, 5.07527834174, 23141.55838292460],
[0.100, 4.08698733114, 3511.28529731900],
[0.105, 1.13833234280, 1162.47470440780],
[0.102, 2.55243872323, 664.75604513000],
[0.138, 3.04361079523, 3329.97576135000],
[0.130, 3.04769575195, 3341.03250279340],
[0.117, 2.97177407391, 9602.35263622420],
[0.098, 4.54292546461, 3362.46325602620],
[0.097, 2.21618504638, 10042.61267559180],
[0.100, 5.45541648580, 3024.22055704320],
[0.097, 1.55448890675, 8799.98871377800],
[0.107, 5.15001764390, 956.28915597060],
[0.100, 1.80839732601, 6665.97238221460],
[0.104, 0.04641040148, 10001.06188460700],
[0.097, 0.30502193916, 10014.72373309860],
[0.125, 3.71144870102, 3873.82651014340],
[0.102, 5.38933965862, 13892.14067189380],
[0.108, 4.33438895790, 3490.17562383440],
[0.095, 2.32591017464, 10028.95082710020],
[0.113, 1.74323945160, 11610.91017538320],
[0.119, 4.94578003013, 3443.70520091840],
[0.096, 1.63239207663, 11925.27409260060],
[0.124, 0.82697196609, 9638.94074787620],
[0.101, 1.51065535085, 1062.90504853820],
[0.107, 4.36653716080, 6531.66165626500],
[0.090, 2.01534774170, 22324.90505670940],
[0.094, 4.85202869277, 14047.49376102520],
[0.089, 1.23714034226, 20809.46762464520],
[0.095, 5.69916785631, 6717.25272007700],
[0.095, 2.15038299943, 8013.27974094040],
[0.111, 3.91313035726, 3311.18291816379],
[0.089, 1.37925538521, 74.78159856730],
[0.094, 3.24872875047, 6657.34641565180],
[0.089, 0.70324117212, 23.87843774780],
[0.087, 0.40376031248, 2221.85663459700],
[0.092, 3.33165786190, 2540.79130153440],
[0.120, 3.09344469205, 6685.10618875760],
[0.087, 4.92694309070, 1505.28780909299],
[0.091, 1.66121998822, 24150.08005134500],
[0.090, 5.47687082598, 16699.53901514999],
[0.119, 2.53709230647, 3312.16323923200],
[0.118, 5.56523997231, 2814.44457995420],
[0.093, 1.61394240489, 3341.04230982650],
[0.084, 1.19439840758, 3450.81874791920],
[0.085, 4.95060410388, 7314.00859271280],
[0.084, 3.92244493446, 170.67287061920],
[0.096, 5.49205832489, 3427.92063123960],
[0.106, 1.61703818023, 3774.32416457660],
[0.101, 6.18535119914, 5511.63660199100],
[0.081, 3.16562241132, 52175.80628314840],
[0.093, 5.15512549422, 3451.79906898740],
[0.108, 0.33314004399, 6709.67404086740],
[0.078, 2.38080208142, 13553.89797291080],
[0.085, 1.18588430640, 6705.10329114740],
[0.098, 3.24856024758, 25287.72379939980],
[0.080, 2.54327778068, 6675.70192909220],
[0.078, 4.70533248161, 24889.57479599160],
[0.095, 1.59916172961, 4271.97551355160],
[0.076, 0.90799171644, 2675.85638156980],
[0.091, 3.80728044706, 2125.87740737920],
[0.093, 5.59480359619, 3340.18254357310],
[0.095, 2.06299921822, 6518.75821726740],
[0.100, 6.02550501045, 3313.21087060300],
[0.075, 6.16095890090, 3370.04193523580],
[0.077, 4.92444879515, 3229.42578441220],
[0.090, 4.55063359845, 6701.58017279840],
[0.078, 2.01202524407, 14421.83163698840],
[0.079, 5.92142974185, 6155.05700665400],
[0.101, 2.07923317336, 15265.88651930040],
[0.082, 6.04078010866, 3760.09707057500],
[0.073, 3.01106366205, 206.18554843720],
[0.078, 1.71095661489, 3399.98628861340],
[0.073, 3.32824316241, 9588.12554222260],
[0.076, 1.74030672711, 6756.00645196690],
[0.073, 1.44980946324, 5408.54382777240],
[0.077, 5.64501410813, 3209.07046501340],
[0.080, 5.70272305344, 10156.90236013480],
[0.075, 3.83222347813, 39048.32250960720],
[0.072, 0.82629826575, 7366.26890762560],
[0.083, 4.71804515025, 14061.72085502680],
[0.072, 4.35767091893, 21548.96236929180],
[0.086, 1.50107043029, 5989.06725217280],
[0.073, 3.77377582806, 28628.33622609960],
[0.082, 0.78740181090, 16276.46394262300],
[0.070, 2.69225539304, 3296.89351439480],
[0.069, 1.01941228196, 12295.95422960920],
[0.081, 4.64227979982, 6947.83189512140],
[0.094, 0.74502278458, 5244.04923920100],
[0.067, 4.47328871650, 20206.14119633100],
[0.091, 2.95968633697, 3326.38533269820],
[0.076, 2.86128350856, 8542.97070603500],
[0.065, 1.31079130285, 23546.75362303080],
[0.065, 3.31422850411, 6414.61781167780],
[0.064, 3.98415414793, 3368.01398279660],
[0.065, 4.15810281695, 3340.19235060619],
[0.071, 3.82044323862, 6578.13207918100],
[0.080, 1.02128994578, 7321.12213971360],
[0.064, 1.07965886113, 6944.30877677240],
[0.064, 1.20215520018, 38.13303563780],
[0.070, 5.11166911478, 9485.03276800400],
[0.067, 2.22216014849, 4845.90023579280],
[0.083, 1.86067842148, 931.36308685180],
[0.063, 0.45029141698, 6418.14093002680],
[0.062, 5.68207205878, 4459.36821880260],
[0.062, 0.62454636835, 6688.27109009760],
[0.076, 0.41820625869, 5032.77809620220],
[0.062, 5.72811519809, 2008.55753915900],
[0.060, 1.98790201827, 12199.97500239140],
[0.078, 2.18035217615, 3232.94890276120],
[0.060, 1.08971396071, 10124.93005431800],
[0.072, 4.08555524166, 3416.87849797540],
[0.061, 2.49066420507, 4005.36847182980],
[0.059, 2.93755144370, 9886.77220006400],
[0.069, 1.02371083242, 6621.85099148600],
[0.061, 4.57446273568, 2277.70737816160],
[0.059, 4.74745481720, 16865.52876963120],
[0.069, 3.62576981720, 15906.76412668260],
[0.058, 4.15993379336, 1854.63230563460],
[0.060, 4.92798256747, 3391.89276456221],
[0.070, 4.51699340219, 16304.91313009080],
[0.056, 3.59354639280, 7322.10246078180],
[0.068, 0.81217091970, 16703.04487984680],
[0.056, 3.19997567622, 4140.43355186520],
[0.058, 1.73479637157, 2409.24933984800],
[0.054, 5.54310937490, 2604.73591316800],
[0.059, 2.02922256380, 45486.81875903279],
[0.063, 5.29505507594, 17101.21113690720],
[0.054, 4.88230660750, 48300.16010269000],
[0.071, 4.84381041200, 3289.33208883739],
[0.054, 1.76917054114, 3510.19260983280],
[0.063, 2.80175814276, 16894.51039961060],
[0.058, 0.91631357427, 10018.24685144760],
[0.054, 1.06826755543, 8948.22825590860],
[0.072, 1.36121375974, 10025.42770875120],
[0.061, 0.92427393171, 17468.85519794540],
[0.068, 2.84271358352, 16703.07938715119],
[0.053, 3.42679182927, 14867.73751589219],
[0.054, 0.41070672545, 18451.07854656599],
[0.060, 5.86922287544, 7447.01791784600],
[0.051, 1.64684042106, 3472.15438838620],
[0.057, 6.13250399703, 17085.95866572220],
[0.053, 4.16969434701, 6106.88005506480],
[0.050, 3.17196717347, 2111.65031337760],
[0.055, 5.72607545560, 10706.88133432540],
[0.062, 0.57333106196, 3171.03224356680],
[0.053, 1.29007833025, 6652.77566593180],
[0.050, 2.96441858632, 10037.08975128440],
[0.065, 5.11165617529, 3113.13629391080],
[0.053, 4.87447079015, 1485.98012106520],
[0.050, 2.52848298042, 10448.43547097540],
[0.059, 1.69623653028, 4025.65648092580],
[0.047, 5.15559748285, 12012.58229714040],
[0.049, 1.19473362353, 3448.27595063840],
[0.063, 1.01191427607, 11769.85369316640],
[0.064, 3.86219786087, 18208.34994259200],
[0.059, 2.96261275062, 14071.43950907579],
[0.049, 1.41657179779, 2938.94030494260],
[0.048, 2.95878690387, 11527.12508919240],
[0.052, 0.01971915447, 8226.57883637840],
[0.045, 5.07966377852, 3318.76159737340],
[0.043, 1.23879381294, 7218.02936549500],
[0.058, 5.58121433163, 6643.09181776180],
[0.048, 5.02446939402, 6645.19698672220],
[0.043, 0.69492704598, 20995.39296644940],
[0.044, 4.02272101657, 9389.05354078620],
[0.055, 4.38138154697, 1478.86657406440],
[0.051, 4.24292455428, 792.77488846740],
[0.042, 2.74826708762, 14577.18472611980],
[0.044, 4.18397905503, 8535.85715903420],
[0.047, 1.33588473182, 632.78373931320],
[0.042, 5.05676915852, 3397.51080163540],
[0.042, 0.28204510006, 10001.48196070061],
[0.042, 0.75310918544, 6357.71943674220],
[0.042, 4.94532732982, 18052.92954315780],
[0.052, 4.09912687749, 5835.14201864840],
[0.054, 2.46533302314, 8186.51266249260],
[0.043, 4.77713978044, 32124.36905223359],
[0.053, 6.08293348275, 3377.21779200400],
[0.041, 2.51168269556, 4186.69526145100],
[0.041, 1.24482327948, 3212.59358336240],
[0.041, 5.42003026893, 685.04405422600],
[0.041, 5.04768364997, 6571.01853218020],
[0.042, 2.08904552145, 13363.43002786740],
[0.048, 4.82888746454, 1835.32461760680],
[0.043, 4.17203713456, 43340.65334255760],
[0.046, 0.81640935106, 45884.96776244100],
[0.042, 2.26773068307, 12729.66596748600],
[0.039, 5.85791936573, 846.08283475120],
[0.043, 2.90976420757, 6872.67311951120],
[0.045, 1.98725045807, 1861.74585263540],
[0.045, 0.50053853542, 14128.24277124560],
[0.046, 2.86512929328, 38650.17350619900],
[0.038, 3.65846461938, 29698.28751133580],
[0.039, 4.57679716458, 6901.63749583840],
[0.039, 3.85504465583, 9945.57120882380],
[0.040, 0.06127203284, 9947.05568153210],
[0.043, 5.28854105201, 3274.12501778540],
[0.047, 6.25707790441, 24606.13555322000],
[0.037, 5.02115296017, 11128.97608578420],
[0.039, 1.71421919870, 7696.88787128380],
[0.037, 4.34652985120, 3283.71405176420],
[0.037, 0.05572748092, 21150.81336588360],
[0.042, 4.97872041460, 13575.74880223720],
[0.050, 4.24170332288, 7747.72033058960],
[0.037, 4.07496312186, 8646.06348025360],
[0.038, 0.44080908793, 24491.42579258340],
[0.036, 1.73681874925, 3468.63127003720],
[0.041, 5.69294900686, 26087.90314157420],
[0.036, 1.80256389689, 8756.26980147300],
[0.036, 3.37374689465, 48429.28218232440],
[0.035, 0.10555289345, 8742.04270747140],
[0.041, 4.26832466355, 21000.91589075680],
[0.038, 0.73199792046, 26084.02180621620],
],
# R2
[
[44242.247, 0.47930603943, 3340.61242669980],
[8138.042, 0.86998398093, 6681.22485339960],
[1274.915, 1.22594050809, 10021.83728009940],
[187.387, 1.57298991982, 13362.44970679920],
[40.744, 1.97080175060, 3344.13554504880],
[52.396, 3.14159265359, 0.00000000000],
[26.616, 1.91665615762, 16703.06213349900],
[17.825, 4.43499505333, 2281.23049651060],
[11.713, 4.52510453730, 3185.19202726560],
[10.209, 5.39143469548, 1059.38193018920],
[9.950, 0.41870577185, 796.29800681640],
[9.237, 4.53579272961, 2146.16541647520],
[7.299, 3.14218509183, 2544.31441988340],
[7.217, 2.29300859074, 6684.74797174860],
[6.808, 5.26702580055, 155.42039943420],
[6.528, 2.30781369329, 3738.76143010800],
[7.785, 5.93369079547, 1748.01641306700],
[5.840, 1.05191350362, 1349.86740965880],
[6.749, 5.30194395749, 1194.44701022460],
[4.695, 0.76880586144, 3097.88382272579],
[5.391, 1.00223256041, 3149.16416058820],
[4.406, 2.45556303355, 951.71840625060],
[4.286, 3.89643520638, 1592.59601363280],
[3.514, 1.85168391963, 398.14900340820],
[3.699, 2.26043707772, 20043.67456019880],
[3.377, 3.81683532672, 1751.53953141600],
[4.585, 0.80787441740, 4136.91043351620],
[3.201, 2.11657635165, 5614.72937620960],
[3.622, 1.32395191387, 3333.49887969900],
[2.916, 1.19337460559, 529.69096509460],
[2.979, 2.86481008776, 6151.53388830500],
[3.057, 4.55276793064, 5628.95647021120],
[2.906, 1.20295377623, 3894.18182954220],
[3.850, 3.86055626689, 553.56940284240],
[2.820, 2.48683324916, 1990.74501704100],
[2.657, 6.07411629964, 4292.33083295040],
[2.700, 2.92139773350, 3496.03282613400],
[2.395, 5.94175921617, 2787.04302385740],
[2.264, 2.56219866409, 191.44826611160],
[2.167, 5.36812435483, 8962.45534991020],
[2.149, 2.74950075397, 242.72860397400],
[2.217, 1.85265984462, 3337.08930835080],
[1.996, 5.76429928131, 3341.59274776800],
[1.999, 3.82349238481, 2914.01423582380],
[1.835, 5.68592723044, 1589.07289528380],
[1.812, 3.32042068028, 5088.62883976680],
[2.413, 4.68291336853, 4690.47983635860],
[1.970, 4.17480610904, 3340.59517304760],
[1.970, 6.20643855008, 3340.62968035200],
[1.627, 5.67733051452, 4535.05943692440],
[2.160, 1.07452599834, 2388.89402044920],
[1.964, 3.10805316088, 3583.34103067380],
[1.985, 5.75850351840, 4399.99435688900],
[1.507, 4.95936409838, 382.89653222320],
[1.278, 4.82232889938, 2957.71589447660],
[1.475, 2.22707926559, 3723.50895892300],
[1.196, 3.26724458920, 9492.14631500480],
[1.349, 4.87573224485, 6525.80445396540],
[1.433, 2.69734916443, 7079.37385680780],
[1.224, 2.62012336714, 10025.36039844840],
[1.404, 5.19056026479, 2700.71514038580],
[1.202, 0.93472783088, 2810.92146160520],
[0.869, 5.81340811635, 12303.06777661000],
[0.867, 2.20046640409, 2699.73481931760],
[0.830, 2.01484544773, 5092.15195811580],
[0.855, 5.96220147975, 426.59819087600],
[0.848, 2.26407047301, 6283.07584999140],
[0.917, 1.40295785881, 6489.77658728800],
[0.833, 1.17384197174, 7477.52286021600],
[1.041, 6.27171470048, 3347.72597370060],
[0.965, 3.39855816541, 5621.84292321040],
[0.722, 4.26304776331, 4933.20844033260],
[0.706, 2.34131594714, 7.11354700080],
[0.768, 2.06208352904, 5486.77784317500],
[0.953, 2.11123497948, 3870.30339179440],
[0.844, 2.23931963240, 3553.91152213780],
[0.646, 2.24669034469, 3340.54511639700],
[0.653, 3.99043329363, 6677.70173505060],
[0.714, 0.29739480601, 6681.24210705180],
[0.828, 0.22863617670, 3532.06069281140],
[0.612, 1.55388376751, 7234.79425624200],
[0.714, 4.54969883976, 6681.20759974740],
[0.586, 3.30118433303, 1221.84856632140],
[0.646, 1.83853693231, 3340.67973700260],
[0.560, 5.05848353328, 8031.09226305840],
[0.651, 0.15897472160, 7632.94325965020],
[0.488, 3.08086378649, 6836.64525283380],
[0.534, 4.25727954634, 3339.63210563160],
[0.504, 2.59990772815, 23384.28698689860],
[0.372, 6.27186983164, 2487.41604494780],
[0.343, 4.71059403854, 639.89728631400],
[0.449, 1.34123846614, 640.87760738220],
[0.342, 5.96338023755, 4929.68532198360],
[0.329, 2.65955258770, 9623.68827669120],
[0.352, 6.09567212646, 7740.60678358880],
[0.326, 6.05498346093, 2118.76386037840],
[0.403, 4.96465831103, 8969.56889691100],
[0.402, 2.84624835384, 5331.35744374080],
[0.319, 1.44545457475, 5729.50644714900],
[0.303, 0.01918776551, 6127.65545055720],
[0.297, 5.74070606294, 6041.32756708560],
[0.297, 3.06763224975, 10419.98628350760],
[0.282, 6.04069352017, 7875.67186362420],
[0.278, 5.11654962157, 11773.37681151540],
[0.259, 2.89786343627, 7210.91581849420],
[0.273, 3.83181794308, 8429.24126646660],
[0.256, 1.08862226474, 2288.34404351140],
[0.288, 6.13572687680, 6682.20517446780],
[0.302, 3.61490647715, 12832.75874170460],
[0.235, 2.21413387615, 6681.29216370240],
[0.317, 3.60634897209, 2301.58581590939],
[0.289, 5.08223311018, 2274.11694950980],
[0.254, 0.36603904729, 3767.21061757580],
[0.235, 2.62434481550, 6681.15754309680],
[0.226, 3.45305949713, 6923.95345737360],
[0.205, 3.88943452829, 10018.31416175040],
[0.206, 3.44453113177, 10177.25767953360],
[0.210, 0.57926734389, 10973.55568635000],
[0.194, 1.57870686859, 10818.13528691580],
[0.190, 2.42312911773, 8955.34180290940],
[0.194, 2.45887376159, 7064.12138562280],
[0.193, 0.58793888724, 5828.02847164760],
[0.183, 1.68247271963, 213.29909543800],
[0.236, 1.98863774162, 10575.40668294180],
[0.245, 2.17761779228, 4562.46099302120],
[0.177, 0.66379705293, 10021.85453375160],
[0.176, 4.91607557961, 10021.82002644720],
[0.217, 2.93968443649, 13365.97282514820],
[0.167, 4.74764434327, 3914.95722503460],
[0.213, 0.15734917857, 2942.46342329160],
[0.155, 1.78776991092, 9830.38901398780],
[0.180, 5.21088564787, 9866.41688066520],
[0.161, 5.17683861380, 6298.32832117640],
[0.159, 2.68980684850, 6894.52394883760],
[0.149, 6.26524493469, 1039.02661079040],
[0.147, 0.36939961702, 6688.33840040040],
[0.151, 1.22272892290, 574.34479833480],
[0.137, 2.09492296067, 1066.49547719000],
[0.165, 6.15952050903, 15643.68020330980],
[0.163, 4.66507592292, 8273.82086703240],
[0.124, 0.67855210339, 6438.49624942560],
[0.128, 1.69206367749, 3981.49003408200],
[0.116, 2.78191248964, 3360.96774609859],
[0.128, 0.84461423001, 3355.86489788480],
[0.124, 1.63253732557, 6674.11130639880],
[0.120, 0.31762150109, 3127.31333126180],
[0.129, 2.26678583645, 6467.92575796160],
[0.104, 0.07355376701, 3325.35995551480],
[0.130, 4.41777190830, 3320.25710730100],
[0.095, 1.31957248342, 7903.07341972100],
[0.114, 0.65681602343, 3178.14579056760],
[0.092, 4.98392367746, 9779.10867612540],
[0.101, 4.10670787374, 536.80451209540],
[0.106, 5.41622566807, 15113.98923821520],
[0.096, 3.52561014696, 3475.67750673520],
[0.101, 2.91169549546, 692.15760122680],
[0.093, 3.21464368291, 8671.96987044060],
[0.087, 5.24375873119, 13119.72110282519],
[0.106, 3.76804681559, 13517.87010623340],
[0.089, 5.73652101746, 11371.70468975820],
[0.104, 5.90078964406, 8432.76438481560],
[0.099, 3.61425346453, 853.19638175200],
[0.078, 0.95802015551, 3191.04922956520],
[0.089, 2.50872076312, 1052.26838318840],
[0.078, 2.98115354616, 26724.89941359840],
[0.079, 5.91514993930, 6040.34724601740],
[0.090, 3.00950470302, 12964.30070339100],
[0.075, 1.31512531841, 17924.91069982040],
[0.073, 5.01153593776, 1903.43681250120],
[0.075, 2.57969241717, 10021.90459040220],
[0.073, 4.09954161905, 3319.83703120740],
[0.070, 5.37678396256, 12310.18132361080],
[0.071, 0.98422998240, 13362.46696045140],
[0.068, 4.69140248943, 522.57741809380],
[0.068, 3.24217441291, 16706.58525184800],
[0.069, 2.53964193741, 5884.92684658320],
[0.070, 2.38237948321, 13916.01910964160],
[0.066, 3.48443797546, 13760.59871020740],
[0.068, 5.27435069681, 3980.50971301380],
[0.076, 0.12288413214, 11216.28429032400],
[0.073, 3.94785759909, 16173.37116840440],
[0.062, 0.15518975647, 11081.21921028860],
[0.074, 2.99926779692, 10021.76996979660],
[0.080, 6.18812323827, 9380.95967271720],
[0.064, 3.99294283669, 13358.92658845020],
[0.061, 2.56817782412, 149.56319713460],
[0.059, 3.80850908229, 10264.56588407340],
[0.060, 4.79879360562, 1437.17561419860],
[0.068, 2.07515658228, 1596.18644228460],
[0.060, 2.26503107747, 28628.33622609960],
[0.058, 6.10782258899, 5459.37628707820],
[0.063, 0.24407077742, 18984.29263000960],
[0.058, 5.22738430747, 13362.43245314700],
[0.056, 1.88708253797, 9070.11887384880],
[0.055, 5.72587156499, 433.71173787680],
[0.056, 1.18238857561, 6696.47732458460],
[0.062, 3.98214740104, 3427.92063123960],
[0.056, 5.37129176649, 5099.26550511660],
[0.057, 0.86204712032, 5642.19824260920],
[0.055, 1.31787605222, 8982.81066930900],
[0.056, 5.49808236951, 24093.27678917520],
[0.054, 3.77562154746, 10213.28554621100],
[0.054, 2.36294643031, 33716.96506586640],
[0.063, 3.53402427573, 3205.54734666440],
[0.066, 6.25810929981, 8270.29774868340],
[0.067, 0.58592813080, 3335.08950239240],
[0.055, 4.74995645767, 6660.86953400080],
[0.053, 0.31930032532, 12721.57209941700],
[0.069, 2.42905593362, 6158.64743530580],
[0.055, 5.03192783121, 7255.56965173440],
[0.051, 5.45351947711, 13207.02930736500],
[0.050, 0.23368526162, 4379.63903749020],
[0.053, 2.12826344020, 13171.00144068760],
[0.049, 2.35512151368, 4032.77002792660],
[0.049, 2.81773050890, 9808.53818466140],
[0.067, 2.26295786556, 2766.26762836500],
[0.049, 0.72597680486, 10028.95082710020],
[0.050, 6.10119450350, 3253.30422216000],
[0.059, 0.27861398526, 9225.53927328300],
[0.053, 1.27330874549, 3344.49376205780],
[0.049, 2.91499389416, 10404.73381232260],
[0.047, 0.48598973231, 17395.21973472580],
[0.049, 3.40240207389, 3304.58456002240],
[0.060, 3.40554368741, 10551.52824519400],
[0.050, 1.83471955355, 30376.35263916660],
[0.046, 3.04980996832, 6144.42034130420],
[0.049, 0.33200904496, 6702.00024889200],
[0.053, 0.35820094732, 9468.26787725700],
[0.050, 0.15378507249, 2648.45482547300],
[0.044, 0.79762157297, 7107.82304427560],
[0.050, 2.41332661328, 4407.10790388980],
[0.054, 0.21682940856, 10022.81760116760],
[0.044, 5.78502737591, 3364.49086444760],
[0.044, 0.75508636274, 16062.18452611680],
[0.043, 3.10581037685, 10235.13637553740],
[0.044, 5.21252098878, 7373.38245462640],
[0.058, 4.51680312444, 6660.44945790720],
[0.043, 0.15523355839, 1505.28780909299],
[0.055, 5.93371026829, 8439.87793181640],
[0.042, 5.40417232308, 3344.20285535160],
[0.056, 3.87534582911, 6816.28993343500],
[0.049, 5.57153056447, 17468.85519794540],
[0.046, 3.07783299049, 12722.55242048520],
[0.045, 1.49303542795, 6247.51311552280],
[0.055, 6.26098836404, 3361.38782219220],
[0.042, 4.74455545491, 3369.06161416760],
[0.040, 1.58676666294, 2818.03500860600],
[0.043, 4.97295184315, 3337.02199804800],
[0.055, 3.80215638520, 3376.64029337720],
[0.047, 1.97367775421, 1581.95934828300],
[0.045, 2.03598705348, 5244.04923920100],
[0.049, 4.43182954044, 9595.23908922340],
[0.043, 0.38914582094, 6665.97238221460],
[0.040, 1.06953099245, 23695.12778576700],
[0.038, 0.59996214864, 10713.99488132620],
[0.039, 3.79055778605, 33318.81606245820],
[0.041, 5.54542347834, 3863.18984479360],
[0.037, 5.27208151144, 20752.66436247540],
[0.039, 3.15412760412, 14469.58851248400],
[0.041, 0.55705920174, 3346.13535100720],
[0.048, 1.42210748234, 3316.73398895200],
[0.049, 5.44942247991, 9638.94074787620],
[0.038, 2.11846271943, 15664.03552270859],
[0.035, 5.30782933148, 6677.63442474780],
[0.036, 2.68151450016, 8584.66166590080],
[0.046, 3.09450395763, 6701.58017279840],
[0.038, 1.81885395671, 14158.74771361560],
[0.037, 5.80483071722, 6684.81528205140],
[0.047, 2.60317702777, 162.46663613220],
[0.038, 2.22559377525, 3503.07906283200],
[0.035, 0.84358942718, 6518.75821726740],
[0.033, 4.92302322062, 23141.55838292460],
[0.043, 0.95148893985, 34115.11406927460],
[0.046, 4.99457196207, 9381.93999378540],
[0.043, 1.73832102244, 12323.42309600880],
[0.032, 2.92741580696, 9499.25986200560],
[0.043, 1.50296327105, 27035.74021246680],
[0.033, 5.41731109688, 20597.24396304120],
[0.032, 4.13881058425, 31570.79964939120],
[0.040, 5.84463069180, 16460.33352952499],
[0.035, 5.50083743557, 8425.65083781480],
[0.038, 5.91991985929, 3336.73109134180],
[0.030, 5.09155042811, 5085.03841111500],
[0.031, 4.27211180916, 36659.42848915800],
[0.030, 4.87389489592, 1692.16566950240],
[0.030, 3.75494646937, 4845.90023579280],
[0.034, 3.71030605417, 8827.39026987480],
[0.030, 0.01599456850, 11243.68584642080],
[0.029, 2.66198696023, 12295.95422960920],
[0.028, 3.12114207206, 11925.27409260060],
[0.036, 1.16568750904, 18052.92954315780],
[0.032, 1.72704226918, 12566.15169998280],
[0.028, 2.80254457895, 3607.21946842160],
[0.032, 4.04390839531, 6680.24453233140],
[0.027, 2.53565904393, 19004.64794940840],
[0.036, 3.33518515689, 29978.20363575840],
[0.028, 0.58104982217, 20354.51535906720],
[0.029, 5.85207825749, 31172.65064598300],
[0.026, 2.22598820379, 3.52311834900],
[0.033, 5.15903548241, 10596.18207843420],
[0.028, 1.89792803028, 3333.56619000180],
[0.027, 2.25129832716, 76.26607127560],
[0.026, 4.32703172263, 17085.95866572220],
[0.026, 5.12847780702, 11766.26326451460],
[0.028, 0.80926596905, 20735.83216142559],
[0.026, 5.06814803493, 17412.05193577560],
[0.024, 4.47399155600, 3134.42687826260],
[0.024, 4.35557152695, 14584.29827312060],
[0.027, 4.98717355201, 3877.41693879520],
[0.025, 5.63712701265, 14054.60730802600],
[0.024, 4.12573657295, 4193.80880845180],
[0.025, 1.40880282063, 8186.51266249260],
[0.024, 4.96463811748, 26087.90314157420],
],
# R3
[
[1113.107, 5.14987350142, 3340.61242669980],
[424.446, 5.61343766478, 6681.22485339960],
[100.044, 5.99726827028, 10021.83728009940],
[19.606, 0.07633062094, 13362.44970679920],
[3.477, 0.42951907576, 16703.06213349900],
[4.693, 3.14159265359, 0.00000000000],
[2.869, 0.44711842697, 3344.13554504880],
[2.428, 3.02115527957, 3185.19202726560],
[0.688, 0.80693359444, 6684.74797174860],
[0.540, 3.86836515672, 1059.38193018920],
[0.577, 0.77853275120, 20043.67456019880],
[0.468, 4.52450786544, 3496.03282613400],
[0.487, 1.60862391345, 3583.34103067380],
[0.362, 4.42397903418, 2787.04302385740],
[0.397, 5.71967986581, 3149.16416058820],
[0.299, 0.75640033535, 3738.76143010800],
[0.350, 5.55691984889, 4136.91043351620],
[0.314, 3.37632898783, 6525.80445396540],
[0.233, 2.13965262306, 3097.88382272579],
[0.212, 4.20487494011, 3341.59274776800],
[0.214, 0.56779556947, 155.42039943420],
[0.201, 2.35284464564, 1592.59601363280],
[0.204, 0.96723315302, 1990.74501704100],
[0.230, 5.82959057146, 2388.89402044920],
[0.160, 4.14974194757, 4535.05943692440],
[0.156, 5.13345210285, 796.29800681640],
[0.146, 3.29541339704, 2957.71589447660],
[0.156, 1.13805508457, 10025.36039844840],
[0.159, 3.76174286126, 1194.44701022460],
[0.136, 5.58293924642, 3894.18182954220],
[0.145, 3.02112488974, 3337.08930835080],
[0.146, 4.25359617225, 4399.99435688900],
[0.100, 4.26740096115, 1589.07289528380],
[0.091, 6.12108227231, 6489.77658728800],
[0.101, 1.17242141914, 7079.37385680780],
[0.098, 1.12613498307, 23384.28698689860],
[0.075, 6.02182689533, 529.69096509460],
[0.078, 5.93418069229, 7477.52286021600],
[0.068, 1.70775041911, 9492.14631500480],
[0.070, 3.67253155189, 8962.45534991020],
[0.062, 4.14954627063, 4292.33083295040],
[0.067, 0.15092246550, 3870.30339179440],
[0.066, 1.12578506413, 6151.53388830500],
[0.062, 1.93984222091, 6923.95345737360],
[0.060, 4.30641513096, 12303.06777661000],
[0.074, 4.72156358149, 3347.72597370060],
[0.055, 2.75742802464, 4933.20844033260],
[0.053, 4.77894621871, 6127.65545055720],
[0.050, 2.57807944338, 3340.59517304760],
[0.048, 3.72532068729, 9866.41688066520],
[0.042, 6.15391373101, 7234.79425624200],
[0.043, 3.43955584179, 5486.77784317500],
[0.050, 4.60885064189, 3340.62968035200],
[0.044, 4.47943289816, 426.59819087600],
[0.045, 6.24485207500, 2274.11694950980],
[0.040, 0.73805316471, 7.11354700080],
[0.038, 1.06497784748, 9623.68827669120],
[0.041, 4.60954640493, 6682.20517446780],
[0.038, 4.60963924082, 7740.60678358880],
[0.036, 3.15129246169, 639.89728631400],
[0.037, 6.14629970622, 5729.50644714900],
[0.040, 1.47395544850, 13365.97282514820],
[0.035, 2.60772245492, 4690.47983635860],
[0.035, 2.45077931900, 2288.34404351140],
[0.034, 4.50544497582, 7875.67186362420],
[0.042, 2.11383330882, 12832.75874170460],
[0.033, 3.97655860802, 191.44826611160],
[0.032, 4.06047154083, 3532.06069281140],
[0.034, 5.06671994554, 6681.24210705180],
[0.042, 4.67024017441, 15643.68020330980],
[0.036, 0.29140871479, 3723.50895892300],
[0.033, 4.52588149629, 4929.68532198360],
[0.034, 2.74499072890, 6677.70173505060],
[0.030, 1.57743012295, 10419.98628350760],
[0.040, 1.31713176335, 5331.35744374080],
[0.034, 3.03490000148, 6681.20759974740],
[0.031, 1.25306164576, 242.72860397400],
[0.029, 5.44118048011, 10021.85453375160],
[0.029, 3.41037097794, 10021.82002644720],
[0.028, 4.81855060968, 6836.64525283380],
[0.028, 0.72745302325, 6283.07584999140],
[0.030, 3.06267495632, 2281.23049651060],
[0.027, 0.62535799761, 6681.29216370240],
[0.030, 3.56389476096, 8969.56889691100],
[0.032, 5.31078691958, 553.56940284240],
[0.033, 2.00753799963, 5884.92684658320],
[0.027, 1.18001479303, 8955.34180290940],
[0.025, 2.94122791628, 2544.31441988340],
[0.025, 0.17808889827, 9830.38901398780],
[0.031, 5.73384204593, 3339.63210563160],
[0.028, 3.70436008855, 6298.32832117640],
[0.024, 0.07739730466, 10818.13528691580],
[0.027, 1.03401737006, 6681.15754309680],
[0.024, 0.09987383242, 382.89653222320],
[0.027, 0.60053652251, 3553.91152213780],
[0.027, 4.97107900859, 3767.21061757580],
[0.024, 3.36621347824, 8031.09226305840],
[0.026, 4.80509833364, 7632.94325965020],
[0.022, 1.43966107077, 26724.89941359840],
[0.020, 0.36901153144, 398.14900340820],
[0.019, 1.00325306041, 7064.12138562280],
[0.020, 0.19821371186, 6674.11130639880],
[0.018, 1.07169297658, 7210.91581849420],
[0.021, 2.69512140340, 10018.31416175040],
[0.023, 3.25670295081, 5621.84292321040],
[0.018, 0.24542781929, 3981.49003408200],
[0.018, 5.14428605713, 6688.33840040040],
[0.020, 0.97539014916, 6894.52394883760],
[0.024, 4.42156401638, 1748.01641306700],
[0.016, 0.65389503440, 3340.54511639700],
[0.016, 5.28427106012, 3333.49887969900],
],
# R4
[
[19.552, 3.58211650473, 3340.61242669980],
[16.323, 4.05116076923, 6681.22485339960],
[5.848, 4.46383962094, 10021.83728009940],
[1.532, 4.84374321619, 13362.44970679920],
[0.375, 1.50962233608, 3185.19202726560],
[0.339, 5.20684967613, 16703.06213349900],
[0.151, 5.16472931648, 3344.13554504880],
[0.125, 2.19233532803, 3496.03282613400],
[0.148, 0.00000000000, 0.00000000000],
[0.087, 0.10275067375, 3583.34103067380],
[0.070, 5.55303619365, 20043.67456019880],
[0.048, 2.91797786512, 2787.04302385740],
[0.049, 5.57038514830, 6684.74797174860],
[0.057, 1.86867280743, 6525.80445396540],
[0.034, 3.63370917313, 3097.88382272579],
[0.021, 2.30677637991, 1059.38193018920],
[0.021, 4.03682122005, 4136.91043351620],
[0.018, 4.17438755890, 3149.16416058820],
[0.013, 1.97805475719, 155.42039943420],
[0.017, 5.94856414690, 10025.36039844840],
[0.012, 0.51097435253, 6923.95345737360],
[0.012, 3.27945299261, 6127.65545055720],
[0.013, 2.22938285522, 9866.41688066520],
[0.016, 2.64206771227, 4399.99435688900],
[0.013, 2.75813969974, 6836.64525283380],
[0.013, 4.51988349676, 6489.77658728800],
[0.014, 0.76591550754, 3894.18182954220],
[0.011, 5.47381242145, 3738.76143010800],
],
# R5
[
[0.476, 2.47617204701, 6681.22485339960],
[0.268, 2.91510547706, 10021.83728009940],
[0.115, 1.76888962311, 3340.61242669980],
[0.096, 3.31378377179, 13362.44970679920],
[0.048, 6.27457828287, 3185.19202726560],
[0.027, 3.69380877066, 16703.06213349900],
[0.013, 3.72005807206, 3496.03282613400],
[0.012, 4.88179002689, 3583.34103067380],
[0.012, 3.14159265359, 0.00000000000],
],
]
"""This table contains Mars' periodic terms (all of them) from the planetary
theory VSOP87 for the radius vector at the equinox of date (taken from the 'D'
solution). In Meeus' book a shortened version can be found in pages 425-426."""
ORBITAL_ELEM = [
[355.433, 19141.6964471, 0.00031052, 0.000000016], # L
[1.523679342, 0.0, 0.0, 0.0], # a
[0.09340065, 0.000090484, -0.0000000806, -0.00000000025], # e
[1.849726, -0.0006011, 0.00001276, -0.000000007], # i
[49.558093, 0.7720959, 0.00001557, 0.000002267], # Omega
[336.060234, 1.8410449, 0.00013477, 0.000000536] # pie
]
"""This table contains the parameters to compute Mars' orbital elements for
the mean equinox of date. Based in Table 31.A, page 212"""
ORBITAL_ELEM_J2000 = [
[355.433, 19140.2993039, 0.00000262, -0.000000003], # L
[1.849726, -0.0081477, -0.00002255, -0.000000029], # i
[49.558093, -0.295025, -0.00064048, -0.000001964], # Omega
[336.060234, 0.4439016, -0.00017313, 0.000000518] # pie
]
"""This table contains the parameters to compute Mars' orbital elements for
the standard equinox J2000.0. Based on Table 31.B, page 214"""
class Mars(object):
"""
Class Mars models that planet.
"""
@staticmethod
def geometric_heliocentric_position(epoch, tofk5=True):
"""This method computes the geometric heliocentric position of planet
Mars for a given epoch, using the VSOP87 theory.
:param epoch: Epoch to compute Mars position, as an Epoch object
:type epoch: :py:class:`Epoch`
:param tofk5: Whether or not the small correction to convert to the FK5
system will be applied or not
:type tofk5: bool
:returns: A tuple with the heliocentric longitude and latitude (as
:py:class:`Angle` objects), and the radius vector (as a float,
in astronomical units), in that order
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(2018, 10, 27.0)
>>> l, b, r = Mars.geometric_heliocentric_position(epoch)
>>> print(round(l.to_positive(), 4))
2.0015
>>> print(round(b, 4))
-1.3683
>>> print(round(r, 5))
1.39306
"""
return geometric_vsop_pos(epoch, VSOP87_L, VSOP87_B, VSOP87_R, tofk5)
@staticmethod
def apparent_heliocentric_position(epoch):
"""This method computes the apparent heliocentric position of planet
Mars for a given epoch, using the VSOP87 theory.
:param epoch: Epoch to compute Mars position, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple with the heliocentric longitude and latitude (as
:py:class:`Angle` objects), and the radius vector (as a float,
in astronomical units), in that order
:rtype: tuple
:raises: TypeError if input values are of wrong type.
"""
return apparent_vsop_pos(epoch, VSOP87_L, VSOP87_B, VSOP87_R)
@staticmethod
def orbital_elements_mean_equinox(epoch):
"""This method computes the orbital elements of Mars for the mean
equinox of the date for a given epoch.
:param epoch: Epoch to compute orbital elements, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple containing the following six orbital elements:
- Mean longitude of the planet (Angle)
- Semimajor axis of the orbit (float, astronomical units)
- eccentricity of the orbit (float)
- inclination on the plane of the ecliptic (Angle)
- longitude of the ascending node (Angle)
- argument of the perihelion (Angle)
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(2065, 6, 24.0)
>>> l, a, e, i, ome, arg = Mars.orbital_elements_mean_equinox(epoch)
>>> print(round(l, 6))
288.855211
>>> print(round(a, 8))
1.52367934
>>> print(round(e, 7))
0.0934599
>>> print(round(i, 6))
1.849338
>>> print(round(ome, 5))
50.06365
>>> print(round(arg, 6))
287.202108
"""
return orbital_elements(epoch, ORBITAL_ELEM, ORBITAL_ELEM)
@staticmethod
def orbital_elements_j2000(epoch):
"""This method computes the orbital elements of Mars for the
standard equinox J2000.0 for a given epoch.
:param epoch: Epoch to compute orbital elements, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple containing the following six orbital elements:
- Mean longitude of the planet (Angle)
- Semimajor axis of the orbit (float, astronomical units)
- eccentricity of the orbit (float)
- inclination on the plane of the ecliptic (Angle)
- longitude of the ascending node (Angle)
- argument of the perihelion (Angle)
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(2065, 6, 24.0)
>>> l, a, e, i, ome, arg = Mars.orbital_elements_j2000(epoch)
>>> print(round(l, 6))
287.94027
>>> print(round(a, 8))
1.52367934
>>> print(round(e, 7))
0.0934599
>>> print(round(i, 6))
1.844381
>>> print(round(ome, 5))
49.36464
>>> print(round(arg, 6))
286.98617
"""
return orbital_elements(epoch, ORBITAL_ELEM, ORBITAL_ELEM_J2000)
@staticmethod
def geocentric_position(epoch):
"""This method computes the geocentric position of Mars (right
ascension and declination) for the given epoch, as well as the
elongation angle.
:param epoch: Epoch to compute geocentric position, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple containing the right ascension, the declination and
the elongation angle as Angle objects
:rtype: tuple
:raises: TypeError if input value is of wrong type.
>>> epoch = Epoch(1992, 12, 20.0)
>>> ra, dec, elon = Mars.geocentric_position(epoch)
>>> print(ra.ra_str(n_dec=1))
7h 48' 35.4''
>>> print(dec.dms_str(n_dec=1))
24d 35' 33.9''
>>> print(elon.dms_str(n_dec=1))
153d 35' 1.6''
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Compute the heliocentric position of Mars
l, b, r = Mars.geometric_heliocentric_position(epoch, tofk5=False)
# Compute the heliocentric position of the Earth
l0, b0, r0 = Earth.geometric_heliocentric_position(epoch, tofk5=False)
# Convert to radians
lr = l.rad()
br = b.rad()
l0r = l0.rad()
b0r = b0.rad()
# Compute first iteration
x = r * cos(br) * cos(lr) - r0 * cos(b0r) * cos(l0r)
y = r * cos(br) * sin(lr) - r0 * cos(b0r) * sin(l0r)
z = r * sin(br) - r0 * sin(b0r)
delta = sqrt(x * x + y * y + z * z)
tau = 0.0057755183 * delta
# Adjust the epoch for light-time
epoch -= tau
# Compute again Mars coordinates with this correction
l, b, r = Mars.geometric_heliocentric_position(epoch, tofk5=False)
# Compute second iteration
lr = l.rad()
br = b.rad()
x = r * cos(br) * cos(lr) - r0 * cos(b0r) * cos(l0r)
y = r * cos(br) * sin(lr) - r0 * cos(b0r) * sin(l0r)
z = r * sin(br) - r0 * sin(b0r)
# Compute longitude and latitude
lamb = atan2(y, x)
beta = atan2(z, sqrt(x * x + y * y))
# Now, let's compute the aberration effect
t = (epoch - JDE2000) / 36525
e = 0.016708634 + t * (-0.000042037 - t * 0.0000001267)
pie = 102.93735 + t * (1.71946 + t * 0.00046)
pie = radians(pie)
lon = l0 + 180.0
lon = lon.rad()
k = 20.49552 # The constant of aberration
deltal1 = k * (-cos(lon - lamb) + e * cos(pie - lamb)) / cos(beta)
deltab1 = -k * sin(beta) * (sin(lon - lamb) - e * sin(pie - lamb))
deltal1 = Angle(0, 0, deltal1)
deltab1 = Angle(0, 0, deltab1)
# Correction to FK5 system
lamb = Angle(lamb, radians=True)
lamb = lamb.to_positive()
beta = Angle(beta, radians=True)
l_prime = lamb - t * (1.397 + t * 0.00031)
deltal2 = Angle(0, 0, -0.09033)
a = 0.03916 * (cos(l_prime.rad()) + sin(l_prime.rad()))
a = a * tan(b.rad())
deltal2 += Angle(0, 0, a)
deltab2 = 0.03916 * (cos(l_prime.rad()) - sin(l_prime.rad()))
deltab2 = Angle(0, 0, deltab2)
# Apply the corrections
lamb = lamb + deltal1 + deltal2
beta = beta + deltab1 + deltab2
# Correction for nutation
dpsi = nutation_longitude(epoch)
lamb += dpsi
e = true_obliquity(epoch)
ra, dec = ecliptical2equatorial(lamb, beta, e)
# Let's compute the elongation angle
lons, lats, rs = Sun.apparent_geocentric_position(epoch)
lambr = lamb.rad()
lsr = lons.rad()
betar = beta.rad()
elon = acos(cos(betar) * cos(lambr - lsr))
elon = Angle(elon, radians=True)
return ra, dec, elon
@staticmethod
def conjunction(epoch):
"""This method computes the time of the conjunction closest to the
given epoch.
:param epoch: Epoch close to the desired conjunction
:type epoch: :py:class:`Epoch`
:returns: The time when the conjunction happens, as an Epoch
:rtype: :py:class:`Epoch`
:raises: TypeError if input value is of wrong type.
:raises: ValueError if input epoch outside the -2000/4000 range.
>>> epoch = Epoch(1993, 10, 1.0)
>>> conj = Mars.conjunction(epoch)
>>> y, m, d = conj.get_date()
>>> print(y)
1993
>>> print(m)
12
>>> print(round(d, 4))
27.0898
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Check that the input epoch is within valid range
y = epoch.year()
if y < -2000.0 or y > 4000.0:
raise ValueError("Epoch outside the -2000/4000 range")
# Set some specific constants for Mars' conjunction
a = 2451707.414
b = 779.936104
m0 = 157.6047
m1 = 48.705244
k = round((365.2425 * y + 1721060.0 - a) / b)
jde0 = a + k * b
m = m0 + k * m1
m = Angle(m).to_positive()
m = m.rad()
t = (jde0 - 2451545.0) / 36525.0
corr = (0.3102 + t * (-0.0001 + t * 0.00001) +
sin(m) * (9.7273 + t * (-0.0156 + t * 0.00001)) +
cos(m) * (-18.3195 + t * (-0.0467 + t * 0.00009)) +
sin(2.0 * m) * (-1.6488 + t * (-0.0133 + t * 0.00001)) +
cos(2.0 * m) * (-2.6117 + t * (-0.002 + t * 0.00004)) +
sin(3.0 * m) * (-0.6827 + t * (-0.0026 + t * 0.00001)) +
cos(3.0 * m) * (0.0281 + t * (0.0035 + t * 0.00001)) +
sin(4.0 * m) * (-0.0823 + t * (0.0006 + t * 0.00001)) +
cos(4.0 * m) * (0.1584 + t * 0.0013) +
sin(5.0 * m) * (0.027 + t * 0.0005) +
cos(5.0 * m) * (0.0433))
to_return = jde0 + corr
return Epoch(to_return)
@staticmethod
def opposition(epoch):
"""This method computes the time of the opposition closest to the given
epoch.
:param epoch: Epoch close to the desired opposition
:type epoch: :py:class:`Epoch`
:returns: The time when the opposition happens, as an Epoch
:rtype: :py:class:`Epoch`
:raises: TypeError if input value is of wrong type.
:raises: ValueError if input epoch outside the -2000/4000 range.
>>> epoch = Epoch(2729, 10, 1.0)
>>> oppo = Mars.opposition(epoch)
>>> y, m, d = oppo.get_date()
>>> print(y)
2729
>>> print(m)
9
>>> print(round(d, 4))
9.1412
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Check that the input epoch is within valid range
y = epoch.year()
if y < -2000.0 or y > 4000.0:
raise ValueError("Epoch outside the -2000/4000 range")
# Set some specific constants for Mars' opposition
a = 2452097.382
b = 779.936104
m0 = 181.9573
m1 = 48.705244
k = round((365.2425 * y + 1721060.0 - a) / b)
jde0 = a + k * b
m = m0 + k * m1
m = Angle(m).to_positive()
m = m.rad()
t = (jde0 - 2451545.0) / 36525.0
corr = (-0.3088 + t * t * 0.00002 +
sin(m) * (-17.6965 + t * (0.0363 + t * 0.00005)) +
cos(m) * (18.3131 + t * (0.0467 - t * 0.00006)) +
sin(2.0 * m) * (-0.2162 + t * (-0.0198 - t * 0.00001)) +
cos(2.0 * m) * (-4.5028 + t * (-0.0019 + t * 0.00007)) +
sin(3.0 * m) * (0.8987 + t * (0.0058 - t * 0.00002)) +
cos(3.0 * m) * (0.7666 + t * (-0.005 - t * 0.00003)) +
sin(4.0 * m) * (-0.3636 + t * (-0.0001 + t * 0.00002)) +
cos(4.0 * m) * (0.0402 + t * 0.0032) +
sin(5.0 * m) * (0.0737 - t * 0.0008) +
cos(5.0 * m) * (-0.098 - t * 0.0011))
to_return = jde0 + corr
return Epoch(to_return)
@staticmethod
def station_longitude_1(epoch):
"""This method computes the time of the 1st station in longitude
(i.e. when the planet is stationary and begins to move westward -
retrograde - among the starts) closest to the given epoch.
:param epoch: Epoch close to the desired opposition
:type epoch: :py:class:`Epoch`
:returns: Time when the 1st station in longitude happens, as an Epoch
:rtype: :py:class:`Epoch`
:raises: TypeError if input value is of wrong type.
:raises: ValueError if input epoch outside the -2000/4000 range.
>>> epoch = Epoch(1997, 3, 1.0)
>>> sta1 = Mars.station_longitude_1(epoch)
>>> y, m, d = sta1.get_date()
>>> print(y)
1997
>>> print(m)
2
>>> print(round(d, 4))
6.033
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Check that the input epoch is within valid range
y = epoch.year()
if y < -2000.0 or y > 4000.0:
raise ValueError("Epoch outside the -2000/4000 range")
# Set some specific constants for Mars' opposition
a = 2452097.382
b = 779.936104
m0 = 181.9573
m1 = 48.705244
k = round((365.2425 * y + 1721060.0 - a) / b)
jde0 = a + k * b
m = m0 + k * m1
m = Angle(m).to_positive()
m = m.rad()
t = (jde0 - 2451545.0) / 36525.0
corr = (-37.079 + t * (-0.0009 + t * 0.00002) +
sin(m) * (-20.0651 + t * (0.0228 + t * 0.00004)) +
cos(m) * (14.5205 + t * (0.0504 - t * 0.00001)) +
sin(2.0 * m) * (1.1737 - t * 0.0169) +
cos(2.0 * m) * (-4.255 + t * (-0.0075 + t * 0.00008)) +
sin(3.0 * m) * (0.4897 + t * (0.0074 - t * 0.00001)) +
cos(3.0 * m) * (1.1151 + t * (-0.0021 - t * 0.00005)) +
sin(4.0 * m) * (-0.3636 + t * (-0.002 + t * 0.00001)) +
cos(4.0 * m) * (-0.1769 + t * (0.0028 + t * 0.00002)) +
sin(5.0 * m) * (0.1437 - t * 0.0004) +
cos(5.0 * m) * (-0.0383 - t * 0.0016))
to_return = jde0 + corr
return Epoch(to_return)
@staticmethod
def station_longitude_2(epoch):
"""This method computes the time of the 2nd station in longitude
(i.e. when the planet is stationary and begins to move eastward -
prograde - among the starts) closest to the given epoch.
:param epoch: Epoch close to the desired opposition
:type epoch: :py:class:`Epoch`
:returns: Time when the 2nd station in longitude happens, as an Epoch
:rtype: :py:class:`Epoch`
:raises: TypeError if input value is of wrong type.
:raises: ValueError if input epoch outside the -2000/4000 range.
>>> epoch = Epoch(1997, 3, 1.0)
>>> sta2 = Mars.station_longitude_2(epoch)
>>> y, m, d = sta2.get_date()
>>> print(y)
1997
>>> print(m)
4
>>> print(round(d, 4))
27.7553
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Check that the input epoch is within valid range
y = epoch.year()
if y < -2000.0 or y > 4000.0:
raise ValueError("Epoch outside the -2000/4000 range")
# Set some specific constants for Mars' opposition
a = 2452097.382
b = 779.936104
m0 = 181.9573
m1 = 48.705244
k = round((365.2425 * y + 1721060.0 - a) / b)
jde0 = a + k * b
m = m0 + k * m1
m = Angle(m).to_positive()
m = m.rad()
t = (jde0 - 2451545.0) / 36525.0
corr = (36.7191 + t * (0.0016 + t * 0.00003) +
sin(m) * (-12.6163 + t * (0.0417 - t * 0.00001)) +
cos(m) * (20.1218 + t * (0.0379 - t * 0.00006)) +
sin(2.0 * m) * (-1.636 - t * 0.019) +
cos(2.0 * m) * (-3.9657 + t * (0.0045 + t * 0.00007)) +
sin(3.0 * m) * (1.1546 + t * (0.0029 - t * 0.00003)) +
cos(3.0 * m) * (0.2888 + t * (-0.0073 - t * 0.00002)) +
sin(4.0 * m) * (-0.3128 + t * (0.0017 + t * 0.00002)) +
cos(4.0 * m) * (0.2513 + t * (0.0026 - t * 0.00002)) +
sin(5.0 * m) * (-0.0021 - t * 0.0016) +
cos(5.0 * m) * (-0.1497 - t * 0.0006))
to_return = jde0 + corr
return Epoch(to_return)
@staticmethod
def perihelion_aphelion(epoch, perihelion=True):
"""This method computes the time of Perihelion (or Aphelion) closer to
a given epoch.
:param epoch: Epoch close to the desired Perihelion (or Aphelion)
:type epoch: :py:class:`Epoch`
:param peihelion: If True, the epoch of the closest Perihelion is
computed, if False, the epoch of the closest Aphelion is found.
:type bool:
:returns: The epoch of the desired Perihelion (or Aphelion)
:rtype: :py:class:`Epoch`
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(2019, 2, 23.0)
>>> e = Mars.perihelion_aphelion(epoch)
>>> y, m, d, h, mi, s = e.get_full_date()
>>> print(y)
2018
>>> print(m)
9
>>> print(d)
16
>>> print(h)
12
>>> epoch = Epoch(2032, 1, 1.0)
>>> e = Mars.perihelion_aphelion(epoch, perihelion=False)
>>> y, m, d, h, mi, s = e.get_full_date()
>>> print(y)
2032
>>> print(m)
10
>>> print(d)
24
>>> print(h)
22
"""
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input value")
# First approximation
k = 0.53166 * (epoch.year() - 2001.78)
if perihelion:
k = round(k)
else:
k = round(k + 0.5) - 0.5
jde = 2452195.026 + k * (686.9957857 - k * 0.0000001187)
# Compute the epochs half a day before and after
jde_before = jde - 0.5
jde_after = jde + 0.5
# Compute the Sun-Mars distance for each epoch
l, b, r_b = Mars.geometric_heliocentric_position(Epoch(jde_before))
l, b, r = Mars.geometric_heliocentric_position(Epoch(jde))
l, b, r_a = Mars.geometric_heliocentric_position(Epoch(jde_after))
# Call an interpolation object
m = Interpolation([jde_before, jde, jde_after], [r_b, r, r_a])
sol = m.minmax()
return Epoch(sol)
@staticmethod
def passage_nodes(epoch, ascending=True):
"""This function computes the time of passage by the nodes (ascending
or descending) of Mars, nearest to the given epoch.
:param epoch: Epoch closest to the node passage
:type epoch: :py:class:`Epoch`
:param ascending: Whether the time of passage by the ascending (True)
or descending (False) node will be computed
:type ascending: bool
:returns: Tuple containing:
- Time of passage through the node (:py:class:`Epoch`)
- Radius vector when passing through the node (in AU, float)
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(2019, 1, 1)
>>> time, r = Mars.passage_nodes(epoch)
>>> year, month, day = time.get_date()
>>> print(year)
2019
>>> print(month)
1
>>> print(round(day, 1))
15.2
>>> print(round(r, 4))
1.4709
"""
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input types")
# Get the orbital parameters
l, a, e, i, ome, arg = Mars.orbital_elements_mean_equinox(epoch)
# Compute the time of passage through perihelion
t = Mars.perihelion_aphelion(epoch)
# Get the time of passage through the node
time, r = passage_nodes_elliptic(arg, e, a, t, ascending)
return time, r
@staticmethod
def magnitude(sun_dist, earth_dist, phase_angle):
"""This function computes the approximate magnitude of Mars.
:param sun_dist: Distance from Mars to the Sun, in Astronomical Units
:type sun_dist: float
:param earth_dist: Distance from Mars to Earth, in Astronomical Units
:type earth_dist: float
:param phase_angle: Mars phase angle
:type phase_angle: float, :py:class:`Angle`
:returns: Mars' magnitude
:rtype: float
:raises: TypeError if input values are of wrong type.
"""
if not (isinstance(sun_dist, float) and isinstance(earth_dist, float)
and isinstance(phase_angle, (float, Angle))):
raise TypeError("Invalid input types")
i = float(phase_angle)
m = -1.3 + 5.0 * log10(sun_dist * earth_dist) + 0.01486 * i
return round(m, 1)
def main():
# Let's define a small helper function
def print_me(msg, val):
print("{}: {}".format(msg, val))
# Let's show some uses of Mars class
print("\n" + 35 * "*")
print("*** Use of Mars class")
print(35 * "*" + "\n")
# Let's now compute the heliocentric position for a given epoch
epoch = Epoch(2018, 10, 27.0)
lon, lat, r = Mars.geometric_heliocentric_position(epoch)
print_me("Geometric Heliocentric Longitude", lon.to_positive())
print_me("Geometric Heliocentric Latitude", lat)
print_me("Radius vector", r)
print("")
# Compute the geocentric position for 1992/12/20:
epoch = Epoch(1992, 12, 20.0)
ra, dec, elon = Mars.geocentric_position(epoch)
print_me("Right ascension", ra.ra_str(n_dec=1))
print_me("Declination", dec.dms_str(n_dec=1))
print_me("Elongation", elon.dms_str(n_dec=1))
print("")
# Print mean orbital elements for Mars at 2065.6.24
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Mars.orbital_elements_mean_equinox(epoch)
print_me("Mean longitude of the planet", round(l, 6)) # 288.855211
print_me("Semimajor axis of the orbit (UA)", round(a, 8)) # 1.52367934
print_me("Eccentricity of the orbit", round(e, 7)) # 0.0934599
print_me("Inclination on plane of the ecliptic", round(i, 6)) # 1.849338
print_me("Longitude of the ascending node", round(ome, 5)) # 50.06365
print_me("Argument of the perihelion", round(arg, 6)) # 287.202108
print("")
# Compute the time of the conjunction close to 1993/10/1
epoch = Epoch(1993, 10, 1.0)
conj = Mars.conjunction(epoch)
y, m, d = conj.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Conjunction date", date)
# Compute the time of the opposition close to 2729/10/1
epoch = Epoch(2729, 10, 1.0)
oppo = Mars.opposition(epoch)
y, m, d = oppo.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Opposition date", date)
print("")
# Compute the time of the station in longitude #1 close to 1997/3/1
epoch = Epoch(1997, 3, 1.0)
sta1 = Mars.station_longitude_1(epoch)
y, m, d = sta1.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Date of station in longitude #1", date)
# Compute the time of the station in longitude #2 close to 1997/3/1
epoch = Epoch(1997, 3, 1.0)
sta2 = Mars.station_longitude_2(epoch)
y, m, d = sta2.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Date of station in longitude #2", date)
print("")
# Find the epoch of the Aphelion closer to 2032/1/1
epoch = Epoch(2032, 1, 1.0)
e = Mars.perihelion_aphelion(epoch, perihelion=False)
y, m, d, h, mi, s = e.get_full_date()
peri = str(y) + '/' + str(m) + '/' + str(d) + ' at ' + str(h) + ' hours'
print_me("The Aphelion closest to 2032/1/1 will happen on", peri)
print("")
# Compute the time of passage through an ascending node
epoch = Epoch(2019, 1, 1)
time, r = Mars.passage_nodes(epoch)
y, m, d = time.get_date()
d = round(d, 1)
print("Time of passage through ascending node: {}/{}/{}".format(y, m, d))
# 2019/1/15.2
print("Radius vector at ascending node: {}".format(round(r, 4))) # 1.4709
if __name__ == "__main__":
main()
pymeeus-0.3.6/pymeeus/Mercury.py 0000664 0000000 0000000 00001360526 13555455377 0016736 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from math import sin, cos, tan, acos, atan2, sqrt, radians, log10
from pymeeus.Angle import Angle
from pymeeus.Epoch import Epoch, JDE2000
from pymeeus.Interpolation import Interpolation
from pymeeus.Coordinates import (
geometric_vsop_pos, apparent_vsop_pos, orbital_elements,
nutation_longitude, true_obliquity, ecliptical2equatorial,
passage_nodes_elliptic
)
from pymeeus.Earth import Earth
from pymeeus.Sun import Sun
"""
.. module:: Mercury
:synopsis: Class to model Mercury planet
:license: GNU Lesser General Public License v3 (LGPLv3)
.. moduleauthor:: Dagoberto Salazar
"""
VSOP87_L = [
# L0
[
[440250710.144, 0.00000000000, 0.00000000000],
[40989414.976, 1.48302034194, 26087.90314157420],
[5046294.199, 4.47785489540, 52175.80628314840],
[855346.843, 1.16520322351, 78263.70942472259],
[165590.362, 4.11969163181, 104351.61256629678],
[34561.897, 0.77930765817, 130439.51570787099],
[7583.476, 3.71348400510, 156527.41884944518],
[3559.740, 1.51202669419, 1109.37855209340],
[1726.012, 0.35832239908, 182615.32199101939],
[1803.463, 4.10333178410, 5661.33204915220],
[1364.682, 4.59918318745, 27197.28169366760],
[1589.923, 2.99510417815, 25028.52121138500],
[1017.332, 0.88031439040, 31749.23519072640],
[714.182, 1.54144865265, 24978.52458948080],
[643.759, 5.30266110787, 21535.94964451540],
[404.200, 3.28228847025, 208703.22513259359],
[352.441, 5.24156297101, 20426.57109242200],
[343.313, 5.76531885335, 955.59974160860],
[339.214, 5.86327765000, 25558.21217647960],
[451.137, 6.04989275289, 51116.42435295920],
[325.335, 1.33674334780, 53285.18483524180],
[259.587, 0.98732428184, 4551.95349705880],
[345.212, 2.79211901539, 15874.61759536320],
[272.947, 2.49451163975, 529.69096509460],
[234.830, 0.26672118900, 11322.66409830440],
[238.793, 0.11343953378, 1059.38193018920],
[264.336, 3.91705094013, 57837.13833230060],
[216.645, 0.65987207348, 13521.75144159140],
[183.359, 2.62878670784, 27043.50288318280],
[175.965, 4.53636829858, 51066.42773105500],
[181.629, 2.43413502466, 25661.30495069820],
[208.995, 2.09178234008, 47623.85278608960],
[172.643, 2.45200164173, 24498.83024629040],
[142.316, 3.36003948842, 37410.56723987860],
[137.942, 0.29098447849, 10213.28554621100],
[118.233, 2.78149786369, 77204.32749453338],
[96.860, 6.20398202740, 234791.12827416777],
[125.219, 3.72079804425, 39609.65458316560],
[86.819, 2.64219349385, 51646.11531805379],
[86.723, 1.95953042650, 46514.47423399620],
[88.329, 5.41338795963, 26617.59410666880],
[106.422, 4.20572116254, 19804.82729158280],
[89.987, 5.85243631094, 41962.52073693740],
[84.971, 4.33100364958, 79373.08797681599],
[69.247, 4.19446437496, 19.66976089979],
[63.463, 3.14700877722, 7238.67559160000],
[68.493, 0.63424819267, 83925.04147387479],
[69.729, 3.57201709671, 25132.30339996560],
[59.481, 2.74692752000, 16983.99614745660],
[64.830, 0.04762925810, 33326.57873317420],
[55.376, 4.05312663019, 30639.85663863300],
[54.442, 3.14331542453, 27147.28507176339],
[47.560, 5.49722099211, 3.88133535800],
[49.567, 3.98985863874, 6770.71060124560],
[56.531, 5.11920557675, 73711.75592766379],
[41.764, 5.64185159566, 53131.40602475700],
[51.458, 5.47786463494, 50586.73338786459],
[44.744, 1.22366857463, 77154.33087262919],
[41.882, 5.19309298528, 6283.07584999140],
[38.045, 2.43117327523, 12566.15169998280],
[35.627, 0.81390126585, 32858.61374281979],
[48.007, 5.49260554912, 51749.20809227239],
[35.392, 3.36964859355, 36301.18868778519],
[33.951, 2.78618091049, 14765.23904326980],
[30.560, 5.84045074182, 43071.89928903080],
[35.964, 1.42380838630, 2218.75710418680],
[34.044, 0.47470299167, 65697.55772473979],
[30.800, 5.77017310191, 103292.23063610759],
[28.496, 0.65048992658, 426.59819087600],
[26.215, 5.24158618719, 22645.32819660879],
[26.253, 0.64807043102, 1589.07289528380],
[29.538, 0.69771244088, 213.29909543800],
[27.504, 0.98010127839, 45892.73043315699],
[22.347, 5.65335125838, 77734.01845962799],
[22.047, 4.93398225193, 72602.37737557039],
[22.275, 2.17909842576, 52705.49724824299],
[24.252, 4.39994170609, 7.11354700080],
[26.751, 1.06145361792, 3442.57494496540],
[23.656, 2.84168536986, 260879.03141574195],
[22.908, 2.58462026514, 68050.42387851159],
[27.086, 0.08501738669, 63498.47038145279],
[22.247, 3.22418265191, 25448.00585526019],
[17.803, 3.61202297483, 110012.94461544899],
[22.407, 1.02520094825, 105460.99111839019],
[17.576, 4.71742326981, 25874.60404613620],
[18.586, 4.52709871258, 28306.66024576099],
[14.176, 6.12394176563, 53235.18821333759],
[14.186, 5.14246797066, 26068.23338067440],
[17.244, 0.28394746813, 51220.20654153979],
[17.176, 3.26084092971, 153.77881048480],
[14.938, 1.83542009339, 99799.65906923798],
[13.387, 0.76564655407, 56727.75978020720],
[13.978, 2.30193139916, 76674.63652943878],
[14.428, 0.96646356501, 26107.57290247399],
[11.990, 6.20492907598, 18849.22754997420],
[14.381, 1.90956715654, 23969.13928119580],
[11.233, 2.04817126136, 32370.97899156560],
[13.392, 4.51750784605, 26080.78959457339],
[11.632, 2.38496860260, 79219.30916633119],
[12.412, 2.22280944169, 77837.11123384659],
[9.950, 2.04594448880, 48733.23133818299],
[9.803, 2.26706433546, 26091.78447693220],
[9.362, 5.44291958209, 38654.05484155699],
[9.747, 3.83976857418, 26084.02180621620],
[9.264, 4.02987000812, 467.96499035440],
[8.961, 0.11062526114, 62389.09182935939],
[11.543, 4.17789167759, 103242.23401420339],
[11.146, 3.78292300417, 26301.20223701220],
[9.677, 2.98527809776, 59414.48187474840],
[8.977, 3.47888073089, 91785.46086631398],
[9.664, 5.77941968495, 25938.33994443960],
[8.855, 2.84672636028, 25035.63475838580],
[8.181, 5.77857196635, 40853.14218484400],
[8.033, 2.45692824195, 129380.13377768178],
[8.343, 5.34499871294, 19317.19254032860],
[7.425, 4.71160330390, 6.62855890001],
[9.001, 6.23396256413, 25021.40766438420],
[8.126, 1.12294634635, 26095.01668857500],
[6.568, 3.66248946629, 26514.50133245020],
[7.038, 3.99035923761, 71980.63357473118],
[6.956, 1.62821260299, 23869.14603738740],
[7.595, 0.18334396433, 12432.04265039780],
[6.061, 3.67044794062, 27676.97603685800],
[5.896, 5.57171141866, 94138.32702008578],
[5.716, 5.18204203484, 78793.40038981718],
[5.855, 2.14311779301, 20760.42703319140],
[5.681, 1.60727624525, 98690.28051714458],
[5.788, 2.35467492390, 103821.92160120218],
[5.121, 3.77832929907, 58946.51688439399],
[5.873, 5.76210244486, 286966.93455731618],
[5.858, 6.12538452806, 26011.63707029860],
[5.215, 3.29186833997, 38519.94579197200],
[6.000, 0.00057044073, 51535.90899683439],
[4.647, 0.29020584575, 136100.84775702318],
[5.787, 4.44783057272, 19406.67828817460],
[5.908, 4.12195491631, 29530.47808653960],
[5.918, 3.98930701135, 131548.89425996438],
[5.728, 3.02314979708, 89586.37352302698],
[3.928, 4.81437933690, 125887.56221081219],
[3.929, 2.48449041501, 69159.80243060499],
[3.681, 2.80180999964, 79323.09135491178],
[4.498, 1.50325539137, 51962.50718771040],
[3.687, 5.33717753698, 102762.53967101299],
[3.497, 1.85400531491, 52156.13652224860],
[3.867, 1.25354714671, 54394.56338733519],
[4.459, 4.88911997687, 50057.04242277000],
[3.396, 3.73870967348, 82815.66292178139],
[3.525, 6.07665337319, 25934.12433108940],
[3.492, 1.28206984744, 52168.69273614759],
[3.411, 6.13976263434, 639.89728631400],
[4.395, 3.25475914760, 77308.10968311399],
[2.990, 5.27323635392, 46848.33017476560],
[3.218, 5.20938751579, 103925.01437542078],
[2.899, 5.08451495112, 58458.88213313979],
[3.708, 0.02713701028, 26241.68195205900],
[2.991, 2.92278339368, 44937.13069154840],
[3.177, 0.05753403864, 22747.29071487440],
[3.163, 5.38713552769, 105307.21230790539],
[3.556, 3.96231142071, 52195.47604404819],
[2.787, 0.54704419913, 52389.10537858640],
[2.458, 1.14904830408, 2333.19639287200],
[2.492, 5.24922078791, 25668.41849769900],
[2.409, 2.14208355028, 64741.95798313119],
[2.509, 0.61934630416, 85034.42002596818],
[2.416, 5.26204437192, 52179.68761850640],
[2.296, 3.09900451546, 88476.99497093359],
[2.357, 0.17742385045, 117873.36400788819],
[3.012, 0.83689268367, 129330.13715577759],
[2.421, 3.95913346049, 49.99662190420],
[2.197, 2.56129546358, 3340.61242669980],
[2.402, 0.55121112633, 52171.92494779040],
[2.106, 5.41271503337, 155468.03691925600],
[2.566, 3.00606194044, 51109.31080595839],
[2.392, 0.17898534184, 103.09277421860],
[2.737, 1.08192567668, 632.78373931320],
[2.523, 5.90356438675, 51123.53789995999],
[2.098, 2.47132069140, 66941.04532641819],
[2.003, 3.75422326828, 16066.06586147480],
[2.188, 1.18654376903, 2118.76386037840],
[2.593, 2.55122032446, 25654.19140369739],
[2.559, 1.18101453315, 45494.58142974879],
[1.918, 0.79899605678, 26555.86813192860],
[1.819, 0.69178943674, 98068.53671630539],
[2.471, 2.55057179214, 52026.24308601380],
[1.704, 0.36723577740, 52602.40447402440],
[2.129, 2.66251948472, 18093.37469954999],
[1.715, 4.62177464710, 49957.04917896160],
[1.916, 5.83726462050, 85502.38501632259],
[1.976, 3.57365896777, 24395.73747207180],
[1.581, 0.36987184257, 53764.87917843220],
[1.589, 1.33531241950, 114.43928868521],
[2.042, 2.05385564074, 45405.09568190280],
[1.539, 2.25468618977, 120226.23016165999],
[1.525, 1.48231179113, 26094.53170047421],
[2.055, 4.16315644175, 52182.91983014920],
[1.829, 0.38846130335, 522.57741809380],
[2.105, 4.04128506778, 25234.70675982219],
[1.480, 1.87644604156, 104881.30353139139],
[1.460, 1.01790185557, 25455.11940226100],
[1.453, 0.34125222190, 1052.26838318840],
[1.449, 3.39742463494, 24505.94379329119],
[1.480, 4.55094492082, 124778.18365871879],
[1.481, 3.62242942443, 149.56319713460],
[1.516, 5.32327802440, 129909.82474277639],
[1.594, 3.00887674765, 77623.81213840858],
[1.927, 3.90378108197, 74.78159856730],
[1.373, 4.32419381493, 80482.46652890938],
[1.419, 3.90109225299, 7880.08915333899],
[1.525, 4.62451312025, 26081.27458267419],
[1.567, 0.65981123945, 157636.79740153858],
[1.725, 4.40112128069, 316.39186965660],
[1.263, 4.96320745251, 74821.13447975718],
[1.472, 5.56006656586, 95247.70557217918],
[1.315, 1.83254115004, 76144.94556434419],
[1.439, 0.83286166370, 55618.38122811380],
[1.355, 3.15837061982, 1066.49547719000],
[1.224, 3.24032680768, 162188.75089859738],
[1.390, 5.13745290383, 419.48464387520],
[1.310, 5.28250636680, 25619.93815121980],
[1.477, 2.40227455027, 313054.83769889036],
[1.252, 5.65227031449, 26013.12154300690],
[1.143, 0.38707356937, 42153.96900304900],
[1.082, 2.56550728704, 26190.99591579279],
[1.493, 2.89973504649, 52099.54021187280],
[1.468, 5.71507791250, 24491.71669928959],
[1.034, 1.49544294440, 151975.46535238638],
[1.314, 5.91505351846, 115674.27666460119],
[1.065, 3.61081835123, 206.18554843720],
[1.053, 5.17996026320, 23754.70674870219],
[0.964, 2.05264296353, 128850.44281258718],
[1.032, 3.39114761061, 25551.09862947879],
[1.065, 3.38225524038, 25863.55834587229],
[1.153, 5.76498787983, 44181.27784112419],
[0.960, 5.74774250678, 105410.99449648599],
[1.137, 6.20919445956, 103396.01282468818],
[0.914, 4.28855434634, 78256.59587772179],
[0.917, 3.27543718918, 76.26607127560],
[0.892, 4.82397571946, 78244.03966382280],
[0.976, 4.86442946387, 25131.61398560359],
[1.086, 0.73424633411, 33967.99229491319],
[1.162, 4.52128441898, 78050.41032928458],
[0.868, 2.78848256837, 52022.02747266360],
[0.943, 4.09736853870, 26720.68688088739],
[0.973, 4.54018615747, 24925.42843716640],
[0.845, 5.05414707498, 25977.69682035479],
[0.841, 1.89412486884, 130012.91751699499],
[0.920, 3.02504494542, 52329.58509363319],
[0.814, 3.15330668609, 48835.19385644859],
[0.876, 0.41318857467, 108903.56606335558],
[0.818, 1.61477924287, 40565.25432477420],
[1.074, 1.37296024678, 23439.44831610119],
[0.812, 2.82156935191, 25984.81036735560],
[0.775, 2.86911510061, 26727.80042788820],
[0.755, 5.44067645183, 24609.03656750980],
[0.921, 4.72557901430, 14477.35118320000],
[0.914, 4.70826349904, 6681.22485339960],
[0.749, 1.80279541026, 84546.78527471398],
[0.907, 0.64974692551, 78283.37918562238],
[0.854, 5.05058435764, 307.55762096960],
[0.766, 5.89942349817, 71025.03383312259],
[0.713, 3.55192633098, 78477.00852016058],
[0.718, 1.85061030321, 100909.03762133139],
[0.858, 5.43959629234, 536.80451209540],
[0.794, 3.77076518156, 155418.04029735178],
[0.848, 2.08790526575, 131395.11544947958],
[0.622, 3.14583461131, 143961.26714946239],
[0.623, 4.58424507963, 9103.90699411760],
[0.623, 5.10535773746, 90829.86112470538],
[0.706, 4.19554833142, 71582.48457132299],
[0.738, 0.15942404038, 24712.12934172840],
[0.621, 1.32834420218, 3328.13565628019],
[0.714, 1.88052234658, 2199.08734328700],
[0.678, 6.01392909264, 77197.21394753258],
[0.650, 5.51227348491, 29428.51556827400],
[0.658, 2.03299256393, 51756.32163927320],
[0.593, 6.06807779961, 114564.89811250778],
[0.666, 0.70706334861, 26162.68474014150],
[0.597, 5.15771478155, 333.85594076940],
[0.616, 1.94902289932, 78267.59076008058],
[0.774, 2.84206828086, 13655.86049117640],
[0.698, 5.60747842278, 51742.09454527159],
[0.557, 2.07529602574, 181555.94006083018],
[0.547, 3.17747066781, 90695.75207512038],
[0.541, 4.20816350943, 28421.09953444620],
[0.639, 5.55908134374, 78114.14622758799],
[0.529, 3.60209913515, 1911.19948321720],
[0.620, 4.87816246784, 25771.51127191760],
[0.569, 3.56250435364, 111122.32316754239],
[0.510, 4.20331823730, 28206.66700195260],
[0.539, 5.42639519551, 93028.94846799239],
[0.659, 3.45407389663, 26610.48055966799],
[0.613, 3.52133069078, 78259.82808936459],
[0.594, 1.16299449628, 26404.29501123080],
[0.576, 0.81617266730, 51322.60990139639],
[0.497, 5.37540191935, 26037.90651966999],
[0.663, 2.63246066036, 77211.44104153418],
[0.487, 1.96691664683, 26507.38778544939],
[0.474, 3.65243004234, 124156.43985787958],
[0.550, 5.81040334783, 1731.12235293260],
[0.472, 3.79351701945, 52643.77127350280],
[0.467, 4.50175920356, 110.20632121940],
[0.593, 3.04818872924, 12725.45343477500],
[0.552, 0.68733268561, 26137.89976347840],
[0.525, 0.87988157932, 78270.82297172339],
[0.600, 0.33902061394, 50483.64061364600],
[0.443, 3.33385484899, 78690.30761559859],
[0.441, 1.31034191525, 76044.95232053580],
[0.588, 2.37074288411, 121335.60871375339],
[0.427, 0.14810668871, 50593.84693486539],
[0.413, 3.33346664325, 79852.78232000639],
[0.403, 5.20705536949, 146314.13330323418],
[0.524, 5.02853960393, 71492.99882347698],
[0.418, 5.99113644745, 103711.71527998279],
[0.388, 4.44142037364, 29416.03879785439],
[0.390, 4.02400157761, 51543.02254383520],
[0.442, 2.37158178341, 111590.28815789679],
[0.375, 4.47565026408, 52182.43484204840],
[0.387, 4.83640155029, 130969.20667296558],
[0.390, 1.20415517897, 150866.08680029298],
[0.416, 3.60399872842, 183724.70054311279],
[0.407, 0.52938530500, 433.71173787680],
[0.439, 2.45401498182, 50579.61984086379],
[0.412, 0.50186886239, 27999.10262479140],
[0.391, 0.68517124695, 134.10904958500],
[0.398, 1.99594942261, 155997.72788435058],
[0.346, 3.40308148193, 27140.17152476259],
[0.422, 5.83293462268, 38813.35657634920],
[0.342, 0.83679406818, 25764.39772491679],
[0.368, 3.80659045949, 81706.28436968799],
[0.355, 1.99286044781, 1089.70879119360],
[0.462, 3.33451630664, 25440.89230825939],
[0.330, 0.37013669364, 26237.46633870879],
[0.330, 6.19331560111, 188276.65404017159],
[0.407, 2.17141736652, 641.41356173899],
[0.321, 5.02532002650, 102232.84870591838],
[0.330, 5.53086966080, 10021.83728009940],
[0.336, 2.49163362426, 25344.91308104160],
[0.381, 5.90928705861, 78187.44335344699],
[0.316, 2.42532836233, 52101.02468458109],
[0.331, 4.38897286971, 26202.34243025941],
[0.401, 1.99380933624, 49842.60989027639],
[0.422, 0.46556669940, 1.48447270830],
[0.310, 6.18819197073, 27154.39861876420],
[0.302, 4.68575942793, 25565.32572348040],
[0.296, 1.70818196194, 25973.46385288896],
[0.375, 5.31085497894, 339142.74084046460],
[0.329, 5.32609571265, 853.19638175200],
[0.299, 5.81101886868, 1692.16566950240],
[0.378, 1.33745475273, 52169.17772424839],
[0.293, 4.43993559835, 579.68758699880],
[0.276, 4.45147472194, 178063.36849396059],
[0.283, 6.19860164015, 25881.71759313700],
[0.315, 1.95956643364, 51707.84129279399],
[0.337, 4.21457120705, 34282.17847478280],
[0.334, 3.00354887525, 23866.04650697719],
[0.268, 1.34437493520, 35191.81013569180],
[0.306, 5.94445231410, 64607.84893354619],
[0.283, 0.96234220412, 1639.06951718800],
[0.287, 1.28099267608, 51013.33157874059],
[0.269, 0.55818949975, 3462.24470586520],
[0.274, 5.61047457506, 52278.89905736699],
[0.352, 0.49071599781, 26294.08869001139],
[0.358, 1.23360990528, 1223.81784077861],
[0.343, 4.29256939583, 49527.35145767539],
[0.255, 5.03019684368, 154938.34595416137],
[0.297, 2.87172991159, 129483.91596626239],
[0.252, 0.09044630682, 13541.42120249119],
[0.301, 1.22789205624, 104138.31347085879],
[0.274, 3.67792692372, 68241.87214462319],
[0.321, 2.49914111769, 141762.17980617538],
[0.290, 1.02241335068, 8194.27533320860],
[0.240, 0.99284920524, 104344.49901929598],
[0.278, 0.53151576617, 949.17560896980],
[0.249, 2.39787134441, 131498.89763806018],
[0.274, 2.09560778105, 26624.70765366959],
[0.240, 3.14668052954, 23976.25282819660],
[0.239, 0.85198559240, 52808.59002246159],
[0.266, 0.18324709351, 2168.76048228260],
[0.226, 4.85701184113, 156100.82065856917],
[0.228, 2.19799888298, 50696.93970908399],
[0.231, 1.49522976308, 104331.94280539699],
[0.245, 4.68642861263, 5327.47610838280],
[0.281, 1.63579312063, 51219.51712717779],
[0.219, 5.75893553103, 78109.93061423779],
[0.233, 5.99853185125, 78417.48823520739],
[0.227, 6.02396548637, 1581.95934828300],
[0.218, 5.42819370607, 18207.81398823521],
[0.220, 3.72017611382, 7994.52844202420],
[0.271, 0.20833686608, 51639.00177105299],
[0.244, 2.33639123341, 25138.72753260440],
[0.254, 5.46143104532, 621.74380083920],
[0.209, 0.01908528531, 26164.16921284980],
[0.208, 6.18336687237, 74923.09699802278],
[0.274, 0.15423898790, 51951.46148744649],
[0.212, 1.95557421945, 735.87651353180],
[0.236, 4.28368070837, 24079.34560241519],
[0.206, 5.86972946528, 52072.71350892979],
[0.201, 1.61226877070, 25241.82030682300],
[0.235, 3.60446251088, 104371.28232719658],
[0.229, 3.66187363672, 1596.18644228460],
[0.198, 5.85298126352, 52815.70356946240],
[0.220, 1.39541547612, 32769.12799497380],
[0.229, 3.36265291664, 134991.46920492980],
[0.192, 1.03510456065, 25867.49049913539],
[0.199, 4.78126289270, 110634.68841628819],
[0.191, 4.24110997660, 14.22709400160],
[0.210, 5.44710702022, 147423.51185532758],
[0.229, 0.76266531820, 220.41264243880],
[0.185, 0.24752751791, 104564.91166173479],
[0.211, 1.81826670820, 52065.59996192899],
[0.182, 2.31946183497, 9384.84100807520],
[0.207, 0.77329376239, 917.93028598180],
[0.190, 0.91354241432, 97670.38771289718],
[0.184, 3.32299343484, 30.32686100440],
[0.209, 0.41150840785, 181505.94343892598],
[0.225, 5.06158596891, 157483.01859105378],
[0.184, 2.71529935065, 103285.11708910679],
[0.191, 1.96528922573, 314.18617986960],
[0.182, 4.30249539122, 1884.90116341740],
[0.192, 4.82097876700, 126996.94076290558],
[0.188, 0.98150502881, 26049.77010593640],
[0.184, 0.67028697590, 106570.36967048359],
[0.167, 5.71084692524, 96357.08412427259],
[0.184, 2.33710037381, 77829.99768684579],
[0.201, 2.57648669602, 97112.93697469679],
[0.176, 3.20466399658, 39629.32434406539],
[0.169, 2.30516098722, 101.96251826560],
[0.163, 6.11134623776, 170049.17029103660],
[0.195, 5.18276528052, 99024.13645791399],
[0.165, 6.00583599609, 224.34479570190],
[0.167, 3.75645242744, 52250.58788171570],
[0.172, 4.28474997892, 25780.34552060460],
[0.216, 3.20425967752, 50800.03248330259],
[0.157, 1.61810971101, 24815.22211594700],
[0.163, 1.77694235279, 116917.76426627958],
[0.156, 1.94644057334, 26421.75908234360],
[0.164, 3.81487619480, 77410.51304297059],
[0.158, 4.95279229085, 35472.74414964940],
[0.150, 5.03580916221, 207643.84320240439],
[0.208, 2.59008696784, 27819.02549450680],
[0.180, 5.62518388437, 103299.34418310839],
[0.165, 2.25945126594, 104202.04936916218],
[0.148, 3.94625893131, 24601.92302050899],
[0.149, 4.49766341520, 956.28915597060],
[0.157, 1.62995234425, 51859.41441349179],
[0.166, 0.21228205353, 52698.38370124219],
[0.151, 2.75061488385, 140652.80125408198],
[0.161, 1.72952408524, 2648.45482547300],
[0.169, 2.61298183547, 26086.41866886590],
[0.170, 0.78905798191, 72936.23331633979],
[0.177, 5.06009562295, 77844.22478084739],
[0.142, 2.61984020842, 24292.64469785319],
[0.150, 4.93124201089, 28286.99048486120],
[0.175, 5.79468120941, 39743.76363275060],
[0.163, 3.37032055762, 76571.54375522019],
[0.150, 1.79967850988, 3.93215326310],
[0.159, 4.90360163470, 104355.49390165479],
[0.149, 4.20242344258, 52492.19815280499],
[0.146, 1.31203861446, 26198.10946279360],
[0.162, 2.25640253895, 55516.41870984820],
[0.178, 1.81205070225, 26395.46076254379],
[0.132, 0.90685777764, 54294.57014352679],
[0.142, 1.70641940798, 92741.06060792258],
[0.138, 0.64298043300, 86143.79857806159],
[0.125, 0.32592941945, 150244.34299945380],
[0.131, 0.91963253985, 54509.00267602040],
[0.144, 4.17124383409, 24822.33566294780],
[0.135, 3.86821614788, 104358.72611329758],
[0.159, 4.72016316702, 4083.98850670440],
[0.122, 2.08133407370, 52125.80966124419],
[0.141, 2.08765477131, 119116.85160956658],
[0.122, 5.01211051965, 52595.29092702359],
[0.149, 0.38744219837, 487.63475125420],
[0.121, 3.30215904574, 1263.15736257819],
[0.138, 1.04671626049, 1083.08023229360],
[0.157, 5.17018916622, 23962.02573419499],
[0.163, 3.26593103179, 26089.38761428249],
[0.130, 0.56779128434, 25936.85547173129],
[0.160, 0.19385295261, 104347.73123093879],
[0.116, 2.69818513122, 129799.61842155698],
[0.113, 4.26323214388, 102132.85546210999],
[0.115, 1.35196569742, 75615.25459924959],
[0.135, 1.70032124143, 97580.90196505119],
[0.121, 0.20372434486, 38.13303563780],
[0.118, 0.49434134122, 78731.67441507700],
[0.119, 5.54562725890, 76667.52298243798],
[0.133, 4.67446352847, 2014.98167179780],
[0.126, 6.24694138116, 636.99627202420],
[0.120, 3.20442216756, 76681.75007643958],
[0.125, 3.65255045892, 29550.14784743939],
[0.118, 5.26052652437, 26729.31670331319],
[0.113, 6.26688921593, 104778.21075717278],
[0.134, 1.56524046563, 25939.82441714789],
[0.114, 3.52566774494, 24356.78078864160],
[0.120, 1.72596426067, 22759.76748529401],
[0.145, 3.61638421570, 52225.80290505260],
[0.107, 5.72285490406, 24176.70365835700],
[0.112, 0.28882268029, 209812.60368468694],
[0.121, 0.11234419157, 51528.79544983359],
[0.120, 4.17769370414, 25754.04720080480],
[0.105, 1.88137155058, 172402.03644480839],
[0.106, 6.27133163237, 105940.68546158058],
[0.104, 3.85061395100, 1478.86657406440],
[0.108, 2.96292200098, 1375.77379984580],
[0.132, 4.60210460022, 11610.55195837420],
[0.114, 5.20612177122, 137678.19129947099],
[0.107, 0.00557717441, 13362.44970679920],
[0.101, 0.73934409276, 77630.92568540938],
[0.097, 1.19155686364, 78270.33798362259],
[0.100, 0.25974575144, 160.40736938481],
[0.105, 0.03739853961, 180.07713028460],
[0.114, 5.13609864972, 1135.67687189320],
[0.101, 4.14323258440, 176953.98994186718],
[0.095, 0.49488385937, 107794.18751126219],
[0.095, 1.54869651436, 25973.50403466079],
[0.100, 1.51228088427, 157057.10981453978],
[0.106, 4.57237246234, 26073.67604757259],
[0.094, 3.53697338405, 26521.61487945100],
[0.091, 3.13017596287, 64901.25971792339],
[0.088, 5.20234335205, 1485.29070670320],
[0.116, 5.96693811684, 24182.43837663380],
[0.099, 2.12002549240, 66653.15746634839],
[0.105, 4.04764282865, 27726.97265876220],
[0.094, 2.62198655221, 104275.34649502118],
[0.106, 2.06629215696, 125112.03959948818],
[0.088, 3.88240703310, 51852.30086649099],
[0.085, 2.83285123847, 214364.55718174577],
[0.083, 5.44599307753, 78188.92782615528],
[0.083, 3.35497157412, 52325.36948028299],
[0.104, 4.95116515346, 182085.63102592478],
[0.110, 6.04814955763, 49953.94964855139],
[0.093, 1.00014028766, 9745.32055585660],
[0.081, 4.03821735964, 132658.27281205778],
[0.084, 0.11234538521, 53228.07466633679],
[0.094, 5.55962830464, 51432.81622261579],
[0.080, 6.13595673095, 137210.22630911658],
[0.080, 2.72256616799, 25042.74830538660],
[0.080, 4.29137248560, 77101.23472031478],
[0.085, 0.97100574775, 25788.77674730500],
[0.082, 1.89501710792, 128320.75184749259],
[0.077, 1.16185579398, 204151.27163553477],
[0.092, 4.44154858356, 26091.83529483729],
[0.078, 3.73813140716, 26222.01219115920],
[0.076, 4.28770981047, 86457.98475793119],
[0.076, 2.88868549481, 53242.30176033840],
[0.104, 4.32540467122, 23888.81579828719],
[0.094, 4.32453647728, 78257.08086582259],
[0.074, 4.96325610801, 26823.77965510599],
[0.077, 1.07428657729, 50167.24874398939],
[0.075, 2.56662960973, 19202.75325164339],
[0.099, 6.00141798836, 19958.60610206760],
[0.087, 3.55579419373, 52381.99183158559],
[0.078, 1.00822618263, 25352.02662804239],
[0.088, 3.52269656514, 60055.89543648739],
[0.078, 5.82066892741, 155571.81910783658],
[0.076, 2.96046756402, 25024.58905812189],
[0.076, 4.24421235710, 130226.21661243298],
[0.076, 2.22645638378, 36109.74042167360],
[0.072, 2.23348468194, 173511.41499690176],
[0.079, 1.13204602827, 52290.24557183361],
[0.074, 1.55328520138, 51653.22886505459],
[0.071, 2.26106298981, 159.30173479220],
[0.073, 2.05345178568, 26941.09952332620],
[0.095, 1.93550514722, 365230.64398203877],
[0.070, 4.74315846161, 52061.36699446317],
[0.085, 1.31607641314, 26667.59072857300],
[0.076, 5.58726680703, 13675.53025207620],
[0.092, 3.24599684677, 28256.66362385679],
[0.067, 1.15071488774, 55503.94193942859],
[0.068, 2.92993581219, 23919.14265929160],
[0.067, 1.77035470445, 181026.24909573558],
[0.066, 2.59648990707, 27780.06881107659],
[0.082, 5.36282814327, 167850.08294774959],
[0.064, 3.99165913279, 130432.40216087017],
[0.069, 5.13777502156, 52712.61079524379],
[0.063, 0.54837259436, 34082.43158359840],
[0.065, 3.89976847376, 27005.83342755599],
[0.073, 6.19252091852, 50064.15596977079],
[0.066, 1.91671959572, 102018.41617342478],
[0.082, 0.87824651640, 25446.48957983520],
[0.063, 3.87624799927, 78896.49316403578],
[0.062, 1.55377407031, 182188.72380014337],
[0.062, 4.71223563105, 103.78218858060],
[0.087, 3.57434964589, 27037.07875054399],
[0.077, 3.43626093365, 54087.00576636560],
[0.078, 4.92073893807, 77795.74443436819],
[0.071, 2.76139796167, 11.04570026390],
[0.064, 5.37974575072, 51226.63067417859],
[0.082, 3.78003355754, 26308.31578401300],
[0.062, 2.70733081732, 104505.39137678158],
[0.071, 5.05097183202, 27177.61193276780],
[0.070, 4.29342266024, 27311.72098235281],
[0.068, 2.34136362165, 78366.80219894118],
[0.060, 4.90888421377, 25508.21555457540],
[0.068, 6.04917764171, 647.01083331480],
[0.058, 2.46745404038, 104197.83375581198],
[0.067, 2.96573339768, 51969.62073471119],
[0.066, 5.33871332672, 157586.80077963436],
[0.058, 2.17528608366, 323.50541665740],
[0.062, 4.44991435917, 130419.84594697120],
[0.063, 0.27396211581, 130459.18546877075],
[0.063, 5.22327184571, 76784.84285065818],
[0.064, 4.64108529425, 61279.71327726600],
[0.062, 1.84001159422, 183570.92173262799],
[0.055, 1.66692917947, 31415.37924995700],
[0.058, 4.06522187846, 32132.13172294960],
[0.057, 2.07569387080, 17893.62780836560],
[0.055, 2.49038254003, 22625.65843570900],
[0.077, 6.17301946895, 25032.45336464809],
[0.068, 4.68765980625, 77307.42026875199],
[0.054, 4.63708190151, 51329.72344839720],
[0.055, 0.21233757772, 2221.85663459700],
[0.068, 2.36358626958, 25953.79409198919],
[0.053, 2.88564903323, 101011.00013959699],
[0.062, 1.19998944516, 26083.97098831109],
[0.054, 3.90599349467, 123758.29085447139],
[0.052, 2.60595997150, 78160.61665050399],
[0.072, 0.83460657204, 22909.75735100660],
[0.066, 3.17005690509, 78039.36462902068],
[0.052, 2.13323028898, 44295.71712980940],
[0.061, 1.63440457571, 61.72597474020],
[0.053, 2.00748586733, 24448.83362438620],
[0.051, 2.50978165702, 78903.60671103658],
[0.051, 3.22110952745, 130652.81480330898],
[0.060, 6.23105854697, 76887.93562487679],
[0.066, 3.23596712512, 77726.90491262719],
[0.059, 1.53485505891, 6044.22858137540],
[0.059, 1.10559326249, 26102.13023557580],
[0.060, 1.08408977503, 27972.80430499159],
[0.049, 2.24548271996, 425.90877651400],
[0.055, 3.33645161611, 207593.84658050019],
[0.067, 0.59579109206, 94329.77528619739],
[0.056, 4.05652507832, 26010.15259759030],
[0.056, 1.49670493057, 136722.59155786238],
[0.049, 4.72236375377, 5193.36705879780],
[0.049, 2.99400480872, 52252.07235442399],
[0.049, 4.15104806247, 51955.39364070959],
[0.050, 5.31916782876, 103917.90082841998],
[0.051, 4.32173710361, 58857.03113654799],
[0.050, 0.42233074233, 27684.08958385880],
[0.066, 5.06498799279, 73.29712585900],
[0.048, 0.80745705976, 2703.61615467560],
[0.048, 0.16882113823, 24918.31489016559],
[0.049, 5.71984539931, 50380.54783942739],
[0.061, 0.05575706789, 161079.37234650398],
[0.047, 5.70016549134, 129373.02023068098],
[0.048, 4.71754734372, 50903.12525752120],
[0.050, 0.77120384679, 50689.82616208319],
[0.050, 4.75557775921, 143005.66740785379],
[0.046, 1.03065291695, 51868.24866217880],
[0.046, 4.07474771884, 52137.67324751059],
[0.045, 2.75496032307, 196137.07343261078],
[0.056, 1.48667124221, 30171.89164827860],
[0.047, 3.49884159195, 26575.53789282839],
[0.048, 2.04489119557, 27573.19384827740],
[0.046, 1.96812600979, 27223.58001346740],
[0.044, 0.58466186909, 1243.48760167840],
[0.043, 0.48582749664, 78338.49102328988],
[0.046, 0.10663541022, 102659.44689679438],
[0.049, 1.92223535597, 50049.92887576919],
[0.047, 5.34811633125, 846.08283475120],
[0.046, 2.32911930278, 129387.24732468258],
[0.056, 1.46049477175, 28102.88481337200],
[0.050, 5.62967300375, 53906.92863608099],
[0.046, 5.09770472011, 151199.94274106238],
[0.043, 2.30154744958, 26709.64694241340],
[0.051, 2.88082546361, 27669.86248985719],
[0.055, 5.55849793732, 123200.84011627098],
[0.044, 0.48527820908, 80174.90890793978],
[0.048, 2.59296696271, 6720.71397934140],
[0.044, 0.24824938054, 742.99006053260],
[0.045, 2.48949498300, 65831.66677432480],
[0.045, 4.86503115391, 52483.36390411799],
[0.041, 5.23419163545, 130289.95251073639],
[0.041, 0.91885509326, 50910.23880452200],
[0.044, 3.12424163301, 26126.03617721200],
[0.042, 5.66855218492, 166740.70439565618],
[0.039, 5.01739570944, 26402.08932144380],
[0.038, 0.02313645928, 2111.65031337760],
[0.049, 4.11697361923, 25227.59321282139],
[0.038, 0.09191461136, 26118.23000257860],
[0.038, 5.03146092380, 24203.00197815680],
[0.051, 4.86305906640, 78153.50310350319],
[0.038, 0.13003640396, 27351.06050415239],
[0.038, 1.34984785206, 70269.18098269838],
[0.038, 0.52032944033, 103498.41618454478],
[0.040, 5.66117959398, 52174.32181044009],
[0.038, 0.92511339052, 112231.70171963578],
[0.051, 4.15223165568, 27170.98337386779],
[0.037, 1.67308781547, 54374.89362643540],
[0.038, 6.26592309401, 202.25339517410],
[0.036, 3.23911910889, 176332.24614102798],
[0.037, 1.90730795656, 3308.46589538040],
[0.037, 3.03203144287, 76041.85279012559],
[0.038, 3.17519743409, 78786.28684281638],
[0.035, 3.90697621183, 80382.47328510099],
[0.038, 2.00924199028, 1162.47470440780],
[0.036, 1.80080871248, 19336.86230122839],
[0.035, 4.66254825701, 77947.31755506598],
[0.043, 1.57972686428, 130443.39704322898],
[0.035, 0.74694549648, 25985.94062330859],
[0.040, 2.11415671365, 3492.57156686960],
[0.038, 4.65738726744, 22003.91463486980],
[0.037, 0.77571838110, 16703.06213349900],
[0.035, 5.00128829727, 52509.66222391780],
[0.047, 0.02275392308, 25014.29411738339],
[0.043, 3.15273137814, 130435.63437251298],
[0.034, 3.05681901713, 2820.83114412620],
[0.037, 4.68248751145, 123668.80510662538],
[0.034, 5.73615227262, 45290.65639321759],
[0.040, 2.76893017076, 50270.34151820800],
[0.038, 6.01229835605, 26057.57628056979],
[0.034, 6.25090722416, 21716.02677480000],
[0.034, 0.95587257158, 78580.10129437919],
[0.033, 3.35217476663, 235900.50682626115],
[0.032, 2.35469869139, 2383.19301477620],
[0.037, 3.80938441515, 8989.46770543239],
[0.043, 2.27476214717, 25169.97285559240],
[0.032, 4.14291864821, 2686.72209454120],
[0.037, 0.04571185840, 52177.29075585669],
[0.032, 1.53610678036, 233731.74634397859],
[0.038, 3.98892541543, 1300.82681820500],
[0.042, 5.10993958059, 145204.75475114078],
[0.033, 2.91530565997, 130866.11389874699],
[0.043, 1.77793563831, 103932.12792242158],
[0.035, 5.35726747093, 26189.86565983980],
[0.035, 0.65119403092, 1535.97674296940],
[0.044, 3.08976502022, 8014.19820292400],
[0.031, 0.90638189649, 128220.75860368418],
[0.042, 3.37905134636, 23549.65463732060],
[0.038, 0.38543000653, 515.46387109300],
[0.039, 1.08681725797, 25773.71696170459],
[0.036, 4.30448026071, 52286.01260436779],
[0.031, 5.08183330827, 78213.71280281838],
[0.038, 3.16432629306, 91805.13062721379],
[0.039, 1.47494002110, 4022.26253196420],
[0.042, 0.60192138814, 24388.62392507099],
[0.037, 3.23606285260, 28791.51929624980],
[0.040, 0.26646931277, 78313.70604662679],
[0.036, 4.38588497247, 81591.84508100279],
[0.035, 0.17056359345, 6129.29703950660],
[0.030, 2.50459470137, 102755.42612401219],
[0.040, 4.58870970073, 26076.85744131030],
[0.040, 4.09419634913, 35833.22369743080],
[0.030, 4.79837659477, 28736.35796704720],
[0.032, 3.42931668217, 24402.85101907260],
[0.029, 2.52212486456, 1353.74874501680],
[0.030, 4.69352116507, 24072.92146977640],
[0.029, 5.31070299201, 199599.31813847594],
[0.030, 3.20350587499, 23762.95373275860],
[0.036, 2.44362166097, 23336.35554188260],
[0.028, 2.77231585227, 26312.24793727610],
[0.028, 0.26775880889, 50444.68393021580],
[0.029, 3.50869792127, 15406.65260500879],
[0.030, 2.95993198433, 132028.58860315479],
[0.028, 3.41609673663, 133882.09065283637],
[0.033, 2.39929042753, 61560.64729122359],
[0.032, 1.34796958829, 37698.45509994840],
[0.028, 1.75026246832, 78683.19406859778],
[0.033, 4.51080770987, 3776.43088573480],
[0.032, 5.00665307820, 29396.36903695460],
[0.037, 5.23066729388, 81604.32185142238],
[0.028, 0.99927277404, 1322.67764753140],
[0.029, 2.00159770770, 25004.82290928060],
[0.035, 4.69198477732, 22065.64060961000],
[0.029, 3.80697601044, 24513.05734029200],
[0.032, 4.69401466159, 27250.37784598199],
[0.031, 5.86715902954, 5815.11085963699],
[0.027, 1.26702311366, 27044.19229754480],
[0.030, 3.44351888035, 104819.57755665119],
[0.028, 5.36078058708, 412.37109687440],
[0.028, 5.73893599832, 240452.46032331997],
[0.034, 5.19151430726, 2008.55753915900],
[0.030, 1.73241634839, 163766.09444104519],
[0.027, 5.30425762252, 24864.08530079559],
[0.032, 1.12362303179, 625.67019231240],
[0.030, 2.04171272941, 193937.98608932379],
[0.032, 4.78663079749, 75930.51303185058],
[0.030, 4.46891226150, 25450.90686955000],
[0.032, 4.73906176949, 48847.67062686820],
[0.027, 4.12514822062, 104358.24112519680],
[0.026, 0.67609297065, 35077.37084700659],
[0.033, 2.69651735555, 25647.07785669659],
[0.026, 4.94767789631, 209658.82487420217],
[0.035, 3.86705432105, 25466.15934073500],
[0.026, 4.79912409089, 198489.93958638259],
[0.026, 1.59971503257, 31281.27020037200],
[0.026, 1.20008223797, 153084.84390447979],
[0.026, 3.02443658098, 26724.89941359840],
[0.025, 2.03567222767, 52817.21984488739],
[0.027, 1.23585314301, 53.09615231440],
[0.026, 5.53069670975, 25657.37279743509],
[0.028, 0.93845909288, 158746.17595363196],
[0.025, 1.46977800361, 1272.68102562720],
[0.026, 2.45961936761, 181659.72224941078],
[0.034, 2.39774146758, 39763.43339365039],
[0.029, 6.23821353511, 102769.65321801379],
[0.029, 4.90111965589, 116783.65521669458],
[0.025, 3.02186465541, 39450.35284837340],
[0.027, 3.77575599741, 103718.82882698359],
[0.027, 3.92125046850, 80596.90581759460],
[0.023, 0.26970481255, 52609.51802102519],
[0.023, 5.98846059571, 27463.67694142000],
[0.025, 1.22968381596, 49976.71893986139],
[0.023, 5.57437029749, 155887.52156313116],
[0.023, 5.99507985020, 50007.04580086580],
[0.023, 1.44496012077, 5687.63036895200],
[0.024, 0.46516912647, 130446.62925487179],
[0.023, 0.94331115897, 28774.62523611540],
[0.027, 0.80529908381, 2698.45144737720],
[0.027, 0.27124610516, 1265.56747862640],
[0.023, 0.89381228793, 156314.11975400720],
[0.023, 2.96257779899, 12546.48193908300],
[0.022, 5.42940490576, 1485.98012106520],
[0.022, 1.03839316349, 103189.13786188899],
[0.023, 1.35379542887, 52161.57918914679],
[0.026, 6.01331218379, 122444.98726584678],
[0.030, 2.66518277698, 25600.26839032000],
[0.023, 4.07521268525, 230239.17477710897],
[0.024, 0.64355332403, 203041.89308344139],
[0.022, 1.39463873909, 952.07662325960],
[0.023, 1.98852683178, 7392.45440208480],
[0.028, 1.37381287166, 309.27832265580],
[0.022, 2.15165551798, 104276.83096772949],
[0.025, 4.93854060665, 101703.15774082378],
[0.023, 3.12039946936, 77616.69859140778],
[0.028, 0.40745832322, 55638.05098901359],
[0.024, 0.44199264440, 24285.53115085240],
[0.023, 1.33496997363, 163298.12945069079],
[0.021, 4.01469381260, 120417.67842777158],
[0.024, 0.63196904603, 77940.20400806518],
[0.022, 5.70851933792, 2840.50090502600],
[0.024, 4.45840068641, 183145.01295611399],
[0.023, 3.62152465067, 5635.03372935240],
[0.021, 3.04515069387, 9123.57675501740],
[0.021, 1.96886020684, 177287.84588263658],
[0.023, 0.59040250365, 25672.35065096209],
[0.021, 3.40810269373, 129586.31932611899],
[0.021, 3.09046433472, 26267.98027185880],
[0.024, 1.94276984966, 183674.70392120857],
[0.021, 3.98455358233, 6191.02301424680],
[0.028, 0.93414213433, 51841.95034237900],
[0.020, 4.59348701559, 52061.40717623499],
[0.027, 4.61439897742, 52027.72755872209],
[0.020, 0.48128544481, 52309.91533273340],
[0.020, 3.31281154655, 26248.31051095900],
[0.023, 1.67970146036, 23113.29318696320],
[0.020, 2.44057473344, 50264.60679993120],
[0.025, 5.43422956232, 2.96894541660],
[0.026, 3.61410457829, 52024.75861330549],
[0.020, 0.60321200025, 138319.60486120995],
[0.020, 2.62628682595, 164.43591058941],
[0.020, 0.65324774200, 156520.30530244438],
[0.027, 4.74395008878, 391318.54712361295],
[0.021, 4.45035214874, 25862.07387316400],
[0.021, 1.54947465846, 148.07872442630],
[0.027, 5.13202499307, 12382.04602849360],
[0.020, 0.68567124507, 42.88307490340],
[0.019, 1.92072938625, 78800.51393681798],
[0.027, 2.48188330716, 25665.23710396129],
[0.027, 1.27457874648, 7860.41939243920],
[0.022, 2.29809961839, 25865.04281858059],
[0.019, 4.09473921906, 76255.15188556358],
[0.020, 4.67174071386, 207114.15223730978],
[0.022, 2.63315058351, 7768.36655669460],
[0.020, 1.24271716091, 52179.73843641149],
[0.020, 6.11431848045, 24824.74577899600],
[0.023, 4.18071159026, 2125.87740737920],
[0.021, 0.74169140667, 1795.25844372100],
[0.019, 2.66558529381, 191.44826611160],
[0.020, 3.22150044915, 156547.08861034497],
[0.021, 6.18753985884, 104127.26777059489],
[0.020, 5.52295053123, 130363.24963659538],
[0.021, 3.90684382108, 51534.39272140940],
[0.020, 3.10019509540, 838.96928775040],
[0.025, 5.79466888187, 26098.94884183810],
[0.021, 6.23594952039, 103814.80805420138],
[0.019, 5.79715725254, 26279.35140768579],
[0.022, 0.71256272418, 959.12285995760],
[0.021, 1.39589766697, 103395.32341032618],
[0.018, 1.52837590084, 107.30530692960],
[0.019, 0.60262102760, 27566.76971563859],
[0.025, 0.78252166479, 53814.87580033639],
[0.025, 2.29282750485, 77520.71936418998],
[0.018, 2.11606037402, 26.29831979980],
[0.024, 1.60264230919, 208173.53416749899],
[0.021, 6.27983567062, 54344.56676543099],
[0.018, 2.13288203799, 77314.53381575279],
[0.019, 5.02228884604, 26114.20146137400],
[0.020, 5.52520867267, 9591.54174537180],
[0.017, 4.12183264175, 24602.61243487099],
[0.022, 0.51026067819, 95.97922721780],
[0.017, 4.48889832500, 208276.62694171758],
[0.017, 3.94937058994, 25459.05155552409],
[0.017, 5.29323037427, 76137.83201734339],
[0.019, 3.67294881327, 6885.14988993081],
[0.018, 1.02433476262, 53399.62412392700],
[0.020, 2.79332004367, 25927.49577218939],
[0.018, 5.83348216244, 293.41078437720],
[0.024, 3.00078431660, 23446.56186310200],
[0.020, 1.11172116756, 156507.74908854539],
[0.017, 0.56645607004, 104984.39630560997],
[0.020, 4.48412602835, 52755.49387014719],
[0.019, 5.18601674976, 2544.67263689240],
[0.023, 4.19936868759, 24952.22626968100],
[0.017, 2.06473217893, 130005.80396999417],
[0.019, 0.55214472899, 52396.21892558720],
[0.019, 1.79653943961, 89.48574784600],
[0.022, 3.72989530019, 48997.66049258080],
[0.020, 5.93006048006, 11852.35506339900],
[0.018, 6.24870732707, 233681.74972207437],
[0.021, 3.01566725550, 25907.82601128960],
[0.016, 1.73390726659, 52911.68279668019],
[0.017, 3.23716624064, 117893.03376878797],
[0.022, 0.46092942812, 19367.18916223280],
[0.016, 5.06429474773, 43981.53094993980],
[0.021, 1.13950009268, 25650.25925043430],
[0.019, 3.19311280972, 47803.92991637420],
[0.021, 4.64218889935, 112545.88789950538],
[0.017, 2.96216633831, 102975.83876645098],
[0.016, 0.60226326404, 149846.19399604559],
[0.016, 5.86803075725, 127098.90328117118],
[0.018, 1.20391834667, 87367.61641884019],
[0.016, 4.53670173929, 2667.05233364140],
[0.017, 5.77652308057, 51130.65144696079],
[0.018, 5.87706432040, 78057.52387628538],
[0.019, 5.24206436649, 60370.08161635699],
[0.016, 1.31713012946, 78843.39701172139],
[0.019, 5.33584429695, 104454.70534051539],
[0.015, 4.52789928708, 25984.12095299360],
[0.016, 4.12162585450, 189386.03259226496],
[0.017, 3.51115348265, 45455.09230380700],
[0.015, 1.65943772958, 51596.11869614960],
[0.015, 4.28577331083, 117.31986822020],
[0.016, 0.28814169191, 78469.89497315978],
[0.015, 0.64079475058, 53093.73656913019],
[0.020, 5.58915267196, 1423.56473196300],
[0.015, 6.19871258212, 156740.71794488319],
[0.015, 2.05066243688, 16342.58258571760],
[0.018, 0.93517825293, 104344.98400739678],
[0.015, 4.64013294295, 2974.60995461100],
[0.015, 2.61010767947, 7830.09253143480],
[0.015, 2.60585262136, 151.04766984290],
[0.018, 0.92309429794, 1577.34354244780],
[0.017, 1.36952124854, 78115.63070029629],
[0.018, 1.95659679786, 102872.74599223239],
[0.017, 5.37350443158, 25384.26995695679],
[0.015, 2.12952532360, 128106.31931499895],
[0.018, 4.06290374391, 51439.92976961659],
[0.015, 4.32808623679, 77741.13200662879],
[0.014, 3.46389680879, 104426.39416486409],
[0.020, 5.15870331048, 154408.65498906677],
[0.014, 4.53089771582, 57503.28239153120],
[0.016, 3.64720066701, 24072.23205541439],
[0.015, 2.96793644807, 24719.24288872919],
[0.014, 0.79165737765, 25928.60140678200],
[0.014, 4.36570321274, 78249.48233072099],
[0.014, 5.35774038541, 896.07945665540],
[0.014, 5.57146329055, 104248.51979207818],
[0.014, 6.22061869408, 104874.18998439058],
[0.015, 0.66056760946, 77622.29586298359],
[0.017, 4.39404084250, 162810.49469943656],
[0.017, 4.01700926317, 51876.67988887919],
[0.014, 5.96074966457, 4371.87636677420],
[0.014, 5.51412243126, 48713.56157728320],
[0.014, 5.04161806976, 53029.00266490040],
[0.014, 3.09979574700, 128747.35003836859],
[0.019, 4.61702547610, 16028.39640584800],
[0.017, 2.09526572835, 52277.76880141400],
[0.014, 1.51516908270, 52164.76058288449],
[0.014, 2.76589411039, 26734.91397488900],
[0.017, 5.31477308011, 103608.62250576419],
[0.013, 6.04881581356, 52812.80255517260],
[0.015, 0.92065367569, 256327.07791868312],
[0.016, 2.76936523753, 46046.50924364180],
[0.019, 4.91561037107, 277.03499374140],
[0.015, 1.87874008695, 26161.20026743319],
[0.013, 1.48593089360, 54824.26110862140],
[0.015, 1.37228117638, 18043.37807764579],
[0.018, 2.95472168569, 76152.05911134499],
[0.017, 1.57020520015, 104241.40624507738],
[0.018, 2.97721991956, 187167.27548807819],
[0.013, 3.49902133309, 78397.81847430758],
[0.018, 2.18386661425, 149288.74325784517],
[0.017, 5.38851170070, 52041.69723356339],
[0.013, 6.26956660770, 90989.16285949759],
[0.013, 1.13674691740, 237009.88537835455],
[0.014, 2.18322393546, 225687.22128005017],
[0.013, 6.15204536524, 35211.47989659159],
[0.017, 1.32178768936, 106262.81204951399],
[0.014, 1.73651187343, 2912.88397987080],
[0.013, 0.84907711504, 102343.05502713779],
[0.013, 2.39970220380, 155460.92337225520],
[0.017, 4.15374414668, 26014.60601571519],
[0.013, 0.72484082297, 153878.96402397219],
[0.013, 3.04907288197, 80432.46990700519],
[0.013, 1.37316946035, 104035.22069664019],
[0.015, 3.12808384217, 173.44857138459],
[0.013, 2.93774353095, 533.62311835770],
[0.013, 2.24535401962, 246113.79237247215],
[0.016, 0.39665846969, 78112.66175487968],
[0.015, 4.75053341616, 130020.03106399579],
[0.016, 0.76587038276, 557.45073820040],
[0.015, 6.01045796437, 51112.49219969609],
[0.015, 0.93774708323, 461.33643145440],
[0.012, 4.03988032603, 77956.15180375299],
[0.015, 1.43833460468, 169093.57054942797],
[0.014, 2.14749108820, 78129.60037513758],
[0.012, 4.57098987537, 6751.04084034580],
[0.017, 0.64086933600, 5131.64108405760],
[0.013, 5.02936180992, 144916.86689107097],
[0.016, 3.65387335184, 104028.10714963939],
[0.013, 3.37789792164, 79212.88503369238],
[0.013, 1.38408689559, 4885.80943782820],
[0.012, 4.95862705668, 50536.73676596039],
[0.014, 2.05563043425, 107692.22499299659],
[0.012, 3.93772391530, 104668.00443595338],
[0.014, 3.26407683636, 104401.60918820098],
[0.014, 2.94492731309, 51120.35650622229],
[0.013, 5.30554859990, 155475.15046625677],
[0.014, 5.14050840336, 726.48201987020],
[0.012, 2.41433841278, 24551.92639860479],
[0.013, 3.02673254226, 182828.62108645737],
[0.012, 2.94598982599, 5039.58824831300],
[0.013, 3.57478000552, 78484.12206716138],
[0.013, 2.94343799803, 79315.97780791098],
[0.012, 5.17024351037, 103402.43695732698],
[0.012, 3.19152649116, 28309.75977617119],
[0.012, 6.16852058989, 78413.27262185719],
[0.013, 4.35939831008, 133767.65136415116],
[0.013, 5.96217383792, 2538.24850425360],
[0.012, 2.97455363125, 26290.15653674829],
[0.012, 1.94777069809, 156377.85565231059],
[0.012, 1.81926611664, 70069.43409151399],
[0.013, 1.24212367708, 4437.51420837359],
[0.012, 0.53775842570, 106470.37642667518],
[0.012, 4.06029507610, 79487.52726550119],
[0.012, 1.39982040688, 77417.62658997139],
[0.012, 5.70094378358, 79330.20490191258],
[0.012, 2.36617272843, 79994.83177765518],
[0.012, 4.77094162628, 78999.58593825439],
[0.012, 5.23189289937, 26411.40855823160],
[0.014, 2.99800402366, 1073.60902419080],
[0.012, 6.15146193785, 103704.60173298199],
[0.012, 1.58617824624, 78571.26704569219],
[0.013, 0.37894193721, 53124.98189211819],
[0.012, 3.86549077079, 189853.99758261937],
[0.013, 4.70785515154, 234261.43730907317],
[0.012, 4.54097648940, 56259.79478985279],
[0.012, 1.32257018476, 149756.70824819960],
[0.011, 5.69779744921, 222224.97657418498],
[0.012, 0.60900120711, 2751.54759969160],
[0.011, 0.79876219873, 78225.57638908479],
[0.013, 2.57664086838, 1116.49209909420],
[0.012, 0.86411055123, 78043.29678228378],
[0.011, 4.02869363295, 263097.78851992876],
[0.011, 3.97587600566, 76998.14194609619],
[0.011, 5.29433199334, 52797.55008398759],
[0.013, 5.69550284497, 51688.17153189420],
[0.015, 3.91946731118, 27665.24668402200],
[0.013, 4.89334198524, 45424.76544280259],
[0.012, 2.33066141026, 130336.42293365239],
[0.012, 2.97893637259, 25885.64974640009],
[0.012, 0.33532325982, 41494.55574658299],
[0.011, 1.81390783997, 104301.61594439259],
[0.011, 3.67540306066, 79181.63971070439],
[0.013, 1.92207364074, 2962.88060177500],
[0.012, 4.51335455691, 54190.78795494619],
[0.012, 5.89140397220, 156954.01704032117],
[0.012, 5.80412470555, 72134.41238521598],
[0.011, 2.54446138738, 26183.88236879199],
[0.011, 0.57810940674, 142871.55835826878],
[0.014, 1.49797486148, 103883.64757594238],
[0.011, 0.25563634033, 52663.44103440259],
[0.011, 4.34226157432, 63786.35824152260],
[0.011, 5.79546155779, 76358.24465978218],
[0.011, 5.43581617959, 4398.17468657401],
[0.010, 3.45435285202, 26830.89320210680],
[0.010, 1.05961891051, 216897.50046580215],
[0.010, 5.54078372768, 53867.97195265079],
[0.013, 4.09291929409, 78378.14871340781],
[0.012, 6.09214378282, 156523.53751408719],
[0.012, 2.30793560033, 192828.60753723036],
[0.011, 5.49984194986, 130593.29451835579],
[0.010, 5.02934387609, 63.73589830340],
[0.010, 2.56161075764, 3178.14579056760],
[0.010, 4.51229030686, 80912.16425019559],
[0.010, 3.26964460988, 143980.93691036216],
[0.014, 0.09133406732, 138.51749687070],
[0.014, 4.26704901561, 52171.87412988529],
[0.010, 2.12874423735, 181563.05360783098],
[0.010, 2.68594312022, 53551.58008299420],
[0.010, 5.01052160566, 53311.48315504160],
[0.013, 2.21304135803, 287.88786006980],
[0.010, 5.99285759925, 129063.74190802519],
[0.010, 0.23580667035, 159969.99379441058],
[0.014, 4.15846442712, 52190.03337714999],
[0.014, 2.17544501087, 2506.64496425660],
[0.010, 2.39055885342, 78262.22495201428],
[0.010, 5.33589950489, 128843.32926558638],
[0.010, 3.69795961564, 175934.09713761977],
[0.010, 5.50982370855, 181548.82651382938],
[0.012, 0.91293309387, 53258.88651544199],
[0.010, 0.21546965297, 155674.22246769318],
[0.010, 5.05408550952, 182465.75879388480],
[0.011, 1.47055363263, 76991.02839909539],
[0.014, 1.74381856487, 36.64856292950],
[0.014, 1.73080789777, 171292.65789271498],
[0.010, 1.79047706298, 235746.72801577637],
[0.012, 2.86918517100, 2045.30853280220],
[0.013, 5.94639118711, 168959.46149984296],
[0.010, 5.24213703651, 130285.73689738619],
[0.014, 6.10459624713, 454.90936652730],
[0.010, 5.39397583397, 77.75054398390],
[0.011, 1.99827759086, 1088.60315660100],
[0.010, 1.76064600598, 52489.99246301800],
[0.010, 5.11611480967, 113455.51956041438],
[0.014, 4.11983704037, 54060.70744656579],
[0.012, 2.84049561669, 183041.92018189540],
[0.012, 3.18297085790, 228508.05242417639],
[0.010, 1.62042818189, 231348.55332920235],
[0.010, 2.38308200520, 181975.42470470539],
[0.010, 5.17901157458, 203375.74902421076],
[0.010, 1.70609651468, 78597.56536549199],
[0.010, 3.01880618190, 104501.17576343138],
[0.011, 1.42631059185, 58220.03486452380],
[0.010, 3.45269160846, 99979.73619952259],
[0.011, 4.42716378223, 235320.81923926238],
[0.010, 4.45423293249, 5469.88378304060],
[0.009, 4.68983089958, 80462.79676800959],
[0.009, 1.77635894319, 50290.90511973100],
[0.010, 1.41464391522, 48091.81777644400],
[0.011, 5.93477819724, 158116.49174472899],
[0.010, 2.55614008171, 105418.10804348679],
[0.009, 3.11835021508, 52206.13314415280],
[0.009, 2.24380470375, 299.12639426920],
[0.009, 3.22171579815, 51006.21803173979],
[0.009, 3.24808968579, 78697.42116259939],
[0.011, 0.73383746517, 17605.73994829580],
[0.010, 2.45523846147, 233835.52853255917],
[0.009, 4.35363918141, 190809.59732422797],
[0.009, 2.77090630961, 76094.94894243999],
[0.012, 0.23038883503, 130907.48069822539],
[0.009, 5.05551915235, 70383.62027138360],
[0.009, 5.11051597902, 156093.70711156839],
[0.011, 5.44617170556, 56777.75640211140],
[0.009, 4.67339642631, 104771.09721017198],
[0.009, 4.56456351898, 259819.64948555277],
[0.009, 0.73352390338, 75085.56363415498],
[0.010, 2.64743106367, 153186.80642274540],
[0.010, 5.18315351919, 1382.19793248460],
[0.012, 4.75714453262, 250665.74586953095],
[0.011, 5.79093643324, 292628.26660646836],
[0.009, 6.24971585432, 202420.14928260216],
[0.012, 5.83966176266, 11790.62908865880],
[0.011, 2.84614041718, 184204.39488630317],
[0.010, 3.41187941424, 1905.46476494040],
[0.010, 3.00240265080, 118828.96374949679],
[0.009, 3.90754065548, 154308.66174525840],
[0.010, 0.88848120961, 51315.49635439559],
[0.011, 4.49431301230, 156531.30018480320],
[0.009, 0.37279337773, 182622.43553802016],
[0.009, 5.94479236467, 38634.38508065720],
[0.009, 0.28434529807, 5019.91848741320],
[0.011, 5.30507160437, 51257.87599716660],
[0.009, 5.05598171209, 62197.64356324779],
[0.009, 2.00743011270, 154194.22245657316],
[0.010, 2.29548861266, 1211.34107035900],
[0.009, 1.40840962373, 78149.27013603736],
[0.011, 2.69818187519, 195047.36464141717],
[0.009, 3.77338110020, 52073.84376488279],
[0.010, 4.16632261841, 1130.15394758580],
[0.009, 4.71851534374, 257436.45647077652],
[0.009, 1.56697202296, 156107.93420556997],
[0.010, 3.84491070936, 42790.96527507320],
[0.010, 0.84911221571, 61921.12683900499],
[0.011, 3.43504498990, 81725.95413058778],
[0.008, 3.46841587447, 156534.53239644598],
[0.009, 3.07023951195, 78265.19389743089],
[0.011, 5.33240591310, 49424.25868345679],
[0.009, 3.80703237983, 184834.07909520617],
[0.010, 5.24984657637, 860.30992875280],
[0.008, 2.32846981012, 156451.15277816958],
[0.009, 5.86810139691, 221135.26778299137],
[0.009, 0.07267483428, 54879.42243782400],
[0.009, 3.53847001127, 1169.58825140860],
[0.008, 0.40730399000, 5852.78031526380],
[0.010, 5.08938165465, 53661.09698985160],
[0.009, 0.09227292796, 285857.55600522272],
[0.009, 1.53921610006, 171004.77003264520],
[0.010, 6.02369999880, 105403.88094948517],
[0.009, 1.41005383919, 215473.93573383917],
[0.008, 2.95064025568, 182611.44065566137],
[0.011, 0.82592745776, 52098.05573916449],
[0.011, 1.89268014069, 53265.51507434200],
[0.009, 0.91534494504, 130446.14426677099],
[0.011, 5.68651428373, 97466.46267636596],
[0.008, 6.09336539202, 65538.25598994759],
[0.010, 4.71864870979, 1865.23140251760],
[0.011, 0.33942008091, 2352.86615377180],
[0.010, 0.58149039679, 51554.06248230919],
[0.009, 4.63908561414, 130329.30938665158],
[0.008, 3.29340479484, 76532.58707178998],
[0.008, 0.39996086139, 31722.93687092660],
[0.009, 2.07892055945, 84307.93800609799],
[0.008, 0.10251061291, 130489.51232977519],
[0.009, 4.86488540298, 197380.56103428919],
[0.008, 2.84319355109, 247223.17092456558],
[0.009, 5.40644601602, 205260.65018762814],
[0.008, 2.99554948925, 28199.55345495179],
[0.008, 2.31903661034, 50951.98844236979],
[0.009, 3.67243760379, 132558.27956824939],
[0.010, 3.84482406254, 199.07200143640],
[0.008, 5.13311255182, 133780.12813457078],
[0.008, 4.50659262629, 31775.53351052620],
[0.010, 3.05711078565, 12098.18670962840],
[0.009, 5.43609233651, 65851.33653522459],
[0.008, 3.16471275120, 53438.96364572659],
[0.008, 5.49628419906, 208063.32784627957],
[0.009, 0.80806156177, 84944.93427812219],
[0.008, 1.45936166924, 50160.82461135059],
[0.009, 3.83369994945, 79902.77894191058],
[0.008, 5.05169260225, 220025.88923089797],
[0.010, 0.99908522442, 78373.91574594198],
[0.008, 1.78435325528, 4743.40176317040],
[0.009, 2.44642878457, 76468.45098100159],
[0.010, 0.64041079500, 106684.80895916879],
[0.008, 0.22706755866, 130514.29730643828],
[0.008, 4.45568539518, 175844.61138977378],
[0.008, 5.30875425569, 104991.50985261079],
[0.008, 4.26578657244, 78267.64157798568],
[0.010, 3.66900856638, 22595.33157470459],
[0.008, 5.39530906170, 1168.89883704660],
[0.007, 2.97217552646, 130962.09312596478],
[0.008, 5.41659156640, 106082.73491922939],
[0.007, 6.14449914187, 154835.25317994278],
[0.009, 3.77109166248, 76777.72930365738],
[0.010, 2.68699198523, 31903.01400121119],
[0.010, 4.11325286170, 51861.62010327879],
[0.010, 6.22285311837, 52213.93931878620],
[0.008, 4.05691998652, 130432.88714897096],
[0.008, 5.44182392744, 24844.41553989579],
[0.008, 5.31551782104, 26247.20487636640],
[0.007, 3.34982243781, 53771.99272543299],
[0.007, 0.76435484795, 103829.03514820298],
[0.009, 0.48166296597, 4571.62325795859],
[0.010, 2.53857628850, 23735.03698780239],
[0.009, 3.06932982640, 51102.19725895759],
[0.009, 0.81667861584, 180396.56488683258],
[0.008, 1.37381137878, 182619.20332637738],
[0.010, 4.53462580754, 195181.47369100217],
[0.007, 5.92229713446, 102129.75593169978],
[0.009, 1.70197819412, 114.39910691340],
[0.009, 2.75554865259, 52145.47942214399],
[0.007, 5.03002929900, 78905.12298646157],
[0.008, 4.70162992466, 77684.02183772379],
[0.007, 2.16016333042, 252884.50297371778],
[0.007, 4.70104811610, 197092.67317421938],
[0.008, 3.34882273958, 92.05283574460],
[0.007, 4.64287583099, 104659.17018726638],
[0.007, 1.74834665027, 79116.90580647459],
[0.007, 1.40803395997, 78149.31031780918],
[0.007, 5.96603423152, 1685.05212250160],
[0.008, 5.74025115791, 27441.65188659100],
[0.007, 3.32172728837, 186057.89693598478],
[0.007, 5.77399157694, 52822.81711646319],
[0.009, 5.40969007280, 25970.58327335399],
[0.007, 5.03097379670, 51092.72605085480],
[0.008, 4.85500497006, 79353.41821591619],
[0.009, 2.91790460578, 128857.55635958798],
[0.010, 2.62831495455, 104145.42701785959],
[0.008, 3.65717048924, 50476.52706664519],
[0.010, 4.97375703081, 128960.64913380658],
[0.007, 0.63731291763, 132350.71519108818],
[0.007, 3.70718359263, 61165.27398858079],
[0.007, 1.52409890800, 224577.84272795677],
[0.007, 5.83295581556, 78339.97549599818],
[0.007, 1.28982657880, 127791.06088239799],
[0.007, 4.38077281912, 87648.55043279778],
[0.007, 0.78772735446, 104044.05494532720],
[0.007, 5.55018242223, 148532.89040742096],
[0.008, 3.94353800260, 77929.85348395319],
[0.007, 4.68484570125, 129971.55071751658],
[0.007, 5.46082675395, 76352.50994150538],
[0.007, 0.89727780818, 28213.78054895339],
[0.006, 2.25546242417, 79955.87509422498],
[0.007, 1.85784871452, 28096.46068073319],
[0.006, 6.22318977780, 261988.40996783535],
[0.006, 3.92166942434, 182402.02289558138],
[0.006, 4.54553590954, 26235.98186600050],
[0.006, 0.04385251847, 182634.99175191918],
[0.006, 3.27000773736, 104557.79811473397],
[0.006, 1.48316940910, 26191.68533015479],
[0.006, 1.42098831764, 26026.17716683400],
[0.006, 4.63624566094, 57369.17334194619],
[0.006, 2.24614788518, 131079.41299418497],
[0.008, 1.46359871781, 74935.57376844239],
[0.007, 0.19039890992, 117077.06600107178],
[0.006, 2.30839350284, 27353.47062020059],
[0.008, 4.05701479596, 60170.33472517260],
[0.006, 2.25676540184, 118007.47305747319],
[0.007, 5.19369769843, 91919.56991589899],
[0.006, 2.17221286567, 27573.88326263939],
[0.006, 3.04358438526, 83591.18553310538],
[0.006, 5.50261387027, 26238.95081141709],
[0.006, 5.55141392261, 207747.62539098499],
[0.007, 3.67760971466, 229129.79622501557],
[0.006, 5.14998820697, 130364.73410930368],
[0.006, 2.59291082745, 52186.85198341230],
[0.006, 3.70620257597, 182608.20844401856],
[0.007, 5.89987227798, 53757.76563143139],
[0.007, 1.17954845926, 209232.91609768817],
[0.007, 1.99199973963, 88285.54670482199],
[0.006, 5.29985761538, 175376.64639941938],
[0.007, 1.76338847974, 55484.27217852879],
[0.008, 0.55724966367, 129806.73196855778],
[0.005, 4.19687137282, 111032.83741969639],
[0.006, 1.86021237763, 96471.52341295779],
[0.006, 1.44535366888, 20043.67456019880],
[0.006, 1.48244229587, 260349.34045064732],
[0.006, 1.00031747475, 51538.81001112419],
[0.005, 0.08842088266, 79859.89586700719],
[0.006, 2.17116807817, 156373.64003896038],
[0.007, 2.57540094308, 77218.55458853499],
[0.006, 4.66124811472, 65717.22748563958],
[0.005, 5.69376389474, 52400.15107885030],
[0.006, 2.47972848111, 266540.36346489412],
[0.005, 4.47086994598, 27360.58416720139],
[0.005, 3.20880924837, 259769.65286364855],
[0.005, 3.98361684334, 54862.52837768960],
[0.007, 2.86077141334, 179172.74704605396],
[0.005, 2.46087822928, 156681.19765992998],
[0.007, 5.00361119157, 209762.60706278277],
[0.005, 5.35670104895, 26513.81191808820],
[0.006, 3.62607025643, 27883.16158529519],
[0.005, 0.80991017339, 25661.99436506020],
[0.006, 0.20069428083, 50490.75416064679],
[0.005, 3.77056538505, 164407.50800278416],
[0.005, 2.71005052987, 104427.87863757239],
[0.006, 0.84754795471, 104466.05185498200],
[0.005, 2.69389382491, 180496.55813064100],
[0.005, 4.04820376371, 129277.04100346318],
[0.006, 0.57829057010, 50600.96048186620],
[0.006, 4.21216601811, 182595.65223011957],
[0.005, 3.59670550074, 131072.29944718417],
[0.005, 0.08842684725, 27993.36790651460],
[0.006, 0.00392034365, 73891.83305794839],
[0.006, 4.68979746906, 26149.62911631439],
[0.005, 4.61789756581, 20894.53608277640],
[0.005, 3.57093232780, 53654.67285721279],
[0.005, 0.36682731238, 146505.58156934578],
[0.005, 1.40545824640, 233202.05537888399],
[0.006, 2.35439456378, 139543.42270198860],
[0.004, 1.28935961583, 234364.53008329176],
[0.004, 1.10749672173, 51086.09749195479],
[0.005, 3.64294402198, 27331.39074325260],
[0.004, 0.00216060134, 213255.17862965239],
[0.004, 4.40507427126, 129483.22655190038],
[0.004, 2.18529936793, 23384.28698689860],
[0.005, 0.93391333656, 52102.50915728939],
[0.004, 2.33941435272, 23389.45169419700],
[0.004, 3.59370682931, 46564.47085590040],
[0.004, 2.90835831307, 61299.38303816579],
[0.004, 6.27884818175, 170068.84005193636],
[0.004, 4.90170477242, 104888.41707839219],
[0.004, 4.56426377076, 46131.57770177300],
[0.005, 2.12658067178, 130542.60848208958],
[0.005, 2.50519016528, 79845.66877300559],
[0.004, 6.24881318031, 18073.70493865020],
[0.004, 1.10868110225, 52072.02409456780],
[0.004, 6.14515791357, 34102.10134449819],
[0.004, 2.94097893970, 129902.71119577558],
[0.004, 2.91542426579, 130215.17091216908],
[0.005, 2.20146513310, 82865.65954368559],
[0.005, 4.46570663623, 104237.17327761157],
[0.004, 5.13334797430, 26387.02953584340],
[0.004, 5.34965278511, 24787.07632336920],
[0.004, 4.17772291197, 53132.09543911899],
[0.004, 2.66996288682, 25572.43927048119],
[0.005, 1.14175711692, 188898.39784101077],
],
# L1
[
[2608814706222.746, 0.00000000000, 0.00000000000],
[1126007.832, 6.21703970996, 26087.90314157420],
[303471.395, 3.05565472363, 52175.80628314840],
[80538.452, 6.10454743366, 78263.70942472259],
[21245.035, 2.83531934452, 104351.61256629678],
[5592.094, 5.82675673328, 130439.51570787099],
[1472.233, 2.51845458395, 156527.41884944518],
[352.244, 3.05238094403, 1109.37855209340],
[388.318, 5.48039225891, 182615.32199101939],
[93.540, 6.11791163931, 27197.28169366760],
[90.579, 0.00045481669, 24978.52458948080],
[102.743, 2.14879173777, 208703.22513259359],
[51.941, 5.62107554052, 5661.33204915220],
[44.370, 4.57348500464, 25028.52121138500],
[28.070, 3.04195430989, 51066.42773105500],
[22.003, 0.86475371243, 955.59974160860],
[27.295, 5.09210138837, 234791.12827416777],
[20.425, 3.71509622702, 20426.57109242200],
[20.221, 0.51934047295, 21535.94964451540],
[17.496, 5.72663608620, 4551.95349705880],
[16.680, 1.35134428173, 529.69096509460],
[15.306, 1.79184360652, 11322.66409830440],
[15.398, 5.74263453989, 19.66976089979],
[13.964, 3.59426938083, 24498.83024629040],
[12.822, 2.69591798562, 53285.18483524180],
[12.621, 3.89530641889, 3.88133535800],
[12.566, 4.70537436663, 1059.38193018920],
[7.974, 4.17682324505, 26617.59410666880],
[7.929, 0.50426804318, 46514.47423399620],
[8.024, 3.92723313702, 27043.50288318280],
[7.665, 2.48158305355, 57837.13833230060],
[8.639, 6.06360282793, 77154.33087262919],
[6.838, 2.77387065312, 7.11354700080],
[6.554, 5.53478998989, 6770.71060124560],
[5.846, 4.28139659800, 16983.99614745660],
[7.285, 1.74581868954, 260879.03141574195],
[7.179, 2.97766079692, 2218.75710418680],
[6.364, 2.13805619380, 25132.30339996560],
[5.883, 2.19545230409, 13521.75144159140],
[4.969, 2.47752134180, 30639.85663863300],
[4.578, 1.55845855383, 27147.28507176339],
[4.857, 4.84757952324, 37410.56723987860],
[5.022, 3.94124675992, 25661.30495069820],
[4.381, 4.94471456712, 213.29909543800],
[4.211, 5.53886788148, 83925.04147387479],
[4.299, 5.09070560802, 10213.28554621100],
[4.593, 0.81920676333, 25558.21217647960],
[3.571, 2.34341884629, 32858.61374281979],
[4.454, 5.79159156180, 3442.57494496540],
[3.547, 3.59413896239, 26068.23338067440],
[3.664, 1.39952931281, 77204.32749453338],
[3.417, 0.49855041138, 22645.32819660879],
[3.195, 1.25743024246, 14765.23904326980],
[3.031, 4.45207030477, 7238.67559160000],
[3.284, 5.22996707635, 25448.00585526019],
[2.974, 0.14234349726, 50586.73338786459],
[2.855, 0.67083991526, 26091.78447693220],
[2.773, 3.54351198199, 72602.37737557039],
[3.132, 6.21365344759, 26080.78959457339],
[2.732, 5.64171761904, 1589.07289528380],
[2.652, 0.88219699366, 52705.49724824299],
[3.125, 6.07160751766, 28306.66024576099],
[2.799, 2.51152391376, 26107.57290247399],
[2.403, 1.15515130360, 25035.63475838580],
[2.274, 1.85167073193, 36301.18868778519],
[2.501, 4.34723465048, 41962.52073693740],
[2.321, 5.44262378304, 26084.02180621620],
[2.535, 5.80101392346, 26095.01668857500],
[2.872, 1.63503968499, 25021.40766438420],
[2.066, 1.07231845630, 43071.89928903080],
[2.616, 2.78322243283, 103242.23401420339],
[1.987, 2.95923214706, 23969.13928119580],
[1.979, 4.44092591248, 103292.23063610759],
[1.974, 0.83681704901, 12566.15169998280],
[1.700, 2.28603732736, 110012.94461544899],
[1.677, 4.63366122462, 53235.18821333759],
[1.954, 4.67733727976, 286966.93455731618],
[1.653, 1.25518276011, 33326.57873317420],
[1.785, 1.80830270808, 26301.20223701220],
[1.784, 5.17926273269, 426.59819087600],
[2.143, 5.16312278245, 51220.20654153979],
[1.597, 5.53494401703, 56727.75978020720],
[1.590, 0.07660134798, 23869.14603738740],
[1.574, 3.75870586370, 73711.75592766379],
[1.362, 1.13830507985, 68050.42387851159],
[1.358, 1.45317020242, 51646.11531805379],
[1.586, 4.65681044624, 79373.08797681599],
[1.347, 3.80254397382, 19317.19254032860],
[1.242, 3.79389911401, 25874.60404613620],
[1.124, 1.28920904043, 31749.23519072640],
[1.065, 4.31416942177, 40853.14218484400],
[1.014, 3.58126441973, 48733.23133818299],
[1.259, 1.73130656223, 12432.04265039780],
[0.989, 0.33276224293, 52156.13652224860],
[1.057, 4.35251408825, 77734.01845962799],
[1.033, 3.72503880786, 6283.07584999140],
[0.894, 0.29768279333, 105460.99111839019],
[0.910, 0.49823258962, 99799.65906923798],
[0.999, 5.29812267938, 65697.55772473979],
[1.138, 2.56391312022, 29530.47808653960],
[0.876, 4.91112286703, 62389.09182935939],
[0.912, 0.27449857787, 98690.28051714458],
[0.879, 4.78847722011, 18849.22754997420],
[0.869, 3.87957425954, 78793.40038981718],
[0.831, 2.35459129726, 27676.97603685800],
[0.791, 1.17444825871, 129380.13377768178],
[0.782, 3.92653768734, 38654.05484155699],
[0.782, 3.69412482234, 52179.68761850640],
[0.745, 2.09648894863, 51535.90899683439],
[0.736, 6.05470921559, 114.43928868521],
[0.733, 3.23019978320, 47623.85278608960],
[0.698, 2.99026308247, 52168.69273614759],
[0.780, 5.77004504059, 129330.13715577759],
[0.752, 4.22525357653, 51123.53789995999],
[0.752, 4.70099207936, 51109.31080595839],
[0.651, 5.87383050095, 2333.19639287200],
[0.699, 4.82823185979, 38519.94579197200],
[0.656, 3.65375726729, 25668.41849769900],
[0.660, 1.98037689941, 26514.50133245020],
[0.808, 6.27898737551, 53131.40602475700],
[0.753, 5.64446551994, 45892.73043315699],
[0.610, 1.21194007471, 153.77881048480],
[0.604, 5.29267380518, 136100.84775702318],
[0.811, 4.22885181263, 25654.19140369739],
[0.697, 1.89331617498, 77308.10968311399],
[0.581, 2.61707271637, 76674.63652943878],
[0.549, 4.18661776549, 94138.32702008578],
[0.567, 6.08785859254, 25234.70675982219],
[0.549, 2.08003708209, 91785.46086631398],
[0.563, 1.38660458000, 79323.09135491178],
[0.527, 5.83448542494, 50057.04242277000],
[0.524, 2.45745967369, 467.96499035440],
[0.570, 3.10425513710, 15874.61759536320],
[0.699, 2.57322536922, 52182.91983014920],
[0.501, 0.39578180187, 32370.97899156560],
[0.542, 2.77109053528, 54394.56338733519],
[0.525, 1.31791713133, 313054.83769889036],
[0.513, 2.28640740711, 82815.66292178139],
[0.579, 5.45103833735, 52195.47604404819],
[0.617, 4.18395572588, 639.89728631400],
[0.449, 3.10044122691, 49957.04917896160],
[0.495, 2.11807671869, 52171.92494779040],
[0.431, 3.06714836720, 131548.89425996438],
[0.427, 5.35367311100, 49.99662190420],
[0.470, 1.46585019834, 1066.49547719000],
[0.470, 1.07485595760, 103821.92160120218],
[0.415, 2.50109134151, 71980.63357473118],
[0.395, 5.24320159822, 58946.51688439399],
[0.408, 0.92030240581, 77837.11123384659],
[0.523, 4.92390082310, 52389.10537858640],
[0.377, 3.50882025297, 125887.56221081219],
[0.508, 1.03838633466, 24491.71669928959],
[0.418, 0.36439379673, 51962.50718771040],
[0.400, 3.51557589073, 20760.42703319140],
[0.359, 0.03091967859, 2118.76386037840],
[0.356, 2.03727281128, 1052.26838318840],
[0.423, 4.21437546240, 18093.37469954999],
[0.340, 1.64349471632, 79219.30916633119],
[0.336, 1.55276786593, 24505.94379329119],
[0.348, 1.06528227311, 66941.04532641819],
[0.327, 5.45093694594, 7880.08915333899],
[0.303, 1.67537340603, 88476.99497093359],
[0.323, 5.59204872298, 55618.38122811380],
[0.281, 0.83478570176, 63498.47038145279],
[0.393, 0.55222046684, 45405.09568190280],
[0.280, 0.69995179262, 64741.95798313119],
[0.381, 2.16540447546, 522.57741809380],
[0.279, 4.17319236859, 155468.03691925600],
[0.314, 1.52755129973, 44937.13069154840],
[0.280, 3.33549459014, 78244.03966382280],
[0.272, 5.34763989826, 53764.87917843220],
[0.287, 4.98400171694, 25551.09862947879],
[0.288, 3.26773464056, 124778.18365871879],
[0.275, 0.59220058467, 104881.30353139139],
[0.229, 5.07700202235, 52602.40447402440],
[0.265, 1.04033681288, 25938.33994443960],
[0.224, 5.10726819180, 117873.36400788819],
[0.242, 0.44760602599, 23754.70674870219],
[0.214, 3.50460190598, 58458.88213313979],
[0.230, 2.45937674101, 155418.04029735178],
[0.211, 3.92377004339, 103925.01437542078],
[0.282, 3.81265243625, 536.80451209540],
[0.218, 4.88963285925, 103396.01282468818],
[0.200, 5.41573374322, 16066.06586147480],
[0.218, 0.41409439248, 78267.59076008058],
[0.201, 2.38235635877, 23439.44831610119],
[0.203, 2.69458032262, 59414.48187474840],
[0.196, 0.92807787406, 120226.23016165999],
[0.201, 2.00560473829, 162188.75089859738],
[0.183, 3.83128433173, 69159.80243060499],
[0.180, 2.20428238305, 89586.37352302698],
[0.215, 5.35652096610, 206.18554843720],
[0.178, 1.24568538055, 103.09277421860],
[0.196, 0.44564203205, 51756.32163927320],
[0.183, 2.88003872828, 3328.13565628019],
[0.216, 4.48180965712, 26241.68195205900],
[0.215, 2.26752450953, 33967.99229491319],
[0.193, 4.34407767816, 105307.21230790539],
[0.200, 1.01165813281, 51742.09454527159],
[0.170, 5.57003076622, 98068.53671630539],
[0.224, 0.97932137082, 77211.44104153418],
[0.168, 5.96360976147, 157636.79740153858],
[0.178, 1.42319344949, 77197.21394753258],
[0.196, 5.59654497318, 78270.82297172339],
[0.161, 5.51918174079, 26555.86813192860],
[0.197, 4.79975858562, 25455.11940226100],
[0.181, 4.39987679970, 105410.99449648599],
[0.159, 2.63928704121, 28421.09953444620],
[0.158, 0.75224521142, 51116.42435295920],
[0.196, 4.92493608061, 102762.53967101299],
[0.162, 2.82561928047, 26202.34243025941],
[0.194, 1.02167898855, 44181.27784112419],
[0.179, 5.11561177302, 25440.89230825939],
[0.152, 5.21934955501, 77623.81213840858],
[0.150, 5.98491689335, 78256.59587772179],
[0.184, 0.26375114604, 419.48464387520],
[0.144, 2.90657294970, 51322.60990139639],
[0.163, 1.01728531879, 26727.80042788820],
[0.160, 1.39225289207, 26011.63707029860],
[0.145, 5.76503611587, 80482.46652890938],
[0.140, 0.27227514908, 46848.33017476560],
[0.136, 0.22641179921, 151975.46535238638],
[0.142, 4.24343923379, 339142.74084046460],
[0.178, 4.08547287819, 129909.82474277639],
[0.142, 3.31130337074, 78050.41032928458],
[0.131, 0.70125733168, 3340.61242669980],
[0.154, 1.72826405606, 78477.00852016058],
[0.159, 5.29643521725, 108903.56606335558],
[0.129, 3.26743532785, 25973.46385288896],
[0.128, 6.10775258657, 76044.95232053580],
[0.144, 4.06091644657, 50579.61984086379],
[0.164, 6.17696810226, 19406.67828817460],
[0.139, 5.11979950242, 433.71173787680],
[0.153, 1.30046862259, 13655.86049117640],
[0.132, 5.23445066335, 26610.48055966799],
[0.115, 4.61845793770, 50593.84693486539],
[0.121, 2.52027376421, 76144.94556434419],
[0.114, 4.51555533683, 27154.39861876420],
[0.106, 5.18068866237, 85502.38501632259],
[0.110, 3.45757703411, 25565.32572348040],
[0.100, 0.11496600894, 74821.13447975718],
[0.100, 3.95989644984, 26037.90651966999],
[0.100, 3.01535382150, 28206.66700195260],
[0.099, 5.99257260255, 29416.03879785439],
[0.117, 3.56597928882, 71492.99882347698],
[0.131, 5.96070215452, 1223.81784077861],
[0.095, 1.84065750300, 85034.42002596818],
[0.102, 4.69459571654, 114564.89811250778],
[0.097, 0.87353840441, 181555.94006083018],
[0.118, 2.02298794976, 78283.37918562238],
[0.111, 4.07316227960, 93028.94846799239],
[0.090, 5.01726237192, 115674.27666460119],
[0.094, 2.31806507832, 81706.28436968799],
[0.089, 5.94413487088, 25131.61398560359],
[0.095, 3.72299894590, 90829.86112470538],
[0.120, 5.44384753792, 51749.20809227239],
[0.105, 5.01803826552, 78259.82808936459],
[0.086, 1.83551544255, 143961.26714946239],
[0.108, 4.53825443085, 71025.03383312259],
[0.083, 0.64015893446, 130012.91751699499],
[0.099, 0.52218556269, 26624.70765366959],
[0.094, 2.65386396812, 9103.90699411760],
[0.098, 3.31480172250, 853.19638175200],
[0.080, 2.13424472361, 42153.96900304900],
[0.086, 2.05760695844, 79852.78232000639],
[0.084, 0.97023030623, 131395.11544947958],
[0.081, 0.28916970825, 84546.78527471398],
[0.081, 5.18614814481, 220.41264243880],
[0.081, 1.98383157756, 149.56319713460],
[0.082, 0.05817684667, 104331.94280539699],
[0.074, 1.62836007935, 25984.81036735560],
[0.075, 1.84245188133, 78690.30761559859],
[0.087, 3.58634855360, 130969.20667296558],
[0.074, 5.06505616563, 27140.17152476259],
[0.075, 5.47760610876, 134.10904958500],
[0.089, 6.25587801019, 150866.08680029298],
[0.098, 4.71698591369, 12725.45343477500],
[0.069, 5.05822197567, 1911.19948321720],
[0.081, 2.05307563846, 1596.18644228460],
[0.075, 2.05688075943, 26137.89976347840],
[0.069, 3.67576176321, 24609.03656750980],
[0.081, 1.38060133126, 52329.58509363319],
[0.069, 1.60181551296, 129483.91596626239],
[0.067, 5.43668176629, 181505.94343892598],
[0.066, 1.56953438995, 19804.82729158280],
[0.066, 3.92553131581, 146314.13330323418],
[0.062, 3.46967694133, 24925.42843716640],
[0.079, 3.56674606057, 49842.60989027639],
[0.067, 4.76959706409, 25881.71759313700],
[0.061, 2.61995550094, 183724.70054311279],
[0.061, 1.63344766876, 13541.42120249119],
[0.061, 2.31153135385, 124156.43985787958],
[0.058, 3.88678278617, 18207.81398823521],
[0.082, 1.36242531494, 128850.44281258718],
[0.058, 2.98990179150, 110.20632121940],
[0.064, 4.98131448153, 188276.65404017159],
[0.067, 2.32849722473, 26294.08869001139],
[0.057, 3.72454115593, 29428.51556827400],
[0.066, 1.69869503126, 51543.02254383520],
[0.055, 2.30093263701, 52643.77127350280],
[0.069, 1.78774826271, 51639.00177105299],
[0.067, 4.00863968986, 103299.34418310839],
[0.074, 6.14089486388, 14477.35118320000],
[0.054, 5.27646510692, 49527.35145767539],
[0.056, 2.33495620660, 104358.72611329758],
[0.062, 3.41967311766, 104355.49390165479],
[0.050, 1.20854390978, 23976.25282819660],
[0.064, 0.58512976749, 307.55762096960],
[0.062, 3.69245785160, 641.41356173899],
[0.062, 4.47317710621, 636.99627202420],
[0.049, 4.09291926847, 52815.70356946240],
[0.061, 0.78849475911, 155997.72788435058],
[0.047, 2.14659254610, 7994.52844202420],
[0.047, 0.00507866085, 104138.31347085879],
[0.045, 2.28588893693, 25764.39772491679],
[0.051, 2.98348805265, 40565.25432477420],
[0.047, 4.03957254582, 77829.99768684579],
[0.047, 3.21862563103, 178063.36849396059],
[0.045, 4.41401819607, 103285.11708910679],
[0.054, 3.47879330948, 77844.22478084739],
[0.054, 2.83659707386, 6681.22485339960],
[0.056, 1.11360360738, 131498.89763806018],
[0.046, 3.38384624666, 26507.38778544939],
[0.055, 2.68637168389, 25934.12433108940],
[0.046, 4.78696197215, 104564.91166173479],
[0.059, 1.29879100690, 38813.35657634920],
[0.043, 3.86025201636, 10021.83728009940],
[0.044, 1.90320971624, 51528.79544983359],
[0.055, 0.48335079540, 23962.02573419499],
[0.042, 4.11693586607, 26190.99591579279],
[0.044, 1.64247485835, 76.26607127560],
[0.042, 6.21848377968, 26094.53170047421],
[0.041, 2.73996884659, 25867.49049913539],
[0.043, 0.38981425968, 1089.70879119360],
[0.043, 4.89046790101, 24395.73747207180],
[0.041, 0.44351702671, 25619.93815121980],
[0.041, 1.47439583353, 76681.75007643958],
[0.039, 1.71519867865, 111590.28815789679],
[0.041, 5.67594181048, 54509.00267602040],
[0.049, 1.65739950579, 1581.95934828300],
[0.040, 1.85008425708, 27999.10262479140],
[0.038, 3.99668572981, 9384.84100807520],
[0.037, 2.83147987268, 102132.85546210999],
[0.039, 0.84546566819, 365230.64398203877],
[0.037, 4.65200082367, 90695.75207512038],
[0.037, 0.94736176192, 76667.52298243798],
[0.040, 0.16806354899, 22759.76748529401],
[0.049, 2.02480943113, 134991.46920492980],
[0.041, 5.85592543833, 52290.24557183361],
[0.040, 1.21491127400, 64607.84893354619],
[0.041, 3.07842612799, 26081.27458267419],
[0.035, 3.89800430981, 157483.01859105378],
[0.037, 0.29068345666, 97580.90196505119],
[0.035, 4.74965057267, 39629.32434406539],
[0.035, 1.88777425098, 26521.61487945100],
[0.033, 3.60227423859, 156100.82065856917],
[0.035, 1.96114191570, 74.78159856730],
[0.045, 3.72467663437, 39609.65458316560],
[0.038, 4.29218444251, 39743.76363275060],
[0.032, 5.95900501016, 77410.51304297059],
[0.032, 0.64794221724, 2648.45482547300],
[0.039, 5.08510962281, 25863.55834587229],
[0.031, 1.62486752727, 141762.17980617538],
[0.031, 1.25910229689, 53242.30176033840],
[0.031, 2.65918037491, 104344.49901929598],
[0.032, 0.00169740803, 52061.36699446317],
[0.031, 6.12210016938, 25977.69682035479],
[0.030, 5.72239820341, 579.68758699880],
[0.030, 0.70553319870, 52125.80966124419],
[0.039, 1.60801806885, 333.85594076940],
[0.030, 5.28578152795, 102232.84870591838],
[0.029, 0.53270948692, 50696.93970908399],
[0.029, 0.40281274949, 35472.74414964940],
[0.028, 2.96171859812, 100909.03762133139],
[0.034, 1.41428136641, 140652.80125408198],
[0.029, 6.00401578551, 54294.57014352679],
[0.032, 0.45221016093, 116917.76426627958],
[0.028, 5.07088961710, 26237.46633870879],
[0.028, 5.33382835025, 107794.18751126219],
[0.030, 3.86080757411, 207643.84320240439],
[0.028, 4.81897403543, 170049.17029103660],
[0.031, 1.90989851759, 26308.31578401300],
[0.035, 1.26114015069, 97112.93697469679],
[0.028, 2.01146788563, 52698.38370124219],
[0.033, 4.31496976407, 154938.34595416137],
[0.028, 4.46781875730, 78417.48823520739],
[0.033, 0.25034815279, 51653.22886505459],
[0.026, 0.07835049738, 51013.33157874059],
[0.029, 3.32582529322, 110634.68841628819],
[0.027, 6.01993388409, 25227.59321282139],
[0.036, 0.79025288269, 119116.85160956658],
[0.026, 4.68624143375, 632.78373931320],
[0.027, 1.14521834701, 121335.60871375339],
[0.025, 3.42095174931, 956.28915597060],
[0.028, 2.73386270717, 27311.72098235281],
[0.024, 0.82215620694, 314.18617986960],
[0.025, 5.21681600178, 25241.82030682300],
[0.025, 3.57372833543, 52712.61079524379],
[0.027, 5.05183520711, 105940.68546158058],
[0.031, 2.25462520789, 26720.68688088739],
[0.025, 4.86890931082, 104778.21075717278],
[0.023, 3.01659387998, 52182.43484204840],
[0.026, 2.13973174244, 103711.71527998279],
[0.023, 4.60383496965, 52072.71350892979],
[0.023, 4.55605691468, 155571.81910783658],
[0.022, 3.69622699918, 735.87651353180],
[0.023, 2.40544682432, 8194.27533320860],
[0.022, 2.44094101414, 2703.61615467560],
[0.027, 5.29221944987, 26162.68474014150],
[0.022, 4.11517024183, 19202.75325164339],
[0.029, 4.25385019536, 647.01083331480],
[0.021, 2.11851790816, 207593.84658050019],
[0.029, 2.91003553544, 176953.98994186718],
[0.026, 5.68398596586, 95247.70557217918],
[0.021, 5.29289519906, 150244.34299945380],
[0.024, 3.05210539174, 130419.84594697120],
[0.020, 2.54144132983, 51219.51712717779],
[0.020, 6.16401959180, 35191.81013569180],
[0.022, 3.22920342008, 1083.08023229360],
[0.028, 0.30709453091, 157057.10981453978],
[0.023, 1.65280537431, 214364.55718174577],
[0.027, 3.72484040647, 621.74380083920],
[0.023, 2.59065413623, 71582.48457132299],
[0.022, 0.94588004362, 52022.02747266360],
[0.020, 3.84776796820, 5327.47610838280],
[0.024, 4.82779429778, 104371.28232719658],
[0.019, 1.94368317235, 22747.29071487440],
[0.023, 3.19739923216, 6044.22858137540],
[0.020, 0.58967836529, 172402.03644480839],
[0.019, 2.73169091081, 55503.94193942859],
[0.018, 1.63099638721, 48835.19385644859],
[0.022, 1.62646807429, 104347.73123093879],
[0.018, 4.90435895585, 77630.92568540938],
[0.018, 0.59687432455, 183570.92173262799],
[0.024, 5.58828197916, 34282.17847478280],
[0.018, 5.54856348293, 209812.60368468694],
[0.019, 0.53136209334, 55516.41870984820],
[0.020, 0.73777252741, 129387.24732468258],
[0.021, 4.62446809035, 13362.44970679920],
[0.021, 1.94768946886, 487.63475125420],
[0.019, 4.18946427203, 78114.14622758799],
[0.023, 2.43977160852, 24822.33566294780],
[0.017, 2.24086275048, 26222.01219115920],
[0.018, 5.08348808758, 27684.08958385880],
[0.017, 4.31062701282, 50064.15596977079],
[0.017, 0.62713581550, 44295.71712980940],
[0.022, 0.09847423078, 26941.09952332620],
[0.019, 2.09224104001, 86143.79857806159],
[0.016, 0.43713509764, 101.96251826560],
[0.016, 4.27219175799, 24176.70365835700],
[0.018, 5.24040005379, 68241.87214462319],
[0.020, 5.09682447452, 60055.89543648739],
[0.016, 4.08590900542, 147423.51185532758],
[0.018, 2.12913862198, 106570.36967048359],
[0.016, 1.00668387150, 25138.72753260440],
[0.016, 5.76419504418, 14.22709400160],
[0.021, 6.16511987091, 52169.17772424839],
[0.016, 0.82798074394, 96357.08412427259],
[0.016, 3.75399093257, 159.30173479220],
[0.017, 4.95698248546, 52225.80290505260],
[0.017, 6.11461465994, 26198.10946279360],
[0.017, 6.19302565011, 204151.27163553477],
[0.017, 5.34573358099, 78731.67441507700],
[0.016, 1.90468795194, 128320.75184749259],
[0.017, 3.73180335896, 182085.63102592478],
[0.017, 5.86222137701, 32132.13172294960],
[0.019, 1.56034038551, 51969.62073471119],
[0.018, 2.54086242120, 25780.34552060460],
[0.015, 4.29267057949, 1692.16566950240],
[0.016, 1.75865740707, 53228.07466633679],
[0.020, 2.35700883433, 75615.25459924959],
[0.015, 5.29296109539, 130446.62925487179],
[0.014, 0.85174293693, 78903.60671103658],
[0.015, 5.50776870695, 52808.59002246159],
[0.017, 5.96622721781, 32769.12799497380],
[0.014, 5.40589812318, 52381.99183158559],
[0.014, 2.92783624754, 130226.21661243298],
[0.014, 4.73334676783, 26164.16921284980],
[0.018, 4.09540263999, 157586.80077963436],
[0.015, 5.00568645183, 28791.51929624980],
[0.013, 0.88297787282, 24292.64469785319],
[0.018, 0.07544318179, 2199.08734328700],
[0.014, 0.39198838648, 1162.47470440780],
[0.012, 4.87283902225, 64901.25971792339],
[0.013, 4.28417448099, 23866.04650697719],
[0.013, 3.77892895408, 391318.54712361295],
[0.012, 0.90287358387, 104202.04936916218],
[0.012, 1.68139724364, 72936.23331633979],
[0.015, 3.76108194990, 111122.32316754239],
[0.012, 1.82629728829, 22909.75735100660],
[0.013, 1.25451832397, 26724.89941359840],
[0.012, 5.74844907374, 97670.38771289718],
[0.012, 1.52451201886, 130652.81480330898],
[0.011, 5.30694474936, 24601.92302050899],
[0.014, 2.82065667408, 1639.06951718800],
[0.015, 4.79144654769, 77726.90491262719],
[0.013, 5.37369194634, 8989.46770543239],
[0.013, 3.84042504901, 25953.79409198919],
[0.015, 0.08558342266, 130443.39704322898],
[0.011, 5.16135808879, 233681.74972207437],
[0.012, 0.99700192092, 65831.66677432480],
[0.012, 4.51508367315, 78187.44335344699],
[0.012, 0.62022460619, 36109.74042167360],
[0.011, 1.08182792000, 129373.02023068098],
[0.014, 5.59428027773, 25446.48957983520],
[0.011, 4.68045355937, 74923.09699802278],
[0.014, 4.68060965317, 27669.86248985719],
[0.012, 4.91061349082, 54087.00576636560],
[0.010, 0.73914692842, 103917.90082841998],
[0.013, 4.96538793287, 161079.37234650398],
[0.011, 0.31330958005, 182188.72380014337],
[0.013, 3.74649756573, 145204.75475114078],
[0.010, 1.79124533717, 949.17560896980],
[0.010, 4.24347093551, 78109.93061423779],
[0.010, 1.22394899357, 104505.39137678158],
[0.012, 3.21001019103, 102018.41617342478],
[0.011, 4.48294709049, 102769.65321801379],
[0.010, 4.33936275875, 95.97922721780],
[0.010, 3.73409843943, 199599.31813847594],
[0.012, 6.08780023115, 25450.90686955000],
[0.012, 0.52219299955, 125112.03959948818],
[0.012, 3.12928292612, 11610.55195837420],
[0.013, 2.59745313501, 78378.14871340781],
[0.010, 0.95664142687, 45290.65639321759],
[0.011, 3.04942272888, 309.27832265580],
[0.012, 3.42470973506, 143005.66740785379],
[0.009, 5.24571653547, 34082.43158359840],
[0.012, 1.94632930172, 1135.67687189320],
[0.010, 2.75654212398, 103.78218858060],
[0.010, 6.06089846081, 78270.33798362259],
[0.009, 1.42295924162, 12546.48193908300],
[0.009, 5.23889079020, 160.40736938481],
[0.010, 1.77339719648, 25754.04720080480],
[0.011, 3.45444324976, 27177.61193276780],
[0.010, 2.40808781707, 3462.24470586520],
[0.012, 0.21115577900, 103932.12792242158],
[0.010, 0.44397528833, 26729.31670331319],
[0.009, 4.39355955971, 224.34479570190],
[0.009, 5.76319803259, 86457.98475793119],
[0.009, 3.21350384534, 123668.80510662538],
[0.009, 5.50134612867, 25352.02662804239],
[0.009, 3.61240341796, 76784.84285065818],
[0.009, 3.71346537596, 78213.71280281838],
[0.011, 0.04658635952, 136722.59155786238],
[0.009, 3.16339317765, 24079.34560241519],
[0.010, 1.52307057829, 196137.07343261078],
[0.009, 5.78277172101, 137210.22630911658],
[0.009, 5.34709321166, 16703.06213349900],
[0.010, 1.10603431719, 76152.05911134499],
[0.010, 2.92130709301, 78257.08086582259],
[0.009, 4.92591389280, 52609.51802102519],
[0.008, 4.47915729665, 167850.08294774959],
[0.010, 3.52532046928, 50049.92887576919],
[0.009, 5.74701495675, 128220.75860368418],
[0.009, 3.39636103723, 25771.51127191760],
[0.009, 0.40885845708, 173511.41499690176],
[0.009, 0.05214771460, 209232.91609768817],
[0.011, 4.39473500560, 166740.70439565618],
[0.008, 0.83788793173, 52101.02468458109],
[0.009, 0.39740145698, 208173.53416749899],
[0.009, 2.14648409917, 52250.58788171570],
[0.011, 0.77019715443, 181026.24909573558],
[0.008, 0.46458507594, 11.04570026390],
[0.009, 3.75726239516, 26395.46076254379],
[0.011, 3.88183253605, 99024.13645791399],
[0.009, 5.91589628233, 26404.29501123080],
[0.008, 3.62038830716, 28736.35796704720],
[0.009, 5.53218561478, 50910.23880452200],
[0.008, 3.98222002302, 51226.63067417859],
[0.008, 2.20332298794, 35077.37084700659],
[0.010, 1.71606704784, 132028.58860315479],
[0.009, 4.19828805921, 123200.84011627098],
[0.008, 4.94949508683, 1263.15736257819],
[0.008, 0.38255024740, 78800.51393681798],
[0.008, 3.55931433878, 25508.21555457540],
[0.008, 2.06623542364, 133882.09065283637],
[0.008, 2.76004606287, 103498.41618454478],
[0.009, 6.07146960892, 52595.29092702359],
[0.010, 4.64768763301, 240452.46032331997],
[0.010, 4.75089417351, 158116.49174472899],
[0.009, 3.16830318341, 156531.30018480320],
[0.009, 0.51442466727, 233731.74634397859],
[0.008, 1.84170519176, 52325.36948028299],
[0.009, 1.58020929410, 130866.11389874699],
[0.008, 1.31021834242, 78160.61665050399],
[0.007, 3.52394232228, 209658.82487420217],
[0.007, 5.30361639156, 51852.30086649099],
[0.007, 1.68129390597, 103704.60173298199],
[0.007, 4.93711462539, 77616.69859140778],
[0.007, 4.26547182656, 130363.24963659538],
[0.008, 5.88262362064, 51955.39364070959],
[0.009, 2.85041915486, 52286.01260436779],
[0.009, 4.54751921819, 222224.97657418498],
[0.007, 2.95164397426, 58857.03113654799],
[0.007, 5.09932324366, 26421.75908234360],
[0.008, 5.95900851407, 625.67019231240],
[0.008, 2.87611784406, 182595.65223011957],
[0.007, 2.95245442922, 70269.18098269838],
[0.009, 1.85768285044, 2168.76048228260],
[0.009, 5.87894263333, 203041.89308344139],
[0.007, 5.76376514627, 53399.62412392700],
[0.007, 3.19368974135, 77947.31755506598],
[0.007, 0.58513513972, 17893.62780836560],
[0.007, 1.25969543054, 104275.34649502118],
[0.007, 1.78997113742, 187167.27548807819],
[0.007, 3.04234073392, 77101.23472031478],
[0.007, 5.13452237557, 77307.42026875199],
[0.008, 2.39389370291, 51534.39272140940],
[0.007, 0.36315569295, 179172.74704605396],
[0.009, 4.65044386389, 156954.01704032117],
[0.007, 5.75015377153, 78580.10129437919],
[0.008, 4.90310056069, 101703.15774082378],
[0.007, 2.81152781596, 92741.06060792258],
[0.007, 4.53777069646, 78339.97549599818],
[0.008, 3.72793390212, 77795.74443436819],
[0.007, 4.99225219771, 102659.44689679438],
[0.008, 1.24101149187, 128857.55635958798],
[0.006, 1.24806705522, 181659.72224941078],
[0.007, 1.41908776548, 39450.35284837340],
[0.008, 5.07207947299, 202420.14928260216],
[0.006, 3.88021248158, 104991.50985261079],
[0.007, 0.44811727260, 104301.61594439259],
[0.007, 6.19019459405, 37698.45509994840],
[0.008, 3.27628873745, 183145.01295611399],
[0.006, 1.04156861985, 104197.83375581198],
[0.007, 6.04804574225, 103189.13786188899],
[0.007, 6.15588549143, 75930.51303185058],
[0.007, 2.01982955946, 176332.24614102798],
[0.007, 4.68299502093, 838.96928775040],
[0.007, 4.32694078051, 104248.51979207818],
[0.006, 0.30098706976, 54824.26110862140],
[0.007, 2.39268679107, 80596.90581759460],
[0.006, 0.45279066685, 225687.22128005017],
[0.006, 4.93617566760, 215473.93573383917],
[0.006, 4.22528261713, 79330.20490191258],
[0.007, 5.53062936347, 917.93028598180],
[0.006, 0.27837413876, 76137.83201734339],
[0.007, 1.50054882304, 78313.70604662679],
[0.006, 4.84865195534, 213255.17862965239],
[0.007, 0.37969316028, 102872.74599223239],
[0.006, 4.82915128356, 79859.89586700719],
[0.007, 2.36435599398, 58220.03486452380],
[0.007, 0.76243719900, 183674.70392120857],
[0.006, 3.48561717935, 61560.64729122359],
[0.007, 3.15542325331, 53029.00266490040],
[0.006, 2.04066112896, 156534.53239644598],
[0.006, 4.08906102427, 91919.56991589899],
[0.006, 3.64988511750, 151199.94274106238],
[0.006, 4.09613031145, 53867.97195265079],
[0.006, 3.49486002612, 66653.15746634839],
[0.007, 2.89745929648, 230239.17477710897],
[0.006, 3.99809593088, 50380.54783942739],
[0.006, 3.65663654813, 70383.62027138360],
[0.006, 6.23319937932, 182619.20332637738],
[0.006, 0.15202166498, 51859.41441349179],
[0.006, 0.36162525319, 26823.77965510599],
[0.006, 5.03417122369, 78786.28684281638],
[0.006, 2.61401898803, 80382.47328510099],
[0.006, 5.06939782090, 51841.95034237900],
[0.008, 4.96432797037, 52396.21892558720],
[0.006, 3.74091556543, 155475.15046625677],
[0.006, 4.29792825666, 52812.80255517260],
[0.007, 6.02219529486, 156507.74908854539],
[0.005, 6.28085632767, 31415.37924995700],
[0.006, 2.70517720720, 52492.19815280499],
[0.007, 6.25185953525, 74935.57376844239],
[0.005, 6.03800330793, 84944.93427812219],
[0.007, 2.08385155566, 104819.57755665119],
[0.005, 2.79143401592, 51315.49635439559],
[0.007, 0.15300257128, 2014.98167179780],
[0.006, 5.45690475475, 1243.48760167840],
[0.005, 1.72310829290, 103718.82882698359],
[0.005, 0.05343175320, 27044.19229754480],
[0.005, 1.35980682609, 94329.77528619739],
[0.007, 5.94496795198, 256327.07791868312],
[0.006, 1.88665916947, 80174.90890793978],
[0.005, 2.15640465605, 235900.50682626115],
[0.005, 5.97271372078, 156314.11975400720],
[0.006, 2.66620904510, 229129.79622501557],
[0.005, 2.52891655111, 123758.29085447139],
[0.006, 1.20953605164, 130459.18546877075],
[0.005, 4.06443360712, 130285.73689738619],
[0.007, 1.34355308244, 1731.12235293260],
[0.005, 2.36158299954, 78896.49316403578],
[0.005, 0.96987247797, 149288.74325784517],
[0.005, 0.76610110351, 24864.08530079559],
[0.005, 1.95647355963, 76571.54375522019],
[0.005, 1.13701088228, 26312.24793727610],
[0.005, 1.05826639118, 27780.06881107659],
[0.005, 4.54130791881, 156740.71794488319],
[0.006, 3.58276567647, 198489.93958638259],
[0.005, 0.51603916276, 171292.65789271498],
[0.006, 3.03452226064, 77741.13200662879],
[0.005, 1.46111595893, 101011.00013959699],
[0.005, 0.02805624095, 149756.70824819960],
[0.005, 5.10195955921, 112231.70171963578],
[0.005, 4.87459278742, 78413.27262185719],
[0.007, 3.69898590349, 81604.32185142238],
[0.005, 0.76195152302, 417406.45026518719],
[0.005, 0.55904094194, 2383.19301477620],
[0.005, 3.95096384085, 78188.92782615528],
[0.005, 1.76549372525, 53771.99272543299],
[0.005, 3.35356708410, 205260.65018762814],
[0.006, 5.57902902188, 87253.17713015496],
[0.005, 0.26610630357, 235746.72801577637],
[0.005, 2.90596877294, 154194.22245657316],
[0.004, 1.16974176650, 193937.98608932379],
[0.004, 3.93130462476, 130289.95251073639],
[0.004, 4.33627478046, 89.48574784600],
[0.005, 2.80022335340, 4437.51420837359],
[0.006, 4.70286246928, 91805.13062721379],
[0.005, 1.82284966431, 1884.90116341740],
[0.005, 2.02580304988, 259769.65286364855],
[0.004, 4.65165864815, 195047.36464141717],
[0.004, 0.58858147700, 323.50541665740],
[0.004, 4.00623668740, 175376.64639941938],
[0.004, 0.64833718455, 156377.85565231059],
[0.004, 2.71436739189, 182402.02289558138],
[0.005, 4.68929437146, 79315.97780791098],
[0.004, 5.71176695959, 81591.84508100279],
[0.004, 1.42876132655, 52252.07235442399],
[0.005, 2.55069425936, 154308.66174525840],
[0.005, 1.42813778372, 266540.36346489412],
[0.004, 2.00085806148, 189386.03259226496],
[0.005, 4.29231489707, 220025.88923089797],
[0.004, 6.20316213523, 79116.90580647459],
[0.004, 0.85257120719, 118007.47305747319],
[0.004, 5.77579934605, 129799.61842155698],
[0.004, 4.47492094862, 137678.19129947099],
[0.004, 1.64566631180, 78697.42116259939],
[0.005, 2.17514536840, 51329.72344839720],
[0.006, 4.78710650697, 102755.42612401219],
[0.004, 1.46002058771, 935.92998070881],
[0.005, 5.13889133658, 130907.48069822539],
[0.004, 1.89321187110, 2111.65031337760],
[0.004, 0.10839681347, 38.13303563780],
[0.005, 4.42201446083, 78057.52387628538],
[0.005, 5.65870377214, 1300.82681820500],
[0.005, 5.90579064813, 1478.86657406440],
[0.004, 5.24580055005, 52309.91533273340],
[0.004, 2.74756161638, 144916.86689107097],
[0.005, 3.31232177694, 48847.67062686820],
[0.004, 4.43048849829, 118828.96374949679],
[0.004, 0.51369916437, 181563.05360783098],
[0.004, 5.22571179686, 261988.40996783535],
[0.004, 0.80000960641, 1485.29070670320],
[0.004, 3.25642623421, 195181.47369100217],
[0.005, 5.23264312237, 126996.94076290558],
[0.004, 3.86524951456, 209762.60706278277],
[0.004, 3.43760746038, 234261.43730907317],
[0.004, 0.67741502331, 131079.41299418497],
[0.004, 5.40862384292, 104984.39630560997],
[0.004, 0.30384598125, 285907.55262712698],
[0.004, 5.65734972357, 51868.24866217880],
[0.004, 5.55015227967, 149846.19399604559],
[0.004, 1.51752118872, 103814.80805420138],
[0.004, 2.53135799952, 79487.52726550119],
[0.004, 1.88512485652, 54879.42243782400],
[0.004, 5.12386500502, 182622.43553802016],
[0.004, 4.36228014188, 207747.62539098499],
[0.004, 3.24471199066, 130020.03106399579],
[0.004, 0.51045647492, 107692.22499299659],
[0.004, 4.26267840541, 132658.27281205778],
[0.004, 3.08522628552, 175844.61138977378],
[0.004, 3.38866894732, 104888.41707839219],
[0.004, 1.21404057369, 139543.42270198860],
[0.005, 3.75130732000, 62197.64356324779],
[0.004, 0.30056239753, 233202.05537888399],
[0.004, 4.20598588282, 218916.51067880457],
[0.004, 1.34568004641, 182828.62108645737],
[0.004, 0.68519128486, 104276.83096772949],
[0.004, 0.20412928769, 169093.57054942797],
[0.003, 0.98973904852, 105418.10804348679],
[0.004, 3.42019897755, 61279.71327726600],
[0.003, 5.22780381742, 78338.49102328988],
[0.003, 2.67114319601, 24998.19435038059],
[0.004, 1.65814724695, 50800.03248330259],
[0.004, 3.24764679291, 28286.99048486120],
[0.004, 6.01723954923, 104237.17327761157],
[0.003, 3.99050522839, 71378.55953479178],
[0.003, 3.46632047879, 45494.58142974879],
[0.003, 4.27304181959, 130593.29451835579],
[0.003, 4.05932083484, 52822.81711646319],
[0.003, 5.89324219451, 50483.64061364600],
[0.003, 2.88091404327, 78149.27013603736],
[0.003, 4.09573256493, 155460.92337225520],
[0.003, 0.40695406256, 52278.89905736699],
[0.003, 0.53381434741, 26709.64694241340],
[0.003, 1.00008179165, 50264.60679993120],
[0.004, 5.67939124426, 106470.37642667518],
[0.003, 0.77610404005, 142871.55835826878],
[0.003, 3.80375047171, 26402.08932144380],
[0.003, 2.44134109777, 156520.30530244438],
[0.003, 0.98764974659, 128843.32926558638],
[0.003, 3.62903815930, 130435.63437251298],
[0.003, 2.12651302584, 78469.89497315978],
[0.003, 4.29158350083, 154408.65498906677],
[0.003, 1.06499703474, 26734.91397488900],
[0.003, 1.86490629185, 51707.84129279399],
[0.003, 5.95559848753, 104344.98400739678],
[0.004, 3.60184879954, 207114.15223730978],
[0.003, 3.28684847821, 208276.62694171758],
[0.003, 2.80509981839, 104358.24112519680],
[0.003, 5.02808401414, 130432.40216087017],
[0.003, 6.16601650050, 20043.67456019880],
[0.003, 5.29581547615, 57503.28239153120],
[0.003, 1.35036448550, 23919.14265929160],
[0.002, 3.75076268715, 130005.80396999417],
[0.003, 3.05479754348, 162810.49469943656],
[0.003, 2.06087055668, 52065.59996192899],
[0.003, 1.11245383788, 192828.60753723036],
[0.002, 1.90218644384, 24356.78078864160],
[0.002, 4.74203919229, 76887.93562487679],
[0.002, 0.63548334553, 23384.28698689860],
[0.002, 2.51564214512, 26667.59072857300],
[0.002, 6.08909078783, 116783.65521669458],
[0.002, 3.56733241522, 26073.67604757259],
[0.003, 5.60392923976, 104466.05185498200],
[0.002, 3.56126103854, 26189.86565983980],
[0.002, 5.97797555746, 50167.24874398939],
[0.002, 4.41481991835, 65538.25598994759],
[0.002, 5.91297170155, 87367.61641884019],
[0.002, 5.17508169630, 163298.12945069079],
[0.003, 1.10832319418, 25600.26839032000],
[0.002, 2.11477268878, 25773.71696170459],
[0.002, 2.15515419441, 51951.46148744649],
[0.003, 5.43138498093, 106684.80895916879],
[0.002, 0.11511311275, 27170.98337386779],
[0.002, 5.22579437397, 6885.14988993081],
[0.002, 2.93412437896, 63786.35824152260],
[0.003, 6.19860078008, 25004.82290928060],
[0.002, 0.23150025826, 24448.83362438620],
[0.002, 0.54898566845, 153084.84390447979],
[0.002, 0.63373893542, 1265.56747862640],
[0.002, 4.49873870855, 50007.04580086580],
[0.002, 5.57750243319, 25928.60140678200],
[0.002, 5.66467419812, 25466.15934073500],
[0.002, 5.10682926241, 159969.99379441058],
[0.002, 3.49751807681, 259819.64948555277],
],
# L2
[
[53049.845, 0.00000000000, 0.00000000000],
[16903.658, 4.69072300649, 26087.90314157420],
[7396.711, 1.34735624669, 52175.80628314840],
[3018.297, 4.45643539705, 78263.70942472259],
[1107.419, 1.26226537554, 104351.61256629678],
[378.173, 4.31998055900, 130439.51570787099],
[122.998, 1.06868541052, 156527.41884944518],
[38.663, 4.08011610182, 182615.32199101939],
[14.898, 4.63343085810, 1109.37855209340],
[11.861, 0.79187646439, 208703.22513259359],
[5.243, 4.71799772791, 24978.52458948080],
[3.575, 3.77317513032, 234791.12827416777],
[2.566, 1.44059109766, 27197.28169366760],
[2.045, 1.49570544876, 51066.42773105500],
[1.064, 0.46023695675, 260879.03141574195],
[0.972, 1.80344701358, 955.59974160860],
[0.628, 6.18483168149, 529.69096509460],
[0.628, 4.84930105320, 24498.83024629040],
[0.763, 4.54299337366, 77154.33087262919],
[0.654, 0.98170349539, 5661.33204915220],
[0.572, 5.92841937309, 25028.52121138500],
[0.552, 2.13228646570, 20426.57109242200],
[0.507, 4.11466890786, 4551.95349705880],
[0.608, 4.54152310086, 2218.75710418680],
[0.439, 3.40705996719, 11322.66409830440],
[0.381, 2.83442391504, 26617.59410666880],
[0.370, 0.82360646560, 6770.71060124560],
[0.312, 5.18785829630, 46514.47423399620],
[0.314, 3.42002895816, 286966.93455731618],
[0.307, 3.20507351217, 1059.38193018920],
[0.332, 0.97416155325, 25132.30339996560],
[0.327, 2.22989850002, 21535.94964451540],
[0.303, 4.68482058244, 27043.50288318280],
[0.247, 5.87612469398, 16983.99614745660],
[0.311, 4.22422008005, 3442.57494496540],
[0.237, 4.37101224231, 114.43928868521],
[0.234, 0.93917232374, 30639.85663863300],
[0.273, 1.29086264556, 103242.23401420339],
[0.209, 3.30158370895, 213.29909543800],
[0.197, 2.07792605062, 22645.32819660879],
[0.182, 0.62534354989, 25448.00585526019],
[0.219, 1.34188738340, 28306.66024576099],
[0.168, 6.20806483822, 27147.28507176339],
[0.156, 3.91999448441, 32858.61374281979],
[0.160, 5.79377449410, 52705.49724824299],
[0.153, 4.33936015634, 1589.07289528380],
[0.161, 4.80105233203, 23869.14603738740],
[0.148, 1.97575825359, 72602.37737557039],
[0.145, 5.96024756685, 14765.23904326980],
[0.129, 4.16213277137, 23969.13928119580],
[0.135, 3.86775437070, 51220.20654153979],
[0.140, 3.66642468738, 25558.21217647960],
[0.108, 1.39723983534, 50586.73338786459],
[0.115, 0.15124159675, 26301.20223701220],
[0.113, 4.98137485250, 79373.08797681599],
[0.115, 3.05230359467, 53285.18483524180],
[0.099, 3.99635236807, 56727.75978020720],
[0.099, 3.84242768306, 83925.04147387479],
[0.093, 2.04998627084, 26068.23338067440],
[0.092, 0.08628005998, 313054.83769889036],
[0.094, 4.30968259383, 129330.13715577759],
[0.085, 3.01984486981, 53235.18821333759],
[0.105, 5.32363189985, 7238.67559160000],
[0.095, 2.24093904831, 19317.19254032860],
[0.099, 1.00218248773, 29530.47808653960],
[0.075, 5.40269356209, 26091.78447693220],
[0.074, 4.31017375756, 2333.19639287200],
[0.086, 0.78555390902, 57837.13833230060],
[0.081, 0.95889229790, 26107.57290247399],
[0.085, 3.28561166885, 12432.04265039780],
[0.070, 3.55533072657, 13521.75144159140],
[0.078, 0.27707431029, 37410.56723987860],
[0.063, 0.65828525440, 110012.94461544899],
[0.064, 2.68437002997, 43071.89928903080],
[0.067, 3.89216578780, 26084.02180621620],
[0.064, 2.75958867988, 40853.14218484400],
[0.061, 5.77836694481, 12566.15169998280],
[0.069, 3.44813862795, 10213.28554621100],
[0.060, 0.79452201416, 53131.40602475700],
[0.063, 5.02106928248, 98690.28051714458],
[0.063, 2.49160532665, 78793.40038981718],
[0.059, 0.15541098170, 36301.18868778519],
[0.056, 1.01839356017, 27676.97603685800],
[0.053, 1.55958841442, 49957.04917896160],
[0.052, 5.14041028675, 52156.13652224860],
[0.052, 1.15062443564, 26202.34243025941],
[0.052, 0.53687576880, 77308.10968311399],
[0.048, 1.60851837486, 25234.70675982219],
[0.048, 5.19507775798, 48733.23133818299],
[0.053, 5.49113976101, 25661.30495069820],
[0.046, 5.18676728087, 77204.32749453338],
[0.044, 4.97145613800, 25973.46385288896],
[0.054, 0.32708522231, 25874.60404613620],
[0.042, 2.21900478384, 52179.68761850640],
[0.045, 2.52716095523, 103292.23063610759],
[0.048, 0.48944876530, 51646.11531805379],
[0.039, 6.25275173960, 47623.85278608960],
[0.041, 2.81015791586, 41962.52073693740],
[0.037, 5.01445357044, 26080.78959457339],
[0.038, 6.08585317961, 79323.09135491178],
[0.043, 3.24574920597, 52389.10537858640],
[0.041, 2.43000457106, 639.89728631400],
[0.039, 0.76157461206, 82815.66292178139],
[0.034, 3.28090243752, 62389.09182935939],
[0.037, 0.05738918168, 38519.94579197200],
[0.035, 5.78457148656, 68050.42387851159],
[0.040, 3.14856042352, 426.59819087600],
[0.042, 4.09553132731, 52195.47604404819],
[0.032, 2.45518077222, 38654.05484155699],
[0.039, 1.80165134294, 33326.57873317420],
[0.041, 4.32141055637, 26095.01668857500],
[0.032, 3.72358129034, 136100.84775702318],
[0.040, 5.69015360764, 31749.23519072640],
[0.032, 1.65828846012, 105460.99111839019],
[0.032, 1.02549984810, 155418.04029735178],
[0.030, 1.57915654792, 52168.69273614759],
[0.031, 0.69335015231, 50057.04242277000],
[0.033, 4.04678616141, 55618.38122811380],
[0.029, 3.72464718175, 51535.90899683439],
[0.029, 5.73654447860, 129380.13377768178],
[0.038, 3.74472554242, 18849.22754997420],
[0.028, 3.05059885517, 339142.74084046460],
[0.035, 0.74194291507, 52171.92494779040],
[0.028, 0.73918545262, 7880.08915333899],
[0.036, 1.26742819742, 51116.42435295920],
[0.035, 5.29298143160, 45405.09568190280],
[0.032, 5.79438282818, 18093.37469954999],
[0.026, 5.79318346346, 66941.04532641819],
[0.028, 4.27104078603, 54394.56338733519],
[0.024, 5.06304791610, 2118.76386037840],
[0.030, 1.05420470769, 52182.91983014920],
[0.025, 1.75996910240, 124778.18365871879],
[0.022, 4.43631488516, 3328.13565628019],
[0.022, 5.09106835544, 99799.65906923798],
[0.022, 1.88199362566, 78244.03966382280],
[0.021, 2.56123211200, 94138.32702008578],
[0.025, 5.46150069597, 104881.30353139139],
[0.025, 0.05236467599, 26514.50133245020],
[0.025, 3.02983070039, 77734.01845962799],
[0.020, 3.48966334599, 103396.01282468818],
[0.021, 3.97495995227, 53764.87917843220],
[0.018, 1.07895331282, 28421.09953444620],
[0.019, 1.98308917333, 23754.70674870219],
[0.018, 4.58631365960, 76044.95232053580],
[0.019, 2.90042907299, 6283.07584999140],
[0.019, 3.18954246101, 51109.31080595839],
[0.018, 2.11231697626, 73711.75592766379],
[0.017, 0.06118735536, 88476.99497093359],
[0.018, 6.26984143774, 15874.61759536320],
[0.018, 2.58820345674, 51123.53789995999],
[0.017, 5.82864656129, 32370.97899156560],
[0.018, 5.22519288335, 78267.59076008058],
[0.015, 5.43053381026, 64741.95798313119],
[0.015, 2.53107093357, 155468.03691925600],
[0.020, 4.40959528115, 1223.81784077861],
[0.015, 4.05461375332, 51962.50718771040],
[0.015, 3.52769852262, 79219.30916633119],
[0.015, 0.45988103836, 162188.75089859738],
[0.015, 0.87152359342, 78283.37918562238],
[0.014, 1.87990160627, 125887.56221081219],
[0.016, 2.82759858554, 105410.99449648599],
[0.013, 4.67219046898, 78256.59587772179],
[0.016, 0.04901690153, 78477.00852016058],
[0.014, 4.21146699511, 52290.24557183361],
[0.014, 4.08726245298, 78270.82297172339],
[0.015, 3.80902990348, 33967.99229491319],
[0.016, 0.28761005157, 44937.13069154840],
[0.014, 5.84330605810, 103821.92160120218],
[0.015, 6.03738264520, 13655.86049117640],
[0.012, 0.81685952408, 81706.28436968799],
[0.015, 3.79894620695, 108903.56606335558],
[0.011, 3.26651828162, 52602.40447402440],
[0.011, 1.28755195884, 29416.03879785439],
[0.011, 4.03185618461, 181505.94343892598],
[0.011, 5.58448046140, 120226.23016165999],
[0.012, 0.32316787548, 91785.46086631398],
[0.013, 2.02636565149, 71492.99882347698],
[0.015, 3.56357453844, 76674.63652943878],
[0.013, 3.80590035776, 78259.82808936459],
[0.010, 0.04109363791, 77197.21394753258],
[0.010, 6.00753285175, 365230.64398203877],
[0.010, 1.74642821988, 52061.36699446317],
[0.013, 2.79229719351, 636.99627202420],
[0.011, 5.52780687723, 26727.80042788820],
[0.011, 4.04728142335, 45892.73043315699],
[0.008, 4.96985130540, 151975.46535238638],
[0.008, 3.44547998787, 23439.44831610119],
[0.011, 2.54429302352, 44181.27784112419],
[0.010, 3.50274229100, 65697.55772473979],
[0.009, 2.45809063705, 93028.94846799239],
[0.009, 4.92568932060, 104331.94280539699],
[0.008, 0.80535713418, 71980.63357473118],
[0.010, 2.20026830808, 130969.20667296558],
[0.007, 2.30885367448, 18207.81398823521],
[0.010, 5.72020107388, 77211.44104153418],
[0.007, 0.15536656581, 129483.91596626239],
[0.008, 2.31255848253, 58458.88213313979],
[0.007, 2.07713892797, 90829.86112470538],
[0.007, 3.50101836609, 117873.36400788819],
[0.007, 3.20275960823, 64607.84893354619],
[0.007, 4.73829767381, 51322.60990139639],
[0.007, 5.65553946700, 181555.94006083018],
[0.009, 2.56870006051, 129909.82474277639],
[0.008, 0.67171808844, 79852.78232000639],
[0.007, 4.06204756163, 39609.65458316560],
[0.007, 1.46575838897, 853.19638175200],
[0.007, 2.57400610109, 69159.80243060499],
[0.006, 3.86283147263, 59414.48187474840],
[0.006, 1.33545681950, 102132.85546210999],
[0.007, 2.80506785787, 39743.76363275060],
[0.006, 1.66711581835, 28206.66700195260],
[0.008, 4.73806237855, 150866.08680029298],
[0.006, 0.81325444169, 207593.84658050019],
[0.006, 0.06925555540, 58946.51688439399],
[0.006, 3.09908354288, 114564.89811250778],
[0.006, 0.88473087003, 104358.72611329758],
[0.006, 3.51715962887, 188276.65404017159],
[0.006, 4.13083556162, 54509.00267602040],
[0.006, 3.14680331401, 104564.91166173479],
[0.007, 5.89465282471, 131498.89763806018],
[0.005, 0.27174681491, 143961.26714946239],
[0.005, 5.25316838887, 3340.61242669980],
[0.007, 1.99860349328, 104355.49390165479],
[0.005, 1.47362369989, 9103.90699411760],
[0.007, 0.60725013988, 60055.89543648739],
[0.005, 3.20081630256, 13541.42120249119],
[0.006, 0.50137409605, 63498.47038145279],
[0.005, 5.07739475360, 97580.90196505119],
[0.005, 1.35632842517, 104344.49901929598],
[0.005, 2.16611734526, 103925.01437542078],
[0.005, 4.04581717475, 98068.53671630539],
[0.005, 4.90166806916, 22759.76748529401],
[0.005, 3.87246722733, 89586.37352302698],
[0.005, 3.01510200596, 103285.11708910679],
[0.006, 1.44791474080, 78050.41032928458],
[0.005, 2.47831218420, 26241.68195205900],
[0.005, 3.85799454501, 107794.18751126219],
[0.005, 0.57300969993, 134991.46920492980],
[0.005, 2.38724530268, 146314.13330323418],
[0.004, 6.11121027497, 90695.75207512038],
[0.004, 1.83181231470, 74821.13447975718],
[0.004, 5.23938469806, 130012.91751699499],
[0.005, 1.18020888905, 27311.72098235281],
[0.005, 3.00001411726, 85034.42002596818],
[0.005, 5.56662713374, 155997.72788435058],
[0.005, 2.35342507828, 145204.75475114078],
[0.004, 4.57119707855, 157636.79740153858],
[0.004, 5.78384635962, 51742.09454527159],
[0.004, 2.41778026187, 157483.01859105378],
[0.005, 2.53226316949, 103299.34418310839],
[0.004, 3.71458526250, 26555.86813192860],
[0.004, 3.83639975710, 150244.34299945380],
[0.004, 3.30201863644, 76144.94556434419],
[0.004, 0.68904721853, 124156.43985787958],
[0.004, 1.73206522989, 178063.36849396059],
[0.005, 3.20991489892, 71025.03383312259],
[0.005, 3.69408876581, 105940.68546158058],
[0.004, 2.75867944254, 391318.54712361295],
[0.005, 0.53586068200, 80482.46652890938],
[0.004, 5.07565982849, 51756.32163927320],
[0.004, 0.12462379137, 78690.30761559859],
[0.004, 5.25512859919, 157057.10981453978],
[0.004, 5.66367904256, 9384.84100807520],
[0.004, 4.70366039546, 54294.57014352679],
[0.004, 4.74767635950, 204151.27163553477],
[0.003, 3.24177385660, 155571.81910783658],
[0.003, 0.85377908455, 16066.06586147480],
[0.003, 1.58566666033, 130226.21661243298],
[0.004, 5.58218314089, 119116.85160956658],
[0.004, 0.94898112028, 78378.14871340781],
[0.004, 6.15781348253, 97112.93697469679],
[0.004, 2.31787867435, 52815.70356946240],
[0.004, 2.73401660736, 78417.48823520739],
[0.004, 5.67762508473, 183674.70392120857],
[0.004, 0.21138526735, 214364.55718174577],
[0.004, 5.24311464709, 116917.76426627958],
[0.003, 3.86634858823, 104371.28232719658],
[0.004, 5.42881221134, 233731.74634397859],
[0.003, 1.97251042531, 183145.01295611399],
[0.003, 0.60740481915, 133882.09065283637],
[0.003, 6.23399386415, 181659.72224941078],
[0.004, 6.22336284288, 140652.80125408198],
[0.003, 5.94876130841, 25035.63475838580],
[0.003, 3.83428144879, 233681.74972207437],
[0.003, 2.32902857669, 182085.63102592478],
[0.003, 2.84354681160, 123200.84011627098],
[0.003, 1.53933182823, 176953.98994186718],
[0.004, 2.45893471155, 207643.84320240439],
[0.003, 5.72001402121, 102762.53967101299],
[0.004, 1.40880562474, 80382.47328510099],
[0.003, 4.90489886883, 51749.20809227239],
[0.003, 4.76799924569, 104138.31347085879],
[0.004, 6.26291139255, 25021.40766438420],
[0.003, 0.40352872921, 132028.58860315479],
[0.003, 2.66696150741, 157586.80077963436],
[0.003, 5.23202292846, 84546.78527471398],
[0.003, 4.59428408981, 131548.89425996438],
[0.003, 2.53649995681, 50579.61984086379],
[0.003, 2.55542640702, 77829.99768684579],
[0.004, 1.67304824627, 130419.84594697120],
[0.003, 6.21862713072, 95247.70557217918],
[0.003, 5.37878648081, 44295.71712980940],
[0.003, 4.68342323732, 156507.74908854539],
[0.003, 3.36164307862, 104778.21075717278],
[0.003, 2.91632245418, 166740.70439565618],
[0.002, 0.72039482289, 7994.52844202420],
[0.002, 5.43309839263, 78903.60671103658],
[0.002, 1.12849064703, 183724.70054311279],
[0.003, 1.94668130835, 143005.66740785379],
[0.003, 0.56289392960, 104347.73123093879],
[0.002, 1.78482957305, 156531.30018480320],
[0.003, 5.03542424850, 130443.39704322898],
[0.003, 4.72735160431, 78149.27013603736],
[0.002, 5.31651763274, 208173.53416749899],
[0.003, 5.36470448658, 131395.11544947958],
[0.002, 0.06581745526, 196137.07343261078],
[0.002, 2.93678015526, 167850.08294774959],
[0.002, 5.84781134233, 65831.66677432480],
[0.002, 5.56634055777, 70269.18098269838],
[0.002, 5.42145220392, 183570.92173262799],
[0.002, 6.06636386319, 53242.30176033840],
[0.002, 4.37154457896, 128220.75860368418],
[0.002, 0.35903300236, 187167.27548807819],
[0.002, 2.78347515438, 79330.20490191258],
[0.002, 4.51952536661, 203041.89308344139],
[0.002, 3.36865001265, 170049.17029103660],
[0.002, 3.08184453618, 50593.84693486539],
[0.002, 4.32534428501, 55503.94193942859],
[0.002, 1.81636961816, 110634.68841628819],
[0.002, 5.58793955981, 103917.90082841998],
[0.002, 5.79409172557, 417406.45026518719],
[0.002, 0.85923934181, 235900.50682626115],
[0.002, 4.60084058009, 26941.09952332620],
[0.002, 5.14995676460, 182188.72380014337],
[0.002, 3.91756419842, 130446.62925487179],
[0.002, 2.88997273266, 27154.39861876420],
[0.003, 5.85721944439, 52329.58509363319],
[0.002, 6.10145799164, 77623.81213840858],
[0.002, 1.98246165585, 77844.22478084739],
[0.002, 0.11071759480, 130866.11389874699],
[0.002, 0.64849171165, 52643.77127350280],
[0.002, 3.98410950717, 104466.05185498200],
[0.002, 1.83715639115, 123668.80510662538],
[0.002, 5.61305711026, 76667.52298243798],
[0.002, 5.83992902277, 19804.82729158280],
[0.002, 0.54331921743, 130459.18546877075],
[0.002, 0.00997429525, 141762.17980617538],
[0.002, 5.59377744943, 35191.81013569180],
[0.002, 0.39746661127, 26521.61487945100],
[0.002, 6.16192704020, 130652.81480330898],
[0.002, 0.85416063806, 25934.12433108940],
[0.002, 2.18339110714, 156100.82065856917],
[0.002, 4.39281517355, 130432.40216087017],
[0.002, 5.50117730009, 172402.03644480839],
[0.001, 3.49234867738, 130435.63437251298],
[0.001, 4.80995492080, 77837.11123384659],
[0.002, 6.26921260007, 87367.61641884019],
[0.002, 2.79561490409, 115674.27666460119],
[0.002, 4.92122664455, 24864.08530079559],
[0.001, 2.41576832330, 26037.90651966999],
[0.001, 6.04596837149, 129373.02023068098],
[0.002, 0.94020572434, 80596.90581759460],
[0.002, 0.30073776192, 51639.00177105299],
[0.001, 0.18846827752, 34082.43158359840],
[0.001, 3.62844435085, 161079.37234650398],
[0.002, 5.13133615893, 49842.60989027639],
[0.001, 0.30832555285, 53228.07466633679],
[0.001, 5.56519625382, 129387.24732468258],
[0.001, 5.63110777945, 46848.33017476560],
[0.001, 1.38420566741, 26011.63707029860],
[0.001, 5.86450783334, 26724.89941359840],
[0.001, 6.14517818644, 76681.75007643958],
[0.001, 3.19299019423, 25654.19140369739],
[0.001, 0.34495954566, 128850.44281258718],
[0.001, 3.60230008239, 20760.42703319140],
[0.001, 5.80015495751, 19406.67828817460],
[0.001, 4.42116052212, 100909.03762133139],
[0.001, 0.48535289275, 52698.38370124219],
[0.001, 6.22940855233, 111590.28815789679],
[0.001, 0.16055219324, 105307.21230790539],
[0.001, 2.19795772042, 29428.51556827400],
[0.001, 5.09783503526, 102232.84870591838],
[0.001, 0.61014627166, 25668.41849769900],
[0.001, 5.62459774786, 25565.32572348040],
[0.001, 0.90991571866, 103711.71527998279],
[0.001, 0.28037611495, 25450.90686955000],
[0.001, 0.54824728173, 26137.89976347840],
[0.001, 4.25324476801, 209812.60368468694],
[0.001, 0.08089899001, 51543.02254383520],
[0.001, 0.33953378597, 51528.79544983359],
[0.001, 4.15667461533, 25551.09862947879],
[0.001, 1.59597814656, 72936.23331633979],
[0.001, 5.59362222240, 25619.93815121980],
[0.001, 3.26520760555, 240452.46032331997],
[0.001, 5.52286605071, 52125.80966124419],
],
# L3
[
[188.077, 0.03466830117, 52175.80628314840],
[142.152, 3.12505452600, 26087.90314157420],
[96.877, 3.00378171915, 78263.70942472259],
[43.669, 6.01867965826, 104351.61256629678],
[35.395, 0.00000000000, 0.00000000000],
[18.045, 2.77538373991, 130439.51570787099],
[6.971, 5.81808665742, 156527.41884944518],
[2.556, 2.57014364454, 182615.32199101939],
[0.900, 5.59308888939, 208703.22513259359],
[0.307, 2.32189002493, 234791.12827416777],
[0.117, 3.16567324160, 24978.52458948080],
[0.102, 5.32134064237, 260879.03141574195],
[0.077, 6.24155593431, 51066.42773105500],
[0.057, 6.11222330831, 27197.28169366760],
[0.034, 2.03244612467, 286966.93455731618],
[0.038, 2.99912912226, 77154.33087262919],
[0.031, 3.11483471984, 53285.18483524180],
[0.017, 6.02950226714, 103242.23401420339],
[0.011, 5.00109293882, 313054.83769889036],
[0.009, 0.59396483404, 20426.57109242200],
[0.009, 3.65190477342, 46514.47423399620],
[0.009, 6.28305510644, 79373.08797681599],
[0.008, 2.74138109305, 129330.13715577759],
[0.007, 5.79018632644, 25132.30339996560],
[0.005, 0.33554769835, 72602.37737557039],
[0.005, 1.31115810350, 26617.59410666880],
[0.004, 2.46414914425, 51220.20654153979],
[0.004, 1.74528964721, 339142.74084046460],
[0.004, 4.31141963105, 52705.49724824299],
[0.004, 3.07093349506, 27043.50288318280],
[0.004, 5.68013701250, 30639.85663863300],
[0.003, 5.80662640937, 155418.04029735178],
[0.003, 4.64519088060, 27147.28507176339],
[0.004, 3.02893592955, 23869.14603738740],
[0.003, 4.35199345075, 79323.09135491178],
[0.003, 1.29040630287, 53235.18821333759],
[0.003, 4.34017676059, 14765.23904326980],
[0.003, 2.86652251194, 105460.99111839019],
[0.003, 6.23875368963, 28306.66024576099],
[0.003, 3.37815322354, 98690.28051714458],
[0.002, 5.37466119262, 110012.94461544899],
[0.002, 0.16040583556, 50586.73338786459],
[0.002, 0.35038889636, 19317.19254032860],
[0.002, 6.23271649650, 49957.04917896160],
[0.002, 2.52219274566, 181505.94343892598],
[0.002, 5.05358903232, 162188.75089859738],
[0.002, 0.15071040297, 124778.18365871879],
[0.002, 2.29024350361, 56727.75978020720],
[0.002, 0.42411179784, 71492.99882347698],
[0.002, 6.11262694468, 57837.13833230060],
[0.002, 2.17198531948, 108903.56606335558],
[0.002, 2.92723030315, 54394.56338733519],
[0.002, 2.40411188609, 83925.04147387479],
[0.002, 3.43613336205, 78267.59076008058],
[0.002, 4.77873510695, 365230.64398203877],
[0.002, 3.54043808451, 64741.95798313119],
[0.002, 1.60502923885, 77734.01845962799],
[0.002, 3.11800510932, 150866.08680029298],
[0.002, 1.02098746090, 78793.40038981718],
[0.002, 4.39439085682, 88476.99497093359],
[0.002, 1.49912329404, 43071.89928903080],
[0.002, 1.96277160647, 25558.21217647960],
[0.002, 4.76774165204, 77204.32749453338],
[0.002, 0.61066658116, 155468.03691925600],
[0.002, 5.26875308161, 77308.10968311399],
[0.002, 0.52736095020, 94138.32702008578],
[0.002, 2.05793854229, 103396.01282468818],
[0.002, 4.12698349577, 66941.04532641819],
[0.002, 5.43336870762, 78283.37918562238],
[0.002, 1.97520131105, 136100.84775702318],
[0.002, 5.54343111585, 81706.28436968799],
[0.002, 1.25444219651, 40853.14218484400],
[0.002, 1.07684180123, 103292.23063610759],
[0.001, 3.23979322492, 52156.13652224860],
[0.002, 5.33834891475, 52182.91983014920],
[0.002, 3.36867866204, 99799.65906923798],
[0.002, 5.40697906670, 82815.66292178139],
[0.001, 5.80853057947, 4551.95349705880],
[0.001, 4.95909385120, 129483.91596626239],
[0.001, 3.17481245588, 76674.63652943878],
[0.001, 1.53803169600, 52389.10537858640],
[0.001, 2.48052961456, 53764.87917843220],
[0.001, 1.20843095195, 105410.99449648599],
[0.002, 3.64576833526, 45405.09568190280],
[0.002, 4.00710217385, 104881.30353139139],
[0.001, 3.09532094520, 76044.95232053580],
[0.001, 5.52119023864, 58946.51688439399],
[0.002, 5.53036712466, 131548.89425996438],
[0.001, 0.38352295948, 52179.68761850640],
[0.001, 0.08902944955, 51116.42435295920],
[0.001, 1.47514166670, 62389.09182935939],
[0.001, 4.20864838814, 131498.89763806018],
[0.001, 2.88161012078, 79219.30916633119],
[0.001, 5.03155341199, 51646.11531805379],
[0.001, 0.05873279909, 53131.40602475700],
[0.001, 0.60647620600, 38654.05484155699],
[0.001, 1.58007357234, 391318.54712361295],
[0.001, 0.68687557696, 130969.20667296558],
[0.001, 3.90367213586, 129380.13377768178],
[0.001, 2.11138180302, 32858.61374281979],
[0.001, 0.18542211423, 78244.03966382280],
[0.001, 1.24063083423, 9103.90699411760],
[0.001, 1.78547815249, 188276.65404017159],
[0.001, 0.94125502564, 93028.94846799239],
[0.001, 2.41309932759, 55618.38122811380],
[0.001, 2.29683748973, 52195.47604404819],
[0.001, 3.39284109553, 25028.52121138500],
[0.001, 4.29717383023, 26301.20223701220],
[0.001, 6.10639166059, 102132.85546210999],
[0.001, 4.58189329524, 37410.56723987860],
[0.001, 6.16145880062, 125887.56221081219],
[0.001, 5.22010441376, 52171.92494779040],
[0.001, 5.95645110567, 80482.46652890938],
[0.001, 4.81981872221, 26107.57290247399],
[0.001, 4.27546069271, 36301.18868778519],
[0.001, 2.43374991272, 51535.90899683439],
[0.001, 4.03088051207, 1109.37855209340],
[0.001, 5.60495524983, 207593.84658050019],
[0.001, 4.89918476796, 35191.81013569180],
[0.001, 6.07747011982, 27676.97603685800],
[0.001, 5.48361013686, 29530.47808653960],
[0.001, 0.15288602386, 25448.00585526019],
[0.001, 2.18342825402, 63498.47038145279],
[0.001, 3.67054321453, 21535.94964451540],
[0.001, 1.49815422727, 26084.02180621620],
[0.001, 1.75551273491, 26095.01668857500],
[0.001, 2.60061927559, 12566.15169998280],
[0.001, 2.69537843932, 52290.24557183361],
[0.001, 4.87760109673, 25874.60404613620],
[0.001, 2.82170820105, 26091.78447693220],
[0.001, 0.20736391933, 52061.36699446317],
[0.001, 3.82330817663, 68050.42387851159],
[0.001, 4.42501613287, 22645.32819660879],
[0.001, 6.01128227925, 52168.69273614759],
[0.001, 0.28595674172, 11322.66409830440],
[0.001, 5.86280830053, 26202.34243025941],
[0.001, 3.42109354799, 25973.46385288896],
[0.001, 0.30050065300, 41962.52073693740],
[0.001, 2.73414310032, 25035.63475838580],
[0.001, 1.72346523407, 51962.50718771040],
[0.001, 4.77297529316, 78477.00852016058],
[0.001, 5.84491832575, 50057.04242277000],
[0.001, 3.22072290870, 25021.40766438420],
[0.001, 4.74388045372, 26514.50133245020],
[0.001, 4.31760630574, 69159.80243060499],
[0.001, 0.65529515413, 426.59819087600],
[0.000, 1.96307435492, 1059.38193018920],
[0.001, 5.58694327783, 79852.78232000639],
[0.000, 3.84680432548, 26080.78959457339],
[0.001, 6.07111696987, 102762.53967101299],
[0.000, 0.59142287644, 73711.75592766379],
[0.001, 5.84438975852, 105307.21230790539],
[0.001, 2.82906439989, 24498.83024629040],
],
# L4
[
[114.078, 3.14159265359, 0.00000000000],
[3.247, 2.02848007619, 26087.90314157420],
[1.914, 1.41731803758, 78263.70942472259],
[1.727, 4.50137643801, 52175.80628314840],
[1.237, 4.49970181057, 104351.61256629678],
[0.645, 1.26591776986, 130439.51570787099],
[0.298, 4.30600984981, 156527.41884944518],
[0.128, 1.05702505039, 182615.32199101939],
[0.051, 4.08566191934, 208703.22513259359],
[0.020, 0.82130394681, 234791.12827416777],
[0.008, 3.82199615635, 260879.03141574195],
[0.003, 0.54824060574, 286966.93455731618],
[0.002, 3.52134138964, 313054.83769889036],
[0.001, 1.67435118540, 24978.52458948080],
[0.002, 4.60718203612, 51066.42773105500],
[0.001, 1.11396201203, 129330.13715577759],
[0.001, 4.35040700322, 103242.23401420339],
[0.001, 4.17434865844, 79373.08797681599],
[0.001, 1.20388630609, 77154.33087262919],
[0.001, 4.84677084740, 27197.28169366760],
[0.001, 0.29913093643, 339142.74084046460],
[0.000, 4.11587125815, 155418.04029735178],
[0.000, 0.73293870976, 46514.47423399620],
[0.000, 3.68822427283, 21535.94964451540],
[0.000, 3.83816920045, 20426.57109242200],
[0.000, 4.73086078962, 1059.38193018920],
[0.000, 0.40939402954, 24498.83024629040],
[0.000, 3.30678220146, 365230.64398203877],
],
# L5
[
[0.877, 3.14159265359, 0.00000000000],
[0.059, 3.37513289692, 52175.80628314840],
[0.042, 0.02433099382, 78263.70942472259],
[0.043, 4.65071406046, 26087.90314157420],
[0.031, 2.98112204944, 104351.61256629678],
[0.019, 6.00992467582, 130439.51570787099],
[0.010, 2.75699791920, 156527.41884944518],
[0.005, 5.79082359724, 182615.32199101939],
[0.002, 2.51435448230, 208703.22513259359],
[0.001, 5.49411470932, 234791.12827416777],
[0.001, 2.23688504668, 260879.03141574195],
[0.001, 5.18718589133, 286966.93455731618],
[0.000, 2.11315496491, 313054.83769889036],
],
]
"""This table contains Mercury's periodic terms (all of them) from the
planetary theory VSOP87 for the heliocentric longitude at the equinox of date
(taken from the 'D' solution). In Meeus' book a shortened version can be found
in pages 414-415."""
VSOP87_B = [
# B0
[
[11737528.962, 1.98357498767, 26087.90314157420],
[2388076.996, 5.03738959685, 52175.80628314840],
[1222839.532, 3.14159265359, 0.00000000000],
[543251.810, 1.79644363963, 78263.70942472259],
[129778.770, 4.83232503961, 104351.61256629678],
[31866.927, 1.58088495667, 130439.51570787099],
[7963.301, 4.60972126348, 156527.41884944518],
[2014.189, 1.35324164694, 182615.32199101939],
[513.953, 4.37835409309, 208703.22513259359],
[207.674, 4.91772564073, 27197.28169366760],
[208.584, 2.02020294153, 24978.52458948080],
[132.013, 1.11908492283, 234791.12827416777],
[100.454, 5.65684734206, 20426.57109242200],
[121.395, 1.81271752059, 53285.18483524180],
[91.566, 2.28163128692, 25028.52121138500],
[99.214, 0.09391887097, 51116.42435295920],
[94.574, 1.24184909234, 31749.23519072640],
[78.785, 4.40725880000, 57837.13833230060],
[77.747, 0.52557061749, 1059.38193018920],
[84.264, 5.08510388314, 51066.42773105500],
[49.948, 3.49752993688, 5661.33204915220],
[46.454, 3.23739270829, 77204.32749453338],
[44.767, 4.87849816734, 79373.08797681599],
[40.766, 2.46558332165, 46514.47423399620],
[37.378, 4.45768797944, 4551.95349705880],
[34.082, 4.14209210575, 260879.03141574195],
[35.911, 1.09057317869, 1109.37855209340],
[31.953, 1.18516389747, 83925.04147387479],
[30.954, 3.50328027210, 21535.94964451540],
[31.808, 2.41474588439, 47623.85278608960],
[28.691, 1.84828614269, 77154.33087262919],
[25.765, 2.77593370583, 27043.50288318280],
[25.199, 3.59062266460, 27147.28507176339],
[20.244, 3.06833797229, 51646.11531805379],
[18.591, 5.58427274440, 73711.75592766379],
[16.971, 0.02791276551, 103292.23063610759],
[20.099, 4.06593040301, 25132.30339996560],
[17.002, 6.13739392193, 41962.52073693740],
[14.984, 1.64717994813, 105460.99111839019],
[14.186, 0.33074185469, 10213.28554621100],
[15.577, 6.07693643204, 53131.40602475700],
[15.795, 3.79629547258, 529.69096509460],
[14.011, 5.52786452723, 72602.37737557039],
[12.309, 3.16626298867, 14765.23904326980],
[11.261, 0.11326534696, 13521.75144159140],
[12.448, 4.05109331029, 39609.65458316560],
[13.044, 3.48016433624, 37410.56723987860],
[11.042, 4.23192662377, 110012.94461544899],
[11.152, 0.55658461820, 63498.47038145279],
[10.717, 1.53686240986, 25661.30495069820],
[10.213, 2.87881017166, 12566.15169998280],
[9.924, 0.94824584866, 65697.55772473979],
[11.047, 5.79741510309, 51749.20809227239],
[10.460, 5.82962163777, 50586.73338786459],
[9.774, 1.66271762650, 24498.83024629040],
[9.412, 1.82364886045, 15874.61759536320],
[12.866, 4.81650804018, 30639.85663863300],
[9.123, 4.88604394110, 103242.23401420339],
[9.011, 1.04262074744, 426.59819087600],
[8.735, 3.04132552652, 68050.42387851159],
[8.491, 1.05130498445, 1589.07289528380],
[8.835, 0.88128343813, 286966.93455731618],
[8.823, 5.81343662067, 11322.66409830440],
[8.196, 0.84015129448, 51220.20654153979],
[7.640, 3.43584035231, 36301.18868778519],
[9.175, 6.16059719071, 77734.01845962799],
[8.897, 0.39691733779, 53235.18821333759],
[7.253, 2.37179970828, 99799.65906923798],
[7.104, 5.73557153523, 26617.59410666880],
[8.322, 5.27157128800, 25558.21217647960],
[6.578, 2.66741925057, 52705.49724824299],
[5.825, 6.25072627414, 33326.57873317420],
[5.625, 3.08030000230, 129380.13377768178],
[5.295, 1.35863387771, 45892.73043315699],
[5.116, 2.67576280851, 76674.63652943878],
[5.035, 2.66614676257, 77837.11123384659],
[4.762, 4.68983196238, 131548.89425996438],
[5.714, 2.87339047644, 79219.30916633119],
[5.601, 5.37190885150, 955.59974160860],
[4.965, 3.47619946892, 59414.48187474840],
[5.468, 1.43781223143, 56727.75978020720],
[4.080, 4.01667499000, 91785.46086631398],
[3.971, 5.44452771841, 6283.07584999140],
[4.063, 5.64291749144, 26068.23338067440],
[3.877, 3.60887633874, 89586.37352302698],
[4.047, 5.95235957644, 38654.05484155699],
[4.064, 1.46283079734, 26107.57290247399],
[3.681, 0.47365215122, 62389.09182935939],
[4.247, 6.23163402945, 40853.14218484400],
[3.694, 2.75543227024, 7238.67559160000],
[3.348, 5.91868911857, 43071.89928903080],
[4.475, 2.28937952702, 98690.28051714458],
[3.115, 0.74943919509, 32858.61374281979],
[3.100, 3.35203735852, 19804.82729158280],
[3.215, 6.11374633777, 94138.32702008578],
[3.558, 0.98820289555, 136100.84775702318],
[2.908, 4.06284172838, 26514.50133245020],
[2.799, 1.63602212056, 129330.13715577759],
[2.800, 3.88358619611, 77308.10968311399],
[2.680, 4.48235268618, 71980.63357473118],
[2.767, 4.12700796923, 27676.97603685800],
[3.285, 0.39398081520, 18849.22754997420],
[3.290, 2.93487892542, 103821.92160120218],
[3.048, 0.67698362024, 9103.90699411760],
[2.484, 5.42332204960, 125887.56221081219],
[2.663, 1.70280488847, 16983.99614745660],
[2.791, 2.76839978418, 26091.78447693220],
[2.747, 5.75135788288, 19317.19254032860],
[2.676, 5.73635682216, 78793.40038981718],
[2.710, 4.31274902720, 58946.51688439399],
[2.877, 3.45410696457, 79323.09135491178],
[2.787, 4.34025817469, 26084.02180621620],
[2.097, 2.09090732812, 23869.14603738740],
[2.297, 3.90321251530, 313054.83769889036],
[2.535, 3.05170623483, 69159.80243060499],
[2.211, 4.65120210900, 28306.66024576099],
[1.912, 5.78403850812, 102762.53967101299],
[2.265, 3.34478937379, 22645.32819660879],
[1.817, 5.74251490625, 103925.01437542078],
[1.961, 5.94577427093, 105307.21230790539],
[1.922, 4.43763124338, 82815.66292178139],
[1.667, 4.51887419928, 52195.47604404819],
[1.771, 6.12278757535, 155468.03691925600],
[1.515, 1.72458115830, 54394.56338733519],
[1.585, 0.23900687506, 85502.38501632259],
[1.477, 4.73359545019, 29530.47808653960],
[1.469, 1.44574704924, 157636.79740153858],
[1.653, 2.41345886386, 52156.13652224860],
[1.377, 0.59981573116, 26080.78959457339],
[1.430, 0.78416943990, 117873.36400788819],
[1.680, 3.42684715134, 6770.71060124560],
[1.604, 4.52048871587, 3442.57494496540],
[1.345, 0.31857167988, 51535.90899683439],
[1.357, 3.17349203273, 25874.60404613620],
[1.250, 2.33380858079, 25448.00585526019],
[1.196, 2.09277609512, 48733.23133818299],
[1.194, 0.36376300747, 115674.27666460119],
[1.443, 2.73186009497, 64741.95798313119],
[1.375, 5.32672767568, 124778.18365871879],
[1.325, 3.57805811914, 88476.99497093359],
[1.115, 0.26092087309, 639.89728631400],
[1.094, 2.22755234371, 32370.97899156560],
[1.433, 3.03965981318, 66941.04532641819],
[1.370, 3.45924813827, 44937.13069154840],
[1.003, 0.28769164324, 25934.12433108940],
[1.136, 1.11057140999, 52171.92494779040],
[1.000, 0.52457514920, 26241.68195205900],
[1.033, 2.55563840213, 45405.09568190280],
[1.096, 5.01257889902, 7.11354700080],
[1.146, 5.40631829059, 213.29909543800],
[1.080, 5.97835772937, 129909.82474277639],
[0.988, 1.25815251981, 98068.53671630539],
[1.062, 2.88132742088, 120226.23016165999],
[0.892, 0.63710475446, 103396.01282468818],
[1.041, 0.89365572198, 52602.40447402440],
[0.978, 0.93067667928, 53764.87917843220],
[1.136, 5.82023159264, 52179.68761850640],
[0.838, 4.66556603681, 155418.04029735178],
[0.910, 5.53568417425, 58458.88213313979],
[0.834, 5.16159172473, 49957.04917896160],
[1.100, 4.02157761190, 162188.75089859738],
[0.805, 1.03425281191, 23969.13928119580],
[0.835, 5.28205659749, 50057.04242277000],
[0.891, 0.21542628779, 105410.99449648599],
[0.743, 0.86945390288, 52389.10537858640],
[0.783, 3.32304812554, 26301.20223701220],
[0.711, 1.57780048955, 2118.76386037840],
[0.801, 2.18220012579, 151975.46535238638],
[0.915, 1.71247948367, 51962.50718771040],
[0.832, 5.53506450006, 74821.13447975718],
[0.750, 2.16183196338, 52168.69273614759],
[0.923, 2.50170936928, 104881.30353139139],
[0.727, 6.05394635764, 95247.70557217918],
[0.640, 2.71738158564, 131395.11544947958],
[0.628, 1.43868691098, 55618.38122811380],
[0.622, 3.46102298068, 77623.81213840858],
[0.825, 1.00561540075, 85034.42002596818],
[0.611, 0.99677911598, 2218.75710418680],
[0.605, 4.68164610499, 52182.91983014920],
[0.646, 2.57803910757, 128850.44281258718],
[0.621, 1.16576338077, 108903.56606335558],
[0.651, 1.60040223342, 26095.01668857500],
[0.599, 2.51123620954, 130012.91751699499],
[0.570, 1.27714994259, 78283.37918562238],
[0.616, 2.88990323867, 52026.24308601380],
[0.553, 5.17654422678, 25938.33994443960],
[0.560, 3.32834155275, 51109.31080595839],
[0.538, 4.74592892110, 80482.46652890938],
[0.514, 5.52495783925, 25021.40766438420],
[0.512, 2.12021253064, 25035.63475838580],
[0.545, 1.31029342517, 26555.86813192860],
[0.475, 4.05390077061, 149.56319713460],
[0.464, 3.26222495894, 111590.28815789679],
[0.460, 5.34048307893, 46848.33017476560],
[0.550, 5.84636069235, 25619.93815121980],
[0.447, 3.57688571640, 1066.49547719000],
[0.550, 6.22077946049, 51123.53789995999],
[0.596, 0.64492352990, 339142.74084046460],
[0.484, 3.16177806139, 38519.94579197200],
[0.441, 0.67395966884, 1052.26838318840],
[0.477, 0.22606306742, 71025.03383312259],
[0.423, 2.08215220948, 76144.94556434419],
[0.472, 3.35508518254, 35191.81013569180],
[0.418, 3.57908956341, 52329.58509363319],
[0.441, 4.91196768491, 78050.41032928458],
[0.440, 4.47866581814, 183724.70054311279],
[0.435, 1.98197259533, 26094.53170047421],
[0.564, 5.45416215614, 78244.03966382280],
[0.540, 2.87570725847, 181555.94006083018],
[0.450, 6.09063658976, 93028.94846799239],
[0.461, 3.82361162048, 143961.26714946239],
[0.408, 3.34314470563, 52022.02747266360],
[0.412, 2.07516355558, 150866.08680029298],
[0.435, 5.12507754577, 26081.27458267419],
[0.409, 0.56822912556, 64607.84893354619],
[0.388, 4.16039183226, 78259.82808936459],
[0.393, 3.23715146834, 13655.86049117640],
[0.375, 5.33297275541, 26011.63707029860],
[0.467, 5.77388878977, 90829.86112470538],
[0.350, 5.62301652558, 71492.99882347698],
[0.352, 3.27694758804, 26727.80042788820],
[0.350, 3.39302729957, 141762.17980617538],
[0.390, 2.58800166779, 78267.59076008058],
[0.365, 3.19925143022, 52099.54021187280],
[0.433, 1.55185163390, 20760.42703319140],
[0.327, 5.69228054184, 12432.04265039780],
[0.339, 1.58088572820, 45494.58142974879],
[0.338, 2.73161573173, 155997.72788435058],
[0.315, 4.00061444247, 78477.00852016058],
[0.435, 0.36408526333, 114564.89811250778],
[0.344, 5.02616143626, 78256.59587772179],
[0.346, 4.14121333484, 111122.32316754239],
[0.286, 5.40513646014, 6681.22485339960],
[0.283, 3.65516534367, 76.26607127560],
[0.325, 4.30412080460, 124156.43985787958],
[0.364, 2.32771554672, 84546.78527471398],
[0.331, 0.76882559900, 188276.65404017159],
[0.267, 3.81778097058, 19406.67828817460],
[0.270, 6.02010732963, 78114.14622758799],
[0.273, 3.66726180240, 129483.91596626239],
[0.263, 0.18743596408, 77197.21394753258],
[0.268, 3.25051884036, 131498.89763806018],
[0.284, 1.93848296863, 76044.95232053580],
[0.295, 5.53951004419, 130969.20667296558],
[0.335, 5.92048177497, 146314.13330323418],
[0.246, 1.45343047775, 78270.82297172339],
[0.259, 3.08241704780, 77211.44104153418],
[0.253, 2.86398164134, 121335.60871375339],
[0.338, 3.95823396010, 78690.30761559859],
[0.317, 3.98138369220, 79852.78232000639],
[0.232, 4.66776441683, 28206.66700195260],
[0.247, 1.40414696612, 181505.94343892598],
[0.228, 0.25677390582, 103711.71527998279],
[0.219, 4.69799359762, 71582.48457132299],
[0.221, 4.46394113791, 81706.28436968799],
[0.254, 1.43735157085, 5327.47610838280],
[0.199, 5.76674433704, 157483.01859105378],
[0.253, 2.47481215159, 72936.23331633979],
[0.191, 4.17749403686, 134991.46920492980],
[0.246, 5.21552773120, 178063.36849396059],
[0.182, 4.31488794636, 104371.28232719658],
[0.206, 1.62004139707, 106570.36967048359],
[0.234, 2.18979921440, 100909.03762133139],
[0.176, 3.58325574282, 48835.19385644859],
[0.188, 2.58568452037, 51707.84129279399],
[0.177, 1.89461095130, 52169.17772424839],
[0.168, 3.01264496377, 23754.70674870219],
[0.222, 4.35573235377, 52643.77127350280],
[0.169, 5.25194313253, 102232.84870591838],
[0.188, 5.55333225508, 156100.82065856917],
[0.163, 1.72109994467, 104138.31347085879],
[0.205, 5.64507146979, 154938.34595416137],
[0.161, 0.06514575292, 78187.44335344699],
[0.155, 3.29540644622, 97112.93697469679],
[0.152, 1.66425291176, 25654.19140369739],
[0.179, 2.20248310353, 104331.94280539699],
[0.157, 5.91615237188, 51742.09454527159],
[0.176, 5.03409571975, 52182.43484204840],
[0.145, 0.34814763869, 78417.48823520739],
[0.151, 0.84016182050, 26237.46633870879],
[0.143, 0.36102957131, 27154.39861876420],
[0.142, 5.87490895177, 26037.90651966999],
[0.167, 4.43520444137, 25668.41849769900],
[0.137, 2.85089329350, 119116.85160956658],
[0.161, 5.91020381915, 207643.84320240439],
[0.130, 6.26801612444, 137678.19129947099],
[0.130, 0.93376066695, 433.71173787680],
[0.140, 1.22522976768, 26137.89976347840],
[0.144, 4.56326656247, 419.48464387520],
[0.145, 2.53141564902, 116917.76426627958],
[0.145, 3.74606280935, 27140.17152476259],
[0.155, 3.65976494728, 365230.64398203877],
[0.124, 0.92716868075, 104347.73123093879],
[0.140, 0.11287334170, 78109.93061423779],
[0.126, 1.13823138141, 51322.60990139639],
[0.146, 3.25675289634, 3340.61242669980],
[0.122, 5.10611624534, 176953.98994186718],
[0.125, 5.63666753628, 104355.49390165479],
[0.155, 2.30861381490, 51756.32163927320],
[0.136, 3.41914767255, 140652.80125408198],
[0.115, 6.25299482333, 39743.76363275060],
[0.113, 0.79353194356, 7994.52844202420],
[0.126, 0.12477487369, 52815.70356946240],
[0.121, 0.68099507149, 50483.64061364600],
[0.118, 0.87294905519, 137210.22630911658],
[0.112, 2.41390426449, 97580.90196505119],
[0.130, 1.22267912068, 209812.60368468694],
[0.110, 3.15687226733, 25234.70675982219],
[0.109, 2.85465805569, 24395.73747207180],
[0.108, 5.73587160710, 853.19638175200],
[0.141, 4.76875897743, 28421.09953444620],
[0.143, 0.57659923971, 170049.17029103660],
[0.127, 5.39590556187, 110634.68841628819],
[0.110, 0.79294568581, 104564.91166173479],
[0.103, 5.77115680934, 182085.63102592478],
[0.108, 0.78147749534, 42153.96900304900],
[0.101, 6.24176236571, 1692.16566950240],
[0.125, 1.72822604057, 104344.49901929598],
[0.112, 1.53691309669, 18093.37469954999],
[0.100, 6.03656277681, 147423.51185532758],
[0.102, 2.16777222106, 32769.12799497380],
[0.127, 5.69552946334, 44181.27784112419],
[0.096, 2.81662615895, 104202.04936916218],
[0.094, 6.16378269144, 103299.34418310839],
[0.095, 3.08582674985, 70269.18098269838],
[0.096, 3.26682732105, 103285.11708910679],
[0.101, 1.49832461293, 40565.25432477420],
[0.099, 0.11817727117, 167850.08294774959],
[0.099, 3.80154992347, 214364.55718174577],
[0.093, 3.27120904242, 90695.75207512038],
[0.104, 5.35405285854, 126996.94076290558],
[0.105, 0.73008875321, 104778.21075717278],
[0.089, 2.82753100547, 50579.61984086379],
[0.098, 0.55393078868, 33967.99229491319],
[0.087, 1.47928882834, 97670.38771289718],
[0.117, 0.17401840597, 61279.71327726600],
[0.089, 0.41552735762, 26164.16921284980],
[0.091, 2.28447351962, 157057.10981453978],
[0.103, 2.67784306575, 172402.03644480839],
[0.084, 4.31852113132, 60055.89543648739],
[0.085, 4.50666554965, 104358.72611329758],
[0.098, 0.74967522191, 105940.68546158058],
[0.082, 2.80078395016, 52101.02468458109],
[0.086, 0.38069361609, 74923.09699802278],
[0.077, 4.91602955543, 24491.71669928959],
[0.104, 6.08692240129, 10021.83728009940],
[0.094, 2.21754829180, 25973.46385288896],
[0.079, 4.63574888508, 2333.19639287200],
[0.076, 0.06676607630, 157586.80077963436],
[0.076, 4.09119863738, 1596.18644228460],
[0.089, 0.51926466594, 50593.84693486539],
[0.078, 5.85412082904, 18207.81398823521],
[0.083, 1.48347794862, 54294.57014352679],
[0.102, 1.11648927836, 150244.34299945380],
[0.081, 0.43168464249, 155571.81910783658],
[0.071, 2.77560894834, 77829.99768684579],
[0.098, 3.04617186486, 16066.06586147480],
[0.089, 3.91487126164, 68241.87214462319],
[0.076, 3.32839538947, 129799.61842155698],
[0.091, 4.99146967087, 102132.85546210999],
[0.088, 4.54401955709, 51543.02254383520],
[0.092, 4.88825714860, 26202.34243025941],
[0.066, 1.97272013972, 632.78373931320],
[0.066, 1.34921841483, 52808.59002246159],
[0.071, 1.21551241620, 107794.18751126219],
[0.088, 3.90671333341, 74.78159856730],
[0.076, 1.11684262920, 78731.67441507700],
[0.060, 4.94665488683, 78257.08086582259],
[0.067, 4.24719146625, 14477.35118320000],
[0.069, 5.46721744006, 77844.22478084739],
[0.059, 2.80000354604, 25863.55834587229],
[0.060, 4.23924716288, 52225.80290505260],
[0.059, 5.90340687048, 103.09277421860],
[0.059, 3.81127888964, 76571.54375522019],
[0.060, 5.62072757879, 77795.74443436819],
[0.069, 4.36673018646, 207593.84658050019],
[0.066, 0.49890308433, 51951.46148744649],
[0.058, 1.63810168022, 51013.33157874059],
[0.058, 4.28286858594, 77410.51304297059],
[0.066, 0.61313044187, 51639.00177105299],
[0.057, 3.15657420172, 104275.34649502118],
[0.058, 4.41262101447, 26720.68688088739],
[0.075, 0.13973480485, 1581.95934828300],
[0.057, 0.41985749035, 23439.44831610119],
[0.069, 6.04001555481, 29428.51556827400],
[0.055, 0.87548003173, 161079.37234650398],
[0.054, 2.10504641371, 2648.45482547300],
[0.070, 1.90064683191, 204151.27163553477],
[0.054, 3.73359360369, 24925.42843716640],
[0.055, 4.74493087072, 49527.35145767539],
[0.071, 2.67007207774, 24505.94379329119],
[0.057, 1.10422154948, 130459.18546877075],
[0.068, 5.29164108644, 26013.12154300690],
[0.054, 0.06047544079, 52072.71350892979],
[0.053, 0.06419360550, 536.80451209540],
[0.053, 5.00852687358, 25977.69682035479],
[0.052, 4.17403886040, 25131.61398560359],
[0.052, 3.31036935415, 7880.08915333899],
[0.070, 6.10702300469, 52278.89905736699],
[0.059, 1.97971323674, 51219.51712717779],
[0.052, 0.17883872581, 224.34479570190],
[0.057, 2.64616122722, 52125.80966124419],
[0.051, 2.51127480556, 183570.92173262799],
[0.050, 4.67814206741, 130226.21661243298],
[0.050, 4.77326024770, 25780.34552060460],
[0.053, 2.81579181250, 55516.41870984820],
[0.057, 2.13355985608, 128320.75184749259],
[0.049, 2.32162107938, 26395.46076254379],
[0.049, 4.96049794937, 956.28915597060],
[0.047, 4.20636709156, 52250.58788171570],
[0.058, 2.23088591593, 52065.59996192899],
[0.048, 5.31209962934, 1162.47470440780],
[0.062, 6.11793881000, 22747.29071487440],
[0.051, 5.16823572193, 130419.84594697120],
[0.058, 1.50494628165, 54509.00267602040],
[0.060, 0.43836944868, 116783.65521669458],
[0.059, 1.50474668065, 26507.38778544939],
[0.047, 3.28426374672, 25565.32572348040],
[0.056, 2.45288584577, 181026.24909573558],
[0.051, 3.46813929041, 53242.30176033840],
[0.045, 0.64303440167, 52698.38370124219],
[0.049, 0.43622928396, 27999.10262479140],
[0.046, 0.93537805397, 26162.68474014150],
[0.043, 5.95311422864, 76667.52298243798],
[0.060, 1.79764830651, 78270.33798362259],
[0.056, 2.27809233545, 182188.72380014337],
[0.043, 3.95909386803, 26521.61487945100],
[0.043, 2.06740816154, 51859.41441349179],
[0.051, 5.31772214752, 66653.15746634839],
[0.044, 1.68470111077, 23888.81579828719],
[0.054, 3.94217571152, 52325.36948028299],
[0.043, 5.13864955940, 11610.55195837420],
[0.042, 4.61363107691, 52492.19815280499],
[0.046, 3.39633739377, 104505.39137678158],
[0.046, 4.83387098498, 110.20632121940],
[0.045, 3.54092987543, 50800.03248330259],
[0.041, 5.69167231584, 24712.12934172840],
[0.040, 0.05181171325, 123200.84011627098],
[0.053, 0.61042891791, 53228.07466633679],
[0.039, 3.11194295827, 25984.81036735560],
[0.046, 2.53528410360, 50696.93970908399],
[0.038, 4.44293961717, 29416.03879785439],
[0.041, 2.66264705448, 233731.74634397859],
[0.037, 3.37388547918, 1375.77379984580],
[0.038, 5.61891042604, 143005.66740785379],
[0.037, 5.42828179354, 28286.99048486120],
[0.049, 5.33653478407, 99024.13645791399],
[0.040, 5.63484527365, 522.57741809380],
[0.039, 3.40419666656, 25551.09862947879],
[0.036, 5.94925007197, 145204.75475114078],
[0.038, 2.07740095188, 153084.84390447979],
[0.039, 3.20021878147, 163766.09444104519],
[0.037, 5.22659089943, 52595.29092702359],
[0.042, 4.90625897857, 25771.51127191760],
[0.041, 2.99128318097, 26190.99591579279],
[0.044, 1.11685231827, 26404.29501123080],
[0.045, 4.61987657347, 132658.27281205778],
[0.037, 0.21788276252, 166740.70439565618],
[0.034, 1.94222980062, 203041.89308344139],
[0.045, 3.16157322891, 104197.83375581198],
[0.046, 4.46372826281, 316.39186965660],
[0.039, 2.02681719442, 136722.59155786238],
[0.034, 1.34191646454, 467.96499035440],
[0.043, 3.34582658464, 78903.60671103658],
[0.039, 3.65232351757, 196137.07343261078],
[0.037, 0.37289111380, 391318.54712361295],
[0.037, 2.88378512797, 36109.74042167360],
[0.037, 1.66197775716, 52290.24557183361],
[0.036, 3.91856090884, 54087.00576636560],
[0.034, 0.07777074766, 26294.08869001139],
[0.033, 2.57658065167, 26941.09952332620],
[0.034, 1.66706631543, 49842.60989027639],
[0.042, 3.65143192554, 76681.75007643958],
[0.032, 4.02685079656, 24356.78078864160],
[0.041, 3.48117117726, 26610.48055966799],
[0.040, 1.30798263894, 77630.92568540938],
[0.033, 3.31591322468, 65831.66677432480],
[0.042, 4.68305225464, 24609.03656750980],
[0.034, 2.43308912753, 26421.75908234360],
[0.031, 0.55207634036, 13362.44970679920],
[0.031, 3.97168176907, 130435.63437251298],
[0.035, 5.90195011358, 78188.92782615528],
[0.032, 5.58275762493, 25881.71759313700],
[0.032, 3.03394602316, 27780.06881107659],
[0.038, 4.61602478200, 130432.40216087017],
[0.031, 5.37268049479, 75930.51303185058],
[0.034, 4.68006477569, 25754.04720080480],
[0.030, 2.76917399150, 173511.41499690176],
[0.037, 4.37537497770, 1478.86657406440],
[0.030, 2.69970929614, 208173.53416749899],
[0.029, 2.28199342452, 130443.39704322898],
[0.039, 4.04390928499, 34282.17847478280],
[0.033, 1.47153495142, 55503.94193942859],
[0.029, 3.09374594552, 27819.02549450680],
[0.030, 2.30968283835, 26624.70765366959],
[0.035, 2.18534594257, 22759.76748529401],
[0.027, 0.63624513172, 240452.46032331997],
[0.035, 5.40588312340, 58857.03113654799],
[0.028, 5.46904052697, 123668.80510662538],
[0.028, 3.82629644574, 130866.11389874699],
[0.027, 3.91273567728, 163298.12945069079],
[0.032, 3.55783772742, 52252.07235442399],
[0.036, 5.26852179816, 52061.36699446317],
[0.027, 0.81868301401, 25455.11940226100],
[0.030, 6.23608007707, 24176.70365835700],
[0.025, 1.48874402537, 60370.08161635699],
[0.027, 4.41957053501, 78896.49316403578],
[0.025, 3.33404428554, 206.18554843720],
[0.025, 2.22580879047, 12725.45343477500],
[0.025, 5.37774707105, 183145.01295611399],
[0.026, 3.83674753452, 132028.58860315479],
[0.025, 2.93605355840, 129387.24732468258],
[0.025, 5.86161454740, 130289.95251073639],
[0.024, 4.03572089813, 26089.38761428249],
[0.024, 3.09138745629, 26086.41866886590],
[0.024, 1.40452977850, 25446.48957983520],
[0.033, 3.35253473958, 193937.98608932379],
[0.024, 4.81342275570, 27311.72098235281],
[0.024, 2.36840229716, 25440.89230825939],
[0.024, 2.60590286552, 125112.03959948818],
[0.027, 2.64006708171, 44295.71712980940],
[0.029, 3.85906422319, 130652.81480330898],
[0.033, 4.26007262410, 235900.50682626115],
[0.026, 3.37356285012, 87367.61641884019],
[0.024, 3.83432680564, 52381.99183158559],
[0.027, 4.14811634858, 176332.24614102798],
[0.023, 0.19227535404, 647.01083331480],
[0.025, 0.03897225418, 129373.02023068098],
[0.023, 5.73072631591, 26729.31670331319],
[0.026, 2.78110886808, 64901.25971792339],
[0.028, 6.14191568069, 38813.35657634920],
[0.025, 5.64677901976, 198489.93958638259],
[0.022, 2.47489263310, 24864.08530079559],
[0.023, 4.26682241390, 26222.01219115920],
[0.024, 4.52962335246, 123758.29085447139],
[0.023, 2.88962909157, 25953.79409198919],
[0.028, 4.67408679361, 80382.47328510099],
[0.021, 2.19925857864, 23866.04650697719],
[0.025, 0.81737451667, 94329.77528619739],
[0.021, 5.56863005528, 52712.61079524379],
[0.021, 0.94657470314, 27684.08958385880],
[0.023, 1.24923754668, 130446.62925487179],
[0.022, 1.55521175306, 24998.19435038059],
[0.024, 3.25930776298, 27669.86248985719],
[0.021, 3.16657819785, 183674.70392120857],
[0.020, 1.45970914613, 75615.25459924959],
[0.028, 2.65124448902, 78366.80219894118],
[0.021, 2.85719729554, 78160.61665050399],
[0.022, 0.14164137879, 51528.79544983359],
[0.022, 1.54435105177, 158746.17595363196],
[0.019, 1.95606380894, 25344.91308104160],
[0.019, 3.62491058376, 78039.36462902068],
[0.019, 2.59809360557, 17893.62780836560],
[0.019, 5.86487152937, 103917.90082841998],
[0.019, 5.07516493363, 230239.17477710897],
[0.023, 1.73809221823, 128220.75860368418],
[0.018, 3.70453311537, 77726.90491262719],
[0.020, 5.58951443277, 27177.61193276780],
[0.019, 2.26298959398, 103932.12792242158],
[0.018, 5.26103373994, 28736.35796704720],
[0.018, 4.77075669731, 77101.23472031478],
[0.019, 4.18613339997, 104819.57755665119],
[0.019, 3.72825596269, 31415.37924995700],
[0.018, 5.11985094325, 77307.42026875199],
[0.019, 1.61447515906, 51653.22886505459],
[0.022, 3.45569006244, 101011.00013959699],
[0.017, 3.34823797519, 23919.14265929160],
[0.017, 0.84289136609, 86143.79857806159],
[0.018, 0.81997628030, 26073.67604757259],
[0.020, 0.96632907921, 52609.51802102519],
[0.016, 1.27839838984, 51868.24866217880],
[0.020, 0.07187923898, 155887.52156313116],
[0.018, 5.44524309894, 25508.21555457540],
[0.016, 0.62722455150, 102659.44689679438],
[0.016, 0.52102795891, 2221.85663459700],
[0.017, 3.93009669878, 51852.30086649099],
[0.016, 5.74180318220, 96357.08412427259],
[0.019, 5.09029341511, 118828.96374949679],
[0.017, 2.59947793429, 24448.83362438620],
[0.016, 5.52244950928, 2199.08734328700],
[0.015, 3.36667960581, 1911.19948321720],
[0.021, 3.53223071778, 181659.72224941078],
[0.019, 1.29524947399, 233681.74972207437],
[0.016, 1.11236515889, 103498.41618454478],
[0.020, 3.19274792861, 51969.62073471119],
[0.017, 3.27645001526, 26312.24793727610],
[0.016, 5.54159968247, 207114.15223730978],
[0.015, 2.75565944373, 26709.64694241340],
[0.015, 1.72732606714, 104344.98400739678],
[0.016, 5.31828785394, 78153.50310350319],
[0.016, 1.13565154505, 742.99006053260],
[0.015, 6.19247438386, 130363.24963659538],
[0.015, 1.16646378812, 92741.06060792258],
[0.015, 4.39941321864, 25466.15934073500],
[0.014, 1.03341872997, 78313.70604662679],
[0.016, 1.77081422797, 27044.19229754480],
[0.016, 1.77854347809, 26667.59072857300],
[0.014, 2.39782698608, 103883.64757594238],
[0.019, 6.27226219255, 25764.39772491679],
[0.014, 1.89621592736, 37698.45509994840],
[0.014, 5.86393829627, 81604.32185142238],
[0.015, 2.41952075336, 27250.37784598199],
[0.017, 5.62378615870, 51432.81622261579],
[0.014, 0.57479381854, 8194.27533320860],
[0.014, 2.01915873640, 156507.74908854539],
[0.014, 4.00033644851, 187167.27548807819],
[0.016, 3.05516572588, 22625.65843570900],
[0.014, 0.41333257896, 76887.93562487679],
[0.014, 3.81333935444, 28256.66362385679],
[0.016, 5.63829774136, 209658.82487420217],
[0.017, 2.79674558169, 323.50541665740],
[0.015, 4.52292533775, 27726.97265876220],
[0.017, 1.61686538851, 26198.10946279360],
[0.017, 4.28628662370, 133882.09065283637],
[0.013, 1.02936352404, 25867.49049913539],
[0.014, 5.57651447296, 2008.55753915900],
[0.014, 1.55161726953, 156314.11975400720],
[0.017, 6.07989986315, 49953.94964855139],
[0.015, 4.87081069542, 104358.24112519680],
[0.013, 3.77228393975, 19.66976089979],
[0.015, 5.41429733370, 208276.62694171758],
[0.013, 1.15273910706, 949.17560896980],
[0.017, 4.64614224273, 112231.70171963578],
[0.015, 5.32485053265, 154408.65498906677],
[0.013, 4.02426203972, 417406.45026518719],
[0.013, 2.83441937048, 25169.97285559240],
[0.016, 3.55004561005, 86457.98475793119],
[0.014, 3.36717179008, 12546.48193908300],
[0.013, 0.99900287294, 78338.49102328988],
[0.012, 3.72935261349, 78786.28684281638],
[0.013, 4.55769261775, 80596.90581759460],
[0.013, 3.68794178346, 79315.97780791098],
[0.014, 4.16918945992, 156547.08861034497],
[0.012, 3.12295185577, 149288.74325784517],
[0.012, 2.69822851627, 153.77881048480],
[0.012, 4.38117483432, 27005.83342755599],
[0.012, 0.19322533903, 27463.67694142000],
[0.014, 4.15127082280, 29550.14784743939],
[0.012, 2.80411772823, 102755.42612401219],
[0.011, 5.82734448081, 259819.64948555277],
[0.011, 2.40607503106, 169093.57054942797],
[0.012, 0.49737747696, 102769.65321801379],
[0.014, 5.69923121834, 76784.84285065818],
[0.012, 5.56466695759, 26402.08932144380],
[0.012, 1.48301102812, 78580.10129437919],
[0.011, 5.15388067065, 77947.31755506598],
[0.011, 1.64586759073, 25773.71696170459],
[0.011, 2.45779334771, 34082.43158359840],
[0.014, 2.00354520885, 846.08283475120],
[0.013, 0.71980668578, 78413.27262185719],
[0.011, 5.17906120193, 162810.49469943656],
[0.011, 2.73596940194, 171292.65789271498],
[0.011, 5.59141622457, 24203.00197815680],
[0.011, 0.45608202666, 2111.65031337760],
[0.010, 3.29404880642, 192828.60753723036],
[0.010, 0.45857052500, 222224.97657418498],
[0.013, 5.70684493376, 78213.71280281838],
[0.011, 4.37474459591, 103718.82882698359],
[0.011, 0.63918585951, 26118.23000257860],
[0.013, 5.83092856998, 26411.40855823160],
[0.010, 5.45367935399, 52483.36390411799],
[0.010, 4.70344741563, 2125.87740737920],
[0.011, 0.28816338163, 26057.57628056979],
[0.010, 5.57764903480, 151199.94274106238],
[0.011, 0.03362968403, 104991.50985261079],
[0.010, 3.71565881071, 148532.89040742096],
[0.013, 0.25119201649, 79330.20490191258],
[0.010, 6.23763004539, 128106.31931499895],
[0.011, 6.23138757669, 130285.73689738619],
[0.013, 3.60703035316, 39629.32434406539],
[0.011, 2.08623018213, 78683.19406859778],
[0.011, 2.89478268807, 122444.98726584678],
[0.011, 1.47224457688, 156520.30530244438],
[0.012, 0.18308102701, 130593.29451835579],
[0.009, 5.24611723729, 138319.60486120995],
[0.009, 5.64920582852, 1265.56747862640],
[0.009, 6.25551575071, 53906.92863608099],
[0.011, 3.36985744471, 142871.55835826878],
[0.009, 5.47085206361, 156531.30018480320],
[0.009, 4.79150958411, 101703.15774082378],
[0.009, 2.73233240797, 38.13303563780],
[0.009, 5.91954900221, 62197.64356324779],
[0.009, 4.73154570336, 78378.14871340781],
[0.011, 0.80389582741, 3328.13565628019],
[0.009, 6.25489842872, 91919.56991589899],
[0.009, 5.87197255624, 199599.31813847594],
[0.009, 0.76033087382, 156523.53751408719],
[0.008, 0.63159267832, 80174.90890793978],
[0.009, 5.02352759781, 229129.79622501557],
[0.008, 2.63272452796, 25138.72753260440],
[0.008, 0.59154768044, 156954.01704032117],
[0.008, 3.95681232703, 120417.67842777158],
[0.008, 3.46882638388, 77616.69859140778],
[0.008, 0.20349823136, 113455.51956041438],
[0.008, 0.21724719953, 13541.42120249119],
[0.008, 1.77719128692, 26076.85744131030],
[0.009, 6.21878690440, 189853.99758261937],
[0.007, 5.88768146200, 51226.63067417859],
[0.007, 0.61161547244, 158116.49174472899],
[0.008, 2.05860519043, 78149.27013603736],
[0.007, 0.09500184933, 90989.16285949759],
[0.007, 0.56541937862, 25985.94062330859],
[0.007, 0.73212945216, 78469.89497315978],
[0.007, 0.44088896603, 104127.26777059489],
[0.008, 5.86653927002, 104454.70534051539],
[0.007, 0.70585294359, 52177.29075585669],
[0.009, 1.96929942879, 1272.68102562720],
[0.010, 2.72173324175, 104276.83096772949],
[0.007, 5.16315798030, 26189.86565983980],
[0.007, 5.17079740730, 179172.74704605396],
[0.008, 5.26981396126, 48847.67062686820],
[0.008, 0.19880797043, 1.48447270830],
[0.007, 6.26371276121, 52174.32181044009],
[0.008, 0.98956493578, 16703.06213349900],
[0.007, 0.08448723866, 26098.94884183810],
[0.008, 5.67030179581, 53029.00266490040],
[0.007, 1.15333561308, 261988.40996783535],
[0.007, 0.70724943755, 65717.22748563958],
[0.007, 0.52800551865, 103814.80805420138],
[0.008, 2.25202792521, 149756.70824819960],
[0.007, 1.45586274187, 51841.95034237900],
[0.007, 2.28027029168, 54374.89362643540],
[0.007, 1.96795602434, 103395.32341032618],
[0.007, 0.91100826202, 27972.80430499159],
[0.007, 6.04142381509, 155475.15046625677],
[0.008, 0.66187102958, 156740.71794488319],
[0.007, 0.94700216301, 202420.14928260216],
[0.008, 0.34397341638, 78339.97549599818],
[0.008, 1.99164711035, 84944.93427812219],
[0.006, 3.16647388859, 76041.85279012559],
[0.007, 1.18920934641, 104984.39630560997],
[0.007, 6.12812258419, 53867.97195265079],
[0.007, 2.68832841048, 156377.85565231059],
[0.007, 4.82261895829, 52286.01260436779],
[0.006, 2.12110075547, 148.07872442630],
[0.006, 3.05937939252, 151.04766984290],
[0.007, 0.09315209734, 220025.88923089797],
[0.008, 5.56250511075, 52509.66222391780],
[0.006, 2.57622376266, 224577.84272795677],
[0.007, 2.65171386195, 220.41264243880],
[0.006, 2.00091220299, 102018.41617342478],
[0.007, 0.86158158633, 50444.68393021580],
[0.007, 1.61990482140, 103189.13786188899],
[0.006, 2.68512587119, 77520.71936418998],
[0.006, 4.82671721903, 154308.66174525840],
[0.006, 2.40727316051, 78800.51393681798],
[0.006, 5.66286619587, 234261.43730907317],
[0.007, 1.38238075345, 106470.37642667518],
[0.007, 4.62193558950, 81591.84508100279],
[0.007, 0.26927581545, 127098.90328117118],
[0.006, 0.92172283144, 57503.28239153120],
[0.006, 5.39808870469, 130020.03106399579],
[0.006, 2.52761413373, 52817.21984488739],
[0.006, 0.06817978613, 53757.76563143139],
[0.007, 3.13547312140, 155460.92337225520],
[0.005, 2.17501494391, 209232.91609768817],
[0.005, 2.16759656006, 104241.40624507738],
[0.006, 2.68409858369, 130005.80396999417],
[0.005, 1.58914721681, 50167.24874398939],
[0.005, 1.01687539089, 55638.05098901359],
[0.007, 1.31888655444, 149846.19399604559],
[0.005, 2.48117306579, 9384.84100807520],
[0.005, 3.70948655428, 266540.36346489412],
[0.007, 5.71513815276, 70383.62027138360],
[0.006, 4.55015130253, 51955.39364070959],
[0.005, 3.51602263966, 102975.83876645098],
[0.005, 3.69945557546, 39450.35284837340],
[0.005, 3.98232048303, 53771.99272543299],
[0.006, 1.01394190869, 77940.20400806518],
[0.005, 2.50588363651, 102872.74599223239],
[0.007, 3.01244944080, 50264.60679993120],
[0.006, 0.45316437598, 50064.15596977079],
[0.007, 6.03933985106, 1485.98012106520],
[0.005, 1.35734487293, 53814.87580033639],
[0.005, 4.43939776623, 51534.39272140940],
[0.005, 2.29075654159, 61560.64729122359],
[0.005, 0.07896316759, 78057.52387628538],
[0.005, 0.95484155225, 130907.48069822539],
[0.005, 1.56485117164, 53399.62412392700],
[0.005, 4.55586232099, 52137.67324751059],
[0.006, 4.34778590755, 156534.53239644598],
[0.005, 3.72691818970, 128747.35003836859],
[0.004, 0.56386565513, 189386.03259226496],
[0.004, 2.67910077904, 107692.22499299659],
[0.006, 6.10947724529, 104248.51979207818],
[0.004, 3.99859010561, 104401.60918820098],
[0.004, 0.51280078907, 54344.56676543099],
[0.005, 4.19917665740, 129586.31932611899],
[0.004, 5.91763059229, 52041.69723356339],
[0.005, 3.18633834950, 181975.42470470539],
[0.005, 0.99354989216, 1795.25844372100],
[0.004, 6.20030341798, 209762.60706278277],
[0.004, 4.57601261459, 184834.07909520617],
[0.006, 4.81632935419, 77741.13200662879],
[0.004, 2.32553366031, 53265.51507434200],
[0.004, 4.83867556795, 52755.49387014719],
[0.004, 0.47379105299, 105403.88094948517],
[0.004, 2.62000942355, 50049.92887576919],
[0.005, 1.01847704961, 52309.91533273340],
[0.004, 5.12416312887, 52027.72755872209],
[0.004, 0.26524339921, 50007.04580086580],
[0.005, 0.30725353996, 207747.62539098499],
[0.004, 4.93794243881, 63786.35824152260],
[0.004, 4.51168915835, 77956.15180375299],
[0.005, 1.16733741695, 27566.76971563859],
[0.004, 3.77703754152, 104501.17576343138],
[0.004, 5.44859511930, 129971.55071751658],
[0.005, 5.22593130125, 51329.72344839720],
[0.004, 1.64237114391, 130446.14426677099],
[0.004, 1.28513103275, 112545.88789950538],
[0.004, 3.50115780256, 76152.05911134499],
[0.004, 4.79032272131, 130432.88714897096],
[0.004, 5.62786746084, 43981.53094993980],
[0.004, 4.12687975050, 52024.75861330549],
[0.004, 5.13202982684, 735.87651353180],
[0.004, 4.64327471216, 76255.15188556358],
[0.004, 1.34781477964, 106684.80895916879],
[0.004, 2.34997151211, 177287.84588263658],
],
# B1
[
[429151.362, 3.50169780393, 26087.90314157420],
[146233.668, 3.14159265359, 0.00000000000],
[22675.295, 0.01515366880, 52175.80628314840],
[10894.981, 0.48540174006, 78263.70942472259],
[6353.462, 3.42943919982, 104351.61256629678],
[2495.743, 0.16051210665, 130439.51570787099],
[859.585, 3.18452433647, 156527.41884944518],
[277.503, 6.21020774184, 182615.32199101939],
[86.233, 2.95244391822, 208703.22513259359],
[26.133, 5.97708962692, 234791.12827416777],
[27.696, 0.29068938889, 27197.28169366760],
[12.831, 3.37744320558, 53285.18483524180],
[12.720, 0.53792661684, 24978.52458948080],
[7.781, 2.71768609268, 260879.03141574195],
[7.527, 3.58305121268, 51066.42773105500],
[6.183, 2.92383205004, 31749.23519072640],
[5.453, 1.97318763801, 51116.42435295920],
[3.394, 0.34761695275, 77154.33087262919],
[3.481, 0.10739761667, 79373.08797681599],
[2.932, 5.95430013169, 57837.13833230060],
[2.742, 0.98758439378, 25028.52121138500],
[2.126, 4.16352818018, 47623.85278608960],
[2.286, 5.74036496396, 286966.93455731618],
[2.380, 4.00213666550, 21535.94964451540],
[1.651, 4.43606584681, 27043.50288318280],
[1.523, 1.97926797181, 5661.33204915220],
[1.518, 5.01636479848, 77204.32749453338],
[1.398, 0.66375029294, 20426.57109242200],
[1.345, 3.39193943388, 103242.23401420339],
[1.297, 5.34251327744, 37410.56723987860],
[1.076, 0.95624460335, 50586.73338786459],
[1.050, 3.00944151152, 26107.57290247399],
[0.918, 1.89988871166, 1059.38193018920],
[1.063, 1.28486292967, 53131.40602475700],
[0.905, 3.34776562702, 25558.21217647960],
[0.929, 4.81159652409, 51646.11531805379],
[0.782, 6.08817839271, 529.69096509460],
[0.783, 1.50962699410, 41962.52073693740],
[0.794, 2.16868396183, 63498.47038145279],
[0.731, 0.92148918837, 73711.75592766379],
[0.755, 4.10910637390, 26068.23338067440],
[0.703, 2.22466530621, 10213.28554621100],
[0.922, 2.30268247092, 1109.37855209340],
[0.739, 3.05842748947, 105460.99111839019],
[0.681, 1.40695567526, 51749.20809227239],
[0.841, 5.93206787810, 26084.02180621620],
[0.616, 5.95368982430, 39609.65458316560],
[0.610, 2.96796433797, 25132.30339996560],
[0.721, 1.16472614778, 46514.47423399620],
[0.638, 1.16941585214, 26091.78447693220],
[0.633, 3.07427024064, 30639.85663863300],
[0.665, 2.47994200156, 313054.83769889036],
[0.669, 4.10310179631, 72602.37737557039],
[0.495, 0.14776350456, 129330.13715577759],
[0.474, 2.61466823958, 32858.61374281979],
[0.470, 5.04436148211, 13521.75144159140],
[0.494, 0.07430556450, 28306.66024576099],
[0.459, 5.81611579004, 51220.20654153979],
[0.467, 5.56622114735, 4551.95349705880],
[0.433, 2.10197184422, 24498.83024629040],
[0.430, 3.91046377635, 76674.63652943878],
[0.436, 1.46213785727, 43071.89928903080],
[0.383, 6.05537830853, 52195.47604404819],
[0.335, 0.55996605330, 23869.14603738740],
[0.369, 4.43217995206, 22645.32819660879],
[0.329, 2.59508442112, 65697.55772473979],
[0.346, 2.03170085305, 27147.28507176339],
[0.424, 0.29775934661, 1589.07289528380],
[0.378, 5.09810178577, 53235.18821333759],
[0.308, 3.30225015955, 54394.56338733519],
[0.314, 2.40932519602, 83925.04147387479],
[0.364, 5.87784809361, 58946.51688439399],
[0.352, 0.87939481900, 52156.13652224860],
[0.352, 5.92675293084, 25661.30495069820],
[0.310, 2.69873876637, 52171.92494779040],
[0.345, 0.84406679212, 98690.28051714458],
[0.358, 6.14890038263, 56727.75978020720],
[0.248, 2.34396840060, 51535.90899683439],
[0.286, 2.39648280163, 19804.82729158280],
[0.338, 1.55189200325, 52705.49724824299],
[0.239, 3.35169081927, 52168.69273614759],
[0.234, 2.51108507067, 77308.10968311399],
[0.229, 5.16737598091, 36301.18868778519],
[0.245, 4.26996032400, 19317.19254032860],
[0.210, 3.16281965425, 29530.47808653960],
[0.212, 5.33861521612, 15874.61759536320],
[0.291, 4.22929240183, 52179.68761850640],
[0.263, 4.64138649646, 69159.80243060499],
[0.235, 5.08060846802, 59414.48187474840],
[0.251, 1.90047504790, 14765.23904326980],
[0.253, 4.21581970504, 79219.30916633119],
[0.194, 5.05904557922, 51109.31080595839],
[0.188, 3.90664116889, 48733.23133818299],
[0.207, 2.89949362192, 7.11354700080],
[0.179, 4.43018837604, 77837.11123384659],
[0.223, 2.96569885227, 110012.94461544899],
[0.176, 5.15204624857, 89586.37352302698],
[0.215, 4.50903357312, 78793.40038981718],
[0.173, 3.18496771460, 155418.04029735178],
[0.205, 1.89888752382, 79323.09135491178],
[0.175, 2.91183047213, 82815.66292178139],
[0.165, 0.49123694380, 25035.63475838580],
[0.183, 1.42148796836, 77734.01845962799],
[0.158, 3.63030783882, 49957.04917896160],
[0.201, 4.78711687782, 40853.14218484400],
[0.157, 3.02451795123, 52182.91983014920],
[0.192, 5.50218209050, 339142.74084046460],
[0.145, 3.39803928124, 45892.73043315699],
[0.140, 2.64826898848, 16983.99614745660],
[0.190, 3.05043439775, 27676.97603685800],
[0.169, 3.40273824751, 25874.60404613620],
[0.148, 3.87588943419, 124778.18365871879],
[0.134, 0.94930028730, 25021.40766438420],
[0.174, 5.88326736492, 136100.84775702318],
[0.138, 2.34393108627, 1052.26838318840],
[0.163, 6.05484015332, 26080.78959457339],
[0.142, 3.07209103150, 3442.57494496540],
[0.137, 2.10984857727, 426.59819087600],
[0.126, 1.89432609260, 1066.49547719000],
[0.122, 1.04298624291, 45405.09568190280],
[0.135, 4.66414339767, 25448.00585526019],
[0.115, 2.81365851520, 78283.37918562238],
[0.114, 4.47315411813, 68050.42387851159],
[0.134, 5.35393682799, 213.29909543800],
[0.125, 1.61827845372, 129380.13377768178],
[0.158, 5.53788931475, 9103.90699411760],
[0.116, 0.50075235780, 102762.53967101299],
[0.136, 0.24559658100, 50057.04242277000],
[0.124, 2.20590858584, 33326.57873317420],
[0.106, 6.15493608726, 11322.66409830440],
[0.123, 4.43265735200, 639.89728631400],
[0.137, 3.93191153638, 78244.03966382280],
[0.138, 4.46503235172, 51123.53789995999],
[0.119, 3.64440622006, 26617.59410666880],
[0.099, 6.18313188027, 55618.38122811380],
[0.101, 5.52733987069, 103396.01282468818],
[0.107, 4.79994153405, 6770.71060124560],
[0.096, 0.01853371395, 80482.46652890938],
[0.115, 1.57423656512, 66941.04532641819],
[0.111, 1.00588061631, 78267.59076008058],
[0.121, 5.90839328752, 26095.01668857500],
[0.095, 5.74549458142, 78259.82808936459],
[0.100, 1.90676485528, 103292.23063610759],
[0.107, 5.73194510449, 131548.89425996438],
[0.098, 5.49064814924, 77623.81213840858],
[0.112, 0.87682090108, 74821.13447975718],
[0.090, 5.82373560803, 955.59974160860],
[0.093, 0.15279056716, 78256.59587772179],
[0.100, 1.21759895953, 104881.30353139139],
[0.087, 4.20722631983, 12566.15169998280],
[0.088, 5.00176994115, 38519.94579197200],
[0.086, 1.23375034376, 26301.20223701220],
[0.085, 1.88852891739, 77197.21394753258],
[0.082, 3.75652571856, 99799.65906923798],
[0.089, 4.95684147986, 105410.99449648599],
[0.096, 5.10490831351, 52389.10537858640],
[0.075, 2.50722139185, 2218.75710418680],
[0.093, 6.00229475799, 53764.87917843220],
[0.073, 6.11603054445, 78270.82297172339],
[0.091, 4.67762120545, 155468.03691925600],
[0.080, 1.98564256640, 7238.67559160000],
[0.089, 1.62820970873, 6283.07584999140],
[0.073, 5.93728826025, 108903.56606335558],
[0.087, 2.61787684648, 162188.75089859738],
[0.092, 2.55298032665, 85034.42002596818],
[0.076, 4.44230028342, 38654.05484155699],
[0.070, 2.07147354168, 25934.12433108940],
[0.078, 1.79664677749, 23969.13928119580],
[0.068, 2.15267768357, 64607.84893354619],
[0.069, 1.37976390686, 77211.44104153418],
[0.080, 0.75440631101, 2118.76386037840],
[0.060, 5.95179539253, 18849.22754997420],
[0.058, 0.98126270514, 51962.50718771040],
[0.057, 0.63495768344, 150866.08680029298],
[0.063, 0.40577774917, 76044.95232053580],
[0.061, 3.20728040856, 76144.94556434419],
[0.053, 1.34424134476, 51742.09454527159],
[0.052, 4.11944860444, 71492.99882347698],
[0.054, 2.23964604878, 44937.13069154840],
[0.064, 1.19785741966, 64741.95798313119],
[0.058, 6.22316473811, 181505.94343892598],
[0.060, 2.12727479557, 88476.99497093359],
[0.049, 1.76854754615, 13655.86049117640],
[0.049, 1.27506119902, 26727.80042788820],
[0.048, 2.04581990152, 78477.00852016058],
[0.050, 4.62948267835, 93028.94846799239],
[0.055, 5.47526225139, 62389.09182935939],
[0.047, 4.99113735496, 27154.39861876420],
[0.055, 4.79762177368, 94138.32702008578],
[0.051, 5.56459812422, 52602.40447402440],
[0.055, 1.20462687751, 95247.70557217918],
[0.050, 2.21530140501, 365230.64398203877],
[0.049, 0.68636780387, 104331.94280539699],
[0.047, 4.30403626352, 23754.70674870219],
[0.042, 3.32657201754, 25654.19140369739],
[0.051, 1.08082309375, 25619.93815121980],
[0.047, 2.79966035046, 26514.50133245020],
[0.040, 2.91932668980, 81706.28436968799],
[0.040, 4.65660434525, 129909.82474277639],
[0.041, 4.21875403274, 130969.20667296558],
[0.050, 1.46644208786, 120226.23016165999],
[0.047, 3.77053215629, 25973.46385288896],
[0.047, 2.82867670887, 25668.41849769900],
[0.046, 4.14427477722, 125887.56221081219],
[0.039, 4.06156914485, 104355.49390165479],
[0.037, 3.22245380356, 51322.60990139639],
[0.039, 2.26439106521, 129483.91596626239],
[0.040, 0.54598734169, 105307.21230790539],
[0.035, 5.53895897820, 433.71173787680],
[0.038, 6.05329467990, 419.48464387520],
[0.039, 2.72082598885, 79852.78232000639],
[0.035, 1.72937228501, 131498.89763806018],
[0.034, 0.83611265968, 12432.04265039780],
[0.032, 4.45254278754, 50579.61984086379],
[0.042, 1.41457022130, 181555.94006083018],
[0.032, 4.73349986920, 52026.24308601380],
[0.036, 5.60766535694, 188276.65404017159],
[0.033, 3.98525990131, 78050.41032928458],
[0.032, 5.86059322955, 104371.28232719658],
[0.040, 5.45287901295, 27140.17152476259],
[0.031, 5.17982917253, 71025.03383312259],
[0.039, 3.34206786809, 26202.34243025941],
[0.029, 1.94010215318, 103821.92160120218],
[0.036, 0.65969730203, 51756.32163927320],
[0.030, 0.82864967511, 46848.33017476560],
[0.038, 0.80809536333, 151975.46535238638],
[0.029, 2.89227792530, 104358.72611329758],
[0.029, 4.49728060011, 103299.34418310839],
[0.035, 1.48121158024, 85502.38501632259],
[0.028, 5.48224379273, 91785.46086631398],
[0.030, 3.11318420566, 106570.36967048359],
[0.034, 4.26548581082, 90829.86112470538],
[0.031, 5.67743476614, 117873.36400788819],
[0.028, 4.97598935775, 103285.11708910679],
[0.033, 5.18111128318, 114564.89811250778],
[0.027, 0.88054842818, 157636.79740153858],
[0.026, 2.57652351573, 134991.46920492980],
[0.029, 2.64144900778, 26137.89976347840],
[0.028, 3.23650761988, 128850.44281258718],
[0.030, 6.03255187776, 32370.97899156560],
[0.029, 3.23415692694, 104344.49901929598],
[0.032, 3.21019810469, 28421.09953444620],
[0.024, 2.52484264487, 1596.18644228460],
[0.024, 0.27171495756, 24491.71669928959],
[0.026, 1.20902208843, 44181.27784112419],
[0.027, 5.71639245109, 111122.32316754239],
[0.031, 3.68314656803, 28206.66700195260],
[0.030, 2.36500429653, 103711.71527998279],
[0.022, 4.47547965260, 77829.99768684579],
[0.022, 5.93080138405, 98068.53671630539],
[0.021, 4.45887879737, 52815.70356946240],
[0.022, 1.51276188597, 35191.81013569180],
[0.025, 3.67349275753, 853.19638175200],
[0.021, 5.21045664362, 104564.91166173479],
[0.023, 3.52400873624, 100909.03762133139],
[0.021, 0.91705070968, 97580.90196505119],
[0.021, 3.93681460045, 25455.11940226100],
[0.020, 2.51210823023, 104347.73123093879],
[0.027, 2.35592427305, 78690.30761559859],
[0.020, 5.09828683951, 52099.54021187280],
[0.019, 3.37799607043, 45494.58142974879],
[0.021, 1.47540794459, 115674.27666460119],
[0.020, 1.17802900406, 155997.72788435058],
[0.025, 4.46628547605, 146314.13330323418],
[0.023, 2.29934592297, 33967.99229491319],
[0.020, 0.67974525638, 24505.94379329119],
[0.020, 5.32443861216, 25234.70675982219],
[0.018, 4.83011056299, 50593.84693486539],
[0.020, 2.19515561332, 51639.00177105299],
[0.020, 4.54362105039, 26037.90651966999],
[0.018, 3.66945372389, 176953.98994186718],
[0.022, 2.36457126914, 143961.26714946239],
[0.020, 1.91605933726, 53242.30176033840],
[0.017, 3.65797302958, 25938.33994443960],
[0.017, 4.72356636284, 39743.76363275060],
[0.017, 4.63385029370, 70269.18098269838],
[0.023, 3.47296935942, 102132.85546210999],
[0.018, 3.89075237232, 77844.22478084739],
[0.016, 1.39550514982, 119116.85160956658],
[0.017, 3.19413997784, 2333.19639287200],
[0.018, 0.10505670252, 52290.24557183361],
[0.015, 5.66501892458, 7994.52844202420],
[0.017, 5.59546671313, 60055.89543648739],
[0.015, 3.35297565546, 58458.88213313979],
[0.019, 1.88696722328, 1581.95934828300],
[0.016, 3.51339563149, 26094.53170047421],
[0.015, 5.87796844640, 105940.68546158058],
[0.014, 4.90677373859, 632.78373931320],
[0.017, 2.94915136654, 18093.37469954999],
[0.016, 3.30923893089, 26507.38778544939],
[0.017, 2.79032831551, 124156.43985787958],
[0.017, 2.32026007183, 53228.07466633679],
[0.015, 1.27735280723, 103925.01437542078],
[0.014, 0.47578456087, 104138.31347085879],
[0.014, 4.33486658309, 18207.81398823521],
[0.014, 6.25912081869, 102232.84870591838],
[0.016, 5.19489448771, 52022.02747266360],
[0.015, 3.36079341013, 26241.68195205900],
[0.016, 0.62153007569, 71980.63357473118],
[0.016, 0.34240403974, 26081.27458267419],
[0.015, 4.43868814661, 207643.84320240439],
[0.017, 3.44704905407, 183724.70054311279],
[0.016, 0.08608453345, 77410.51304297059],
[0.013, 4.45469253351, 90695.75207512038],
[0.014, 5.26281612633, 391318.54712361295],
[0.013, 2.28140033187, 26521.61487945100],
[0.013, 4.75564434373, 536.80451209540],
[0.013, 3.72895039092, 130419.84594697120],
[0.015, 6.26388997196, 54509.00267602040],
[0.014, 1.32802909705, 20760.42703319140],
[0.012, 0.96182853080, 157057.10981453978],
[0.017, 3.00168933222, 207593.84658050019],
[0.016, 0.54167157981, 52061.36699446317],
[0.016, 3.76004077423, 178063.36849396059],
[0.012, 0.50356687265, 5327.47610838280],
[0.014, 0.65739903621, 84546.78527471398],
[0.014, 2.64166191335, 42153.96900304900],
[0.011, 1.87375624710, 97112.93697469679],
[0.012, 5.28144640817, 26610.48055966799],
[0.012, 1.02715379165, 130012.91751699499],
[0.011, 4.76973198116, 157586.80077963436],
[0.011, 4.03645617358, 26011.63707029860],
[0.012, 1.03774094920, 116917.76426627958],
[0.011, 2.34762914711, 214364.55718174577],
[0.013, 5.96105286469, 49527.35145767539],
[0.013, 0.38784055589, 54294.57014352679],
[0.011, 0.80279403389, 130443.39704322898],
[0.012, 1.91910219792, 140652.80125408198],
[0.011, 4.82050468552, 647.01083331480],
[0.012, 3.95784286024, 72936.23331633979],
[0.010, 2.38363926963, 52698.38370124219],
[0.012, 5.21962000846, 25551.09862947879],
[0.011, 1.24041943634, 51543.02254383520],
[0.010, 1.23610986711, 76667.52298243798],
[0.011, 5.27116774881, 155571.81910783658],
[0.011, 5.98419309923, 107794.18751126219],
[0.010, 0.55390559777, 26941.09952332620],
[0.010, 1.49161844344, 52329.58509363319],
[0.011, 4.68946178137, 26190.99591579279],
[0.009, 5.63092803389, 27684.08958385880],
[0.011, 6.09445403088, 26555.86813192860],
[0.010, 0.09698975387, 29416.03879785439],
[0.010, 0.72339727974, 22759.76748529401],
[0.009, 1.96066446481, 51528.79544983359],
[0.009, 4.28124553384, 121335.60871375339],
[0.008, 4.26127907796, 182085.63102592478],
[0.009, 3.34775259107, 22747.29071487440],
[0.008, 1.25238578145, 129387.24732468258],
[0.008, 3.86388656969, 24864.08530079559],
[0.010, 1.34737181255, 2648.45482547300],
[0.008, 5.72234642822, 161079.37234650398],
[0.009, 5.45351693096, 104778.21075717278],
[0.011, 2.85637796333, 52643.77127350280],
[0.008, 3.27339488052, 27311.72098235281],
[0.010, 1.31510855953, 52125.80966124419],
[0.009, 1.17621493154, 172402.03644480839],
[0.008, 2.43297081646, 131395.11544947958],
[0.009, 0.46231104626, 26624.70765366959],
[0.007, 4.93485551094, 48835.19385644859],
[0.007, 5.92438953036, 130446.62925487179],
[0.007, 5.15107638670, 149.56319713460],
[0.008, 0.00476652316, 209812.60368468694],
[0.008, 5.06558822410, 61279.71327726600],
[0.009, 0.56618846666, 522.57741809380],
[0.007, 2.63009300708, 130459.18546877075],
[0.008, 2.08959717350, 25565.32572348040],
[0.009, 5.37562306264, 170049.17029103660],
[0.008, 4.05554156200, 156100.82065856917],
[0.007, 5.58541192959, 129799.61842155698],
[0.007, 1.76385898252, 129373.02023068098],
[0.006, 4.86066957244, 7880.08915333899],
[0.008, 4.47849277972, 10021.83728009940],
[0.006, 5.30561035943, 77726.90491262719],
[0.006, 1.27631388714, 103917.90082841998],
[0.006, 4.61189217781, 157483.01859105378],
[0.006, 3.96170038596, 123668.80510662538],
[0.006, 1.33523648266, 78903.60671103658],
[0.006, 0.55702386570, 204151.27163553477],
[0.005, 1.55562437906, 26294.08869001139],
[0.006, 2.05839183005, 130652.81480330898],
[0.005, 5.58094407959, 130435.63437251298],
[0.005, 1.47580092631, 78114.14622758799],
[0.006, 4.10195998301, 51707.84129279399],
[0.005, 5.42356096080, 3340.61242669980],
[0.005, 0.71252148739, 103932.12792242158],
[0.005, 3.31021043385, 111590.28815789679],
[0.005, 5.18242316734, 13362.44970679920],
[0.007, 0.02670007799, 130432.40216087017],
[0.006, 5.64961767520, 52225.80290505260],
[0.006, 0.24412111381, 128220.75860368418],
[0.005, 4.45623339313, 145204.75475114078],
[0.006, 5.59932602145, 154938.34595416137],
[0.005, 0.44843767302, 203041.89308344139],
[0.006, 0.61515143577, 126996.94076290558],
[0.006, 3.76267562514, 110634.68841628819],
[0.005, 3.87958020217, 25440.89230825939],
[0.006, 6.12898547290, 132658.27281205778],
[0.006, 1.78589858446, 76681.75007643958],
[0.006, 3.31942003464, 25881.71759313700],
[0.005, 4.83610476376, 78417.48823520739],
[0.005, 1.62128192664, 65831.66677432480],
[0.006, 5.79832326006, 150244.34299945380],
[0.004, 4.90210493212, 123200.84011627098],
[0.004, 0.04822157393, 71582.48457132299],
[0.004, 1.25993980368, 233731.74634397859],
[0.004, 4.09490053686, 143005.66740785379],
[0.004, 0.60263195052, 6681.22485339960],
[0.005, 3.53504145685, 130226.21661243298],
[0.004, 2.52659732174, 132028.58860315479],
[0.004, 5.09490146272, 76.26607127560],
[0.004, 1.41880070183, 31415.37924995700],
[0.005, 5.67226040777, 68241.87214462319],
[0.006, 6.07125845396, 1478.86657406440],
[0.004, 2.90387262796, 128320.75184749259],
[0.004, 3.16756186361, 78378.14871340781],
[0.004, 0.32589274840, 52595.29092702359],
[0.005, 1.78096081490, 116783.65521669458],
[0.004, 4.99518857973, 166740.70439565618],
[0.005, 4.90494970331, 79330.20490191258],
[0.004, 5.23437839920, 206.18554843720],
[0.004, 2.64302747396, 75615.25459924959],
[0.004, 0.81407144130, 75930.51303185058],
[0.004, 0.53239895977, 156507.74908854539],
[0.004, 4.27504704332, 956.28915597060],
[0.004, 3.01307667234, 80596.90581759460],
[0.003, 4.15170143655, 25867.49049913539],
[0.003, 4.02158764895, 52712.61079524379],
[0.004, 5.97032773544, 78731.67441507700],
[0.004, 5.13753166239, 137678.19129947099],
[0.003, 5.38378225170, 79315.97780791098],
[0.003, 4.90402266218, 77630.92568540938],
[0.004, 3.35681065144, 80382.47328510099],
[0.004, 3.34724303278, 55503.94193942859],
[0.003, 4.39477038963, 102755.42612401219],
[0.004, 2.19880101386, 137210.22630911658],
[0.003, 1.92191274920, 87367.61641884019],
[0.004, 3.62687237484, 78149.27013603736],
[0.003, 5.34278285975, 77616.69859140778],
[0.003, 4.04927793779, 183145.01295611399],
[0.003, 2.33740424416, 86143.79857806159],
[0.003, 0.29051326311, 66653.15746634839],
[0.004, 3.19530187424, 103498.41618454478],
[0.003, 1.83670250940, 78187.44335344699],
[0.004, 6.08402133763, 233681.74972207437],
[0.003, 5.44799723236, 52609.51802102519],
[0.003, 3.88568044923, 156531.30018480320],
[0.003, 1.56467339056, 183674.70392120857],
[0.003, 2.37223694472, 11610.55195837420],
[0.004, 2.36349454401, 3328.13565628019],
[0.003, 2.21015804942, 130866.11389874699],
[0.003, 1.00111385284, 12546.48193908300],
[0.003, 5.04736992413, 167850.08294774959],
[0.004, 2.74224804458, 133882.09065283637],
[0.003, 6.04124419781, 16066.06586147480],
[0.003, 2.00390511344, 25984.81036735560],
[0.003, 3.58451231520, 19406.67828817460],
[0.003, 5.58865591583, 52381.99183158559],
[0.003, 5.49839860031, 78786.28684281638],
[0.003, 2.35251877810, 50483.64061364600],
[0.003, 2.23638545873, 417406.45026518719],
[0.003, 0.89820153238, 182188.72380014337],
[0.003, 2.18659555288, 196137.07343261078],
[0.003, 1.23213629886, 183570.92173262799],
[0.003, 0.65362427623, 1162.47470440780],
[0.003, 2.37265737062, 141762.17980617538],
[0.003, 2.37167138660, 103.09277421860],
[0.003, 3.43071585489, 51219.51712717779],
[0.002, 5.43620933898, 240452.46032331997],
[0.002, 4.79210725186, 64901.25971792339],
[0.003, 0.58543714627, 136722.59155786238],
[0.002, 3.65273296014, 53029.00266490040],
[0.003, 1.40305085463, 52278.89905736699],
[0.003, 2.91888451759, 235900.50682626115],
[0.002, 5.24862580724, 32769.12799497380],
[0.003, 0.92825301327, 29428.51556827400],
[0.002, 1.28026650043, 96357.08412427259],
[0.003, 3.47745075021, 49842.60989027639],
[0.003, 1.27522510736, 44295.71712980940],
[0.003, 2.06356044829, 181659.72224941078],
[0.002, 1.82577636633, 181026.24909573558],
[0.002, 3.73653346143, 48847.67062686820],
[0.002, 4.29258038531, 198489.93958638259],
[0.003, 1.30423082531, 26237.46633870879],
[0.002, 5.62405074860, 112231.70171963578],
[0.003, 4.34969907580, 78213.71280281838],
[0.002, 4.40950391344, 155475.15046625677],
[0.002, 5.10859116787, 27669.86248985719],
[0.002, 2.40342983563, 53771.99272543299],
[0.002, 1.76898437388, 104505.39137678158],
[0.002, 1.13321786137, 208173.53416749899],
[0.003, 4.95012664609, 102769.65321801379],
[0.002, 2.37593594042, 51951.46148744649],
[0.003, 0.65556179120, 1692.16566950240],
[0.002, 1.65727778641, 163766.09444104519],
],
# B2
[
[11830.934, 4.79065585784, 26087.90314157420],
[1913.516, 0.00000000000, 0.00000000000],
[1044.801, 1.21216540536, 52175.80628314840],
[266.213, 4.43418336532, 78263.70942472259],
[170.280, 1.62255638714, 104351.61256629678],
[96.300, 4.80023692017, 130439.51570787099],
[44.692, 1.60758267772, 156527.41884944518],
[18.316, 4.66904655377, 182615.32199101939],
[6.927, 1.43404888930, 208703.22513259359],
[2.479, 4.47495202955, 234791.12827416777],
[1.739, 1.83080039600, 27197.28169366760],
[0.852, 1.22749255198, 260879.03141574195],
[0.641, 4.87358642253, 53285.18483524180],
[0.301, 1.96098924430, 51066.42773105500],
[0.306, 5.03912693671, 24978.52458948080],
[0.284, 4.25874901943, 286966.93455731618],
[0.235, 3.14549432371, 51116.42435295920],
[0.232, 4.22847849119, 31749.23519072640],
[0.186, 5.05207772442, 77154.33087262919],
[0.143, 5.71074961492, 21535.94964451540],
[0.114, 5.62232460770, 27043.50288318280],
[0.123, 1.51066137419, 79373.08797681599],
[0.093, 1.83776226489, 103242.23401420339],
[0.081, 0.85802178989, 57837.13833230060],
[0.079, 5.50027152752, 47623.85278608960],
[0.093, 1.01040170383, 313054.83769889036],
[0.058, 2.35944147105, 53131.40602475700],
[0.074, 2.28645155343, 50586.73338786459],
[0.049, 1.78193753560, 28306.66024576099],
[0.058, 5.88387132512, 77204.32749453338],
[0.060, 0.54679388547, 37410.56723987860],
[0.046, 5.77182292982, 529.69096509460],
[0.052, 3.58488737294, 25558.21217647960],
[0.061, 1.64891174657, 20426.57109242200],
[0.043, 6.15538236294, 51646.11531805379],
[0.042, 4.89875940528, 129330.13715577759],
[0.036, 5.61094806248, 22645.32819660879],
[0.033, 4.34189175312, 32858.61374281979],
[0.037, 4.50512068847, 26107.57290247399],
[0.032, 1.99466664427, 25132.30339996560],
[0.030, 0.76607738630, 5661.33204915220],
[0.027, 4.87180838160, 54394.56338733519],
[0.029, 5.66168505554, 26068.23338067440],
[0.025, 3.31115218239, 1059.38193018920],
[0.029, 2.70280425915, 41962.52073693740],
[0.029, 3.56940606994, 63498.47038145279],
[0.029, 4.01947170286, 339142.74084046460],
[0.028, 0.80200569507, 39609.65458316560],
[0.023, 5.30820497885, 23869.14603738740],
[0.024, 4.86369445330, 46514.47423399620],
[0.027, 3.32081057071, 10213.28554621100],
[0.030, 1.15631768661, 26084.02180621620],
[0.024, 2.71284750937, 26091.78447693220],
[0.021, 5.85119251529, 25874.60404613620],
[0.026, 3.11971794265, 43071.89928903080],
[0.023, 1.14258266850, 58946.51688439399],
[0.021, 4.78965226125, 51220.20654153979],
[0.025, 5.17153436907, 76674.63652943878],
[0.020, 6.05659966832, 25028.52121138500],
[0.017, 4.06375348164, 51535.90899683439],
[0.019, 2.26589689692, 72602.37737557039],
[0.019, 2.02802084878, 73711.75592766379],
[0.020, 2.44092663198, 51749.20809227239],
[0.017, 1.67702029587, 155418.04029735178],
[0.018, 2.11191340126, 26617.59410666880],
[0.019, 0.32685450395, 4551.95349705880],
[0.016, 4.02105643770, 105460.99111839019],
[0.014, 2.35860855509, 26080.78959457339],
[0.013, 3.28426450224, 25661.30495069820],
[0.016, 2.09223320909, 103292.23063610759],
[0.013, 2.08475100066, 49957.04917896160],
[0.014, 5.66400816218, 48733.23133818299],
[0.013, 1.65023710844, 26095.01668857500],
[0.015, 5.43792291298, 25973.46385288896],
[0.012, 5.15541566845, 79219.30916633119],
[0.012, 2.93766606728, 33326.57873317420],
[0.011, 5.16599347976, 15874.61759536320],
[0.015, 3.49521469034, 83925.04147387479],
[0.012, 1.33980027148, 77308.10968311399],
[0.012, 2.74476655782, 19317.19254032860],
[0.014, 5.48457159802, 98690.28051714458],
[0.012, 6.17629016531, 36301.18868778519],
[0.012, 5.16549673414, 1589.07289528380],
[0.010, 3.19718718931, 24498.83024629040],
[0.010, 3.10957426655, 16983.99614745660],
[0.010, 2.67818215946, 77734.01845962799],
[0.012, 1.64438976704, 26202.34243025941],
[0.011, 6.12421691815, 52705.49724824299],
[0.010, 5.42117419251, 14765.23904326980],
[0.011, 1.59577581724, 50057.04242277000],
[0.012, 2.44342322463, 213.29909543800],
[0.011, 4.59333229552, 56727.75978020720],
[0.008, 2.22267415318, 6283.07584999140],
[0.010, 3.63881306668, 65697.55772473979],
[0.008, 0.85708473896, 365230.64398203877],
[0.010, 3.56346926379, 53235.18821333759],
[0.009, 3.03935867498, 78793.40038981718],
[0.008, 2.05186284069, 30639.85663863300],
[0.008, 6.07959531374, 59414.48187474840],
[0.007, 1.48753095657, 29530.47808653960],
[0.007, 0.54370332724, 38519.94579197200],
[0.008, 5.99792913268, 7.11354700080],
[0.009, 6.08426293157, 69159.80243060499],
[0.007, 1.35513014510, 82815.66292178139],
[0.008, 3.00335450338, 40853.14218484400],
[0.007, 3.40544433462, 1066.49547719000],
[0.007, 5.80782632115, 45405.09568190280],
[0.007, 3.82318715536, 1052.26838318840],
[0.006, 4.57200111034, 55618.38122811380],
[0.006, 4.85942618671, 52168.69273614759],
[0.008, 0.34211699258, 79323.09135491178],
[0.006, 0.67823675060, 110012.94461544899],
[0.007, 4.12285655199, 45892.73043315699],
[0.007, 5.41918774642, 1109.37855209340],
[0.007, 3.14407932401, 51962.50718771040],
[0.006, 5.13879522396, 76044.95232053580],
[0.007, 2.06447590782, 124778.18365871879],
[0.006, 1.61443478349, 3442.57494496540],
[0.005, 2.01359728100, 27676.97603685800],
[0.007, 5.49596353318, 23754.70674870219],
[0.006, 0.71445272050, 27147.28507176339],
[0.005, 5.58153663720, 68050.42387851159],
[0.006, 4.72387999717, 52290.24557183361],
[0.005, 1.65565332809, 80482.46652890938],
[0.005, 4.67655631038, 181505.94343892598],
[0.005, 5.35730277715, 12566.15169998280],
[0.005, 2.24953488234, 52061.36699446317],
[0.004, 1.93085125724, 52156.13652224860],
[0.006, 5.23350745087, 129380.13377768178],
[0.005, 6.27908880897, 66941.04532641819],
[0.006, 0.86124028508, 52195.47604404819],
[0.004, 0.23100295125, 89586.37352302698],
[0.005, 4.23944686799, 103396.01282468818],
[0.004, 0.29398633221, 51109.31080595839],
[0.005, 0.38451698643, 955.59974160860],
[0.005, 5.75812965170, 104881.30353139139],
[0.005, 3.78671774559, 52171.92494779040],
[0.004, 5.32828531774, 25448.00585526019],
[0.005, 3.20016226905, 426.59819087600],
[0.005, 3.86489045633, 9103.90699411760],
[0.004, 0.62543334322, 11322.66409830440],
[0.004, 6.07508617692, 2118.76386037840],
[0.004, 2.43638238426, 74821.13447975718],
[0.004, 5.29735530203, 52179.68761850640],
[0.003, 3.19112063073, 13521.75144159140],
[0.004, 5.09850398144, 77837.11123384659],
[0.004, 1.81128771043, 102762.53967101299],
[0.004, 2.92685125689, 639.89728631400],
[0.004, 4.37998582536, 52182.91983014920],
[0.004, 0.90562468300, 77623.81213840858],
[0.004, 3.40653389629, 105410.99449648599],
[0.004, 5.56139758889, 26301.20223701220],
[0.003, 3.84817111044, 2218.75710418680],
[0.004, 3.40685398189, 52389.10537858640],
[0.003, 3.64497587259, 64607.84893354619],
[0.003, 4.90907522926, 99799.65906923798],
[0.003, 0.33551297325, 13655.86049117640],
[0.003, 4.38738526963, 108903.56606335558],
[0.003, 2.71996542810, 38654.05484155699],
[0.003, 5.21639569130, 150866.08680029298],
[0.003, 5.79669813464, 131548.89425996438],
[0.003, 4.24481036893, 136100.84775702318],
[0.003, 4.74285528385, 53764.87917843220],
[0.003, 5.12230469501, 32370.97899156560],
[0.003, 4.91979299090, 18849.22754997420],
[0.003, 1.21305125502, 105307.21230790539],
[0.002, 2.61741407230, 71492.99882347698],
[0.002, 5.29927753161, 64741.95798313119],
[0.002, 2.59250638038, 155468.03691925600],
[0.002, 5.60083003625, 26514.50133245020],
[0.003, 4.14284031224, 85034.42002596818],
[0.002, 3.04958336441, 93028.94846799239],
[0.003, 6.16142033746, 78477.00852016058],
[0.003, 4.49779099000, 76144.94556434419],
[0.002, 2.74114399659, 130969.20667296558],
[0.002, 6.18606575651, 51123.53789995999],
[0.003, 1.68659744145, 28421.09953444620],
[0.002, 1.39891525246, 81706.28436968799],
[0.002, 1.36487993355, 79852.78232000639],
[0.002, 0.86961235954, 129483.91596626239],
[0.002, 0.16105302705, 25021.40766438420],
[0.002, 0.20969999844, 19804.82729158280],
[0.002, 0.99320491085, 162188.75089859738],
[0.002, 3.94039306142, 391318.54712361295],
[0.002, 1.80783236802, 23969.13928119580],
[0.002, 5.12099356220, 51322.60990139639],
[0.002, 2.80140642811, 62389.09182935939],
[0.002, 2.60965333457, 52602.40447402440],
[0.002, 2.72257468038, 7994.52844202420],
[0.002, 5.84222491614, 103821.92160120218],
[0.002, 6.04515878720, 25035.63475838580],
[0.001, 2.34997564292, 85502.38501632259],
[0.001, 0.17409967102, 131498.89763806018],
[0.001, 3.11496551907, 25934.12433108940],
[0.002, 5.12532278095, 78267.59076008058],
[0.001, 5.49175475674, 104331.94280539699],
[0.001, 0.44808516059, 78050.41032928458],
[0.002, 1.92656028088, 102132.85546210999],
[0.002, 1.93198050022, 853.19638175200],
[0.001, 2.42972717822, 94138.32702008578],
[0.002, 5.13550087739, 6770.71060124560],
[0.001, 4.65441500870, 78259.82808936459],
[0.001, 3.99687455490, 188276.65404017159],
[0.001, 4.39069692330, 104371.28232719658],
[0.001, 1.64083661387, 78283.37918562238],
[0.001, 1.50558734911, 78378.14871340781],
[0.002, 6.27597485867, 91785.46086631398],
[0.001, 4.00786092689, 78244.03966382280],
[0.001, 1.70741856509, 28206.66700195260],
[0.001, 5.31900403501, 78149.27013603736],
[0.001, 1.40205887414, 44937.13069154840],
[0.001, 1.03752853909, 104347.73123093879],
[0.001, 0.66520680194, 419.48464387520],
[0.001, 2.46437105095, 104355.49390165479],
[0.001, 0.81835364761, 35191.81013569180],
[0.001, 0.33780670840, 88476.99497093359],
[0.001, 6.08346231930, 70269.18098269838],
[0.001, 1.86810476133, 125887.56221081219],
[0.001, 2.10468974660, 25619.93815121980],
[0.001, 3.99494842792, 71025.03383312259],
[0.001, 0.57714874874, 71980.63357473118],
[0.001, 5.66312942513, 97580.90196505119],
[0.001, 3.06688416266, 129909.82474277639],
[0.001, 5.66709359706, 433.71173787680],
[0.001, 0.91634007063, 103925.01437542078],
[0.001, 6.02359186416, 181555.94006083018],
[0.001, 1.44980129997, 26727.80042788820],
[0.001, 1.45442920390, 207593.84658050019],
[0.001, 1.12941846578, 60055.89543648739],
[0.001, 1.16964771504, 134991.46920492980],
],
# B3
[
[235.423, 0.35387524604, 26087.90314157420],
[160.537, 0.00000000000, 0.00000000000],
[18.904, 4.36275460261, 52175.80628314840],
[6.376, 2.50715381439, 78263.70942472259],
[4.580, 6.14257817571, 104351.61256629678],
[3.061, 3.12497552681, 130439.51570787099],
[1.732, 6.26642412058, 156527.41884944518],
[0.857, 3.07673166705, 182615.32199101939],
[0.384, 6.14815319932, 208703.22513259359],
[0.159, 2.92437378320, 234791.12827416777],
[0.062, 5.97292432097, 260879.03141574195],
[0.054, 3.31612529961, 27197.28169366760],
[0.023, 2.74287679452, 286966.93455731618],
[0.017, 0.77798463435, 24978.52458948080],
[0.012, 6.24116133415, 53285.18483524180],
[0.008, 5.79551081392, 313054.83769889036],
[0.006, 5.81555175073, 31749.23519072640],
[0.004, 4.67212195693, 51116.42435295920],
[0.004, 3.36833718999, 77154.33087262919],
[0.003, 0.26522113546, 103242.23401420339],
[0.003, 0.79794705473, 27043.50288318280],
[0.004, 0.82832725003, 21535.94964451540],
[0.002, 2.57068697582, 339142.74084046460],
[0.002, 1.82309397040, 1109.37855209340],
[0.002, 0.74986942696, 47623.85278608960],
[0.002, 3.61692083154, 50586.73338786459],
[0.002, 4.70766241226, 51066.42773105500],
[0.001, 3.33688549090, 129330.13715577759],
[0.001, 2.64641192612, 57837.13833230060],
[0.001, 4.93247555987, 25558.21217647960],
[0.002, 5.00344393497, 20426.57109242200],
[0.002, 4.80841415889, 25028.52121138500],
[0.002, 5.85039338716, 1059.38193018920],
[0.001, 1.85116662745, 37410.56723987860],
[0.002, 3.97317842825, 25132.30339996560],
[0.001, 2.14494291300, 79373.08797681599],
[0.001, 2.53223701416, 46514.47423399620],
[0.001, 5.84921632430, 5661.33204915220],
[0.001, 3.81958470276, 53131.40602475700],
[0.001, 1.05410669937, 1589.07289528380],
[0.001, 1.39436798574, 51646.11531805379],
[0.001, 0.36358097174, 22645.32819660879],
[0.001, 2.76609972270, 28306.66024576099],
[0.001, 3.67689055309, 4551.95349705880],
[0.001, 5.39398540975, 32858.61374281979],
[0.001, 3.73579127170, 24498.83024629040],
[0.001, 0.60289607514, 26068.23338067440],
[0.001, 5.78167324673, 26107.57290247399],
[0.001, 3.81913361795, 26091.78447693220],
[0.001, 5.64455351094, 365230.64398203877],
[0.001, 4.87981157471, 10213.28554621100],
[0.001, 2.44816565966, 26084.02180621620],
[0.000, 3.45284067711, 105460.99111839019],
],
# B4
[
[4.276, 1.74579932115, 26087.90314157420],
[1.023, 3.14159265359, 0.00000000000],
[0.425, 4.03419509143, 52175.80628314840],
[0.257, 0.20643590425, 78263.70942472259],
[0.116, 3.75237354024, 104351.61256629678],
[0.073, 1.18210375402, 130439.51570787099],
[0.051, 4.54581086194, 156527.41884944518],
[0.031, 1.44226942756, 182615.32199101939],
[0.016, 4.56372679459, 208703.22513259359],
[0.008, 1.34684622635, 234791.12827416777],
[0.003, 4.40269422669, 260879.03141574195],
[0.001, 4.69096566687, 27197.28169366760],
[0.001, 1.16082903756, 286966.93455731618],
[0.000, 1.44918128781, 24978.52458948080],
[0.000, 4.18046278690, 313054.83769889036],
],
# B5
[
[0.106, 3.94555784256, 26087.90314157420],
[0.075, 3.14159265359, 0.00000000000],
[0.022, 1.30514874546, 52175.80628314840],
[0.007, 4.99717136857, 78263.70942472259],
[0.004, 2.05662545278, 104351.61256629678],
[0.002, 5.43162058632, 130439.51570787099],
[0.001, 2.68052517331, 156527.41884944518],
[0.001, 6.00841870284, 182615.32199101939],
[0.000, 2.85941734701, 208703.22513259359],
[0.000, 5.96962108614, 234791.12827416777],
],
]
"""This table contains Mercury's periodic terms (all of them) from the
planetary theory VSOP87 for the heliocentric latitude at the equinox of date
(taken from the 'D' solution). In Meeus' book a shortened version can be found
in pages 415-416."""
VSOP87_R = [
# R0
[
[39528271.652, 0.00000000000, 0.00000000000],
[7834131.817, 6.19233722599, 26087.90314157420],
[795525.557, 2.95989690096, 52175.80628314840],
[121281.763, 6.01064153805, 78263.70942472259],
[21921.969, 2.77820093975, 104351.61256629678],
[4354.065, 5.82894543257, 130439.51570787099],
[918.228, 2.59650562598, 156527.41884944518],
[260.033, 3.02817753482, 27197.28169366760],
[289.955, 1.42441936951, 25028.52121138500],
[201.855, 5.64725040350, 182615.32199101939],
[201.499, 5.59227724202, 31749.23519072640],
[141.980, 6.25264202645, 24978.52458948080],
[100.144, 3.73435608689, 21535.94964451540],
[77.561, 3.66972526976, 20426.57109242200],
[63.277, 4.29905918105, 25558.21217647960],
[62.951, 4.76588899933, 1059.38193018920],
[66.754, 2.52520309182, 5661.33204915220],
[75.500, 4.47428642962, 51116.42435295920],
[48.266, 6.06824478778, 53285.18483524180],
[45.748, 2.41480951648, 208703.22513259359],
[35.224, 1.05917802674, 27043.50288318280],
[40.815, 2.35882016415, 57837.13833230060],
[44.234, 1.21957314874, 15874.61759536320],
[33.873, 0.86381554651, 25661.30495069820],
[37.203, 0.51733821470, 47623.85278608960],
[30.092, 1.79500530627, 37410.56723987860],
[28.417, 3.02063625668, 51066.42773105500],
[30.903, 0.88366335532, 24498.83024629040],
[26.105, 2.15021963174, 39609.65458316560],
[18.699, 4.96496008403, 11322.66409830440],
[21.270, 5.36857139841, 13521.75144159140],
[19.422, 4.98378647655, 10213.28554621100],
[16.941, 3.88765393402, 26617.59410666880],
[15.109, 0.44510589948, 46514.47423399620],
[17.087, 1.24077764194, 77204.32749453338],
[13.940, 1.62573946865, 27147.28507176339],
[13.382, 1.07657890477, 51646.11531805379],
[15.012, 4.28173463507, 41962.52073693740],
[13.977, 4.77056848793, 33326.57873317420],
[12.794, 6.06437138766, 1109.37855209340],
[13.938, 1.99984876578, 25132.30339996560],
[16.297, 2.63293587817, 19804.82729158280],
[11.933, 2.36500939134, 4551.95349705880],
[10.612, 5.46555460932, 234791.12827416777],
[12.754, 2.07613721222, 529.69096509460],
[12.069, 2.84997619452, 79373.08797681599],
[9.069, 1.21263611811, 14765.23904326980],
[9.491, 0.83697007534, 12566.15169998280],
[9.379, 5.41195286503, 83925.04147387479],
[7.499, 2.44636811119, 30639.85663863300],
[7.463, 5.53233943198, 32858.61374281979],
[7.215, 1.17101960691, 16983.99614745660],
[8.492, 3.56622930635, 73711.75592766379],
[7.109, 5.32625264624, 426.59819087600],
[6.863, 1.82313992707, 36301.18868778519],
[6.560, 4.27818149213, 43071.89928903080],
[8.853, 3.87737694074, 50586.73338786459],
[6.885, 5.31108526630, 1589.07289528380],
[5.943, 4.06893157254, 53131.40602475700],
[7.653, 3.91505031889, 51749.20809227239],
[6.460, 6.07127449283, 77154.33087262919],
[5.415, 5.20028107807, 65697.55772473979],
[5.186, 3.56743214904, 6283.07584999140],
[4.090, 3.67593658710, 22645.32819660879],
[4.075, 4.29142111073, 103292.23063610759],
[4.428, 5.69109527379, 45892.73043315699],
[3.426, 0.64911736234, 52705.49724824299],
[3.354, 3.49345105494, 72602.37737557039],
[4.120, 1.65386255382, 25448.00585526019],
[3.261, 1.03195890028, 68050.42387851159],
[3.278, 3.13863529552, 25874.60404613620],
[3.054, 4.12578324522, 77734.01845962799],
[3.614, 2.95861599353, 28306.66024576099],
[2.820, 4.62628436074, 18849.22754997420],
[2.746, 4.67880529205, 53235.18821333759],
[2.713, 3.56874913980, 26068.23338067440],
[2.507, 2.23312085627, 260879.03141574195],
[3.044, 5.90613310181, 105460.99111839019],
[2.755, 5.67587087632, 26107.57290247399],
[2.267, 2.17941340037, 110012.94461544899],
[2.274, 0.50173671332, 32370.97899156560],
[2.741, 4.75427920262, 63498.47038145279],
[2.792, 5.05148206806, 51220.20654153979],
[2.557, 2.95114696617, 26080.78959457339],
[2.135, 0.84621449019, 76674.63652943878],
[1.971, 0.47407494310, 48733.23133818299],
[1.965, 1.37420902653, 7238.67559160000],
[2.526, 0.34535290139, 23969.13928119580],
[2.022, 0.33828477567, 99799.65906923798],
[1.872, 3.93046425037, 38654.05484155699],
[1.873, 0.69327393635, 26091.78447693220],
[1.945, 2.37383894182, 6770.71060124560],
[1.863, 2.26591720786, 26084.02180621620],
[1.750, 5.50651903992, 56727.75978020720],
[1.971, 3.77455887616, 19317.19254032860],
[1.672, 2.15275897581, 26514.50133245020],
[1.703, 4.28965990785, 40853.14218484400],
[1.657, 4.98021773372, 9103.90699411760],
[2.084, 2.19427123968, 26301.20223701220],
[1.818, 4.20870869718, 25938.33994443960],
[1.780, 0.91702846577, 79219.30916633119],
[1.525, 2.15720744047, 27676.97603685800],
[1.533, 1.54503054415, 955.59974160860],
[1.614, 1.27565104562, 25035.63475838580],
[1.743, 0.68269002122, 77837.11123384659],
[1.389, 4.85102048256, 62389.09182935939],
[1.436, 0.05742216761, 23869.14603738740],
[1.563, 5.84795233948, 26095.01668857500],
[1.640, 4.66281337712, 25021.40766438420],
[1.552, 2.83910580545, 103242.23401420339],
[1.249, 1.97225274067, 91785.46086631398],
[1.160, 1.73113341823, 38519.94579197200],
[1.005, 1.05898314860, 129380.13377768178],
[1.041, 2.78036322434, 213.29909543800],
[1.105, 4.55512109515, 26011.63707029860],
[0.979, 2.43870419667, 71980.63357473118],
[0.853, 0.56334001923, 20760.42703319140],
[0.874, 4.53679970936, 639.89728631400],
[0.783, 3.69782403005, 78793.40038981718],
[0.772, 4.08714349549, 94138.32702008578],
[0.797, 0.26237215917, 98690.28051714458],
[0.965, 4.70784179954, 51535.90899683439],
[0.952, 2.53604676495, 29530.47808653960],
[0.773, 2.67893222158, 131548.89425996438],
[0.734, 0.89243669490, 103821.92160120218],
[0.668, 3.73113394924, 46848.33017476560],
[0.828, 2.88184821542, 19406.67828817460],
[0.622, 1.05579535631, 59414.48187474840],
[0.676, 4.50357599360, 25934.12433108940],
[0.602, 5.28399057704, 286966.93455731618],
[0.619, 1.44855037685, 79323.09135491178],
[0.691, 6.19733262608, 51962.50718771040],
[0.563, 5.22994296186, 136100.84775702318],
[0.782, 3.25257254691, 50057.04242277000],
[0.551, 0.33644229836, 52156.13652224860],
[0.705, 4.73705371920, 26241.68195205900],
[0.577, 5.85654734429, 2118.76386037840],
[0.517, 3.93195379429, 102762.53967101299],
[0.635, 4.87720838965, 12432.04265039780],
[0.635, 1.81903685898, 77308.10968311399],
[0.543, 1.40877130839, 44937.13069154840],
[0.556, 5.44324390449, 85034.42002596818],
[0.496, 3.39004132624, 125887.56221081219],
[0.546, 4.78005317483, 22747.29071487440],
[0.520, 6.00172746972, 52168.69273614759],
[0.463, 3.67549187956, 25668.41849769900],
[0.452, 3.53009000682, 58458.88213313979],
[0.474, 5.94330512040, 54394.56338733519],
[0.559, 2.44355554028, 52195.47604404819],
[0.418, 3.73369494476, 103925.01437542078],
[0.397, 0.69014608020, 64741.95798313119],
[0.511, 5.88243734524, 45494.58142974879],
[0.412, 2.26754404446, 82815.66292178139],
[0.425, 5.24511927496, 52389.10537858640],
[0.482, 0.98165400059, 25654.19140369739],
[0.380, 3.74413132157, 52179.68761850640],
[0.359, 5.50961077408, 26555.86813192860],
[0.375, 1.97920050124, 149.56319713460],
[0.385, 5.88991948790, 129330.13715577759],
[0.348, 4.91064019959, 1052.26838318840],
[0.417, 4.32916053867, 51123.53789995999],
[0.425, 1.43228996047, 51109.31080595839],
[0.464, 3.98651628073, 105307.21230790539],
[0.329, 5.20636278221, 52602.40447402440],
[0.354, 1.04383146533, 66941.04532641819],
[0.324, 1.62975761811, 88476.99497093359],
[0.378, 5.31676765847, 52171.92494779040],
[0.440, 1.46381183715, 89586.37352302698],
[0.355, 1.52732265492, 1066.49547719000],
[0.302, 5.21113786435, 53764.87917843220],
[0.301, 5.02488829134, 117873.36400788819],
[0.351, 2.00433341730, 24395.73747207180],
[0.289, 6.19161799918, 26094.53170047421],
[0.286, 3.77170690304, 7.11354700080],
[0.284, 3.10942616808, 49957.04917896160],
[0.385, 2.47184729453, 25234.70675982219],
[0.382, 0.97683830518, 52026.24308601380],
[0.271, 5.74710334372, 25455.11940226100],
[0.375, 0.55187466535, 45405.09568190280],
[0.267, 2.86410554301, 80482.46652890938],
[0.304, 6.00190488272, 2218.75710418680],
[0.259, 1.82921035765, 24505.94379329119],
[0.251, 4.10979574073, 155468.03691925600],
[0.289, 3.05373259745, 26081.27458267419],
[0.242, 5.05501089774, 42153.96900304900],
[0.244, 2.15621668050, 3442.57494496540],
[0.315, 2.61613386386, 52182.91983014920],
[0.256, 3.71117332461, 25619.93815121980],
[0.232, 2.21576531181, 16066.06586147480],
[0.233, 5.49033130906, 98068.53671630539],
[0.236, 4.08612620637, 26013.12154300690],
[0.225, 0.44449338810, 76144.94556434419],
[0.242, 3.29851820234, 6681.22485339960],
[0.227, 1.63236736805, 76.26607127560],
[0.268, 1.09037236588, 18093.37469954999],
[0.255, 4.20635818545, 44181.27784112419],
[0.205, 1.00234895959, 26190.99591579279],
[0.228, 1.46077047931, 77623.81213840858],
[0.197, 1.36693360783, 26727.80042788820],
[0.259, 1.28296039354, 13655.86049117640],
[0.197, 5.73307583430, 157636.79740153858],
[0.196, 0.06606260924, 40565.25432477420],
[0.187, 0.86187283408, 120226.23016165999],
[0.262, 4.14850032709, 24491.71669928959],
[0.244, 4.14399890076, 95247.70557217918],
[0.232, 5.45165695316, 33967.99229491319],
[0.206, 5.59196913034, 55618.38122811380],
[0.203, 1.64252462466, 58946.51688439399],
[0.187, 0.46291089182, 104881.30353139139],
[0.192, 1.82761158300, 25551.09862947879],
[0.200, 1.81376901527, 25863.55834587229],
[0.191, 5.57428963071, 5327.47610838280],
[0.195, 3.31297083154, 124778.18365871879],
[0.169, 1.69270064342, 90695.75207512038],
[0.226, 1.32354627258, 52099.54021187280],
[0.177, 3.29620848300, 25131.61398560359],
[0.178, 2.54823795050, 26720.68688088739],
[0.167, 3.61983109002, 23754.70674870219],
[0.159, 3.48396967776, 25977.69682035479],
[0.150, 5.20072476078, 69159.80243060499],
[0.179, 3.94252428767, 129909.82474277639],
[0.166, 0.40320638452, 100909.03762133139],
[0.176, 2.97410942402, 24925.42843716640],
[0.154, 1.27206049137, 25984.81036735560],
[0.144, 1.89319156163, 64607.84893354619],
[0.145, 2.05409839424, 313054.83769889036],
[0.152, 4.87194153709, 103396.01282468818],
[0.137, 3.86782217557, 24609.03656750980],
[0.141, 1.99770625298, 162188.75089859738],
[0.185, 6.10038742063, 23439.44831610119],
[0.135, 1.27363012793, 52022.02747266360],
[0.127, 0.70464976569, 128850.44281258718],
[0.142, 1.50696203402, 52329.58509363319],
[0.126, 2.70555128398, 28206.66700195260],
[0.126, 1.61963252183, 48835.19385644859],
[0.123, 0.15629905349, 151975.46535238638],
[0.137, 1.77306412615, 35191.81013569180],
[0.147, 4.50311642422, 105410.99449648599],
[0.125, 3.38994834526, 78244.03966382280],
[0.119, 2.77644375904, 78256.59587772179],
[0.156, 2.96616703196, 78050.41032928458],
[0.145, 1.35569389554, 3340.61242669980],
[0.126, 3.97006576134, 29428.51556827400],
[0.128, 5.41891989692, 26162.68474014150],
[0.132, 4.86901248209, 24712.12934172840],
[0.110, 3.87954702440, 85502.38501632259],
[0.127, 5.49703075555, 78283.37918562238],
[0.126, 0.94870979828, 121335.60871375339],
[0.129, 4.00691218396, 72936.23331633979],
[0.102, 0.50487650429, 130012.91751699499],
[0.104, 0.29849788751, 84546.78527471398],
[0.118, 0.76511176346, 131395.11544947958],
[0.120, 4.45261989231, 71025.03383312259],
[0.117, 3.31644134053, 25771.51127191760],
[0.110, 2.63249934300, 71582.48457132299],
[0.097, 2.66105435933, 155418.04029735178],
[0.113, 5.88733575390, 26404.29501123080],
[0.098, 2.01417457095, 78477.00852016058],
[0.103, 0.46416881502, 51756.32163927320],
[0.093, 2.37389467504, 419.48464387520],
[0.125, 1.87932536282, 26610.48055966799],
[0.095, 0.34221817875, 26507.38778544939],
[0.093, 3.80346806552, 26037.90651966999],
[0.091, 2.63082094391, 28421.09953444620],
[0.101, 5.20997240587, 433.71173787680],
[0.096, 4.47724179825, 77197.21394753258],
[0.108, 4.03679713919, 51742.09454527159],
[0.086, 5.14039556935, 26237.46633870879],
[0.092, 3.74335845403, 90829.86112470538],
[0.086, 1.86276413658, 27140.17152476259],
[0.102, 5.40465219833, 26137.89976347840],
[0.086, 4.01653667598, 10021.83728009940],
[0.100, 5.32142188276, 108903.56606335558],
[0.079, 4.68108496987, 27154.39861876420],
[0.092, 5.52103093635, 51322.60990139639],
[0.093, 4.20604773511, 38813.35657634920],
[0.078, 2.88001982141, 29416.03879785439],
[0.095, 4.44018421307, 115674.27666460119],
[0.104, 5.05004528676, 50483.64061364600],
[0.075, 1.78927060530, 143961.26714946239],
[0.086, 0.51423355089, 78267.59076008058],
[0.078, 4.66831173790, 114564.89811250778],
[0.078, 4.20137623264, 1692.16566950240],
[0.086, 4.03030391951, 78114.14622758799],
[0.073, 2.27328552013, 52643.77127350280],
[0.082, 3.73510592110, 853.19638175200],
[0.071, 4.89150553141, 50593.84693486539],
[0.082, 5.22677693918, 27999.10262479140],
[0.093, 1.09569161440, 77211.44104153418],
[0.074, 1.97833720876, 78690.30761559859],
[0.082, 3.59482991001, 71492.99882347698],
[0.083, 4.10355702051, 93028.94846799239],
[0.083, 3.12647584943, 14477.35118320000],
[0.067, 0.24182046727, 66653.15746634839],
[0.074, 5.66833060422, 78270.82297172339],
[0.068, 1.98236355905, 79852.78232000639],
[0.064, 5.55115814500, 25764.39772491679],
[0.064, 6.15935356751, 76044.95232053580],
[0.087, 1.77296830923, 25440.89230825939],
[0.073, 2.06220281759, 111122.32316754239],
[0.066, 2.28151075383, 7880.08915333899],
[0.076, 2.65553220848, 34282.17847478280],
[0.078, 0.40338105541, 49842.60989027639],
[0.064, 0.87558639332, 181555.94006083018],
[0.086, 2.08697748680, 78259.82808936459],
[0.074, 0.86501751700, 50579.61984086379],
[0.082, 1.02659883956, 74821.13447975718],
[0.059, 2.45952644668, 51543.02254383520],
[0.062, 0.94273311929, 25344.91308104160],
[0.058, 2.95861781205, 52182.43484204840],
[0.058, 4.20402726578, 96357.08412427259],
[0.061, 2.81500265978, 26202.34243025941],
[0.057, 2.27689377996, 124156.43985787958],
[0.057, 4.37167017012, 1581.95934828300],
[0.055, 0.12465494356, 25973.46385288896],
[0.054, 4.79303212221, 26164.16921284980],
[0.054, 3.05622204718, 25565.32572348040],
[0.055, 4.51497762833, 103711.71527998279],
[0.054, 3.87143037686, 18207.81398823521],
[0.054, 4.62784653733, 25881.71759313700],
[0.053, 4.32548272270, 70269.18098269838],
[0.050, 2.50066877650, 183724.70054311279],
[0.058, 2.06211216656, 1596.18644228460],
[0.066, 5.20298814290, 26294.08869001139],
[0.047, 0.85039730966, 52101.02468458109],
[0.058, 1.43409045174, 23866.04650697719],
[0.048, 2.35364103056, 81706.28436968799],
[0.052, 0.19368783267, 92741.06060792258],
[0.053, 0.58517949906, 26624.70765366959],
[0.061, 2.61493039721, 49527.35145767539],
[0.047, 3.88384847335, 146314.13330323418],
[0.049, 6.20308247475, 32769.12799497380],
[0.053, 4.37486529196, 78187.44335344699],
[0.048, 5.97568482401, 51013.33157874059],
[0.048, 3.84102043742, 102232.84870591838],
[0.049, 5.05464216653, 7994.52844202420],
[0.044, 5.42890224840, 86143.79857806159],
[0.058, 3.80571138237, 99024.13645791399],
[0.044, 4.02792920142, 147423.51185532758],
[0.058, 6.09746566424, 52169.17772424839],
[0.042, 4.38843836266, 224.34479570190],
[0.043, 1.57859396874, 23976.25282819660],
[0.049, 0.46973350644, 51707.84129279399],
[0.040, 4.41764731583, 52815.70356946240],
[0.046, 3.51985131014, 130969.20667296558],
[0.045, 4.35527612249, 39743.76363275060],
[0.045, 0.78163192715, 25138.72753260440],
[0.049, 0.90057831755, 632.78373931320],
[0.041, 4.04225615670, 52278.89905736699],
[0.039, 2.91829595120, 956.28915597060],
[0.043, 0.13178694356, 2648.45482547300],
[0.038, 0.62377784752, 50696.93970908399],
[0.042, 2.75028269027, 24079.34560241519],
[0.040, 1.64358052897, 39629.32434406539],
[0.037, 5.75760879379, 25867.49049913539],
[0.051, 1.57829002915, 12725.45343477500],
[0.037, 1.62981695072, 129483.91596626239],
[0.045, 0.04645406242, 51219.51712717779],
[0.036, 0.09834373600, 25241.82030682300],
[0.049, 0.07681157050, 150866.08680029298],
[0.034, 4.56091607046, 536.80451209540],
[0.036, 5.59483746723, 52808.59002246159],
[0.039, 5.99500252470, 104138.31347085879],
[0.046, 0.70772608543, 155997.72788435058],
[0.033, 4.54716206885, 78417.48823520739],
[0.041, 4.92673567168, 51639.00177105299],
[0.032, 4.31372208361, 78109.93061423779],
[0.036, 5.69791953426, 26049.77010593640],
[0.034, 3.32168809248, 35472.74414964940],
[0.042, 4.86530735726, 51951.46148744649],
[0.033, 3.73733919231, 154938.34595416137],
[0.041, 2.38147812869, 68241.87214462319],
[0.035, 5.09571047220, 339142.74084046460],
[0.031, 4.31506703539, 52072.71350892979],
[0.032, 3.21248509301, 178063.36849396059],
[0.035, 5.04278529087, 188276.65404017159],
[0.041, 3.22838990589, 1162.47470440780],
[0.030, 2.33061092140, 1478.86657406440],
[0.032, 2.71244280066, 25780.34552060460],
[0.032, 3.80411460420, 157483.01859105378],
[0.030, 0.37624991562, 26421.75908234360],
[0.029, 5.82513433576, 104344.49901929598],
[0.031, 6.02215690021, 26198.10946279360],
[0.040, 1.02201252788, 27819.02549450680],
[0.030, 2.25849995020, 104371.28232719658],
[0.029, 2.67851330746, 110.20632121940],
[0.030, 1.34446903292, 1375.77379984580],
[0.028, 4.62845152557, 74923.09699802278],
[0.037, 3.03899000872, 11610.55195837420],
[0.032, 0.26062549755, 52065.59996192899],
[0.038, 1.25704652400, 131498.89763806018],
[0.032, 1.04832153595, 26086.41866886590],
[0.037, 1.63595908508, 50800.03248330259],
[0.030, 0.15550783905, 104331.94280539699],
[0.026, 0.03549300809, 24815.22211594700],
[0.026, 1.03871337432, 24292.64469785319],
[0.026, 3.54557412535, 156100.82065856917],
[0.027, 0.60333270859, 111590.28815789679],
[0.031, 3.35540556110, 126996.94076290558],
[0.026, 5.73937805822, 54294.57014352679],
[0.026, 2.79743885101, 86457.98475793119],
[0.026, 5.70579806927, 97670.38771289718],
[0.025, 2.34928986187, 24601.92302050899],
[0.025, 5.70613852018, 181505.94343892598],
[0.034, 0.23651097126, 26395.46076254379],
[0.025, 2.19241735868, 52250.58788171570],
[0.025, 1.82880416247, 74.78159856730],
[0.028, 0.57661358158, 125112.03959948818],
[0.024, 2.03938254170, 26521.61487945100],
[0.024, 5.05213893429, 104564.91166173479],
[0.023, 6.23874249128, 75615.25459924959],
[0.026, 3.34519516519, 110634.68841628819],
[0.026, 4.74840245512, 13362.44970679920],
[0.026, 0.15419927428, 22759.76748529401],
[0.027, 2.39568978424, 522.57741809380],
[0.028, 0.25542748453, 103.09277421860],
[0.025, 3.32961707416, 28286.99048486120],
[0.026, 2.07987634823, 29550.14784743939],
[0.032, 1.70464933285, 26089.38761428249],
[0.023, 4.16670746048, 24176.70365835700],
[0.024, 0.08582796512, 51859.41441349179],
[0.025, 5.27240695394, 25936.85547173129],
[0.024, 0.80363857551, 77829.99768684579],
[0.023, 2.30360039127, 77410.51304297059],
[0.030, 1.21286011206, 97112.93697469679],
[0.022, 4.82094558003, 13541.42120249119],
[0.023, 2.65250267545, 52492.19815280499],
[0.026, 6.26936948934, 25939.82441714789],
[0.024, 4.92454390318, 52698.38370124219],
[0.022, 1.23470921550, 103285.11708910679],
[0.023, 3.68813881444, 26729.31670331319],
[0.022, 1.95831083558, 24356.78078864160],
[0.022, 0.78346634338, 104202.04936916218],
[0.021, 2.52931432670, 467.96499035440],
[0.024, 1.84656751628, 76571.54375522019],
[0.025, 2.55626379808, 24822.33566294780],
[0.027, 3.61440862477, 23962.02573419499],
[0.023, 1.18953680418, 141762.17980617538],
[0.020, 5.49778171394, 112231.70171963578],
[0.023, 2.60719608050, 25754.04720080480],
[0.026, 0.75788900266, 55516.41870984820],
[0.026, 2.09375500363, 134991.46920492980],
[0.020, 3.35091650179, 52595.29092702359],
[0.021, 0.36570195077, 97580.90196505119],
[0.024, 0.51085875774, 116917.76426627958],
[0.021, 5.71018496974, 60055.89543648739],
[0.019, 0.56236491686, 52125.80966124419],
[0.019, 2.85801633295, 60370.08161635699],
[0.024, 3.50657176712, 77844.22478084739],
[0.020, 0.53533403977, 26941.09952332620],
[0.019, 6.25214103463, 25973.50403466079],
[0.022, 5.13145226592, 104347.73123093879],
[0.021, 4.13407823619, 103299.34418310839],
[0.019, 0.33492578967, 102018.41617342478],
[0.019, 5.67148210198, 54509.00267602040],
[0.018, 1.90051892916, 52325.36948028299],
[0.019, 4.27364751897, 122444.98726584678],
[0.018, 2.45675888957, 104358.72611329758],
[0.018, 1.05990359493, 27780.06881107659],
[0.018, 1.43297513339, 53242.30176033840],
[0.021, 2.99876487527, 26073.67604757259],
[0.023, 1.86389686355, 116783.65521669458],
[0.018, 4.87152831033, 170049.17029103660],
[0.019, 4.89400475242, 53228.07466633679],
[0.021, 2.47295566818, 27726.97265876220],
[0.020, 4.98762998978, 104778.21075717278],
[0.021, 1.46468188731, 140652.80125408198],
[0.017, 4.05153553008, 76667.52298243798],
[0.020, 4.80985268979, 51528.79544983359],
[0.022, 0.86617331302, 119116.85160956658],
[0.023, 2.08281937549, 52225.80290505260],
[0.018, 1.69333480892, 76681.75007643958],
[0.017, 2.09406764538, 64901.25971792339],
[0.019, 5.00011023502, 105940.68546158058],
[0.019, 0.74020534937, 36109.74042167360],
[0.017, 2.93246868693, 102132.85546210999],
[0.022, 3.55902023067, 104355.49390165479],
[0.021, 3.54390310557, 106570.36967048359],
[0.018, 4.65006394461, 61279.71327726600],
[0.019, 4.43905256177, 647.01083331480],
[0.017, 2.83124480600, 132658.27281205778],
[0.018, 2.89808596608, 26091.83529483729],
[0.017, 5.67044617806, 25788.77674730500],
[0.017, 5.37178978632, 78731.67441507700],
[0.015, 5.25910515843, 150244.34299945380],
[0.019, 1.72681089737, 153.77881048480],
[0.015, 2.16472550978, 26222.01219115920],
[0.015, 1.13029685380, 25042.74830538660],
[0.015, 2.31335544105, 51852.30086649099],
[0.019, 4.38254962804, 24182.43837663380],
[0.015, 5.16465400786, 27684.08958385880],
[0.017, 3.97954718583, 207643.84320240439],
[0.016, 5.74057898460, 25352.02662804239],
[0.014, 3.42441202713, 26823.77965510599],
[0.014, 5.30168284837, 742.99006053260],
[0.014, 2.50431306810, 32132.13172294960],
[0.014, 1.36632464908, 23919.14265929160],
[0.015, 6.07490514430, 78270.33798362259],
[0.019, 4.40557078960, 49953.94964855139],
[0.014, 0.65475293554, 323.50541665740],
[0.014, 0.47093305165, 17893.62780836560],
[0.014, 1.33029112501, 129799.61842155698],
[0.017, 6.02915345940, 26667.59072857300],
[0.014, 1.17588054181, 104275.34649502118],
[0.014, 4.84032377923, 2221.85663459700],
[0.014, 5.53694881682, 77630.92568540938],
[0.013, 5.59791238730, 209812.60368468694],
[0.013, 0.84042148682, 173511.41499690176],
[0.015, 3.96416547461, 51432.81622261579],
[0.015, 3.17020350946, 176953.98994186718],
[0.014, 2.91048815444, 78257.08086582259],
[0.013, 5.34915944924, 80174.90890793978],
[0.018, 1.65795375577, 28256.66362385679],
[0.013, 3.34629064183, 25508.21555457540],
[0.016, 1.32228458025, 27669.86248985719],
[0.013, 1.38990649917, 25024.58905812189],
[0.017, 2.01249037695, 27037.07875054399],
[0.015, 1.99208068531, 52381.99183158559],
[0.013, 2.32883800921, 27005.83342755599],
[0.014, 3.86914390591, 182085.63102592478],
[0.012, 3.97054224711, 78188.92782615528],
[0.016, 5.59174105029, 25446.48957983520],
[0.014, 0.70490117614, 172402.03644480839],
[0.012, 1.54422590258, 52252.07235442399],
[0.014, 3.47518139481, 27177.61193276780],
[0.012, 5.46223056321, 107794.18751126219],
[0.012, 5.76552608362, 50167.24874398939],
[0.016, 2.18648993322, 26308.31578401300],
[0.014, 2.72148386686, 27311.72098235281],
[0.013, 0.55524977232, 75930.51303185058],
[0.012, 2.66601602132, 137210.22630911658],
[0.011, 0.61596543052, 44295.71712980940],
[0.011, 4.76091715459, 155571.81910783658],
[0.014, 5.93896401871, 52290.24557183361],
[0.011, 0.92596625175, 22625.65843570900],
[0.012, 6.19273795549, 51653.22886505459],
[0.014, 0.79969658546, 25953.79409198919],
[0.011, 2.82093111356, 77101.23472031478],
[0.011, 1.26994666311, 26312.24793727610],
[0.013, 2.88923696437, 112545.88789950538],
[0.011, 6.05528757595, 27044.19229754480],
[0.012, 3.29626000869, 52061.36699446317],
[0.011, 3.58945976808, 52712.61079524379],
[0.014, 2.79036507500, 23888.81579828719],
[0.011, 4.15810059578, 45290.65639321759],
[0.011, 2.94979930726, 58857.03113654799],
[0.012, 2.20589728666, 31415.37924995700],
[0.012, 1.34841658603, 51969.62073471119],
[0.011, 3.29585795787, 28736.35796704720],
[0.011, 0.43538573957, 24448.83362438620],
[0.010, 2.85999162474, 130226.21661243298],
[0.013, 4.41880429822, 19958.60610206760],
[0.012, 5.96394058241, 26083.97098831109],
[0.010, 5.44297146700, 163298.12945069079],
[0.012, 1.57767582029, 91805.13062721379],
[0.010, 3.83536418151, 51226.63067417859],
[0.013, 0.34187342138, 157057.10981453978],
[0.010, 1.12787053523, 78903.60671103658],
[0.010, 4.67818130014, 2111.65031337760],
[0.012, 3.56391619799, 77795.74443436819],
[0.011, 5.80720491261, 26102.13023557580],
[0.012, 5.80252382200, 27972.80430499159],
[0.011, 2.47026109919, 26010.15259759030],
[0.013, 4.60245036657, 25032.45336464809],
[0.010, 1.14221106164, 9384.84100807520],
[0.013, 5.56953201474, 22909.75735100660],
[0.010, 4.35806585483, 157586.80077963436],
[0.010, 1.11553298844, 65831.66677432480],
[0.011, 4.67108617661, 50064.15596977079],
[0.011, 2.80726281395, 81591.84508100279],
[0.009, 0.47353753060, 128106.31931499895],
[0.009, 1.42459829123, 104505.39137678158],
[0.009, 2.37565722096, 78896.49316403578],
[0.009, 4.84820485208, 24918.31489016559],
[0.011, 6.23834008870, 30171.89164827860],
[0.011, 1.65565660037, 78039.36462902068],
[0.009, 3.65734666897, 151199.94274106238],
[0.009, 5.40966654859, 130459.18546877075],
[0.010, 0.87714716556, 78366.80219894118],
[0.009, 3.04701773654, 51329.72344839720],
[0.009, 1.96005885441, 26575.53789282839],
[0.010, 1.18004009296, 50270.34151820800],
[0.009, 5.48583841069, 138319.60486120995],
[0.010, 3.21154218694, 77307.42026875199],
[0.009, 5.55407965409, 8194.27533320860],
[0.008, 1.35584545211, 12546.48193908300],
[0.009, 0.42023516699, 27223.58001346740],
[0.010, 1.76704509660, 77726.90491262719],
[0.009, 1.60501838348, 77616.69859140778],
[0.009, 5.46388323313, 16703.06213349900],
[0.009, 1.60520912676, 117893.03376878797],
[0.009, 6.23528739890, 846.08283475120],
[0.009, 5.66619352199, 50910.23880452200],
[0.009, 1.18753574623, 104197.83375581198],
[0.009, 0.69327774851, 26709.64694241340],
[0.010, 5.48870132496, 94329.77528619739],
[0.008, 1.17006056902, 78160.61665050399],
[0.009, 0.49965065220, 27573.19384827740],
[0.011, 6.20705720585, 28102.88481337200],
[0.011, 0.75657533913, 128320.75184749259],
[0.008, 3.86430794820, 103917.90082841998],
[0.009, 3.64580324894, 76784.84285065818],
[0.008, 4.52722085618, 27463.67694142000],
[0.009, 1.73726961641, 28791.51929624980],
[0.011, 1.86762532326, 214364.55718174577],
[0.008, 3.17547134507, 50903.12525752120],
[0.008, 6.23140491980, 148.07872442630],
[0.008, 0.97646930359, 19202.75325164339],
[0.008, 0.87651427964, 151.04766984290],
[0.009, 1.55645109653, 26126.03617721200],
[0.008, 3.12232090039, 22003.91463486980],
[0.008, 3.45204671122, 24203.00197815680],
[0.008, 2.50177739941, 51955.39364070959],
[0.008, 4.20326276911, 50380.54783942739],
[0.008, 2.66681931912, 130432.40216087017],
[0.010, 2.61302801987, 27170.98337386779],
[0.008, 6.15791792940, 37698.45509994840],
[0.008, 5.36718741692, 35077.37084700659],
[0.008, 0.39542025081, 183570.92173262799],
[0.008, 4.37576068847, 123200.84011627098],
[0.008, 3.44870239791, 26402.08932144380],
[0.007, 5.88380837195, 51868.24866217880],
[0.007, 4.80640660702, 26118.23000257860],
[0.008, 5.82773614091, 3328.13565628019],
[0.009, 2.53209611805, 25227.59321282139],
[0.010, 2.52793236150, 35833.22369743080],
[0.008, 4.11204744654, 53906.92863608099],
[0.008, 1.58745297967, 101011.00013959699],
[0.009, 2.57384727244, 2125.87740737920],
[0.007, 2.46084982092, 52137.67324751059],
[0.008, 5.56577535390, 50689.82616208319],
[0.007, 5.98112141065, 52179.73843641149],
[0.010, 5.16567712694, 55638.05098901359],
[0.008, 4.67643518278, 76887.93562487679],
[0.007, 4.36322743599, 155887.52156313116],
[0.009, 0.68598593831, 38.13303563780],
[0.008, 0.46194680162, 181026.24909573558],
[0.008, 0.42442705032, 182188.72380014337],
[0.009, 3.57254516611, 1265.56747862640],
[0.009, 1.65553917926, 65717.22748563958],
[0.010, 3.53066047636, 2008.55753915900],
[0.007, 3.89373397550, 1485.98012106520],
[0.010, 0.82550269560, 39763.43339365039],
[0.007, 4.33817871844, 129373.02023068098],
[0.007, 3.41340083585, 52483.36390411799],
[0.008, 1.23992323880, 76041.85279012559],
[0.007, 0.04567921269, 206.18554843720],
[0.007, 2.56169701158, 207593.84658050019],
[0.009, 1.97148507623, 365230.64398203877],
[0.007, 3.14813276839, 52061.40717623499],
[0.007, 4.86954611488, 27351.06050415239],
[0.008, 6.27520424489, 204151.27163553477],
[0.007, 5.46143749214, 25985.94062330859],
[0.008, 4.44335543148, 26057.57628056979],
[0.007, 1.00677483843, 129387.24732468258],
[0.008, 0.22314041177, 50049.92887576919],
[0.007, 3.98224449185, 13675.53025207620],
[0.007, 4.34489404354, 167850.08294774959],
[0.009, 0.71471851401, 233731.74634397859],
[0.007, 1.69935809006, 54087.00576636560],
[0.007, 6.21044393135, 203041.89308344139],
[0.007, 2.53524305485, 80382.47328510099],
[0.007, 0.03218225075, 31281.27020037200],
[0.007, 5.26037977949, 78338.49102328988],
[0.007, 3.52744190481, 52509.66222391780],
[0.007, 5.24771876203, 1795.25844372100],
[0.007, 5.20875856726, 161079.37234650398],
[0.007, 3.19471628666, 24072.92146977640],
[0.006, 1.58096793180, 143980.93691036216],
[0.009, 0.70414754528, 25169.97285559240],
[0.006, 0.15264531683, 52911.68279668019],
[0.007, 4.28578455720, 51130.65144696079],
[0.007, 3.42650023556, 29396.36903695460],
[0.007, 4.12959254769, 52174.32181044009],
[0.008, 3.79812131071, 137678.19129947099],
[0.007, 5.70602822567, 9745.32055585660],
[0.008, 0.14316432919, 136722.59155786238],
[0.007, 3.78832454636, 26189.86565983980],
[0.007, 5.44664616173, 27566.76971563859],
[0.006, 0.53269408847, 208173.53416749899],
[0.007, 3.95192199993, 145204.75475114078],
[0.006, 1.80610265750, 26830.89320210680],
[0.008, 5.80105964058, 25773.71696170459],
[0.006, 1.20705629404, 26734.91397488900],
[0.008, 3.87508349031, 52041.69723356339],
[0.007, 1.87429126900, 1905.46476494040],
[0.007, 5.68938243001, 158746.17595363196],
[0.008, 3.39884199213, 78153.50310350319],
[0.007, 1.20867598891, 61560.64729122359],
[0.008, 3.30580293572, 130419.84594697120],
[0.007, 0.39338960799, 2199.08734328700],
[0.006, 3.17982806365, 77947.31755506598],
[0.008, 0.88585179650, 220.41264243880],
[0.008, 1.46508855917, 87367.61641884019],
[0.006, 0.60809363482, 118828.96374949679],
[0.008, 5.53182088929, 53814.87580033639],
[0.007, 1.65646088833, 196137.07343261078],
[0.006, 5.74552748087, 55503.94193942859],
[0.006, 1.43996863707, 2333.19639287200],
[0.006, 1.91186990644, 130652.81480330898],
[0.006, 5.06448767269, 50444.68393021580],
[0.006, 1.09838300878, 183674.70392120857],
[0.007, 0.35338852938, 103932.12792242158],
[0.006, 0.28924808590, 54374.89362643540],
[0.006, 2.72829193454, 76255.15188556358],
[0.006, 3.92290484480, 130289.95251073639],
[0.007, 1.27402494790, 46046.50924364180],
[0.007, 2.96149281662, 52755.49387014719],
[0.008, 2.23784693584, 25466.15934073500],
[0.006, 1.78075029765, 78786.28684281638],
[0.008, 4.71972114899, 25014.29411738339],
[0.006, 5.52798470860, 103498.41618454478],
[0.008, 5.43345902063, 949.17560896980],
[0.006, 5.55571041746, 130446.62925487179],
[0.007, 5.36488899884, 77940.20400806518],
[0.006, 0.52080930820, 25004.82290928060],
[0.006, 3.48878406062, 123668.80510662538],
[0.008, 3.02023688443, 26076.85744131030],
[0.008, 5.31586228888, 24388.62392507099],
[0.006, 5.06257578673, 78469.89497315978],
[0.006, 4.79504045120, 52177.29075585669],
[0.006, 4.57296057068, 35211.47989659159],
[0.006, 5.37176342301, 53093.73656913019],
[0.006, 4.26973755729, 130363.24963659538],
[0.006, 5.75364706874, 78580.10129437919],
[0.006, 1.99314462977, 130435.63437251298],
[0.006, 1.55918658153, 39450.35284837340],
[0.008, 4.77256284659, 142871.55835826878],
[0.006, 6.09530056324, 103395.32341032618],
[0.006, 1.29134609458, 102975.83876645098],
[0.006, 1.83917095242, 24402.85101907260],
[0.005, 3.63216834248, 43981.53094993980],
[0.005, 5.64850202903, 28774.62523611540],
[0.007, 4.22124824964, 26098.94884183810],
[0.005, 5.85936922514, 156314.11975400720],
[0.005, 4.97283396704, 102659.44689679438],
[0.005, 1.46473339833, 181659.72224941078],
[0.006, 0.71584342921, 104276.83096772949],
[0.007, 2.49362242764, 51439.92976961659],
[0.006, 0.02944876240, 20043.67456019880],
[0.006, 2.19480801460, 12412.37288949800],
[0.007, 3.28347851449, 183145.01295611399],
[0.005, 3.46807375357, 50536.73676596039],
[0.006, 6.20804958899, 114.39910691340],
[0.006, 2.26035174588, 103718.82882698359],
[0.007, 3.65318062648, 143005.66740785379],
[0.005, 0.12859263642, 51596.11869614960],
[0.007, 0.75531928973, 77520.71936418998],
[0.005, 1.52974136650, 26724.89941359840],
[0.007, 3.81960920375, 62197.64356324779],
[0.005, 5.08212104486, 52609.51802102519],
[0.005, 4.49337901115, 50007.04580086580],
[0.005, 5.03210861040, 1045.15483618760],
[0.005, 6.27674019656, 1272.68102562720],
[0.006, 3.84313039676, 81604.32185142238],
[0.006, 3.27974922227, 144916.86689107097],
[0.005, 0.50987626702, 299.12639426920],
[0.006, 5.10596879808, 78313.70604662679],
[0.005, 4.14575201906, 53867.97195265079],
[0.007, 4.53402175332, 166740.70439565618],
[0.005, 5.57648480152, 106262.81204951399],
[0.007, 3.08562485832, 52027.72755872209],
[0.006, 2.81224506925, 25450.90686955000],
[0.005, 1.51400872659, 28199.55345495179],
[0.006, 1.58495517428, 47803.92991637420],
[0.006, 2.79561551205, 52286.01260436779],
[0.007, 1.80630878142, 23549.65463732060],
[0.007, 3.72396318065, 198489.93958638259],
[0.005, 5.74129147264, 103189.13786188899],
[0.006, 2.94825789213, 56259.79478985279],
[0.005, 4.96546514085, 78413.27262185719],
[0.005, 1.78518845730, 129586.31932611899],
[0.005, 0.31701812829, 78800.51393681798],
[0.005, 0.55478931159, 52817.21984488739],
[0.006, 1.18448496437, 25600.26839032000],
[0.005, 0.42862127579, 179172.74704605396],
[0.006, 3.74336258475, 26247.20487636640],
[0.005, 2.46583763315, 123758.29085447139],
[0.006, 5.09461941443, 53124.98189211819],
[0.006, 0.42320281908, 130443.39704322898],
[0.006, 2.57896380153, 26014.60601571519],
[0.005, 2.23635663946, 24513.05734029200],
[0.005, 5.98752668018, 104344.98400739678],
[0.006, 0.32131472009, 102872.74599223239],
[0.005, 1.95885559875, 53771.99272543299],
[0.007, 2.16257501519, 52024.75861330549],
[0.006, 1.37111815532, 51120.35650622229],
[0.005, 0.15128494504, 78683.19406859778],
[0.005, 4.00810087423, 48713.56157728320],
[0.006, 1.45883115780, 76152.05911134499],
[0.005, 1.72421399237, 28309.75977617119],
[0.005, 0.71424864998, 102755.42612401219],
[0.006, 0.03283607980, 78149.27013603736],
[0.006, 2.69429372458, 78378.14871340781],
[0.006, 1.12570261398, 25647.07785669659],
[0.005, 3.60259399819, 11.04570026390],
[0.006, 4.83171247280, 240452.46032331997],
[0.005, 3.71949948652, 26411.40855823160],
[0.005, 4.55172986205, 79330.20490191258],
[0.005, 0.84232799985, 24551.92639860479],
[0.005, 3.74067330742, 52797.55008398759],
[0.005, 2.92277012561, 54190.78795494619],
[0.005, 3.96038779086, 25657.37279743509],
[0.005, 4.54502031861, 102769.65321801379],
[0.006, 2.35342867622, 27665.24668402200],
[0.005, 3.72877345305, 78213.71280281838],
[0.005, 6.19447408823, 26191.68533015479],
[0.004, 0.53733592588, 77314.53381575279],
[0.004, 1.39917225370, 26290.15653674829],
[0.005, 4.85332036328, 54344.56676543099],
[0.006, 0.92030946706, 23336.35554188260],
[0.006, 0.37487337241, 53265.51507434200],
[0.004, 2.01983013209, 156547.08861034497],
[0.005, 6.13113074115, 26026.17716683400],
[0.004, 4.94928690334, 52663.44103440259],
[0.005, 0.40443457223, 28096.46068073319],
[0.004, 4.40405080911, 130593.29451835579],
[0.004, 4.17440698686, 91919.56991589899],
[0.005, 3.71777436660, 70383.62027138360],
[0.005, 1.52885825328, 51102.19725895759],
[0.004, 1.71609047005, 23762.95373275860],
[0.004, 0.55287089413, 26933.98597632540],
[0.005, 6.02225706023, 128220.75860368418],
[0.005, 1.78226900229, 187167.27548807819],
[0.005, 3.32000517354, 45424.76544280259],
[0.005, 4.64166221826, 24824.74577899600],
[0.005, 3.45997061965, 48847.67062686820],
[0.006, 2.62272580920, 52171.87412988529],
[0.004, 3.62789650971, 53029.00266490040],
[0.006, 2.53652345505, 52190.03337714999],
[0.004, 0.08235213515, 58220.03486452380],
[0.006, 2.56621666334, 51876.67988887919],
[0.005, 5.04323059321, 41494.55574658299],
[0.004, 3.42433134364, 53311.48315504160],
[0.005, 5.60899913389, 1911.19948321720],
[0.004, 1.13990612191, 26183.88236879199],
[0.004, 4.24142693734, 189853.99758261937],
[0.004, 0.21521651200, 19336.86230122839],
[0.005, 0.30306745520, 103883.64757594238],
[0.004, 6.09719517639, 77417.62658997139],
[0.004, 3.38148734662, 316.39186965660],
[0.004, 1.40344660688, 25885.64974640009],
[0.006, 2.54556610763, 54060.70744656579],
[0.005, 4.62289027765, 78339.97549599818],
[0.004, 6.06868163269, 84944.93427812219],
[0.005, 0.64970018860, 3178.14579056760],
[0.004, 5.48109256360, 78225.57638908479],
[0.004, 3.76404568854, 153084.84390447979],
[0.004, 0.18748530762, 52489.99246301800],
[0.005, 1.74044114280, 79315.97780791098],
[0.004, 6.06406108213, 52161.57918914679],
[0.005, 0.28595106407, 26161.20026743319],
[0.004, 2.11074347112, 189386.03259226496],
[0.004, 0.59715530740, 16342.58258571760],
[0.004, 3.91091220587, 101703.15774082378],
[0.004, 1.16130290140, 50264.60679993120],
[0.004, 5.51188515445, 78043.29678228378],
[0.005, 4.39350322600, 53757.76563143139],
[0.004, 5.15437140585, 24285.53115085240],
[0.005, 2.15280343086, 48997.66049258080],
[0.004, 5.35316514819, 104984.39630560997],
[0.005, 5.75390640070, 51841.95034237900],
[0.004, 1.52206374281, 26267.98027185880],
[0.004, 4.66563868021, 104127.26777059489],
[0.004, 2.36671017385, 19.66976089979],
[0.004, 5.10954286080, 31722.93687092660],
[0.004, 1.54518951672, 52206.13314415280],
[0.004, 4.16791904155, 130285.73689738619],
[0.004, 2.93299901703, 31775.53351052620],
[0.005, 4.47247592301, 51112.49219969609],
[0.004, 2.41568769208, 51534.39272140940],
[0.004, 1.74441095464, 26248.31051095900],
[0.004, 5.23856038893, 52396.21892558720],
[0.004, 4.12254586219, 27441.65188659100],
[0.005, 5.17529407091, 19367.18916223280],
[0.004, 4.21064422396, 26279.35140768579],
[0.005, 4.41570881449, 78057.52387628538],
[0.004, 5.30327887066, 25672.35065096209],
[0.005, 1.10382058499, 31903.01400121119],
[0.005, 2.71619626622, 24952.22626968100],
[0.004, 2.28793023586, 235900.50682626115],
[0.004, 1.58884724433, 128747.35003836859],
[0.004, 5.78862899204, 22779.43724619380],
[0.004, 4.22021430561, 1731.12235293260],
[0.004, 4.68318371027, 103814.80805420138],
[0.004, 3.29575966354, 76137.83201734339],
[0.004, 5.47487283809, 132350.71519108818],
[0.004, 2.99265295426, 77741.13200662879],
[0.004, 3.47889610610, 53661.09698985160],
[0.004, 4.76216346874, 156740.71794488319],
[0.004, 1.47799681769, 120417.67842777158],
[0.004, 2.78305398087, 133767.65136415116],
[0.004, 2.87953962922, 25862.07387316400],
[0.004, 1.92972990240, 15406.65260500879],
[0.005, 1.81394930430, 130866.11389874699],
[0.004, 2.62752187758, 24602.61243487099],
[0.004, 3.12567603415, 20894.53608277640],
[0.004, 1.00432915295, 149288.74325784517],
[0.004, 3.47489986602, 26114.20146137400],
[0.004, 4.27251739299, 104991.50985261079],
[0.004, 2.20022040184, 52073.84376488279],
[0.004, 3.77568584773, 14.22709400160],
[0.004, 1.65179392234, 51006.21803173979],
[0.004, 0.72729563393, 25865.04281858059],
[0.004, 5.61140287619, 53258.88651544199],
[0.004, 1.55115346866, 53438.96364572659],
[0.005, 0.91157457367, 25665.23710396129],
[0.005, 6.11073147567, 156507.74908854539],
[0.003, 3.12711312875, 80462.79676800959],
[0.004, 2.21068358470, 76777.72930365738],
[0.004, 0.82472101949, 30689.85326053720],
[0.004, 3.85651603357, 26513.81191808820],
[0.003, 3.76311835707, 77.75054398390],
[0.004, 0.76897521016, 23384.28698689860],
[0.003, 4.58555781046, 57503.28239153120],
[0.004, 3.82967402925, 104454.70534051539],
[0.003, 2.47448927310, 77956.15180375299],
[0.004, 4.93160467297, 391318.54712361295],
[0.004, 1.56118199279, 1055.44977692610],
[0.004, 0.77257538538, 79994.83177765518],
[0.005, 3.11675458540, 26149.62911631439],
[0.003, 4.05641745083, 104248.51979207818],
[0.004, 2.97133561512, 30110.16567353840],
[0.004, 5.60420829330, 156520.30530244438],
[0.004, 5.59378669038, 51315.49635439559],
[0.003, 5.33733887891, 52309.91533273340],
[0.003, 5.47155908699, 149846.19399604559],
[0.003, 0.19039417498, 50290.90511973100],
[0.003, 0.55626990901, 130005.80396999417],
[0.004, 1.22491945176, 25927.49577218939],
[0.004, 1.83119228357, 132028.58860315479],
[0.004, 3.78910193450, 25970.58327335399],
[0.004, 4.12310730501, 33856.26969826880],
[0.004, 3.29497466474, 208276.62694171758],
[0.003, 1.23800163682, 193937.98608932379],
[0.004, 3.81093761011, 49424.25868345679],
[0.004, 6.17742034131, 76991.02839909539],
[0.003, 2.37855052298, 25459.05155552409],
[0.003, 0.06662548789, 54824.26110862140],
[0.003, 0.00882668027, 78571.26704569219],
[0.004, 3.50355655289, 33480.35754365900],
[0.004, 1.42998120813, 23446.56186310200],
[0.004, 4.57967744099, 52213.93931878620],
[0.004, 4.30793307856, 2538.24850425360],
[0.004, 2.64175466237, 80596.90581759460],
[0.004, 2.23067570586, 104819.57755665119],
[0.004, 2.10867686930, 27331.39074325260],
[0.003, 3.74321552731, 28471.09615635040],
[0.003, 5.35951703976, 233681.74972207437],
[0.004, 1.44726666359, 25907.82601128960],
[0.003, 0.77055249403, 23389.45169419700],
[0.004, 5.53731910534, 52098.05573916449],
[0.004, 2.71065844730, 107679.74822257696],
[0.003, 4.85884222947, 1063.31408345230],
[0.003, 6.10322230645, 48091.81777644400],
[0.003, 0.57378510632, 154194.22245657316],
[0.003, 4.65504051632, 25896.45487546260],
[0.003, 2.07685199898, 3.93215326310],
[0.004, 4.67601599622, 18073.70493865020],
[0.003, 4.62237776277, 21716.02677480000],
[0.003, 2.40811934972, 76998.14194609619],
[0.004, 1.45941637429, 1073.60902419080],
[0.003, 4.06965227350, 32808.61712091560],
[0.003, 3.54974279869, 23401.18104703300],
[0.003, 5.94935193305, 6751.04084034580],
[0.003, 4.32590129932, 52400.15107885030],
[0.003, 1.93788940079, 45455.09230380700],
[0.003, 6.08303870194, 53399.62412392700],
[0.003, 4.45999574391, 127098.90328117118],
[0.003, 5.45176028820, 26061.60482177439],
[0.003, 2.26429696537, 27047.02600153180],
[0.004, 1.93735592711, 26603.36701266720],
[0.003, 2.94612910423, 27039.97976483379],
[0.004, 3.64314833794, 860.30992875280],
[0.004, 2.04162116492, 27623.87988454360],
[0.004, 1.02413610685, 25991.92391435639],
[0.004, 3.72190941745, 51257.87599716660],
[0.003, 0.83533616968, 78262.22495201428],
[0.004, 5.84174581609, 25650.25925043430],
[0.003, 3.86698088130, 56777.75640211140],
[0.004, 0.94091162922, 23735.03698780239],
[0.003, 2.87479269049, 159855.55450572536],
[0.004, 2.92372103776, 104358.24112519680],
[0.003, 5.50683793531, 25928.60140678200],
[0.003, 1.50282981980, 4371.87636677420],
[0.003, 2.10941795435, 60170.33472517260],
[0.003, 1.71064218785, 170068.84005193636],
[0.003, 1.97431548371, 104426.39416486409],
[0.003, 2.96711706073, 25984.12095299360],
[0.003, 1.86795145608, 126067.63934109679],
[0.003, 4.74630310296, 54879.42243782400],
[0.004, 3.71365034796, 29580.47470844380],
[0.003, 4.20767161544, 128843.32926558638],
[0.003, 0.91166163253, 76468.45098100159],
[0.003, 6.20945940475, 50160.82461135059],
[0.003, 6.10137777265, 52164.76058288449],
[0.003, 0.31852065143, 28632.57577846660],
[0.003, 2.88816579373, 27360.58416720139],
[0.003, 5.29083364884, 2751.54759969160],
[0.003, 0.87901414893, 1699.27921650320],
[0.003, 0.12942378280, 203375.74902421076],
[0.003, 1.88640533644, 27353.47062020059],
[0.003, 3.77660990144, 24787.07632336920],
[0.003, 5.26339958526, 289185.69166150293],
[0.003, 1.34477523795, 1169.58825140860],
[0.003, 0.07928565452, 104241.40624507738],
[0.003, 4.47916732925, 38634.38508065720],
[0.004, 1.37420794262, 128857.55635958798],
[0.003, 2.08343776186, 50476.52706664519],
[0.003, 4.23656246406, 76358.24465978218],
[0.003, 5.54498269246, 61921.12683900499],
[0.003, 3.80268685478, 25384.26995695679],
[0.003, 5.22182880098, 3462.24470586520],
[0.003, 0.61479556097, 171292.65789271498],
[0.003, 3.12135348664, 162810.49469943656],
[0.003, 4.22351187737, 67608.75720795698],
[0.003, 5.30037747699, 51554.06248230919],
[0.003, 4.58024970278, 34102.10134449819],
[0.003, 2.07639441349, 24072.23205541439],
[0.003, 4.65503825059, 104874.18998439058],
[0.003, 4.53866780815, 28908.73428570040],
[0.003, 1.00191312140, 155460.92337225520],
[0.003, 2.05553254051, 176332.24614102798],
[0.003, 3.94870291510, 155475.15046625677],
[0.003, 1.43273740893, 24719.24288872919],
[0.003, 0.23823986548, 24510.55959912640],
[0.003, 5.21326346293, 1639.06951718800],
[0.003, 2.53461972944, 51861.62010327879],
[0.003, 4.13978656372, 33917.99567300899],
[0.003, 4.34295741397, 16964.32638655680],
[0.003, 0.28015371448, 169093.57054942797],
[0.003, 2.49492450438, 636.99627202420],
[0.003, 4.20183911478, 149642.26895951436],
[0.003, 0.73100534966, 35679.44488694599],
[0.003, 1.18977971170, 143164.96914264598],
[0.003, 1.17691552034, 52145.47942214399],
[0.003, 4.94963823249, 49637.55777889479],
[0.003, 3.00732745961, 24705.01579472759],
[0.003, 5.76323456196, 49976.71893986139],
[0.003, 4.83245208446, 156523.53751408719],
[0.002, 3.69719041336, 24616.15011451060],
[0.003, 0.18439316147, 78597.56536549199],
[0.003, 4.98373933018, 102129.75593169978],
[0.003, 0.02228487734, 1.48447270830],
[0.003, 4.06250318984, 97466.46267636596],
[0.003, 2.65726234287, 13705.85711308060],
[0.002, 0.12883868680, 149756.70824819960],
[0.003, 2.82299563379, 53132.09543911899],
[0.003, 5.99061509510, 29864.33402730900],
[0.003, 3.93018711070, 17098.43543614181],
[0.002, 4.22698039366, 10681.25053656540],
[0.002, 1.31889013785, 25572.43927048119],
[0.002, 3.49816744164, 51092.72605085480],
[0.003, 1.52361691660, 78265.19389743089],
[0.003, 0.52188463522, 52277.76880141400],
[0.003, 3.80600862869, 25124.50043860279],
[0.003, 6.14366757538, 48153.54375118419],
[0.002, 0.58190501461, 27573.88326263939],
[0.003, 5.63901497713, 106470.37642667518],
[0.002, 3.36639066096, 42430.48572729180],
[0.003, 3.08628517069, 4083.98850670440],
[0.002, 6.13024035669, 104035.22069664019],
[0.003, 1.81280963372, 104401.60918820098],
[0.003, 3.34404708133, 130020.03106399579],
[0.002, 1.22333771717, 76094.94894243999],
[0.002, 0.63542334090, 1485.29070670320],
[0.003, 5.24568241255, 6885.14988993081],
[0.003, 2.46305012048, 133882.09065283637],
[0.002, 0.84094631125, 163766.09444104519],
[0.003, 2.12660879166, 42790.96527507320],
[0.002, 2.98805690719, 26235.98186600050],
[0.003, 3.26197855217, 156531.30018480320],
[0.002, 4.50734435605, 25248.93385382380],
[0.002, 4.32859791317, 1685.05212250160],
[0.002, 5.62335584014, 28213.78054895339],
[0.002, 3.87492323552, 199599.31813847594],
[0.002, 2.60597304148, 26713.57333388659],
[0.003, 4.15733644316, 51688.17153189420],
[0.003, 4.33101389874, 220025.88923089797],
[0.002, 4.46567523081, 31127.49138988719],
[0.002, 3.66265576771, 26397.18146422999],
[0.002, 4.68312774052, 49850.85687433279],
[0.002, 4.51215350981, 52812.80255517260],
[0.003, 3.56621882535, 154408.65498906677],
[0.002, 3.95708432187, 1574.84580128220],
[0.002, 2.41940194318, 104668.00443595338],
[0.003, 0.24921211552, 25778.62481891839],
[0.002, 3.18370791629, 207114.15223730978],
[0.002, 4.17768592199, 51734.98099827079],
[0.002, 1.74283332135, 76532.58707178998],
[0.002, 1.36339547692, 6044.22858137540],
[0.002, 2.82219230315, 63786.35824152260],
[0.002, 5.27165023098, 75085.56363415498],
[0.002, 5.76735720320, 25661.99436506020],
[0.002, 5.24666183170, 24734.15439655740],
[0.002, 5.31625926462, 24998.19435038059],
[0.002, 0.17868115875, 177287.84588263658],
[0.003, 5.47127542511, 27388.72995977919],
[0.002, 2.48055036253, 25543.98508247800],
[0.002, 0.16253031708, 23113.29318696320],
[0.003, 1.68453793975, 2703.61615467560],
[0.002, 1.17069889009, 53551.58008299420],
[0.003, 3.06893058902, 230239.17477710897],
[0.003, 5.00145362139, 180496.55813064100],
[0.002, 1.90098213386, 20272.79228193720],
[0.003, 5.06877735444, 440.82528487760],
[0.002, 1.33626564472, 196156.74319351057],
[0.002, 4.50940380454, 65538.25598994759],
[0.002, 4.55891488212, 2324.94940881560],
[0.002, 0.21025125051, 18227.48374913500],
[0.002, 0.58359043648, 156377.85565231059],
[0.002, 4.57189351312, 26926.87242932459],
[0.002, 3.79747475767, 65851.33653522459],
[0.002, 0.30139015500, 50951.98844236979],
[0.002, 3.94570007959, 225687.22128005017],
[0.002, 0.99415397716, 2064.97829370200],
[0.002, 3.49827019018, 78905.12298646157],
[0.002, 4.16512398869, 24864.08530079559],
[0.002, 0.47605198546, 107692.22499299659],
[0.002, 0.02213914405, 197092.67317421938],
[0.002, 0.35795159068, 104301.61594439259],
[0.002, 2.54426644231, 249268.47945736776],
[0.002, 0.35872697789, 25462.23294926180],
[0.002, 0.03956368481, 24189.55192363460],
[0.002, 2.00682967230, 28786.35458895140],
[0.002, 1.64612572499, 40738.70289615879],
[0.002, 1.77509184801, 22595.33157470459],
[0.002, 1.93881159123, 78697.42116259939],
[0.002, 1.06567957268, 21562.24796431520],
[0.003, 4.58782698256, 156954.01704032117],
[0.002, 0.84740706727, 24494.89809302729],
[0.002, 5.98697403459, 283524.35961235070],
[0.002, 4.02135788869, 26238.95081141709],
[0.002, 3.98649649262, 24808.10856894620],
[0.002, 3.06252327958, 57369.17334194619],
[0.002, 6.10258403438, 78115.63070029629],
[0.002, 0.19431714321, 55484.27217852879],
[0.002, 4.26819419359, 90989.16285949759],
[0.002, 2.94941610280, 22065.64060961000],
[0.002, 4.53722544295, 52355.88341343300],
[0.002, 1.97399498955, 430.53034413910],
[0.002, 1.99872081555, 24932.54198416719],
[0.002, 0.37032643194, 26500.27423844859],
[0.002, 3.83480132336, 307.55762096960],
[0.002, 5.81356382744, 51538.81001112419],
[0.002, 6.20773606719, 49.99662190420],
[0.002, 2.40589345998, 77929.85348395319],
[0.002, 4.51719783127, 21067.98465416099],
[0.002, 2.06311358499, 23233.26276766400],
[0.002, 0.29430089395, 24765.22549404280],
[0.002, 2.21513587213, 25675.53204469980],
[0.002, 2.29291278322, 27410.58078910560],
[0.002, 2.39356701559, 242985.40360737636],
[0.002, 4.28957020884, 71378.55953479178],
[0.002, 5.41199778568, 23704.71012679799],
[0.002, 0.54252133289, 3.88133535800],
[0.002, 5.88236623932, 52072.02409456780],
[0.002, 5.78749542412, 78373.91574594198],
[0.002, 5.69226787602, 51040.12941125520],
[0.002, 4.42185841709, 93696.66034953119],
[0.002, 5.15491529148, 78112.66175487968],
[0.002, 2.30493903824, 27883.16158529519],
[0.002, 5.53948896377, 87253.17713015496],
[0.002, 4.75957265478, 52336.21365253320],
[0.002, 6.08199781417, 18043.37807764579],
[0.002, 0.73324052336, 25757.28417791599],
[0.002, 0.91928644358, 52186.85198341230],
[0.002, 3.22142261212, 104771.09721017198],
[0.002, 2.01671301400, 46564.47085590040],
[0.002, 4.39545799671, 41520.85406638280],
[0.002, 2.52858429504, 26140.99929388859],
[0.002, 2.07561943546, 53654.67285721279],
[0.002, 0.08977124652, 25135.82651831460],
[0.002, 1.67350036401, 66826.60603773296],
[0.002, 4.57268426145, 158116.49174472899],
[0.002, 2.84194927894, 78249.48233072099],
[0.002, 3.07002924674, 23432.33476910039],
[0.002, 4.11559657607, 123554.36581794015],
[0.002, 0.05687800902, 26034.80698925980],
[0.002, 4.28354458896, 24484.60315228879],
[0.002, 3.24222429199, 21509.65132471559],
[0.002, 2.52315832958, 210614.42461581077],
[0.002, 4.44247371827, 148532.89040742096],
[0.002, 0.11737800376, 146505.58156934578],
[0.002, 2.41371362390, 54862.52837768960],
[0.002, 4.66022680664, 247223.17092456558],
[0.002, 3.79260774499, 3308.46589538040],
[0.002, 5.83454304626, 2974.60995461100],
[0.002, 5.37878500160, 77622.29586298359],
[0.002, 1.63153524958, 99979.73619952259],
[0.002, 5.18613735503, 50600.96048186620],
[0.002, 2.55420547959, 76064.62208143558],
[0.002, 4.05996888958, 24502.76239955349],
[0.002, 2.47809526116, 179966.86716554637],
[0.002, 1.25528265056, 50912.64892057020],
[0.002, 0.75306774592, 235746.72801577637],
[0.002, 2.97464643769, 31219.54422563180],
[0.001, 0.17722772219, 158438.61833266239],
[0.002, 4.94589808424, 168959.46149984296],
[0.002, 0.63110575282, 415.55249061210],
[0.001, 0.77799418557, 299398.97720771394],
[0.002, 5.97867896248, 164721.69418265377],
[0.002, 5.62955025847, 21819.80896338059],
[0.001, 4.93638931294, 27993.36790651460],
[0.002, 6.22578827437, 74935.57376844239],
[0.002, 1.03965665113, 1802.37199072180],
[0.001, 5.61994219678, 50690.51557644519],
[0.002, 5.02281046549, 422.66603761290],
[0.001, 3.57619837497, 209658.82487420217],
[0.002, 0.11249539090, 38469.94917006779],
[0.002, 0.62470424533, 51745.27593900929],
[0.001, 0.71806518278, 28928.40404660019],
[0.002, 3.91669753023, 76352.50994150538],
[0.002, 3.05277164813, 225.82926841020],
[0.001, 4.33602746737, 4601.95011896300],
],
# R1
[
[217347.739, 4.65617158663, 26087.90314157420],
[44141.826, 1.42385543975, 52175.80628314840],
[10094.479, 4.47466326316, 78263.70942472259],
[2432.804, 1.24226083435, 104351.61256629678],
[1624.367, 0.00000000000, 0.00000000000],
[603.996, 4.29303116561, 130439.51570787099],
[152.851, 1.06060779810, 156527.41884944518],
[39.202, 4.11136751416, 182615.32199101939],
[17.760, 4.54424653085, 27197.28169366760],
[17.999, 4.71193725810, 24978.52458948080],
[10.154, 0.87893548494, 208703.22513259359],
[8.086, 3.00540854890, 25028.52121138500],
[4.444, 2.13639058123, 20426.57109242200],
[4.393, 1.48074475165, 51066.42773105500],
[3.510, 3.21171223697, 1059.38193018920],
[3.133, 5.23846336855, 21535.94964451540],
[2.650, 3.92968881423, 234791.12827416777],
[2.498, 2.02623950395, 24498.83024629040],
[2.011, 1.23911360588, 53285.18483524180],
[1.963, 4.04524902962, 5661.33204915220],
[1.546, 2.61849590442, 26617.59410666880],
[1.542, 2.35659537465, 27043.50288318280],
[1.417, 1.37876323533, 1109.37855209340],
[1.295, 5.19094850935, 46514.47423399620],
[1.241, 0.21246226135, 11322.66409830440],
[1.090, 6.23733263925, 27147.28507176339],
[1.271, 0.56437938715, 25132.30339996560],
[1.120, 0.86374628388, 57837.13833230060],
[1.005, 3.28272284427, 37410.56723987860],
[1.177, 4.53194022227, 77154.33087262919],
[0.841, 5.96261035419, 14765.23904326980],
[0.935, 2.37277497611, 25661.30495069820],
[0.742, 0.77751594919, 32858.61374281979],
[0.736, 4.06885296570, 1589.07289528380],
[0.712, 2.70884051645, 16983.99614745660],
[0.863, 5.55308682281, 25558.21217647960],
[0.707, 0.92992556568, 30639.85663863300],
[0.696, 0.69734796212, 260879.03141574195],
[0.678, 2.02193885930, 26068.23338067440],
[0.608, 0.85708468483, 4551.95349705880],
[0.546, 5.38138962861, 26091.78447693220],
[0.608, 3.65993973133, 25448.00585526019],
[0.597, 4.64867954048, 26080.78959457339],
[0.572, 3.50125649521, 10213.28554621100],
[0.515, 4.83662922562, 50586.73338786459],
[0.532, 5.21855381213, 22645.32819660879],
[0.572, 0.62751016416, 13521.75144159140],
[0.516, 3.89421000089, 83925.04147387479],
[0.507, 5.55466020276, 12566.15169998280],
[0.606, 4.50215566301, 28306.66024576099],
[0.533, 0.93587795381, 26107.57290247399],
[0.435, 5.79043985706, 43071.89928903080],
[0.436, 5.86659160961, 25035.63475838580],
[0.429, 0.26260280461, 36301.18868778519],
[0.472, 6.00507778421, 77204.32749453338],
[0.443, 3.86758570847, 26084.02180621620],
[0.487, 4.23950195756, 26095.01668857500],
[0.406, 5.60324652352, 52705.49724824299],
[0.523, 0.06439941262, 25021.40766438420],
[0.379, 1.95647626585, 72602.37737557039],
[0.390, 3.81996185881, 426.59819087600],
[0.418, 2.77521418660, 41962.52073693740],
[0.453, 0.72803137250, 529.69096509460],
[0.358, 6.00165335616, 33326.57873317420],
[0.347, 1.39524259509, 23969.13928119580],
[0.340, 0.24111380317, 26301.20223701220],
[0.325, 4.78747749132, 23869.14603738740],
[0.290, 3.04044859601, 53235.18821333759],
[0.326, 1.30033833957, 103242.23401420339],
[0.316, 2.22791434675, 19317.19254032860],
[0.264, 3.93160763696, 6770.71060124560],
[0.332, 3.59235758173, 51220.20654153979],
[0.223, 2.76528831516, 103292.23063610759],
[0.215, 3.97996009773, 56727.75978020720],
[0.235, 2.24050503260, 25874.60404613620],
[0.215, 6.16660008496, 51646.11531805379],
[0.208, 2.74551899929, 40853.14218484400],
[0.204, 3.44654782597, 9103.90699411760],
[0.197, 0.80026289238, 27676.97603685800],
[0.205, 3.20844012088, 18849.22754997420],
[0.196, 1.99924288764, 48733.23133818299],
[0.218, 2.11865566044, 73711.75592766379],
[0.189, 0.65681038131, 110012.94461544899],
[0.207, 5.89082708705, 31749.23519072640],
[0.184, 3.74837387583, 286966.93455731618],
[0.174, 5.81264188702, 68050.42387851159],
[0.163, 4.00380715262, 79373.08797681599],
[0.152, 5.07389967152, 52156.13652224860],
[0.151, 2.83369443311, 955.59974160860],
[0.151, 0.40953650210, 26514.50133245020],
[0.147, 2.32191248197, 38654.05484155699],
[0.154, 3.26437373895, 38519.94579197200],
[0.185, 0.98966099528, 29530.47808653960],
[0.150, 3.69230644689, 65697.55772473979],
[0.132, 2.71837382155, 77734.01845962799],
[0.140, 2.05736044462, 6283.07584999140],
[0.122, 3.31361750281, 62389.09182935939],
[0.123, 2.07840148125, 25668.41849769900],
[0.118, 0.51913709271, 51535.90899683439],
[0.121, 2.15433834534, 52179.68761850640],
[0.151, 2.66028539824, 25654.19140369739],
[0.113, 2.33243126122, 78793.40038981718],
[0.124, 3.13058661995, 51109.31080595839],
[0.150, 2.60376479044, 639.89728631400],
[0.123, 2.65137961558, 51123.53789995999],
[0.106, 1.31393069594, 47623.85278608960],
[0.112, 5.00798069297, 98690.28051714458],
[0.107, 5.12738291017, 99799.65906923798],
[0.123, 6.13795219131, 1066.49547719000],
[0.106, 1.42997322881, 52168.69273614759],
[0.104, 4.51477063494, 25234.70675982219],
[0.120, 4.06567300860, 45892.73043315699],
[0.092, 4.72811907093, 2118.76386037840],
[0.112, 4.78983902693, 53131.40602475700],
[0.096, 5.03438502363, 32370.97899156560],
[0.091, 4.22099920434, 50057.04242277000],
[0.091, 4.35481864546, 129330.13715577759],
[0.106, 0.14583281261, 12432.04265039780],
[0.084, 0.32848825294, 1052.26838318840],
[0.084, 5.81442139422, 129380.13377768178],
[0.093, 0.34539006564, 77308.10968311399],
[0.078, 1.17633266287, 76674.63652943878],
[0.107, 1.01316358023, 52182.91983014920],
[0.082, 6.11445014523, 79323.09135491178],
[0.085, 2.50332044483, 7238.67559160000],
[0.072, 1.56170832500, 49957.04917896160],
[0.076, 1.62577226881, 15874.61759536320],
[0.091, 5.75408440781, 24491.71669928959],
[0.092, 3.97747935513, 52195.47604404819],
[0.068, 0.44378826429, 91785.46086631398],
[0.078, 0.63585741399, 52171.92494779040],
[0.064, 2.57311321703, 94138.32702008578],
[0.065, 2.12942233842, 7.11354700080],
[0.062, 3.70751240431, 136100.84775702318],
[0.068, 1.18946361248, 54394.56338733519],
[0.079, 3.35596277474, 52389.10537858640],
[0.064, 5.09677055426, 51962.50718771040],
[0.060, 6.25938912295, 24505.94379329119],
[0.061, 0.73867692725, 82815.66292178139],
[0.063, 1.29883580487, 2218.75710418680],
[0.070, 5.28692696943, 45405.09568190280],
[0.057, 1.92365363632, 20760.42703319140],
[0.054, 0.89448628916, 71980.63357473118],
[0.051, 4.71710385051, 105460.99111839019],
[0.054, 6.22009952451, 44937.13069154840],
[0.052, 3.43365769233, 25551.09862947879],
[0.052, 5.77930503293, 66941.04532641819],
[0.048, 0.51937745535, 313054.83769889036],
[0.052, 5.71476972233, 103821.92160120218],
[0.047, 3.82203240163, 53764.87917843220],
[0.050, 5.76150579489, 25938.33994443960],
[0.047, 5.52705163618, 77837.11123384659],
[0.043, 5.84994474092, 63498.47038145279],
[0.052, 2.63638299982, 18093.37469954999],
[0.042, 5.39178421925, 64741.95798313119],
[0.041, 1.87113963554, 125887.56221081219],
[0.045, 4.04603530632, 55618.38122811380],
[0.039, 3.50934954924, 52602.40447402440],
[0.048, 0.72400634326, 33967.99229491319],
[0.051, 6.02427997984, 13655.86049117640],
[0.038, 0.09359107033, 88476.99497093359],
[0.038, 1.84297739511, 78244.03966382280],
[0.041, 5.74927951755, 26727.80042788820],
[0.045, 5.73633413733, 44181.27784112419],
[0.035, 0.81793649503, 23439.44831610119],
[0.038, 5.17914668407, 23754.70674870219],
[0.036, 4.81782090538, 51116.42435295920],
[0.041, 2.91943000674, 26241.68195205900],
[0.032, 1.91760062435, 58458.88213313979],
[0.033, 1.27507180487, 131548.89425996438],
[0.032, 5.01820692941, 46848.33017476560],
[0.030, 3.95444605179, 26555.86813192860],
[0.031, 1.17911028239, 59414.48187474840],
[0.030, 0.55604674983, 3442.57494496540],
[0.034, 3.55745328485, 433.71173787680],
[0.033, 5.36229697065, 104881.30353139139],
[0.030, 1.24209931344, 26202.34243025941],
[0.033, 3.55673853222, 25440.89230825939],
[0.029, 2.98847901150, 27154.39861876420],
[0.035, 3.23888704617, 25455.11940226100],
[0.033, 1.77322555881, 124778.18365871879],
[0.028, 4.35951220773, 80482.46652890938],
[0.030, 5.14555074991, 51756.32163927320],
[0.029, 0.03524298861, 79219.30916633119],
[0.027, 2.59555966553, 155468.03691925600],
[0.027, 1.05480537311, 28421.09953444620],
[0.030, 5.72087736840, 51742.09454527159],
[0.029, 5.20529460359, 78267.59076008058],
[0.026, 1.11551342052, 155418.04029735178],
[0.030, 6.10884155937, 26011.63707029860],
[0.027, 3.38666053174, 103396.01282468818],
[0.025, 3.48592449926, 117873.36400788819],
[0.025, 1.69043243445, 25973.46385288896],
[0.026, 6.19577940400, 77197.21394753258],
[0.024, 1.47972864008, 28206.66700195260],
[0.023, 3.86767325148, 16066.06586147480],
[0.027, 4.06858086478, 78270.82297172339],
[0.022, 4.03528313026, 419.48464387520],
[0.023, 3.38426107540, 58946.51688439399],
[0.022, 1.33669336918, 51322.60990139639],
[0.023, 2.23954141042, 103925.01437542078],
[0.024, 3.65673385174, 26610.48055966799],
[0.021, 4.49565014938, 78256.59587772179],
[0.021, 3.69266624882, 77623.81213840858],
[0.028, 5.71652736884, 77211.44104153418],
[0.021, 3.97119771059, 98068.53671630539],
[0.021, 5.61140929496, 120226.23016165999],
[0.025, 1.73460075205, 853.19638175200],
[0.024, 2.89897553229, 105410.99449648599],
[0.020, 6.15988447425, 213.29909543800],
[0.021, 0.42126764910, 149.56319713460],
[0.020, 4.41588880947, 29416.03879785439],
[0.024, 2.43220296378, 50579.61984086379],
[0.020, 0.47739908961, 162188.75089859738],
[0.021, 0.18110422167, 35191.81013569180],
[0.019, 2.38756251160, 26037.90651966999],
[0.020, 0.61997291259, 85034.42002596818],
[0.018, 4.60331561584, 76044.95232053580],
[0.018, 3.06180224259, 50593.84693486539],
[0.022, 0.45787269756, 1596.18644228460],
[0.019, 1.76795970776, 78050.41032928458],
[0.019, 3.58333941723, 27140.17152476259],
[0.021, 0.15585183693, 78477.00852016058],
[0.018, 1.81330190957, 25565.32572348040],
[0.021, 3.45385724015, 102762.53967101299],
[0.022, 4.62891777236, 19406.67828817460],
[0.019, 5.28998871939, 26624.70765366959],
[0.016, 4.37908924360, 25131.61398560359],
[0.019, 2.69598918032, 105307.21230790539],
[0.018, 4.13274028026, 5327.47610838280],
[0.018, 1.10819559505, 76144.94556434419],
[0.018, 2.04678515653, 71492.99882347698],
[0.015, 0.52406345582, 42153.96900304900],
[0.018, 0.71897799959, 78283.37918562238],
[0.020, 3.87105632280, 51749.20809227239],
[0.014, 0.06732488000, 25984.81036735560],
[0.019, 2.51337817026, 129909.82474277639],
[0.018, 3.79705759661, 108903.56606335558],
[0.014, 2.30467577173, 18207.81398823521],
[0.014, 4.91192145857, 151975.46535238638],
[0.014, 4.25365079026, 157636.79740153858],
[0.014, 3.82494343251, 7880.08915333899],
[0.014, 0.47442483304, 26137.89976347840],
[0.015, 1.41820144369, 40565.25432477420],
[0.016, 1.92985195149, 49842.60989027639],
[0.016, 2.97241905198, 71025.03383312259],
[0.013, 0.07086712207, 76.26607127560],
[0.013, 2.19019855275, 90829.86112470538],
[0.014, 1.68395491426, 6681.22485339960],
[0.012, 2.16242752229, 29428.51556827400],
[0.013, 0.55373605944, 79852.78232000639],
[0.012, 2.10236188465, 24609.03656750980],
[0.012, 3.49372354820, 64607.84893354619],
[0.013, 3.16312334997, 25881.71759313700],
[0.012, 0.32301447482, 78690.30761559859],
[0.016, 3.67591976897, 78259.82808936459],
[0.012, 0.81060544329, 81706.28436968799],
[0.015, 2.57802360273, 93028.94846799239],
[0.013, 3.55704873434, 339142.74084046460],
[0.012, 3.14169564714, 114564.89811250778],
[0.011, 4.96251639039, 84546.78527471398],
[0.011, 2.93160493628, 536.80451209540],
[0.011, 0.04474275203, 19804.82729158280],
[0.011, 2.39391294657, 10021.83728009940],
[0.011, 3.22530161123, 90695.75207512038],
[0.012, 0.71785378975, 26294.08869001139],
[0.011, 3.51130712506, 7994.52844202420],
[0.011, 1.78813511249, 69159.80243060499],
[0.010, 1.89377082198, 24925.42843716640],
[0.012, 6.06775243662, 52329.58509363319],
[0.012, 0.11656433296, 51543.02254383520],
[0.012, 0.01462307671, 1581.95934828300],
[0.010, 3.60476399042, 49527.35145767539],
[0.009, 5.35498571113, 2648.45482547300],
[0.010, 2.54352513591, 52815.70356946240],
[0.009, 5.25498849885, 130012.91751699499],
[0.010, 5.63770719377, 181555.94006083018],
[0.011, 1.65385601347, 26507.38778544939],
[0.011, 4.93008131424, 104331.94280539699],
[0.010, 0.35445064092, 26521.61487945100],
[0.010, 2.79303258728, 39743.76363275060],
[0.009, 0.71144667758, 25764.39772491679],
[0.008, 4.22951187793, 181505.94343892598],
[0.008, 0.17514303190, 129483.91596626239],
[0.010, 1.16786157884, 25934.12433108940],
[0.010, 2.50335300453, 103299.34418310839],
[0.009, 3.18692590406, 39629.32434406539],
[0.010, 3.98242351264, 522.57741809380],
[0.011, 0.23158217376, 51639.00177105299],
[0.009, 0.30008658313, 27999.10262479140],
[0.011, 4.84801040284, 150866.08680029298],
[0.011, 5.94731028211, 38813.35657634920],
[0.008, 4.66199260294, 26094.53170047421],
[0.008, 0.71995165086, 52643.77127350280],
[0.008, 3.31825277790, 24395.73747207180],
[0.008, 2.52932369592, 26190.99591579279],
[0.008, 5.11541081184, 25619.93815121980],
[0.008, 1.18625312267, 25867.49049913539],
[0.008, 0.31593558687, 51528.79544983359],
[0.010, 2.12019897039, 130969.20667296558],
[0.008, 0.24131547257, 143961.26714946239],
[0.007, 5.90865595918, 23976.25282819660],
[0.008, 4.88221803127, 22759.76748529401],
[0.007, 3.17202081415, 632.78373931320],
[0.008, 2.40875907837, 146314.13330323418],
[0.007, 6.03640433343, 53242.30176033840],
[0.007, 0.86406939215, 104358.72611329758],
[0.007, 3.45761762182, 26237.46633870879],
[0.009, 3.30628597530, 12725.45343477500],
[0.007, 0.74174993099, 124156.43985787958],
[0.008, 5.62600154280, 131395.11544947958],
[0.007, 2.52679818243, 77829.99768684579],
[0.008, 1.93255904016, 77844.22478084739],
[0.007, 3.69439677930, 85502.38501632259],
[0.007, 5.14299105203, 35472.74414964940],
[0.008, 1.52116219771, 26081.27458267419],
[0.008, 3.50246944455, 25863.55834587229],
[0.008, 5.17598738878, 23962.02573419499],
[0.009, 2.01720755803, 104355.49390165479],
[0.007, 0.57777174711, 86143.79857806159],
[0.007, 2.03534300720, 100909.03762133139],
[0.006, 3.30402834266, 104564.91166173479],
[0.006, 5.26635186541, 50696.93970908399],
[0.006, 3.60993601694, 27684.08958385880],
[0.008, 5.97157930225, 131498.89763806018],
[0.006, 4.43204136420, 54294.57014352679],
[0.006, 4.16183734880, 54509.00267602040],
[0.007, 4.35729742194, 52290.24557183361],
[0.007, 4.88364528875, 26941.09952332620],
[0.007, 3.84735933689, 34282.17847478280],
[0.006, 0.71889591582, 89586.37352302698],
[0.006, 4.77410201490, 104138.31347085879],
[0.006, 5.81016662275, 70269.18098269838],
[0.007, 3.59164938122, 188276.65404017159],
[0.006, 1.42397911026, 102132.85546210999],
[0.006, 5.15043168056, 97580.90196505119],
[0.008, 2.67404385604, 647.01083331480],
[0.005, 4.58227258685, 25977.69682035479],
[0.007, 6.18437842544, 128850.44281258718],
[0.005, 0.05338946228, 13541.42120249119],
[0.006, 5.55589010148, 155997.72788435058],
[0.005, 5.54731935938, 96357.08412427259],
[0.006, 0.36201698821, 26308.31578401300],
[0.005, 3.05584811656, 103285.11708910679],
[0.005, 4.80319811501, 51013.33157874059],
[0.006, 3.04691542636, 13362.44970679920],
[0.005, 5.59905054438, 76667.52298243798],
[0.005, 3.15313951574, 26164.16921284980],
[0.006, 1.15194666645, 27311.72098235281],
[0.005, 6.16463589751, 76681.75007643958],
[0.005, 2.77667883666, 224.34479570190],
[0.005, 4.27775147717, 14477.35118320000],
[0.005, 5.50743820134, 52125.80966124419],
[0.006, 0.68838699976, 26720.68688088739],
[0.005, 4.44878671847, 25227.59321282139],
[0.005, 4.88707969684, 52061.36699446317],
[0.005, 3.66186576821, 25241.82030682300],
[0.005, 1.76383923429, 178063.36849396059],
[0.005, 3.09083817171, 115674.27666460119],
[0.005, 1.73277038612, 956.28915597060],
[0.006, 0.59128664983, 134991.46920492980],
[0.005, 1.39435703220, 104344.49901929598],
[0.005, 5.66016557162, 45290.65639321759],
[0.005, 2.69362119172, 50064.15596977079],
[0.005, 4.11526724305, 209812.60368468694],
[0.006, 3.72633598860, 26162.68474014150],
[0.004, 1.01205356829, 183724.70054311279],
[0.005, 2.02484630372, 52712.61079524379],
[0.005, 4.47460304849, 77410.51304297059],
[0.005, 0.42971081835, 52698.38370124219],
[0.005, 1.56442459236, 11610.55195837420],
[0.004, 0.62582613574, 22747.29071487440],
[0.004, 1.51592730997, 66653.15746634839],
[0.005, 6.10277243405, 97112.93697469679],
[0.004, 1.00562353481, 51219.51712717779],
[0.004, 0.31906550066, 48835.19385644859],
[0.005, 4.98644771495, 51653.22886505459],
[0.005, 4.34429010560, 32132.13172294960],
[0.004, 2.92125579020, 78417.48823520739],
[0.004, 5.99601868842, 121335.60871375339],
[0.005, 3.13172791066, 61279.71327726600],
[0.005, 2.13824746365, 39609.65458316560],
[0.005, 5.68604378667, 119116.85160956658],
[0.004, 2.73202591375, 1692.16566950240],
[0.004, 5.78251523942, 26734.91397488900],
[0.005, 0.77777359038, 103711.71527998279],
[0.005, 0.91021434517, 71582.48457132299],
[0.004, 3.03035393128, 52072.71350892979],
[0.004, 0.45156085724, 31415.37924995700],
[0.004, 3.93028686443, 104371.28232719658],
[0.004, 4.54919541216, 26198.10946279360],
[0.004, 2.66986199617, 24176.70365835700],
[0.004, 3.50110688244, 74821.13447975718],
[0.004, 5.75284691398, 25138.72753260440],
[0.004, 5.44367911308, 72936.23331633979],
[0.004, 1.60493978664, 176953.98994186718],
[0.004, 1.93554854399, 50049.92887576919],
[0.003, 3.90053130991, 107794.18751126219],
[0.003, 5.45429683058, 44295.71712980940],
[0.004, 0.60054840458, 104347.73123093879],
[0.004, 0.88305624488, 60055.89543648739],
[0.004, 6.20681068925, 140652.80125408198],
[0.003, 1.44572212087, 130226.21661243298],
[0.004, 4.37750242770, 32769.12799497380],
[0.004, 1.75525459469, 110634.68841628819],
[0.003, 0.66980197410, 26222.01219115920],
[0.004, 2.20364417845, 182085.63102592478],
[0.003, 5.60615263810, 129387.24732468258],
[0.003, 0.96551693568, 207593.84658050019],
[0.004, 4.51472339809, 52169.17772424839],
[0.004, 0.86790293541, 24822.33566294780],
[0.003, 2.05745330337, 156100.82065856917],
[0.004, 0.27139822027, 214364.55718174577],
[0.003, 3.63958954831, 102232.84870591838],
[0.003, 3.33824382272, 170049.17029103660],
[0.003, 6.15959485239, 12546.48193908300],
[0.003, 0.54712514364, 1911.19948321720],
[0.003, 5.53215106225, 323.50541665740],
[0.003, 5.78740917576, 27780.06881107659],
[0.004, 3.60062257669, 105940.68546158058],
[0.003, 5.23668974633, 17893.62780836560],
[0.003, 3.21536557308, 155571.81910783658],
[0.004, 3.78439308193, 68241.87214462319],
[0.004, 0.35026324282, 53228.07466633679],
[0.003, 1.39462627029, 110.20632121940],
[0.003, 2.98585442540, 102769.65321801379],
[0.003, 5.54914760118, 52101.02468458109],
[0.004, 5.31358771393, 116917.76426627958],
[0.004, 5.02170245911, 130443.39704322898],
[0.003, 3.39708771017, 104778.21075717278],
[0.003, 1.35333080979, 52182.43484204840],
[0.003, 3.53872943291, 28791.51929624980],
[0.003, 0.32151031474, 75615.25459924959],
[0.003, 2.81736551277, 78187.44335344699],
[0.003, 3.41370464721, 77616.69859140778],
[0.003, 2.72102083462, 157586.80077963436],
[0.004, 0.37990458940, 365230.64398203877],
[0.003, 5.29398694468, 183570.92173262799],
[0.003, 0.53039476474, 35077.37084700659],
[0.003, 0.96990585284, 25780.34552060460],
[0.004, 5.03799187214, 103932.12792242158],
[0.003, 0.57063116288, 52250.58788171570],
[0.003, 4.90694398172, 27044.19229754480],
[0.003, 5.64342324025, 78903.60671103658],
[0.003, 3.90829945174, 130446.62925487179],
[0.004, 5.39121442451, 52022.02747266360],
[0.003, 5.38325956945, 172402.03644480839],
[0.003, 3.62725946038, 161079.37234650398],
[0.003, 0.02159890719, 130652.81480330898],
[0.003, 5.26052772975, 55516.41870984820],
[0.003, 1.45533607551, 77101.23472031478],
[0.003, 2.45621582046, 207643.84320240439],
[0.003, 3.04264756378, 74923.09699802278],
[0.003, 3.27797530359, 27669.86248985719],
[0.004, 6.20795181771, 3340.61242669980],
[0.003, 2.86818821459, 79330.20490191258],
[0.003, 5.42245453158, 36109.74042167360],
[0.003, 1.11238018002, 2125.87740737920],
[0.003, 4.70325749301, 52595.29092702359],
[0.003, 4.14290639481, 25446.48957983520],
[0.003, 4.11874155864, 1478.86657406440],
[0.003, 4.41727880469, 128220.75860368418],
[0.003, 5.84301330450, 65831.66677432480],
[0.003, 0.63458746349, 112231.70171963578],
[0.003, 5.20358469660, 157057.10981453978],
[0.003, 4.22446997246, 53399.62412392700],
[0.003, 6.08145059717, 26724.89941359840],
[0.003, 3.32246989691, 111122.32316754239],
[0.003, 1.11208497752, 78378.14871340781],
[0.003, 1.18205388535, 80382.47328510099],
[0.003, 3.98183946807, 25352.02662804239],
[0.003, 5.17537238750, 225687.22128005017],
[0.002, 3.19970010923, 64901.25971792339],
[0.003, 5.90368046078, 104505.39137678158],
[0.003, 2.15712281571, 28736.35796704720],
[0.002, 0.27988699718, 52325.36948028299],
[0.002, 1.09392137734, 24998.19435038059],
[0.003, 1.72654636472, 130419.84594697120],
[0.003, 6.24477199702, 51969.62073471119],
[0.003, 3.27154613105, 77630.92568540938],
[0.002, 1.80684819652, 123668.80510662538],
[0.002, 3.75304905922, 150244.34299945380],
[0.003, 2.04107819596, 76784.84285065818],
[0.003, 4.07589828594, 97670.38771289718],
[0.002, 3.43439078149, 52609.51802102519],
[0.002, 0.51530246334, 133882.09065283637],
[0.003, 4.75031746198, 204151.27163553477],
[0.002, 5.57618391474, 24292.64469785319],
[0.002, 2.22207407093, 78213.71280281838],
[0.002, 6.08590562625, 39450.35284837340],
[0.003, 4.42541702442, 51955.39364070959],
[0.003, 5.48323931966, 220.41264243880],
[0.003, 5.24728665819, 26709.64694241340],
[0.003, 4.52126286883, 20043.67456019880],
[0.002, 1.69429787369, 53029.00266490040],
[0.003, 0.98781948776, 80596.90581759460],
[0.002, 2.72291536990, 23866.04650697719],
[0.002, 2.23117481869, 26402.08932144380],
[0.003, 2.32561622864, 145204.75475114078],
[0.003, 3.55406019317, 52225.80290505260],
[0.003, 0.82939608505, 87253.17713015496],
[0.003, 3.59850686303, 52396.21892558720],
[0.002, 0.25549281668, 22909.75735100660],
[0.002, 4.18932113589, 81591.84508100279],
[0.002, 5.58984236569, 104202.04936916218],
[0.002, 1.59325428260, 206.18554843720],
[0.002, 2.33240745085, 157483.01859105378],
[0.002, 3.78499822852, 78731.67441507700],
[0.003, 1.73139148586, 77741.13200662879],
[0.002, 1.98761216006, 102018.41617342478],
[0.002, 3.82447809654, 1162.47470440780],
[0.002, 3.73613869026, 24601.92302050899],
[0.002, 4.87002033008, 51859.41441349179],
[0.002, 0.10623356446, 111590.28815789679],
[0.002, 4.43911582586, 78270.33798362259],
[0.002, 2.47821765975, 78114.14622758799],
[0.002, 5.83346201740, 181026.24909573558],
[0.002, 2.27341561267, 25953.79409198919],
[0.002, 2.73852323809, 123200.84011627098],
[0.002, 2.35063735347, 78109.93061423779],
[0.002, 0.45168929332, 2111.65031337760],
[0.002, 4.46926491505, 25450.90686955000],
[0.002, 3.97278244291, 52808.59002246159],
[0.002, 0.58667782465, 128320.75184749259],
[0.002, 3.05065649587, 102755.42612401219],
[0.002, 1.13486054740, 52492.19815280499],
[0.002, 4.64642529286, 60370.08161635699],
[0.002, 3.68035435205, 52309.91533273340],
[0.002, 5.93910800197, 78160.61665050399],
[0.002, 1.26706232000, 58857.03113654799],
[0.002, 5.09637370849, 26823.77965510599],
[0.002, 3.88808196008, 16703.06213349900],
[0.002, 0.00715741623, 130866.11389874699],
[0.002, 3.63338095338, 51852.30086649099],
[0.002, 5.67927933196, 103917.90082841998],
[0.002, 1.35964203538, 3328.13565628019],
[0.002, 6.13531665590, 129373.02023068098],
[0.002, 3.74140255139, 52381.99183158559],
[0.002, 0.37783717379, 53771.99272543299],
[0.002, 0.70779949763, 26667.59072857300],
[0.002, 2.05372686428, 70383.62027138360],
[0.002, 6.06999395703, 23919.14265929160],
[0.002, 1.22493486348, 103498.41618454478],
[0.002, 4.00058813480, 129799.61842155698],
[0.002, 1.62085169147, 78149.27013603736],
[0.002, 1.81898501228, 25771.51127191760],
[0.002, 6.22451796390, 52252.07235442399],
[0.002, 0.20849484282, 25754.04720080480],
[0.002, 2.38916713246, 51226.63067417859],
[0.002, 4.34697979051, 26404.29501123080],
[0.002, 2.87638496001, 167850.08294774959],
[0.002, 4.01638193690, 51868.24866217880],
[0.002, 3.38565068956, 77726.90491262719],
[0.002, 5.73512271075, 189853.99758261937],
[0.002, 3.93444553575, 50910.23880452200],
[0.002, 3.62039658007, 6885.14988993081],
[0.002, 1.76492939350, 92741.06060792258],
[0.002, 2.58190149030, 154938.34595416137],
[0.002, 5.37279792857, 52278.89905736699],
[0.002, 3.37039086197, 2221.85663459700],
[0.002, 6.07737780217, 94329.77528619739],
[0.002, 5.16106622649, 26729.31670331319],
[0.002, 1.58212922198, 26013.12154300690],
[0.002, 5.77714525422, 25600.26839032000],
[0.002, 1.88481234244, 27177.61193276780],
[0.002, 5.68695965343, 50264.60679993120],
[0.002, 6.07601531670, 141762.17980617538],
[0.002, 4.33545610317, 8194.27533320860],
[0.002, 1.10189365852, 1223.81784077861],
[0.002, 1.68048369897, 27250.37784598199],
[0.002, 5.32044002117, 151199.94274106238],
[0.002, 1.33411828477, 78257.08086582259],
[0.002, 5.40842531044, 95247.70557217918],
[0.002, 4.55349965747, 37698.45509994840],
[0.002, 2.71889214634, 173511.41499690176],
[0.002, 1.95076646341, 143005.66740785379],
[0.002, 2.00346690661, 26073.67604757259],
[0.002, 1.78781584986, 48847.67062686820],
[0.002, 5.89586766332, 26312.24793727610],
[0.002, 1.99160321093, 26189.86565983980],
[0.002, 0.40598906242, 25773.71696170459],
[0.002, 3.36946627953, 26575.53789282839],
[0.002, 4.77845331095, 136722.59155786238],
[0.002, 1.11920130054, 51315.49635439559],
[0.002, 4.99966961564, 78800.51393681798],
[0.002, 2.50164995664, 19202.75325164339],
[0.002, 5.31192385841, 23384.28698689860],
[0.002, 2.93563622378, 137678.19129947099],
[0.002, 5.00974264854, 182188.72380014337],
[0.002, 2.82066370220, 118828.96374949679],
[0.002, 1.23355180586, 52286.01260436779],
[0.002, 0.27866926000, 24356.78078864160],
[0.002, 2.19163720361, 26395.46076254379],
[0.002, 2.41579406356, 147423.51185532758],
[0.002, 1.80661945912, 860.30992875280],
[0.001, 3.75687703582, 34082.43158359840],
[0.001, 5.85918351804, 163766.09444104519],
[0.001, 4.84627694564, 27170.98337386779],
[0.002, 3.12958128871, 195047.36464141717],
[0.002, 0.59313712363, 74.78159856730],
[0.002, 4.60111717878, 25004.82290928060],
[0.001, 1.14751201091, 55503.94193942859],
[0.002, 4.55507467591, 132658.27281205778],
[0.001, 1.61844283111, 24079.34560241519],
[0.002, 1.99970840056, 17098.43543614181],
[0.002, 4.95650007002, 24448.83362438620],
[0.001, 6.20512620421, 2333.19639287200],
[0.002, 1.27464400058, 144916.86689107097],
[0.002, 6.17677089224, 87367.61641884019],
[0.001, 1.29983905478, 154194.22245657316],
[0.002, 4.47232796046, 130432.40216087017],
[0.001, 4.48574397522, 101703.15774082378],
[0.002, 2.19277171383, 103.09277421860],
[0.001, 1.80796273878, 25508.21555457540],
[0.001, 5.48664013700, 22625.65843570900],
[0.001, 0.74294839995, 78896.49316403578],
[0.001, 3.51165251141, 26421.75908234360],
[0.001, 5.55668995710, 220025.88923089797],
[0.002, 4.08809950869, 25466.15934073500],
[0.002, 2.89128653047, 166740.70439565618],
[0.001, 3.92791860433, 189386.03259226496],
[0.001, 0.33128467520, 76571.54375522019],
[0.002, 1.98187462633, 81604.32185142238],
[0.001, 3.57210475329, 78786.28684281638],
[0.002, 1.13879447241, 61165.27398858079],
[0.001, 5.62721081889, 122444.98726584678],
[0.001, 0.51173156424, 113341.08027172917],
[0.001, 0.63238768568, 130459.18546877075],
[0.001, 0.62172861766, 138319.60486120995],
[0.002, 0.35135879351, 132028.58860315479],
[0.001, 1.68473271541, 28286.99048486120],
[0.002, 2.61859360479, 61560.64729122359],
[0.001, 3.42727473387, 130435.63437251298],
[0.002, 3.42836265136, 65717.22748563958],
[0.001, 2.98248327032, 846.08283475120],
[0.001, 5.35146960556, 1265.56747862640],
[0.001, 4.88379701920, 205260.65018762814],
[0.001, 1.38681194099, 467.96499035440],
[0.001, 5.78967137689, 76152.05911134499],
[0.001, 1.64625172020, 75930.51303185058],
[0.001, 0.08732855602, 103718.82882698359],
[0.001, 0.74831854153, 51534.39272140940],
[0.001, 1.98744571247, 26411.40855823160],
[0.002, 0.58716824437, 52065.59996192899],
[0.001, 5.83388253183, 104275.34649502118],
[0.001, 2.07307900948, 78188.92782615528],
[0.001, 4.54379329814, 203041.89308344139],
[0.001, 3.67961974137, 116783.65521669458],
[0.001, 2.76419827660, 52812.80255517260],
[0.001, 5.76246998806, 1375.77379984580],
[0.001, 3.49542841313, 79315.97780791098],
[0.001, 3.09408892186, 9384.84100807520],
[0.002, 2.99230815235, 91805.13062721379],
[0.001, 2.31818985780, 58220.03486452380],
[0.001, 2.52061585089, 91919.56991589899],
[0.001, 0.20823485438, 54879.42243782400],
[0.001, 4.44457464944, 6044.22858137540],
[0.001, 0.49331056411, 104819.57755665119],
[0.001, 5.98062907857, 106570.36967048359],
[0.001, 3.43578051874, 51841.95034237900],
[0.001, 1.50478057782, 137210.22630911658],
[0.001, 0.85871789181, 25985.94062330859],
[0.001, 0.00464768227, 196137.07343261078],
[0.001, 4.31601888279, 50483.64061364600],
[0.001, 3.82192552665, 25928.60140678200],
[0.001, 2.13422641639, 62197.64356324779],
[0.001, 0.26342054765, 1795.25844372100],
[0.001, 3.33069384141, 19.66976089979],
[0.001, 5.04672208460, 26247.20487636640],
[0.001, 3.69091550110, 77307.42026875199],
[0.001, 0.68629642431, 26102.13023557580],
[0.001, 5.61963025660, 104197.83375581198],
[0.001, 0.41026701894, 636.99627202420],
[0.001, 2.73690252229, 170068.84005193636],
[0.001, 2.97981003623, 78057.52387628538],
[0.001, 2.84174115238, 168959.46149984296],
[0.001, 6.19695864555, 241561.83887541335],
[0.001, 2.31427972623, 179172.74704605396],
[0.001, 0.82072277702, 51329.72344839720],
[0.001, 5.23954201903, 99024.13645791399],
[0.001, 1.86269361791, 45494.58142974879],
[0.001, 3.54450921353, 78338.49102328988],
[0.001, 4.60745432488, 156507.74908854539],
[0.001, 1.62346464256, 128106.31931499895],
[0.001, 0.72186155433, 27005.83342755599],
[0.001, 2.30344666604, 50380.54783942739],
[0.001, 1.18658609813, 8989.46770543239],
[0.001, 6.25857682168, 50800.03248330259],
[0.001, 0.99962008973, 163298.12945069079],
[0.001, 2.86790873835, 38634.38508065720],
[0.001, 3.61827980669, 106262.81204951399],
[0.001, 0.61515728295, 78469.89497315978],
[0.001, 4.60636743786, 126996.94076290558],
[0.001, 4.48187053152, 231348.55332920235],
[0.001, 5.19829793680, 142871.55835826878],
[0.001, 5.68864830775, 3178.14579056760],
[0.001, 4.89753750946, 53265.51507434200],
[0.001, 3.68051221186, 2703.61615467560],
[0.001, 0.01737531330, 103814.80805420138],
[0.001, 1.79348974875, 183145.01295611399],
[0.001, 6.16564988887, 199599.31813847594],
[0.001, 0.63301837081, 51439.92976961659],
[0.001, 2.29427904310, 1485.98012106520],
[0.001, 1.44184009822, 112545.88789950538],
[0.001, 0.55411127132, 42790.96527507320],
[0.001, 5.07507945312, 54824.26110862140],
[0.001, 5.10858625008, 107679.74822257696],
[0.001, 5.50068575093, 27819.02549450680],
[0.001, 5.60579347269, 153084.84390447979],
[0.001, 4.92352598929, 51596.11869614960],
[0.001, 6.10538330268, 181659.72224941078],
],
# R2
[
[3117.867, 3.08231840296, 26087.90314157420],
[1245.396, 6.15183317423, 52175.80628314840],
[424.822, 2.92583352960, 78263.70942472259],
[136.130, 5.97983925842, 104351.61256629678],
[42.175, 2.74936980629, 130439.51570787099],
[21.759, 3.14159265359, 0.00000000000],
[12.793, 5.80143162209, 156527.41884944518],
[3.825, 2.56993599584, 182615.32199101939],
[1.042, 3.14648120079, 24978.52458948080],
[1.131, 5.62142196970, 208703.22513259359],
[0.483, 6.14307654520, 27197.28169366760],
[0.332, 2.38992575670, 234791.12827416777],
[0.320, 6.20674766565, 51066.42773105500],
[0.120, 0.56745598887, 20426.57109242200],
[0.113, 3.28048907943, 24498.83024629040],
[0.105, 4.36663468239, 25028.52121138500],
[0.097, 5.44128884026, 260879.03141574195],
[0.095, 1.70276410782, 1059.38193018920],
[0.103, 2.98038190305, 77154.33087262919],
[0.074, 1.28630381800, 26617.59410666880],
[0.057, 2.96753362980, 1109.37855209340],
[0.066, 5.68201233964, 25132.30339996560],
[0.053, 3.63699398162, 46514.47423399620],
[0.059, 3.10922979724, 27043.50288318280],
[0.053, 0.66673109494, 21535.94964451540],
[0.043, 4.69270605698, 27147.28507176339],
[0.042, 2.77372510028, 1589.07289528380],
[0.036, 4.39741248058, 14765.23904326980],
[0.035, 1.80468389323, 11322.66409830440],
[0.043, 6.07426254990, 28306.66024576099],
[0.033, 5.34572581657, 25448.00585526019],
[0.031, 5.66489075070, 30639.85663863300],
[0.031, 2.36104565226, 32858.61374281979],
[0.031, 4.27403143366, 16983.99614745660],
[0.033, 3.22976052744, 23869.14603738740],
[0.031, 0.50041076120, 22645.32819660879],
[0.028, 2.21390393577, 286966.93455731618],
[0.033, 6.03682885493, 103242.23401420339],
[0.025, 4.23934105457, 52705.49724824299],
[0.023, 2.59711556958, 23969.13928119580],
[0.027, 2.10665521901, 25558.21217647960],
[0.021, 0.40892383580, 72602.37737557039],
[0.025, 5.69513499802, 5661.33204915220],
[0.022, 4.86064608327, 26301.20223701220],
[0.024, 0.66522740624, 19317.19254032860],
[0.020, 5.61847810688, 4551.95349705880],
[0.021, 2.30083904827, 51220.20654153979],
[0.018, 0.48839037250, 26068.23338067440],
[0.016, 6.07779022342, 50586.73338786459],
[0.016, 1.47218845921, 53235.18821333759],
[0.017, 2.94277588966, 53285.18483524180],
[0.015, 2.39097980793, 83925.04147387479],
[0.015, 3.85502950028, 26091.78447693220],
[0.014, 4.13753968603, 12566.15169998280],
[0.015, 5.51545801304, 6770.71060124560],
[0.014, 5.67708505049, 57837.13833230060],
[0.014, 5.73775080815, 27676.97603685800],
[0.016, 5.69298300679, 26107.57290247399],
[0.014, 5.00837046884, 37410.56723987860],
[0.015, 5.72321978212, 29530.47808653960],
[0.012, 1.18827026407, 40853.14218484400],
[0.013, 2.34101240702, 26084.02180621620],
[0.012, 2.43920574243, 56727.75978020720],
[0.012, 1.12086684687, 43071.89928903080],
[0.012, 1.86975778356, 9103.90699411760],
[0.012, 4.90236416950, 36301.18868778519],
[0.010, 2.33297570685, 426.59819087600],
[0.011, 2.80390774003, 129330.13715577759],
[0.010, 5.86382886189, 26202.34243025941],
[0.009, 0.03545904481, 25234.70675982219],
[0.011, 0.92571990717, 639.89728631400],
[0.010, 3.94827815051, 25661.30495069820],
[0.009, 0.00145195768, 49957.04917896160],
[0.008, 5.42702003399, 110012.94461544899],
[0.008, 3.39306818321, 25973.46385288896],
[0.009, 4.83499870418, 38519.94579197200],
[0.008, 5.65148718768, 53131.40602475700],
[0.009, 5.73812314204, 51116.42435295920],
[0.008, 1.98050481337, 13521.75144159140],
[0.009, 0.95963913886, 78793.40038981718],
[0.008, 5.24647237181, 313054.83769889036],
[0.008, 3.52212788936, 52156.13652224860],
[0.007, 3.57060093012, 48733.23133818299],
[0.008, 3.47359025801, 98690.28051714458],
[0.008, 5.32679971128, 51646.11531805379],
[0.010, 5.07319693095, 25874.60404613620],
[0.008, 4.34411026261, 31749.23519072640],
[0.007, 3.44556423722, 26080.78959457339],
[0.007, 5.28088749622, 77308.10968311399],
[0.007, 3.46667099767, 2118.76386037840],
[0.007, 1.96360039314, 10213.28554621100],
[0.007, 1.18631489114, 103292.23063610759],
[0.007, 4.28693259279, 955.59974160860],
[0.007, 0.88520158736, 38654.05484155699],
[0.009, 2.12100150030, 18849.22754997420],
[0.008, 2.75301666365, 26095.01668857500],
[0.007, 4.98530328971, 529.69096509460],
[0.007, 0.20928215626, 33326.57873317420],
[0.006, 4.54286088482, 79323.09135491178],
[0.006, 0.60060875587, 52179.68761850640],
[0.006, 1.21940434381, 41962.52073693740],
[0.006, 1.74585091288, 62389.09182935939],
[0.006, 2.13481309441, 51535.90899683439],
[0.006, 4.92478078408, 26514.50133245020],
[0.007, 4.18249532118, 77204.32749453338],
[0.007, 1.68449319925, 52389.10537858640],
[0.005, 4.28220819106, 68050.42387851159],
[0.007, 1.69076988754, 12432.04265039780],
[0.006, 3.73803069606, 45405.09568190280],
[0.005, 2.61320374120, 79373.08797681599],
[0.005, 2.82458540907, 54394.56338733519],
[0.004, 6.27439443684, 52168.69273614759],
[0.005, 4.50767453332, 13655.86049117640],
[0.006, 2.41451327257, 52195.47604404819],
[0.005, 5.35396003655, 52171.92494779040],
[0.005, 5.48187638039, 82815.66292178139],
[0.004, 2.46695073802, 55618.38122811380],
[0.004, 2.40470389725, 53764.87917843220],
[0.004, 4.24591997877, 66941.04532641819],
[0.004, 3.26730161531, 7238.67559160000],
[0.004, 4.24517841791, 129380.13377768178],
[0.004, 5.46706523938, 50057.04242277000],
[0.004, 2.17208918484, 136100.84775702318],
[0.004, 5.86573287261, 155418.04029735178],
[0.004, 4.15256069197, 32370.97899156560],
[0.004, 2.92358717546, 2218.75710418680],
[0.004, 2.22141015932, 33967.99229491319],
[0.005, 5.74788858603, 52182.91983014920],
[0.004, 0.97295961632, 44181.27784112419],
[0.003, 5.78273085505, 28421.09953444620],
[0.003, 3.65975480266, 99799.65906923798],
[0.004, 3.98623592167, 26727.80042788820],
[0.003, 2.65056124435, 76674.63652943878],
[0.003, 4.91152657563, 47623.85278608960],
[0.004, 1.60135504353, 77734.01845962799],
[0.003, 0.26868606771, 78244.03966382280],
[0.003, 4.58298191655, 1066.49547719000],
[0.003, 4.04696774318, 18093.37469954999],
[0.003, 1.04981780528, 94138.32702008578],
[0.003, 0.82425633309, 73711.75592766379],
[0.003, 5.12180734718, 1052.26838318840],
[0.003, 1.58544193974, 51109.31080595839],
[0.003, 0.22337858409, 124778.18365871879],
[0.003, 3.08207297479, 76044.95232053580],
[0.003, 6.26000429251, 853.19638175200],
[0.003, 3.89747679105, 64741.95798313119],
[0.003, 1.86869273254, 52602.40447402440],
[0.004, 0.01480665337, 7.11354700080],
[0.003, 1.95420622178, 103396.01282468818],
[0.003, 6.00022344367, 29416.03879785439],
[0.003, 1.05827389660, 51123.53789995999],
[0.003, 3.93336187090, 104881.30353139139],
[0.002, 4.80666683935, 88476.99497093359],
[0.002, 2.56919394798, 51962.50718771040],
[0.002, 5.19328838214, 91785.46086631398],
[0.003, 4.94448744333, 44937.13069154840],
[0.002, 0.39272598961, 23754.70674870219],
[0.003, 3.64926786888, 78267.59076008058],
[0.002, 1.93776267237, 117873.36400788819],
[0.002, 0.16310879863, 28206.66700195260],
[0.002, 2.74232958068, 52290.24557183361],
[0.002, 1.94114905421, 7994.52844202420],
[0.002, 0.39437121176, 125887.56221081219],
[0.002, 1.03418813348, 155468.03691925600],
[0.002, 2.06866763231, 339142.74084046460],
[0.002, 1.29912216629, 105410.99449648599],
[0.002, 0.54124189090, 74821.13447975718],
[0.002, 2.12346357366, 65697.55772473979],
[0.002, 2.54143985834, 78270.82297172339],
[0.002, 4.87063627681, 35191.81013569180],
[0.002, 0.51631216786, 71492.99882347698],
[0.002, 0.73976887550, 18207.81398823521],
[0.002, 5.50150244414, 78283.37918562238],
[0.002, 4.78661791721, 78477.00852016058],
[0.002, 4.40683761496, 103821.92160120218],
[0.002, 3.07092516027, 78256.59587772179],
[0.002, 5.01301614244, 3442.57494496540],
[0.002, 2.58799752737, 181505.94343892598],
[0.002, 4.95243490606, 129483.91596626239],
[0.002, 4.12821833516, 77211.44104153418],
[0.002, 4.05475453577, 120226.23016165999],
[0.002, 3.34041291655, 151975.46535238638],
[0.002, 3.27812728356, 51322.60990139639],
[0.002, 4.06092192484, 77837.11123384659],
[0.002, 5.22546741404, 162188.75089859738],
[0.002, 5.57497617017, 71980.63357473118],
[0.002, 1.86655156569, 23439.44831610119],
[0.002, 4.79020891265, 15874.61759536320],
[0.002, 2.43202419279, 45892.73043315699],
[0.001, 4.91443985635, 78690.30761559859],
[0.002, 2.55186486587, 39609.65458316560],
[0.002, 2.04705904795, 433.71173787680],
[0.001, 6.06582167254, 102132.85546210999],
[0.002, 0.36512406083, 6283.07584999140],
[0.002, 5.96418661485, 78050.41032928458],
[0.001, 0.66730245858, 58458.88213313979],
[0.001, 2.46652537811, 98068.53671630539],
[0.002, 3.24884087108, 150866.08680029298],
[0.002, 0.33626385981, 52061.36699446317],
[0.001, 1.58214319162, 114564.89811250778],
[0.001, 1.86505965946, 27140.17152476259],
[0.001, 4.70954784660, 77197.21394753258],
[0.001, 3.30080224324, 104331.94280539699],
[0.002, 2.15014442693, 78259.82808936459],
[0.001, 4.16909637294, 51742.09454527159],
[0.002, 0.61993180902, 130969.20667296558],
[0.001, 5.64166202504, 81706.28436968799],
[0.001, 1.28449131177, 27154.39861876420],
[0.001, 0.20716724934, 131548.89425996438],
[0.001, 5.01586042695, 105460.99111839019],
[0.001, 2.20142137730, 104371.28232719658],
[0.001, 0.71547903080, 103925.01437542078],
[0.001, 1.69298852699, 71025.03383312259],
[0.002, 1.01857337375, 93028.94846799239],
[0.002, 0.99564225222, 129909.82474277639],
[0.001, 3.04953117213, 26941.09952332620],
[0.001, 1.54774252742, 104564.91166173479],
[0.001, 1.29736654025, 26241.68195205900],
[0.002, 0.39879309478, 104355.49390165479],
[0.001, 1.73442408485, 64607.84893354619],
[0.001, 3.52887677711, 97580.90196505119],
[0.001, 3.55488474055, 84546.78527471398],
[0.001, 2.68991734615, 59414.48187474840],
[0.001, 2.23301107736, 107794.18751126219],
[0.001, 6.04185199127, 104344.49901929598],
[0.001, 2.33178230942, 108903.56606335558],
[0.001, 5.23291332097, 134991.46920492980],
[0.001, 5.42420842294, 79852.78232000639],
[0.001, 5.56485897392, 104358.72611329758],
[0.001, 2.03042058117, 76144.94556434419],
[0.001, 4.42403586918, 25021.40766438420],
[0.001, 4.07362401058, 181555.94006083018],
[0.001, 4.39544806298, 131498.89763806018],
[0.001, 3.37653548744, 22759.76748529401],
[0.001, 3.34598726101, 24864.08530079559],
[0.001, 0.81949463309, 52815.70356946240],
[0.001, 4.13026377404, 2648.45482547300],
[0.001, 1.40701146170, 103285.11708910679],
[0.001, 2.72338212355, 419.48464387520],
[0.001, 2.86239729930, 63498.47038145279],
[0.001, 4.60118276053, 19804.82729158280],
[0.001, 3.76488909896, 51749.20809227239],
[0.001, 5.71167880995, 78378.14871340781],
[0.001, 3.11068504003, 54294.57014352679],
[0.001, 5.17191010522, 1596.18644228460],
[0.001, 0.84666659977, 26037.90651966999],
[0.001, 1.27214241387, 39743.76363275060],
[0.001, 3.62572271343, 51756.32163927320],
[0.001, 0.99401491673, 50579.61984086379],
[0.001, 2.65940437112, 79219.30916633119],
[0.001, 2.78122688424, 157636.79740153858],
[0.001, 5.02865728622, 365230.64398203877],
[0.001, 4.26629771518, 26724.89941359840],
[0.001, 0.69459147389, 90829.86112470538],
[0.001, 3.74834736873, 44295.71712980940],
[0.001, 2.67181600104, 5327.47610838280],
[0.001, 5.10769130141, 58946.51688439399],
[0.001, 0.55503171074, 69159.80243060499],
[0.001, 4.68391610322, 90695.75207512038],
[0.001, 5.17372763616, 149.56319713460],
[0.001, 5.26044215633, 25934.12433108940],
[0.001, 5.13679156205, 104347.73123093879],
[0.001, 0.91197645609, 103299.34418310839],
[0.001, 5.89466975855, 27311.72098235281],
[0.001, 0.91206378451, 77829.99768684579],
[0.001, 0.82686052448, 146314.13330323418],
[0.001, 5.01041490382, 25450.90686955000],
[0.001, 0.74891931364, 10021.83728009940],
[0.001, 3.75910629606, 25619.93815121980],
[0.001, 1.57855828108, 61279.71327726600],
[0.001, 5.22196769252, 77623.81213840858],
[0.001, 5.44280337360, 52643.77127350280],
[0.001, 3.38760463430, 49842.60989027639],
[0.001, 4.04176416141, 25565.32572348040],
[0.001, 1.99169557218, 105940.68546158058],
[0.001, 2.40126368211, 26555.86813192860],
[0.001, 3.28153684541, 78149.27013603736],
[0.001, 1.50606534242, 50593.84693486539],
[0.001, 4.99390846744, 143961.26714946239],
[0.001, 4.36279289081, 70269.18098269838],
[0.001, 0.56330446870, 29428.51556827400],
[0.001, 1.96827343473, 188276.65404017159],
[0.001, 6.14024093350, 3328.13565628019],
[0.001, 4.38278455115, 52329.58509363319],
[0.001, 5.32677211586, 26137.89976347840],
[0.001, 5.49001686286, 7880.08915333899],
[0.001, 2.08096369099, 26610.48055966799],
[0.001, 2.81808749734, 54509.00267602040],
[0.001, 3.85620334673, 26624.70765366959],
[0.001, 1.15157832957, 536.80451209540],
[0.001, 3.62974919098, 130012.91751699499],
[0.001, 0.35977888560, 105307.21230790539],
[0.001, 2.75970257539, 55503.94193942859],
[0.001, 3.95087871071, 119116.85160956658],
[0.001, 2.02746284465, 85034.42002596818],
[0.001, 0.01631363612, 25668.41849769900],
[0.001, 4.69497491223, 1581.95934828300],
[0.001, 4.43589881789, 53242.30176033840],
[0.001, 0.02851648548, 213.29909543800],
[0.001, 2.42155941603, 25551.09862947879],
[0.001, 4.51335885923, 12546.48193908300],
[0.001, 3.07012190290, 104138.31347085879],
[0.001, 4.25105785914, 65831.66677432480],
[0.001, 0.26591217377, 89586.37352302698],
[0.001, 3.25491459524, 46848.33017476560],
[0.001, 5.00501348827, 51639.00177105299],
[0.000, 5.50334834007, 124156.43985787958],
[0.000, 4.83101429854, 76.26607127560],
[0.000, 4.34030366776, 80482.46652890938],
[0.001, 3.55161443787, 116917.76426627958],
[0.000, 4.96302997387, 26521.61487945100],
[0.001, 0.12176395772, 6681.22485339960],
[0.001, 0.06932929209, 48847.67062686820],
[0.001, 0.08695556653, 26507.38778544939],
[0.000, 1.50601747714, 632.78373931320],
[0.000, 3.68453733674, 25035.63475838580],
[0.000, 2.10077795936, 86143.79857806159],
[0.000, 2.61352703953, 53399.62412392700],
[0.000, 0.84481589887, 25881.71759313700],
[0.000, 3.95854005744, 95247.70557217918],
[0.001, 4.47600641528, 97112.93697469679],
[0.001, 0.40812953108, 77844.22478084739],
[0.000, 4.89912517892, 25984.81036735560],
[0.000, 5.16843610094, 52698.38370124219],
[0.000, 3.99449121788, 131395.11544947958],
[0.000, 5.65446547429, 80596.90581759460],
],
# R3
[
[32.676, 1.67971635359, 26087.90314157420],
[24.166, 4.63403168997, 52175.80628314840],
[12.133, 1.38983781545, 78263.70942472259],
[5.140, 4.43915386930, 104351.61256629678],
[1.981, 1.20733880274, 130439.51570787099],
[1.460, 3.14159265359, 0.00000000000],
[0.719, 4.25913631362, 156527.41884944518],
[0.250, 1.02794425848, 182615.32199101939],
[0.084, 4.08008618813, 208703.22513259359],
[0.028, 0.85051616237, 234791.12827416777],
[0.023, 1.60029451014, 24978.52458948080],
[0.011, 4.58074493182, 27197.28169366760],
[0.012, 4.65878660390, 51066.42773105500],
[0.009, 3.90622332667, 260879.03141574195],
[0.005, 1.43247327249, 77154.33087262919],
[0.004, 1.37106678794, 53285.18483524180],
[0.003, 0.67217979275, 286966.93455731618],
[0.002, 5.31135121818, 20426.57109242200],
[0.002, 1.54812921017, 1109.37855209340],
[0.002, 4.48222146022, 103242.23401420339],
[0.002, 0.20057520755, 1059.38193018920],
[0.002, 4.21865197056, 25132.30339996560],
[0.001, 2.11997334018, 46514.47423399620],
[0.001, 3.24267833975, 27147.28507176339],
[0.001, 1.33238537892, 1589.07289528380],
[0.001, 5.14405498793, 72602.37737557039],
[0.001, 6.14595652541, 26617.59410666880],
[0.001, 3.90494988936, 4551.95349705880],
[0.001, 2.85134614467, 14765.23904326980],
[0.001, 3.74339959279, 313054.83769889036],
[0.001, 2.82234410581, 52705.49724824299],
[0.001, 1.70132625273, 23869.14603738740],
[0.001, 1.44102444460, 27043.50288318280],
[0.001, 1.25358423340, 129330.13715577759],
[0.001, 0.32054002273, 9103.90699411760],
[0.001, 0.90273607509, 51220.20654153979],
[0.001, 4.28935605425, 27676.97603685800],
[0.001, 4.41206223998, 79373.08797681599],
[0.001, 3.23518929162, 26301.20223701220],
[0.001, 2.25667255668, 21535.94964451540],
[0.001, 4.70414203873, 50586.73338786459],
[0.001, 1.88608259832, 98690.28051714458],
[0.001, 5.90420893056, 40853.14218484400],
[0.001, 4.46892853356, 53131.40602475700],
[0.001, 3.83684899837, 77308.10968311399],
[0.001, 1.31974603498, 54394.56338733519],
[0.001, 0.74728939443, 32858.61374281979],
[0.001, 6.27673970277, 53235.18821333759],
[0.001, 4.14814578610, 29530.47808653960],
[0.001, 0.87302135775, 83925.04147387479],
[0.001, 5.20339566427, 26068.23338067440],
[0.001, 2.88631079597, 79323.09135491178],
[0.001, 5.39853672849, 19317.19254032860],
[0.001, 5.73721596586, 78793.40038981718],
[0.000, 1.85241611022, 25973.46385288896],
[0.000, 4.31134434847, 26202.34243025941],
[0.000, 4.74305205780, 49957.04917896160],
[0.001, 3.87802524387, 82815.66292178139],
[0.000, 4.28937691652, 155418.04029735178],
[0.001, 3.35625397389, 37410.56723987860],
[0.000, 2.00313301846, 22645.32819660879],
[0.000, 2.49236829957, 25028.52121138500],
[0.000, 0.01947787727, 25558.21217647960],
[0.001, 4.13825019881, 3442.57494496540],
[0.000, 2.81832388305, 25874.60404613620],
[0.000, 2.53416253042, 12566.15169998280],
[0.001, 4.46169102731, 28306.66024576099],
[0.001, 2.16986592809, 45405.09568190280],
[0.000, 2.27621739263, 26091.78447693220],
[0.000, 1.95034764539, 52156.13652224860],
[0.000, 4.03054078678, 30639.85663863300],
[0.000, 5.76722418743, 43071.89928903080],
[0.000, 4.12739704581, 26107.57290247399],
[0.000, 1.37713138665, 31749.23519072640],
[0.001, 3.54716896556, 51646.11531805379],
[0.000, 3.39161595850, 36301.18868778519],
[0.000, 4.34410863436, 57837.13833230060],
[0.000, 5.62082960690, 639.89728631400],
[0.000, 3.16268062826, 529.69096509460],
[0.000, 0.77186843357, 26084.02180621620],
[0.000, 3.78612072314, 110012.94461544899],
[0.000, 5.50453358586, 51116.42435295920],
[0.000, 0.04709131420, 52389.10537858640],
[0.000, 3.93991894858, 6770.71060124560],
[0.000, 1.41961180167, 76674.63652943878],
[0.000, 2.61258742182, 66941.04532641819],
[0.000, 0.70544164813, 426.59819087600],
[0.000, 0.91883551986, 55618.38122811380],
[0.000, 5.30612883135, 52179.68761850640],
[0.000, 2.00604152518, 2118.76386037840],
[0.000, 1.08640210817, 56727.75978020720],
[0.000, 3.92743267498, 58946.51688439399],
[0.000, 5.52202827702, 38654.05484155699],
[0.000, 1.57363600114, 24498.83024629040],
[0.000, 3.49522546958, 5661.33204915220],
[0.000, 0.63375195581, 51535.90899683439],
[0.000, 1.34305878069, 105460.99111839019],
[0.000, 0.44820055565, 339142.74084046460],
[0.000, 1.39951362362, 2218.75710418680],
[0.000, 0.63311095079, 18849.22754997420],
[0.000, 0.82120127326, 52195.47604404819],
[0.000, 2.78211363987, 47623.85278608960],
[0.000, 0.94752126944, 53764.87917843220],
[0.000, 3.75988526858, 52171.92494779040],
[0.000, 0.44351435910, 136100.84775702318],
[0.000, 1.44824925227, 76044.95232053580],
[0.000, 4.83985082201, 78244.03966382280],
[0.000, 0.04522486479, 62389.09182935939],
[0.000, 6.28144869714, 213.29909543800],
[0.000, 5.17875557687, 955.59974160860],
[0.000, 4.62674052433, 52168.69273614759],
[0.000, 2.19907823066, 77204.32749453338],
[0.000, 3.40216597806, 26514.50133245020],
[0.000, 2.89630853457, 13655.86049117640],
[0.000, 3.92639394174, 50057.04242277000],
[0.000, 0.27991454535, 11322.66409830440],
[0.000, 5.63968341805, 103292.23063610759],
[0.000, 1.86829495425, 48733.23133818299],
[0.000, 5.77443179008, 105410.99449648599],
],
# R4
[
[0.394, 0.36735403840, 26087.90314157420],
[0.387, 3.18568771507, 52175.80628314840],
[0.270, 6.16983616444, 78263.70942472259],
[0.149, 2.91591904641, 104351.61256629678],
[0.071, 5.95867889641, 130439.51570787099],
[0.031, 2.72386700044, 156527.41884944518],
[0.017, 0.00000000000, 0.00000000000],
[0.012, 5.77775334056, 182615.32199101939],
[0.005, 2.54506442647, 208703.22513259359],
[0.002, 5.59978443851, 234791.12827416777],
[0.001, 2.33785160871, 260879.03141574195],
[0.000, 5.37943916893, 286966.93455731618],
[0.000, 3.09643524101, 51066.42773105500],
[0.000, 0.09342858750, 24978.52458948080],
[0.000, 6.02837115675, 53285.18483524180],
[0.000, 6.13600004668, 77154.33087262919],
[0.000, 2.93310416266, 27197.28169366760],
[0.000, 2.89897922039, 103242.23401420339],
],
# R5
[
[0.006, 3.98900269603, 26087.90314157420],
[0.006, 1.55248278782, 52175.80628314840],
[0.005, 4.65461721116, 78263.70942472259],
[0.004, 1.40238366492, 104351.61256629678],
[0.002, 4.44231488663, 130439.51570787099],
[0.001, 3.14159265359, 0.00000000000],
[0.001, 1.21278177664, 156527.41884944518],
[0.001, 4.26149026340, 182615.32199101939],
[0.000, 0.99831133595, 208703.22513259359],
[0.000, 4.00267064210, 234791.12827416777],
],
]
"""This table contains Mercury's periodic terms (all of them) from the
planetary theory VSOP87 for the radius vector at the equinox of date (taken
from the 'D' solution). In Meeus' book a shortened version can be found in page
416."""
ORBITAL_ELEM = [
[252.250906, 149474.0722491, 0.0003035, 0.000000018], # L
[0.38709831, 0.0, 0.0, 0.0], # a
[0.20563175, 0.000020407, -0.0000000283, -0.00000000018], # e
[7.004986, 0.0018215, -0.0000181, 0.000000056], # i
[48.330893, 1.1861883, 0.00017542, 0.000000215], # Omega
[77.456119, 1.5564776, 0.00029544, 0.000000009] # pie
]
"""This table contains the parameters to compute Mercury's orbital elements for
the mean equinox of date. Based in Table 31.A, page 212"""
ORBITAL_ELEM_J2000 = [
[252.250906, 149472.6746358, -0.00000536, 0.000000002], # L
[7.004986, -0.0059516, 0.0000008, 0.000000043], # i
[48.330893, -0.1254227, -0.00008833, -0.0000002], # Omega
[77.456119, 0.1588643, -0.00001342, -0.000000007] # pie
]
"""This table contains the parameters to compute Mercury's orbital elements for
the standard equinox J2000.0. Based on Table 31.B, page 214"""
class Mercury(object):
"""
Class Mercury models that planet.
"""
@staticmethod
def geometric_heliocentric_position(epoch, tofk5=True):
"""This method computes the geometric heliocentric position of planet
Mercury for a given epoch, using the VSOP87 theory.
:param epoch: Epoch to compute Mercury position, as an Epoch object
:type epoch: :py:class:`Epoch`
:param tofk5: Whether or not the small correction to convert to the FK5
system will be applied or not
:type tofk5: bool
:returns: A tuple with the heliocentric longitude and latitude (as
:py:class:`Angle` objects), and the radius vector (as a float,
in astronomical units), in that order
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(2018, 10, 27.0)
>>> l, b, r = Mercury.geometric_heliocentric_position(epoch)
>>> print(round(l.to_positive(), 4))
287.4887
>>> print(round(b, 4))
-6.0086
>>> print(round(r, 5))
0.45113
"""
return geometric_vsop_pos(epoch, VSOP87_L, VSOP87_B, VSOP87_R, tofk5)
@staticmethod
def apparent_heliocentric_position(epoch):
"""This method computes the apparent heliocentric position of planet
Mercury for a given epoch, using the VSOP87 theory.
:param epoch: Epoch to compute Mercury position, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple with the heliocentric longitude and latitude (as
:py:class:`Angle` objects), and the radius vector (as a float,
in astronomical units), in that order
:rtype: tuple
:raises: TypeError if input values are of wrong type.
"""
return apparent_vsop_pos(epoch, VSOP87_L, VSOP87_B, VSOP87_R)
@staticmethod
def orbital_elements_mean_equinox(epoch):
"""This method computes the orbital elements of Mercury for the mean
equinox of the date for a given epoch.
:param epoch: Epoch to compute orbital elements, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple containing the following six orbital elements:
- Mean longitude of the planet (Angle)
- Semimajor axis of the orbit (float, astronomical units)
- eccentricity of the orbit (float)
- inclination on the plane of the ecliptic (Angle)
- longitude of the ascending node (Angle)
- argument of the perihelion (Angle)
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(2065, 6, 24.0)
>>> l, a, e, i, ome, arg = Mercury.orbital_elements_mean_equinox(epoch)
>>> print(round(l, 6))
203.494701
>>> print(round(a, 8))
0.38709831
>>> print(round(e, 7))
0.2056451
>>> print(round(i, 6))
7.006171
>>> print(round(ome, 5))
49.10765
>>> print(round(arg, 6))
29.367732
"""
return orbital_elements(epoch, ORBITAL_ELEM, ORBITAL_ELEM)
@staticmethod
def orbital_elements_j2000(epoch):
"""This method computes the orbital elements of Mercury for the
standard equinox J2000.0 for a given epoch.
:param epoch: Epoch to compute orbital elements, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple containing the following six orbital elements:
- Mean longitude of the planet (Angle)
- Semimajor axis of the orbit (float, astronomical units)
- eccentricity of the orbit (float)
- inclination on the plane of the ecliptic (Angle)
- longitude of the ascending node (Angle)
- argument of the perihelion (Angle)
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(2065, 6, 24.0)
>>> l, a, e, i, ome, arg = Mercury.orbital_elements_j2000(epoch)
>>> print(round(l, 6))
202.579453
>>> print(round(a, 8))
0.38709831
>>> print(round(e, 7))
0.2056451
>>> print(round(i, 6))
7.001089
>>> print(round(ome, 5))
48.24873
>>> print(round(arg, 6))
29.311401
"""
return orbital_elements(epoch, ORBITAL_ELEM, ORBITAL_ELEM_J2000)
@staticmethod
def geocentric_position(epoch):
"""This method computes the geocentric position of Mercury (right
ascension and declination) for the given epoch, as well as the
elongation angle.
:param epoch: Epoch to compute geocentric position, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple containing the right ascension, the declination and
the elongation angle as Angle objects
:rtype: tuple
:raises: TypeError if input value is of wrong type.
>>> epoch = Epoch(1992, 12, 20.0)
>>> ra, dec, elon = Mercury.geocentric_position(epoch)
>>> print(ra.ra_str(n_dec=1))
16h 33' 59.3''
>>> print(dec.dms_str(n_dec=1))
-20d 53' 31.6''
>>> print(elon.dms_str(n_dec=1))
18d 24' 29.8''
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Compute the heliocentric position of Mercury
l, b, r = Mercury.geometric_heliocentric_position(epoch, tofk5=False)
# Compute the heliocentric position of the Earth
l0, b0, r0 = Earth.geometric_heliocentric_position(epoch, tofk5=False)
# Convert to radians
lr = l.rad()
br = b.rad()
l0r = l0.rad()
b0r = b0.rad()
# Compute first iteration
x = r * cos(br) * cos(lr) - r0 * cos(b0r) * cos(l0r)
y = r * cos(br) * sin(lr) - r0 * cos(b0r) * sin(l0r)
z = r * sin(br) - r0 * sin(b0r)
delta = sqrt(x * x + y * y + z * z)
tau = 0.0057755183 * delta
# Adjust the epoch for light-time
epoch -= tau
# Compute again Mercury coordinates with this correction
l, b, r = Mercury.geometric_heliocentric_position(epoch, tofk5=False)
# Compute second iteration
lr = l.rad()
br = b.rad()
x = r * cos(br) * cos(lr) - r0 * cos(b0r) * cos(l0r)
y = r * cos(br) * sin(lr) - r0 * cos(b0r) * sin(l0r)
z = r * sin(br) - r0 * sin(b0r)
# Compute longitude and latitude
lamb = atan2(y, x)
beta = atan2(z, sqrt(x * x + y * y))
# Now, let's compute the aberration effect
t = (epoch - JDE2000) / 36525
e = 0.016708634 + t * (-0.000042037 - t * 0.0000001267)
pie = 102.93735 + t * (1.71946 + t * 0.00046)
pie = radians(pie)
lon = l0 + 180.0
lon = lon.rad()
k = 20.49552 # The constant of aberration
deltal1 = k * (-cos(lon - lamb) + e * cos(pie - lamb)) / cos(beta)
deltab1 = -k * sin(beta) * (sin(lon - lamb) - e * sin(pie - lamb))
deltal1 = Angle(0, 0, deltal1)
deltab1 = Angle(0, 0, deltab1)
# Correction to FK5 system
lamb = Angle(lamb, radians=True)
lamb = lamb.to_positive()
beta = Angle(beta, radians=True)
l_prime = lamb - t * (1.397 + t * 0.00031)
deltal2 = Angle(0, 0, -0.09033)
a = 0.03916 * (cos(l_prime.rad()) + sin(l_prime.rad()))
a = a * tan(b.rad())
deltal2 += Angle(0, 0, a)
deltab2 = 0.03916 * (cos(l_prime.rad()) - sin(l_prime.rad()))
deltab2 = Angle(0, 0, deltab2)
# Apply the corrections
lamb = lamb + deltal1 + deltal2
beta = beta + deltab1 + deltab2
# Correction for nutation
dpsi = nutation_longitude(epoch)
lamb += dpsi
e = true_obliquity(epoch)
ra, dec = ecliptical2equatorial(lamb, beta, e)
# Let's compute the elongation angle
lons, lats, rs = Sun.apparent_geocentric_position(epoch)
lambr = lamb.rad()
lsr = lons.rad()
betar = beta.rad()
elon = acos(cos(betar) * cos(lambr - lsr))
elon = Angle(elon, radians=True)
return ra, dec, elon
@staticmethod
def inferior_conjunction(epoch):
"""This method computes the time of the inferior conjunction closest to
the given epoch.
:param epoch: Epoch close to the desired inferior conjunction
:type epoch: :py:class:`Epoch`
:returns: The time when the inferior conjunction happens, as an Epoch
:rtype: :py:class:`Epoch`
:raises: TypeError if input value is of wrong type.
:raises: ValueError if input epoch outside the -2000/4000 range.
>>> epoch = Epoch(1993, 10, 1.0)
>>> conjunction = Mercury.inferior_conjunction(epoch)
>>> y, m, d = conjunction.get_date()
>>> print(y)
1993
>>> print(m)
11
>>> print(round(d, 4))
6.1449
>>> epoch = Epoch(1631, 10, 1.0)
>>> conjunction = Mercury.inferior_conjunction(epoch)
>>> y, m, d = conjunction.get_date()
>>> print(y)
1631
>>> print(m)
11
>>> print(round(d, 3))
7.306
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Check that the input epoch is within valid range
y = epoch.year()
if y < -2000.0 or y > 4000.0:
raise ValueError("Epoch outside the -2000/4000 range")
# Set some specific constants for Mercury's inferior conjunction
a = 2451612.023
b = 115.8774771
m0 = 63.5867
m1 = 114.2088742
k = round((365.2425 * y + 1721060.0 - a) / b)
jde0 = a + k * b
m = m0 + k * m1
m = Angle(m).to_positive()
m = m.rad()
t = (jde0 - 2451545.0) / 36525.0
corr = (0.0545 + 0.0002 * t +
sin(m) * (-6.2008 + t * (0.0074 + t * 0.00003)) +
cos(m) * (-3.275 + t * (-0.0197 + t * 0.00001)) +
sin(2.0 * m) * (0.4737 + t * (-0.0052 - t * 0.00001)) +
cos(2.0 * m) * (0.8111 + t * (0.0033 - t * 0.00002)) +
sin(3.0 * m) * (0.0037 + t * 0.0018) +
cos(3.0 * m) * (-0.1768 + t * t * 0.00001) +
sin(4.0 * m) * (-0.0211 - t * 0.0004) +
cos(4.0 * m) * (0.0326 - t * 0.0003) +
sin(5.0 * m) * (0.0083 + t * 0.0001) +
cos(5.0 * m) * (-0.004 + t * 0.0001))
to_return = jde0 + corr
return Epoch(to_return)
@staticmethod
def superior_conjunction(epoch):
"""This method computes the time of the superior conjunction closest to
the given epoch.
:param epoch: Epoch close to the desired superior conjunction
:type epoch: :py:class:`Epoch`
:returns: The time when the superior conjunction happens, as an Epoch
:rtype: :py:class:`Epoch`
:raises: TypeError if input value is of wrong type.
:raises: ValueError if input epoch outside the -2000/4000 range.
>>> epoch = Epoch(1993, 10, 1.0)
>>> conjunction = Mercury.superior_conjunction(epoch)
>>> y, m, d = conjunction.get_date()
>>> print(y)
1993
>>> print(m)
8
>>> print(round(d, 4))
29.3301
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Check that the input epoch is within valid range
y = epoch.year()
if y < -2000.0 or y > 4000.0:
raise ValueError("Epoch outside the -2000/4000 range")
# Set some specific constants for Mercury's superior conjunction
a = 2451554.084
b = 115.8774771
m0 = 6.4822
m1 = 114.2088742
k = round((365.2425 * y + 1721060.0 - a) / b)
jde0 = a + k * b
m = m0 + k * m1
m = Angle(m).to_positive()
m = m.rad()
t = (jde0 - 2451545.0) / 36525.0
corr = (-0.0548 - 0.0002 * t +
sin(m) * (7.3894 + t * (-0.01 - t * 0.00003)) +
cos(m) * (3.22 + t * (0.0197 - t * 0.00001)) +
sin(2.0 * m) * (0.8383 + t * (-0.0064 - t * 0.00001)) +
cos(2.0 * m) * (0.9666 + t * (0.0039 - t * 0.00003)) +
sin(3.0 * m) * (0.077 - t * 0.0026) +
cos(3.0 * m) * (0.2758 + t * (0.0002 - t * 0.00002)) +
sin(4.0 * m) * (-0.0128 - t * 0.0008) +
cos(4.0 * m) * (0.0734 + t * (-0.0004 - t * 0.00001)) +
sin(5.0 * m) * (-0.0122 - t * 0.0002) +
cos(5.0 * m) * (0.0173 - t * 0.0002))
to_return = jde0 + corr
return Epoch(to_return)
@staticmethod
def western_elongation(epoch):
"""This method computes the time of the western elongation closest to
the given epoch, as well as the corresponding maximum elongation angle.
:param epoch: Epoch close to the desired western elongation
:type epoch: :py:class:`Epoch`
:returns: A tuple with the time when the western elongation happens, as
an Epoch, and the maximum elongation angle, as an Angle
:rtype: tuple
:raises: TypeError if input value is of wrong type.
:raises: ValueError if input epoch outside the -2000/4000 range.
>>> epoch = Epoch(1993, 11, 1.0)
>>> time, elongation = Mercury.western_elongation(epoch)
>>> y, m, d = time.get_date()
>>> print(y)
1993
>>> print(m)
11
>>> print(round(d, 4))
22.6386
>>> print(round(elongation, 4))
19.7506
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Check that the input epoch is within valid range
y = epoch.year()
if y < -2000.0 or y > 4000.0:
raise ValueError("Epoch outside the -2000/4000 range")
# Set some specific constants for Mercury's inferior conjunction
a = 2451612.023
b = 115.8774771
m0 = 63.5867
m1 = 114.2088742
k = round((365.2425 * y + 1721060.0 - a) / b)
jde0 = a + k * b
m = m0 + k * m1
m = Angle(m).to_positive()
m = m.rad()
t = (jde0 - 2451545.0) / 36525.0
corr = (21.6249 - 0.0002 * t +
sin(m) * (0.1306 + t * 0.0065) +
cos(m) * (-2.7661 + t * (-0.0011 + t * 0.00001)) +
sin(2.0 * m) * (0.2438 + t * (-0.0024 - t * 0.00001)) +
cos(2.0 * m) * (0.5767 + t * 0.0023) +
sin(3.0 * m) * (0.1041) +
cos(3.0 * m) * (-0.0184 + t * 0.0007) +
sin(4.0 * m) * (-0.0051 - t * 0.0001) +
cos(4.0 * m) * (0.0048 + t * 0.0001) +
sin(5.0 * m) * (0.0026) +
cos(5.0 * m) * (0.0037))
elon = (22.4143 - 0.0001 * t +
sin(m) * (4.3651 + t * (-0.0048 - t * 0.00002)) +
cos(m) * (2.3787 + t * (0.0121 - t * 0.00001)) +
sin(2.0 * m) * (0.2674 + t * 0.0022) +
cos(2.0 * m) * (-0.3873 + t * (0.0008 + t * 0.00001)) +
sin(3.0 * m) * (-0.0369 - t * 0.0001) +
cos(3.0 * m) * (0.0017 - t * 0.0001) +
sin(4.0 * m) * (0.0059) +
cos(4.0 * m) * (0.0061 + t * 0.0001) +
sin(5.0 * m) * (0.0007) +
cos(5.0 * m) * (-0.0011))
elon = Angle(elon).to_positive()
to_return = jde0 + corr
return Epoch(to_return), elon
@staticmethod
def eastern_elongation(epoch):
"""This method computes the time of the eastern elongation closest to
the given epoch, as well as the corresponding maximum elongation angle.
:param epoch: Epoch close to the desired eastern elongation
:type epoch: :py:class:`Epoch`
:returns: A tuple with the time when the eastern elongation happens, as
an Epoch, and the maximum elongation angle, as an Angle
:rtype: tuple
:raises: TypeError if input value is of wrong type.
:raises: ValueError if input epoch outside the -2000/4000 range.
>>> epoch = Epoch(1990, 8, 1.0)
>>> time, elongation = Mercury.eastern_elongation(epoch)
>>> y, m, d = time.get_date()
>>> print(y)
1990
>>> print(m)
8
>>> print(round(d, 4))
11.8514
>>> print(round(elongation, 4))
27.4201
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Check that the input epoch is within valid range
y = epoch.year()
if y < -2000.0 or y > 4000.0:
raise ValueError("Epoch outside the -2000/4000 range")
# Set some specific constants for Mercury's inferior conjunction
a = 2451612.023
b = 115.8774771
m0 = 63.5867
m1 = 114.2088742
k = round((365.2425 * y + 1721060.0 - a) / b)
jde0 = a + k * b
m = m0 + k * m1
m = Angle(m).to_positive()
m = m.rad()
t = (jde0 - 2451545.0) / 36525.0
corr = (-21.6101 + 0.0002 * t +
sin(m) * (-1.9803 + t * (-0.006 + t * 0.00001)) +
cos(m) * (1.4151 + t * (-0.0072 - t * 0.00001)) +
sin(2.0 * m) * (0.5528 + t * (-0.0005 - t * 0.00001)) +
cos(2.0 * m) * (0.2905 + t * (0.0034 + t * 0.00001)) +
sin(3.0 * m) * (-0.1121 + t * (-0.0001 + t * 0.00001)) +
cos(3.0 * m) * (-0.0098 - t * 0.0015) +
sin(4.0 * m) * (0.0192) +
cos(4.0 * m) * (0.0111 + t * 0.0004) +
sin(5.0 * m) * (-0.0061) +
cos(5.0 * m) * (-0.0032 - t * 0.0001))
elon = (22.4697 +
sin(m) * (-4.2666 + t * (0.0054 + t * 0.00002)) +
cos(m) * (-1.8537 - t * 0.0137) +
sin(2.0 * m) * (0.3598 + t * (0.0008 - t * 0.00001)) +
cos(2.0 * m) * (-0.068 + t * 0.0026) +
sin(3.0 * m) * (-0.0524 - t * 0.0003) +
cos(3.0 * m) * (0.0052 - t * 0.0006) +
sin(4.0 * m) * (0.0107 + t * 0.0001) +
cos(4.0 * m) * (-0.0013 + t * 0.0001) +
sin(5.0 * m) * (-0.0021) +
cos(5.0 * m) * (0.0003))
elon = Angle(elon).to_positive()
to_return = jde0 + corr
return Epoch(to_return), elon
@staticmethod
def station_longitude_1(epoch):
"""This method computes the time of the 1st station in longitude
(i.e. when the planet is stationary and begins to move westward -
retrograde - among the starts) closest to the given epoch.
:param epoch: Epoch close to the desired inferior conjunction
:type epoch: :py:class:`Epoch`
:returns: Time when the 1st statin in longitude happens, as an Epoch
:rtype: :py:class:`Epoch`
:raises: TypeError if input value is of wrong type.
:raises: ValueError if input epoch outside the -2000/4000 range.
>>> epoch = Epoch(1993, 10, 1.0)
>>> sta1 = Mercury.station_longitude_1(epoch)
>>> y, m, d = sta1.get_date()
>>> print(y)
1993
>>> print(m)
10
>>> print(round(d, 4))
25.9358
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Check that the input epoch is within valid range
y = epoch.year()
if y < -2000.0 or y > 4000.0:
raise ValueError("Epoch outside the -2000/4000 range")
# Set some specific constants for Mercury's inferior conjunction
a = 2451612.023
b = 115.8774771
m0 = 63.5867
m1 = 114.2088742
k = round((365.2425 * y + 1721060.0 - a) / b)
jde0 = a + k * b
m = m0 + k * m1
m = Angle(m).to_positive()
m = m.rad()
t = (jde0 - 2451545.0) / 36525.0
corr = (-11.0761 + 0.0003 * t +
sin(m) * (-4.7321 + t * (0.0023 + t * 0.00002)) +
cos(m) * (-1.323 - t * 0.0156) +
sin(2.0 * m) * (0.227 - t * 0.0046) +
cos(2.0 * m) * (0.7184 + t * (0.0013 - t * 0.00002)) +
sin(3.0 * m) * (0.0638 + t * 0.0016) +
cos(3.0 * m) * (-0.1655 + t * 0.0007) +
sin(4.0 * m) * (-0.0395 - t * 0.0003) +
cos(4.0 * m) * (0.0247 - t * 0.0006) +
sin(5.0 * m) * (0.0131) +
cos(5.0 * m) * (-0.0008 + t * 0.0002))
to_return = jde0 + corr
return Epoch(to_return)
@staticmethod
def station_longitude_2(epoch):
"""This method computes the time of the 2nd station in longitude
(i.e. when the planet is stationary and begins to move eastward -
prograde - among the starts) closest to the given epoch.
:param epoch: Epoch close to the desired inferior conjunction
:type epoch: :py:class:`Epoch`
:returns: Time when the 2nd station in longitude happens, as an Epoch
:rtype: :py:class:`Epoch`
:raises: TypeError if input value is of wrong type.
:raises: ValueError if input epoch outside the -2000/4000 range.
>>> epoch = Epoch(1993, 10, 1.0)
>>> sta2 = Mercury.station_longitude_2(epoch)
>>> y, m, d = sta2.get_date()
>>> print(y)
1993
>>> print(m)
11
>>> print(round(d, 4))
15.0724
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Check that the input epoch is within valid range
y = epoch.year()
if y < -2000.0 or y > 4000.0:
raise ValueError("Epoch outside the -2000/4000 range")
# Set some specific constants for Mercury's inferior conjunction
a = 2451612.023
b = 115.8774771
m0 = 63.5867
m1 = 114.2088742
k = round((365.2425 * y + 1721060.0 - a) / b)
jde0 = a + k * b
m = m0 + k * m1
m = Angle(m).to_positive()
m = m.rad()
t = (jde0 - 2451545.0) / 36525.0
corr = (11.1343 - 0.0001 * t +
sin(m) * (-3.9137 + t * (0.0073 + t * 0.00002)) +
cos(m) * (-3.3861 + t * (-0.0128 + t * 0.00001)) +
sin(2.0 * m) * (0.5222 + t * (-0.004 - t * 0.00002)) +
cos(2.0 * m) * (0.5929 + t * (0.0039 - t * 0.00002)) +
sin(3.0 * m) * (-0.0593 + t * 0.0018) +
cos(3.0 * m) * (-0.1733 * t * (-0.0007 + t * 0.00001)) +
sin(4.0 * m) * (-0.0053 - t * 0.0006) +
cos(4.0 * m) * (0.0476 - t * 0.0001) +
sin(5.0 * m) * (0.007 + t * 0.0002) +
cos(5.0 * m) * (-0.0115 + t * 0.0001))
to_return = jde0 + corr
return Epoch(to_return)
@staticmethod
def perihelion_aphelion(epoch, perihelion=True):
"""This method computes the time of Perihelion (or Aphelion) closer to
a given epoch.
:param epoch: Epoch close to the desired Perihelion (or Aphelion)
:type epoch: :py:class:`Epoch`
:param peihelion: If True, the epoch of the closest Perihelion is
computed, if False, the epoch of the closest Aphelion is found.
:type bool:
:returns: The epoch of the desired Perihelion (or Aphelion)
:rtype: :py:class:`Epoch`
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(2000, 1, 1.0)
>>> e = Mercury.perihelion_aphelion(epoch)
>>> y, m, d, h, mi, s = e.get_full_date()
>>> print(y)
2000
>>> print(m)
2
>>> print(d)
15
>>> print(h)
18
>>> epoch = Epoch(2000, 3, 1.0)
>>> e = Mercury.perihelion_aphelion(epoch, perihelion=False)
>>> y, m, d, h, mi, s = e.get_full_date()
>>> print(y)
2000
>>> print(m)
3
>>> print(d)
30
>>> print(h)
17
"""
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input value")
# First approximation
k = 4.15201 * (epoch.year() - 2000.12)
if perihelion:
k = round(k)
else:
k = round(k + 0.5) - 0.5
jde = 2451590.257 + k * 87.96934963
# Compute the epochs half a day before and after
jde_before = jde - 0.5
jde_after = jde + 0.5
# Compute the Sun-Mercury distance for each epoch
l, b, r_b = Mercury.geometric_heliocentric_position(Epoch(jde_before))
l, b, r = Mercury.geometric_heliocentric_position(Epoch(jde))
l, b, r_a = Mercury.geometric_heliocentric_position(Epoch(jde_after))
# Call an interpolation object
m = Interpolation([jde_before, jde, jde_after], [r_b, r, r_a])
sol = m.minmax()
return Epoch(sol)
@staticmethod
def passage_nodes(epoch, ascending=True):
"""This function computes the time of passage by the nodes (ascending
or descending) of Mercury, nearest to the given epoch.
:param epoch: Epoch closest to the node passage
:type epoch: :py:class:`Epoch`
:param ascending: Whether the time of passage by the ascending (True)
or descending (False) node will be computed
:type ascending: bool
:returns: Tuple containing:
- Time of passage through the node (:py:class:`Epoch`)
- Radius vector when passing through the node (in AU, float)
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(2019, 1, 1)
>>> time, r = Mercury.passage_nodes(epoch)
>>> year, month, day = time.get_date()
>>> print(year)
2018
>>> print(month)
11
>>> print(round(day, 1))
24.7
>>> print(round(r, 4))
0.3143
"""
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input types")
# Get the orbital parameters
l, a, e, i, ome, arg = Mercury.orbital_elements_mean_equinox(epoch)
# Compute the time of passage through perihelion
t = Mercury.perihelion_aphelion(epoch)
# Get the time of passage through the node
time, r = passage_nodes_elliptic(arg, e, a, t, ascending)
return time, r
@staticmethod
def magnitude(sun_dist, earth_dist, phase_angle):
"""This function computes the approximate magnitude of Mercury.
:param sun_dist: Distance from Mercury to Sun, in Astronomical Units
:type sun_dist: float
:param earth_dist: Distance Mercury to Earth, in Astronomical Units
:type earth_dist: float
:param phase_angle: Mercury phase angle
:type phase_angle: float, :py:class:`Angle`
:returns: Mercury's magnitude
:rtype: float
:raises: TypeError if input values are of wrong type.
"""
if not (isinstance(sun_dist, float) and isinstance(earth_dist, float)
and isinstance(phase_angle, (float, Angle))):
raise TypeError("Invalid input types")
i = float(phase_angle)
i50 = i - 50.0
m = (1.16 + 5.0 * log10(sun_dist * earth_dist) + 0.02838 * i50 +
0.0001023 * i50 * i50)
return round(m, 1)
def main():
# Let's define a small helper function
def print_me(msg, val):
print("{}: {}".format(msg, val))
# Let's show some uses of Mercury class
print("\n" + 35 * "*")
print("*** Use of Mercury class")
print(35 * "*" + "\n")
# Let's now compute the heliocentric position for a given epoch
epoch = Epoch(2018, 10, 27.0)
lon, lat, r = Mercury.geometric_heliocentric_position(epoch)
print_me("Geometric Heliocentric Longitude", lon.to_positive())
print_me("Geometric Heliocentric Latitude", lat)
print_me("Radius vector", r)
print("")
# Compute the geocentric position for 1992/12/20:
epoch = Epoch(1992, 12, 20.0)
ra, dec, elon = Mercury.geocentric_position(epoch)
print_me("Right ascension", ra.ra_str(n_dec=1))
print_me("Declination", dec.dms_str(n_dec=1))
print_me("Elongation", elon.dms_str(n_dec=1))
print("")
# Print mean orbital elements for Mercury at 2065.6.24
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Mercury.orbital_elements_mean_equinox(epoch)
print_me("Mean longitude of the planet", round(l, 6)) # 203.494701
print_me("Semimajor axis of the orbit (UA)", round(a, 8)) # 0.38709831
print_me("Eccentricity of the orbit", round(e, 7)) # 0.2056451
print_me("Inclination on plane of the ecliptic", round(i, 6)) # 7.006171
print_me("Longitude of the ascending node", round(ome, 5)) # 49.10765
print_me("Argument of the perihelion", round(arg, 6)) # 29.367732
print("")
# Compute the time of the inferior conjunction close to 1993/10/1
epoch = Epoch(1993, 10, 1.0)
conjunction = Mercury.inferior_conjunction(epoch)
y, m, d = conjunction.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Inferior conjunction date", date)
# Compute the time of the superior conjunction close to 1993/10/1
epoch = Epoch(1993, 10, 1.0)
conjunction = Mercury.superior_conjunction(epoch)
y, m, d = conjunction.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Superior conjunction date", date)
print("")
# Compute the time and angle of the western elongation close to 1993/11/1
epoch = Epoch(1993, 11, 1.0)
time, elongation = Mercury.western_elongation(epoch)
y, m, d = time.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Western elongation date", date)
elong = round(elongation, 4)
print_me("Maximum western elongation angle", elong)
print("")
# Compute the time and angle of the eastern elongation close to 1990/8/1
epoch = Epoch(1990, 8, 1.0)
time, elongation = Mercury.eastern_elongation(epoch)
y, m, d = time.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Eastern elongation date", date)
elong = round(elongation, 4)
print_me("Maximum eastern elongation angle", elong)
print("")
# Compute the time of the station in longitude #1 close to 1993/10/1
epoch = Epoch(1993, 10, 1.0)
sta1 = Mercury.station_longitude_1(epoch)
y, m, d = sta1.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Date of station in longitude #1", date)
# Compute the time of the station in longitude #2 close to 1993/10/1
epoch = Epoch(1993, 10, 1.0)
sta2 = Mercury.station_longitude_2(epoch)
y, m, d = sta2.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Date of station in longitude #2", date)
print("")
# Find the epoch of the Perihelion closer to 2000/01/01
epoch = Epoch(2000, 1, 1.0)
e = Mercury.perihelion_aphelion(epoch)
y, m, d, h, mi, s = e.get_full_date()
peri = str(y) + '/' + str(m) + '/' + str(d) + ' at ' + str(h) + ' hours'
print_me("The Perihelion closest to 2000/1/1 happened on", peri)
print("")
# Compute the time of passage through an ascending node
epoch = Epoch(2019, 1, 1)
time, r = Mercury.passage_nodes(epoch)
y, m, d = time.get_date()
d = round(d, 1)
print("Time of passage through ascending node: {}/{}/{}".format(y, m, d))
# 2018/11/24.7
print("Radius vector at ascending node: {}".format(round(r, 4))) # 0.3143
if __name__ == "__main__":
main()
pymeeus-0.3.6/pymeeus/Minor.py 0000664 0000000 0000000 00000040054 13555455377 0016362 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from math import sin, cos, tan, acos, atan, atan2, sqrt
from pymeeus.base import TOL
from pymeeus.Angle import Angle
from pymeeus.Epoch import Epoch
from pymeeus.Coordinates import kepler_equation
from pymeeus.Sun import Sun
"""
.. module:: Minor
:synopsis: Class to model celestial bodies like comets and minor planets
:license: GNU Lesser General Public License v3 (LGPLv3)
.. moduleauthor:: Dagoberto Salazar
"""
class Minor(object):
"""
Class Minor models minor celestial bodies.
"""
def __init__(self, q, e, i, omega, w, t):
"""Minor constructor.
The Minor object is initialized with this constructor, setting the
orbital values and computing some internal parameters. This constructor
is build upon the 'set()' method.
:param q: Perihelion distance, in Astronomical Units
:type q: float
:param e: Eccentricity of the orbit
:type e: float
:param i: Inclination of the orbit, as an Angle object
:type i: :py:class:`Angle`
:param omega: Longitude of the ascending node, as an Angle object
:type omega: :py:class:`Angle`
:param w: Argument of the perihelion, as an Angle object
:type w: :py:class:`Angle`
:param t: Epoch of passage by perihelion, as an Epoch object
:type t: :py:class:`Epoch`
:raises: TypeError if input value is of wrong type.
"""
self._tol = TOL
self.set(q, e, i, omega, w, t)
def set(self, q, e, i, omega, w, t):
"""Method used to set the orbital values and set some internal
parameters.
:param q: Perihelion distance, in Astronomical Units
:type q: float
:param e: Eccentricity of the orbit
:type e: float
:param i: Inclination of the orbit, as an Angle object
:type i: :py:class:`Angle`
:param omega: Longitude of the ascending node, as an Angle object
:type omega: :py:class:`Angle`
:param w: Argument of the perihelion, as an Angle object
:type w: :py:class:`Angle`
:param t: Epoch of passage by perihelion, as an Epoch object
:type t: :py:class:`Epoch`
:raises: TypeError if input value is of wrong type.
"""
# First check that input value is of correct types
if not (isinstance(t, Epoch) and isinstance(q, float) and
isinstance(e, float) and isinstance(i, Angle) and
isinstance(omega, Angle) and isinstance(w, Angle)):
raise TypeError("Invalid input types")
# Compute auxiliary quantities
se = 0.397777156
ce = 0.917482062
omer = omega.rad()
ir = i.rad()
f = cos(omer)
g = sin(omer) * ce
h = sin(omer) * se
p = -sin(omer) * cos(ir)
qq = cos(omer) * cos(ir) * ce - sin(ir) * se
r = cos(omer) * cos(ir) * se + sin(ir) * ce
self._aa = atan2(f, p)
self._bb = atan2(g, qq)
self._cc = atan2(h, r)
self._am = sqrt(f * f + p * p)
self._bm = sqrt(g * g + qq * qq)
self._cm = sqrt(h * h + r * r)
# Store some orbital parameters
if abs(e - 1.0) > self._tol:
self._a = abs(q / (1.0 - e))
else:
self._a = q
self._q = q
self._e = e
self._i = i
self._omega = omega
self._w = w
self._t = t
# Compute the mean motion from the semi-major axis (degrees/day)
self._n = 0.9856076686 / (self._a * sqrt(self._a))
return
def _near_parabolic(self, t):
"""This internal function handles the computation of the true anomaly
and the radius vector when the eccentricity is close to 1.
:param t: Days since perihelion
:type t: float
:returns: A tuple containing the true anomaly (as an Angle object) and
the radius vector (in Astronomical Units).
:rtype: tuple
:raises: TypeError if input value is of wrong type, and ValueError if
convergence is not possible
>>> q = 0.5871018
>>> e = 0.9672746
>>> t = 20.0
>>> i = Angle(0.0)
>>> omega = Angle(0.0)
>>> w = Angle(0.0)
>>> ep = Epoch(2000, 1, 1.5)
>>> minor = Minor(q, e, i, omega, w, ep)
>>> v, r = minor._near_parabolic(t)
>>> print(round(v, 5))
52.85331
>>> print(round(r, 6))
0.729116
>>> q = 3.363943
>>> e = 1.05731
>>> t = 1237.1
>>> minor = Minor(q, e, i, omega, w, ep)
>>> v, r = minor._near_parabolic(t)
>>> print(round(v, 5))
109.40598
>>> print(round(r, 6))
10.668551
"""
# First check that input value is of correct types
if not isinstance(t, float):
raise TypeError("Invalid input type")
# Let's start defining some constants and renaming some parameters
k = 0.01720209895
d1 = 10000
c = 1.0 / 3.0
d = self._tol
q = self._q
e = self._e
q1 = k * sqrt((1.0 + e) / q) / (2.0 * q)
g = (1.0 - e) / (1.0 + e)
# If t == 0, then r = q and v = 0
if abs(t) > d:
q2 = q1 * t
s = 2.0 / (3.0 * abs(q2))
s = 2.0 / tan(2.0 * atan(tan(atan(s) / 2) ** c))
if t < 0.0:
s = -s
# Parabolic case
if abs(e - 1.0) < d:
v = 2.0 * atan(s)
rr = q * (1.0 + e) / (1.0 + e * cos(v))
v = Angle(v, radians=True).to_positive()
return v, rr
ll = 0.0
s0 = s + 1.0
while abs(s - s0) > d:
s0 = s
z = 1
y = s * s
g1 = -y * s
q3 = q2 + 2.0 * g * s * y / 3.0
f = d + 1.0
while abs(f) > d:
z += 1
g1 = -g1 * g * y
z1 = (z - (z + 1.0) * g) / (2.0 * z + 1.0)
f = z1 * g1
q3 = q3 + f
if z > 50 or abs(f) > d1:
raise ValueError("No convergence")
ll += 1
if ll > 50:
raise ValueError("No convergence")
s1 = s + 1.0
while abs(s - s1) > d:
s1 = s
s = (2.0 * s * s * s / 3.0 + q3) / (s * s + 1.0)
v = 2.0 * atan(s)
rr = q * (1.0 + e) / (1.0 + e * cos(v))
v = Angle(v, radians=True).to_positive()
return v, rr
else:
rr = q
v = Angle(0.0)
return v, rr
def geocentric_position(self, epoch):
"""This method computes the geocentric position of a minor celestial
body (right ascension and declination) for the given epoch, and
referred to the standard equinox J2000.0. Additionally, it also
computes the elongation angle to the Sun.
:param epoch: Epoch to compute geocentric position, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple containing the right ascension, the declination and
the elongation angle to the Sun, as Angle objects
:rtype: tuple
:raises: TypeError if input value is of wrong type.
>>> a = 2.2091404
>>> e = 0.8502196
>>> q = a * (1.0 - e)
>>> i = Angle(11.94524)
>>> omega = Angle(334.75006)
>>> w = Angle(186.23352)
>>> t = Epoch(1990, 10, 28.54502)
>>> minor = Minor(q, e, i, omega, w, t)
>>> epoch = Epoch(1990, 10, 6.0)
>>> ra, dec, p = minor.geocentric_position(epoch)
>>> print(ra.ra_str(n_dec=1))
10h 34' 13.7''
>>> print(dec.dms_str(n_dec=0))
19d 9' 32.0''
>>> print(round(p, 2))
40.51
>>> t = Epoch(1998, 4, 14.4358)
>>> q = 1.487469
>>> e = 1.0
>>> i = Angle(0.0)
>>> omega = Angle(0.0)
>>> w = Angle(0.0)
>>> minor = Minor(q, e, i, omega, w, t)
>>> epoch = Epoch(1998, 8, 5.0)
>>> ra, dec, p = minor.geocentric_position(epoch)
>>> print(ra.ra_str(n_dec=1))
5h 45' 34.5''
>>> print(dec.dms_str(n_dec=0))
23d 23' 53.0''
>>> print(round(p, 2))
45.73
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Get internal parameters
aa, bb, cc = self._aa, self._bb, self._cc
am, bm, cm = self._am, self._bm, self._cm
# Get the mean motion and other orbital parameters
n = self._n
a = self._a
e = self._e
w = self._w
t = self._t
# Time since perihelion
t_peri = epoch - t
# Now, compute the mean anomaly, in degrees
m = t_peri * n
m = Angle(m)
if e < 0.98:
# Elliptic case
# With the mean anomaly, use Kepler's equation to find E and v
ee, v = kepler_equation(e, m)
ee = Angle(ee).to_positive()
# Get r
er = ee.rad()
rr = a * (1.0 - e * cos(er))
elif abs(e - 1.0) < self._tol:
# Parabolic case
q = self._q
ww = (0.03649116245 * (epoch - self._t)) / (q * sqrt(q))
sp = ww / 3.0
iterate = True
while iterate:
s = (2.0 * sp * sp * sp + ww) / (3.0 * (sp * sp + 1.0))
iterate = abs(s - sp) > self._tol
sp = s
v = 2.0 * atan(s)
v = Angle(v, radians=True)
rr = q * (1.0 + s * s)
else:
# We are in the near-parabolic case
v, rr = self._near_parabolic(t_peri)
# Compute the heliocentric rectangular equatorial coordinates
wr = w.rad()
vr = Angle(v).rad()
x = rr * am * sin(aa + wr + vr)
y = rr * bm * sin(bb + wr + vr)
z = rr * cm * sin(cc + wr + vr)
# Now let's compute Sun's rectangular coordinates
xs, ys, zs = Sun.rectangular_coordinates_j2000(epoch)
xi = x + xs
eta = y + ys
zeta = z + zs
delta = sqrt(xi * xi + eta * eta + zeta * zeta)
# We need to correct for the effect of light-time. Compute delay tau
tau = 0.0057755183 * delta
# Recompute some critical parameters
t_peri = epoch - t - tau
# Now, compute the mean anomaly, in degrees
m = t_peri * n
m = Angle(m)
if e < 0.98:
# Elliptic case
# With the mean anomaly, use Kepler's equation to find E and v
ee, v = kepler_equation(e, m)
ee = Angle(ee).to_positive()
# Get r
er = ee.rad()
rr = a * (1.0 - e * cos(er))
elif abs(e - 1.0) < self._tol:
# Parabolic case
q = self._q
ww = (0.03649116245 * (epoch - self._t)) / (q * sqrt(q))
sp = ww / 3.0
iterate = True
while iterate:
s = (2.0 * sp * sp * sp + ww) / (3.0 * (sp * sp + 1.0))
iterate = abs(s - sp) > self._tol
sp = s
v = 2.0 * atan(s)
v = Angle(v, radians=True)
rr = q * (1.0 + s * s)
else:
# We are in the near-parabolic case
v, rr = self._near_parabolic(t_peri)
# Compute the heliocentric rectangular equatorial coordinates
wr = w.rad()
vr = Angle(v).rad()
x = rr * am * sin(aa + wr + vr)
y = rr * bm * sin(bb + wr + vr)
z = rr * cm * sin(cc + wr + vr)
xi = x + xs
eta = y + ys
zeta = z + zs
ra = Angle(atan2(eta, xi), radians=True)
dec = Angle(atan2(zeta, sqrt(xi * xi + eta * eta)), radians=True)
r_sun = sqrt(xs * xs + ys * ys + zs * zs)
psi = acos((xi * xs + eta * ys + zeta * zs) / (r_sun * delta))
psi = Angle(psi, radians=True)
return ra, dec, psi
def heliocentric_ecliptical_position(self, epoch):
"""This method computes the heliocentric position of a minor celestial
body, providing the result in ecliptical coordinates.
:param epoch: Epoch to compute geocentric position, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple containing longitude and latitude, as Angle objects
:rtype: tuple
:raises: TypeError if input value is of wrong type.
>>> a = 2.2091404
>>> e = 0.8502196
>>> q = a * (1.0 - e)
>>> i = Angle(11.94524)
>>> omega = Angle(334.75006)
>>> w = Angle(186.23352)
>>> t = Epoch(1990, 10, 28.54502)
>>> epoch = Epoch(1990, 10, 6.0)
>>> minor = Minor(q, e, i, omega, w, t)
>>> lon, lat = minor.heliocentric_ecliptical_position(epoch)
>>> print(lon.dms_str(n_dec=1))
66d 51' 57.8''
>>> print(lat.dms_str(n_dec=1))
11d 56' 14.4''
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Get the mean motion and other orbital parameters
n = self._n
a = self._a
e = self._e
i = self._i
omega = self._omega
w = self._w
t = self._t
# Time since perihelion
t_peri = epoch - t
# Now, compute the mean anomaly, in degrees
m = t_peri * n
m = Angle(m)
# With the mean anomaly, use Kepler's equation to find E and v
ee, v = kepler_equation(e, m)
ee = Angle(ee).to_positive()
# Get r
er = ee.rad()
r = a * (1.0 - e * cos(er))
# Compute the heliocentric rectangular ecliptical coordinates
wr = w.rad()
vr = Angle(v).rad()
ur = wr + vr
omer = omega.rad()
ir = i.rad()
x = r * (cos(omer) * cos(ur) - sin(omer) * sin(ur) * cos(ir))
y = r * (sin(omer) * cos(ur) + cos(omer) * sin(ur) * cos(ir))
z = r * sin(ir) * sin(ur)
lon = atan2(y, x)
lat = atan2(z, sqrt(x * x + y * y))
return Angle(lon, radians=True), Angle(lat, radians=True)
def main():
# Let's define a small helper function
def print_me(msg, val):
print("{}: {}".format(msg, val))
# Let's show some uses of Minor class
print("\n" + 35 * "*")
print("*** Use of Minor class")
print(35 * "*" + "\n")
# Let's compute the equatorial coordinates of comet Encke
a = 2.2091404
e = 0.8502196
q = a * (1.0 - e)
i = Angle(11.94524)
omega = Angle(334.75006)
w = Angle(186.23352)
t = Epoch(1990, 10, 28.54502)
epoch = Epoch(1990, 10, 6.0)
minor = Minor(q, e, i, omega, w, t)
ra, dec, elong = minor.geocentric_position(epoch)
print_me("Right ascension", ra.ra_str(n_dec=1)) # 10h 34' 13.7''
print_me("Declination", dec.dms_str(n_dec=0)) # 19d 9' 32.0''
print_me("Elongation", round(elong, 2)) # 40.51
print("")
# Now compute the heliocentric ecliptical coordinates
lon, lat = minor.heliocentric_ecliptical_position(epoch)
print_me("Heliocentric ecliptical longitude", lon.dms_str(n_dec=1))
# 66d 51' 57.8''
print_me("Heliocentric ecliptical latitude", lat.dms_str(n_dec=1))
# 11d 56' 14.4''
if __name__ == "__main__":
main()
pymeeus-0.3.6/pymeeus/Neptune.py 0000664 0000000 0000000 00000335501 13555455377 0016720 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from math import sin, cos, tan, acos, atan2, sqrt, radians, log10
from pymeeus.Angle import Angle
from pymeeus.Epoch import Epoch, JDE2000
from pymeeus.Coordinates import (
geometric_vsop_pos, apparent_vsop_pos, orbital_elements,
nutation_longitude, true_obliquity, ecliptical2equatorial
)
from pymeeus.Earth import Earth
from pymeeus.Sun import Sun
"""
.. module:: Neptune
:synopsis: Class to model Neptune planet
:license: GNU Lesser General Public License v3 (LGPLv3)
.. moduleauthor:: Dagoberto Salazar
"""
VSOP87_L = [
# L0
[
[531188633.047, 0.00000000000, 0.00000000000],
[1798475.509, 2.90101273050, 38.13303563780],
[1019727.662, 0.48580923660, 1.48447270830],
[124531.845, 4.83008090682, 36.64856292950],
[42064.450, 5.41054991607, 2.96894541660],
[37714.589, 6.09221834946, 35.16409022120],
[33784.734, 1.24488865578, 76.26607127560],
[16482.741, 0.00007729261, 491.55792945680],
[9198.582, 4.93747059924, 39.61750834610],
[8994.249, 0.27462142569, 175.16605980020],
[4216.235, 1.98711914364, 73.29712585900],
[3364.818, 1.03590121818, 33.67961751290],
[2284.800, 4.20606932559, 4.45341812490],
[1433.512, 2.78340432711, 74.78159856730],
[900.240, 2.07606702418, 109.94568878850],
[744.996, 3.19032530145, 71.81265315070],
[506.206, 5.74785370252, 114.39910691340],
[399.552, 0.34972342569, 1021.24889455140],
[345.195, 3.46186210169, 41.10198105440],
[306.338, 0.49684039897, 0.52126486180],
[287.322, 4.50523446022, 0.04818410980],
[323.004, 2.24815188609, 32.19514480460],
[340.323, 3.30369900416, 77.75054398390],
[266.605, 4.88932609483, 0.96320784650],
[227.079, 1.79713054538, 453.42489381900],
[244.722, 1.24693337933, 9.56122755560],
[232.887, 2.50459795017, 137.03302416240],
[282.170, 2.24565579693, 146.59425171800],
[251.941, 5.78166597292, 388.46515523820],
[150.180, 2.99706110414, 5.93789083320],
[170.404, 3.32390630650, 108.46121608020],
[151.401, 2.19153094280, 33.94024994380],
[148.295, 0.85948986145, 111.43016149680],
[118.672, 3.67706204305, 2.44768055480],
[101.821, 5.70539236951, 0.11187458460],
[97.873, 2.80518260528, 8.07675484730],
[103.054, 4.40441222000, 70.32818044240],
[103.305, 0.04078966679, 0.26063243090],
[109.300, 2.41599378049, 183.24281464750],
[73.938, 1.32805041516, 529.69096509460],
[77.725, 4.16446516424, 4.19278569400],
[86.379, 4.22834506045, 490.07345674850],
[81.536, 5.19908046216, 493.04240216510],
[71.503, 5.29530386579, 350.33211960040],
[64.418, 3.54541016050, 168.05251279940],
[62.570, 0.15028731465, 182.27960680100],
[58.488, 3.50106873945, 145.10977900970],
[48.276, 1.11259925628, 112.91463420510],
[47.229, 4.57373229818, 46.20979048510],
[39.124, 1.66569356050, 213.29909543800],
[47.728, 0.12906212461, 484.44438245600],
[46.858, 3.01699530327, 498.67147645760],
[38.659, 2.38685706479, 2.92076130680],
[47.046, 4.49844660400, 173.68158709190],
[47.565, 2.58404814824, 219.89137757700],
[44.714, 5.47302733614, 176.65053250850],
[32.279, 3.45759151220, 30.71067209630],
[28.249, 4.13282446716, 6.59228213900],
[24.433, 4.55736848232, 106.97674337190],
[24.661, 3.67822620786, 181.75834193920],
[24.505, 1.55095867965, 7.11354700080],
[21.848, 1.04366818343, 39.09624348430],
[16.936, 6.10896452834, 44.72531777680],
[22.169, 2.74932970271, 256.53994050650],
[16.614, 4.98188930613, 37.61177077600],
[17.728, 3.55049134167, 1.37259812370],
[17.347, 2.14069234880, 42.58645376270],
[14.953, 3.36405649131, 98.89998852460],
[14.566, 0.69857991985, 1550.93985964600],
[15.676, 6.22010212025, 454.90936652730],
[13.243, 5.61712542227, 68.84370773410],
[14.837, 3.52557245517, 25.60286266560],
[12.757, 0.04509743861, 11.04570026390],
[11.988, 4.81687553351, 24.11838995730],
[11.060, 1.78958277553, 7.42236354150],
[12.108, 1.87022663714, 79.23501669220],
[11.698, 0.49005698002, 1.59634729290],
[10.459, 2.38743199893, 381.35160823740],
[11.681, 3.85151357766, 218.40690486870],
[8.744, 0.14168568610, 148.07872442630],
[9.196, 1.00274090619, 72.07328558160],
[11.343, 0.81432278263, 525.49817940060],
[10.097, 5.03383557061, 601.76425067620],
[8.035, 1.77685723010, 0.21244832110],
[8.382, 3.07534786987, 1.27202438720],
[10.803, 2.92081211459, 293.18850343600],
[7.666, 1.52223325105, 115.88357962170],
[7.531, 5.37537256533, 5.10780943070],
[8.691, 4.74352784364, 143.62530630140],
[10.183, 1.15395455831, 6244.94281435360],
[8.283, 0.35956716764, 138.51749687070],
[9.544, 4.02452832984, 152.53214255120],
[7.274, 4.10937535938, 251.43213107580],
[7.465, 1.72131945843, 31.01948863700],
[6.902, 4.62452068308, 2.70831298570],
[7.094, 5.11528393609, 312.19908396260],
[7.929, 2.10765101655, 27.08733537390],
[6.156, 3.50746507109, 28.57180808220],
[7.134, 2.05292376023, 278.25883401880],
[8.193, 2.58588219154, 141.22580985640],
[5.499, 2.09250039025, 1.69692102940],
[5.279, 4.09390686798, 983.11585891360],
[6.947, 3.48041784595, 415.29185818120],
[5.916, 0.68957324226, 62.25142559510],
[5.925, 4.02504592620, 255.05546779820],
[4.606, 1.17779101436, 43.24084506850],
[5.357, 3.63061058987, 5.41662597140],
[5.918, 2.57693824084, 10175.15251057320],
[5.482, 3.07979737280, 329.83706636550],
[3.956, 5.00418696742, 184.72728735580],
[5.408, 3.31313295602, 528.20649238630],
[4.767, 4.91981150665, 456.39383923560],
[3.770, 1.57277409442, 32.71640966640],
[3.924, 4.92763242635, 180.27386923090],
[3.707, 4.82965453201, 221.37585028530],
[3.802, 4.96279204998, 594.65070367540],
[4.014, 1.63905164030, 40.58071619260],
[3.061, 0.39713858313, 1.43628859850],
[3.261, 4.65478978469, 29.22619938800],
[3.474, 5.65891305944, 395.57870223900],
[2.918, 5.91079083895, 1.22384027740],
[3.649, 3.88114678609, 494.52687487340],
[3.225, 5.57423738665, 1014.13534755060],
[2.845, 0.56009386585, 144.14657116320],
[2.848, 0.55423029727, 567.82400073240],
[3.440, 1.70887250883, 12.53017297220],
[3.267, 5.63287799820, 488.58898404020],
[3.107, 5.79335949207, 105.49227066360],
[2.712, 2.43726364359, 60.76695288680],
[3.202, 2.21483496593, 41.05379694460],
[3.134, 4.69665220513, 82.85835341460],
[3.590, 5.69939670162, 1124.34166877000],
[2.967, 0.54448940101, 135.54855145410],
[3.211, 4.19927605853, 291.70403072770],
[2.899, 5.99669788291, 22.63391724900],
[3.143, 2.93495725805, 31.23193695810],
[2.729, 4.62707721219, 5.62907429250],
[2.513, 5.60391563025, 19.12245511120],
[2.690, 5.32070128202, 2.00573757010],
[2.630, 6.00855841124, 37.16982779130],
[2.296, 6.06934502789, 451.94042111070],
[2.858, 4.88677262419, 258.02441321480],
[2.879, 5.12239168488, 38.65430049960],
[2.270, 2.08634524182, 30.05628079050],
[2.301, 3.35951602914, 1028.36244155220],
[3.001, 3.59143817947, 211.81462272970],
[2.237, 0.38455553470, 3.62333672240],
[2.901, 3.24755614136, 366.48562929500],
[2.592, 1.36262641469, 35.42472265210],
[2.418, 4.93467056526, 47.69426319340],
[2.089, 5.79838063413, 4.66586644600],
[2.586, 2.69392971321, 38.18121974760],
[1.913, 5.53560681085, 149.56319713460],
[1.971, 6.00790964671, 34.20088237470],
[2.586, 6.24984047544, 38.08485152800],
[2.098, 4.57819744766, 1019.76442184310],
[1.869, 3.85907708723, 911.04257333200],
[2.486, 5.21235809332, 140.00196957900],
[1.795, 1.68012868451, 1059.38193018920],
[2.326, 2.82664069146, 807.94979911340],
[1.984, 5.54763522932, 1022.73336725970],
[1.919, 5.10717766499, 216.92243216040],
[2.004, 5.47811228948, 63.73589830340],
[2.021, 4.15631916516, 178.13500521680],
[1.760, 6.00927149342, 172.19711438360],
[2.140, 2.65037925793, 700.66423920080],
[1.988, 3.35850272780, 186.21176006410],
[1.956, 5.01527508588, 294.67297614430],
[1.966, 4.07957525462, 20.60692781950],
[1.637, 0.53823942149, 67.35923502580],
[1.540, 2.62327849119, 41.75637236020],
[1.810, 5.81430038477, 129.91947716160],
[1.776, 4.37047808449, 328.35259365720],
[1.460, 2.63664516309, 2.85707083200],
[1.388, 2.10598045632, 3.93215326310],
[1.352, 0.55618245459, 0.65439130580],
[1.668, 2.77543377384, 16.15350969460],
[1.338, 0.37643611305, 14.01464568050],
[1.218, 0.73456434750, 426.59819087600],
[1.531, 4.54891769768, 526.72201967800],
[1.610, 3.40993944436, 403.13419222450],
[1.361, 4.48227243414, 17.63798240290],
[1.589, 5.59323020112, 3302.47939106200],
[1.132, 5.64520725360, 151.04766984290],
[1.357, 4.06399031430, 26.82670294300],
[1.494, 4.98692049495, 666.72398925700],
[1.077, 4.30911470250, 0.63313944640],
[1.042, 6.02756893581, 106.01353552540],
[1.060, 0.74679491358, 487.36514376280],
[1.310, 3.78526380930, 386.98068252990],
[1.342, 4.52685061062, 563.63121503840],
[0.986, 0.00600924269, 81.37388070630],
[1.232, 5.17443930901, 331.32153907380],
[0.929, 4.51267465978, 38.39366806870],
[0.956, 3.50447791020, 64.95973858080],
[0.929, 4.43109514438, 37.87240320690],
[0.926, 6.09803297747, 4.14460158420],
[0.972, 0.59038366513, 8.90683624980],
[1.246, 4.69840351226, 389.94962794650],
[1.009, 5.98451242784, 142.14083359310],
[1.020, 0.83233892300, 39.35687591520],
[1.013, 0.37845630298, 36.90919536040],
[0.940, 2.42688145966, 343.21857259960],
[0.974, 5.23958752786, 253.57099508990],
[0.964, 5.09748190218, 357.44566660120],
[0.835, 1.45568626670, 35.21227433100],
[1.077, 0.71409061316, 44.07092647100],
[1.083, 2.27578897621, 6.90109867970],
[0.938, 5.03471583911, 69.36497259590],
[1.078, 1.20253141912, 35.68535508300],
[1.027, 0.18243183397, 84.34282612290],
[0.764, 4.62720907712, 0.83008140250],
[1.013, 0.42234855022, 32.45577723550],
[0.939, 4.50445799766, 365.00115658670],
[0.756, 0.82872484717, 17.52610781830],
[0.916, 3.89409205418, 38.24491022240],
[0.736, 4.78125743795, 5.36844186160],
[0.762, 0.01897337130, 189.39315380180],
[0.738, 2.31770478416, 42.32582133180],
[0.860, 4.82440483506, 210.33015002140],
[0.888, 3.20360339895, 348.84764689210],
[0.916, 5.04967792934, 38.02116105320],
[0.638, 0.63267396269, 244.31858407500],
[0.636, 1.02615137352, 2080.63082474060],
[0.774, 5.44432678139, 367.97010200330],
[0.644, 1.94044989547, 446.31134681820],
[0.631, 4.82928491724, 460.53844081980],
[0.855, 3.57592750113, 439.78275515400],
[0.678, 4.48687912809, 351.81659230870],
[0.724, 4.89141609280, 119.50691634410],
[0.594, 0.59315717529, 491.03666459500],
[0.655, 1.99014093000, 19.01058052660],
[0.580, 2.57189536188, 492.07919431860],
[0.694, 0.08328521209, 5.67725840230],
[0.733, 5.81485239057, 29.74746424980],
[0.666, 3.42196897591, 179.09821306330],
[0.678, 0.29428615814, 171.23390653710],
[0.635, 2.13805182663, 164.12035953630],
[0.623, 5.61454940380, 285.37238101960],
[0.529, 1.88063108785, 416.77633088950],
[0.529, 5.13250788030, 697.74347789400],
[0.500, 1.49548514415, 704.85702489480],
[0.487, 4.97772067947, 274.06604832480],
[0.666, 6.26456825266, 1474.67378837040],
[0.532, 0.25784352716, 477.33083545520],
[0.557, 0.71378452161, 80.71948940050],
[0.556, 2.60791360513, 418.26080359780],
[0.584, 4.29064541383, 16.67477455640],
[0.524, 5.42759392280, 290.21955801940],
[0.524, 0.29054995359, 247.23934538180],
[0.541, 4.36400580938, 815.06334611420],
[0.526, 1.66512720297, 97.41551581630],
[0.497, 4.72640318293, 401.64971951620],
[0.432, 2.98481475894, 100.38446123290],
[0.382, 0.28067758468, 8.38557138800],
[0.424, 6.16774845481, 178.78939652260],
[0.484, 0.01535318279, 738.79727483860],
[0.518, 4.48916591410, 875.83029900100],
[0.506, 5.38611121207, 404.61866493280],
[0.396, 4.62747640832, 6.15033915430],
[0.466, 0.23340415764, 120.99138905240],
[0.409, 3.08849480895, 59.28248017850],
[0.470, 5.01853200224, 313.68355667090],
[0.442, 3.68919475089, 457.87831194390],
[0.384, 3.69499925394, 160.93896579860],
[0.364, 0.76192181046, 104.00779795530],
[0.416, 0.26652109651, 103.09277421860],
[0.401, 4.06530055968, 14.66903698630],
[0.454, 3.72767803715, 476.43131808350],
[0.434, 0.33533802200, 984.60033162190],
[0.340, 0.99915726716, 31.54075349880],
[0.420, 3.65147769268, 20.49505323490],
[0.334, 0.35121412008, 1227.43444298860],
[0.323, 5.45836731979, 918.15612033280],
[0.407, 4.19457842203, 309.79958751760],
[0.381, 0.01364856960, 495.49008271990],
[0.334, 4.05924071124, 8.33738727820],
[0.380, 3.17063415023, 487.62577619370],
[0.309, 0.48352303405, 118.02244363580],
[0.380, 2.70238752925, 134.11226285560],
[0.362, 4.88985810610, 438.29828244570],
[0.327, 2.91090790412, 505.78502345840],
[0.308, 0.96082817124, 21.14944454070],
[0.288, 1.48123872077, 220.41264243880],
[0.293, 2.56582281789, 662.53120356300],
[0.331, 4.37715965811, 180.79513409270],
[0.326, 2.46104924164, 169.53698550770],
[0.289, 2.63591886391, 55.77101804070],
[0.288, 5.02487283285, 1440.73353842660],
[0.344, 1.48930997270, 166.56804009110],
[0.266, 0.63672427386, 79.18683258240],
[0.268, 5.02354540478, 377.41945497430],
[0.308, 1.50185265748, 77.22927912210],
[0.324, 5.30240189273, 457.61767951300],
[0.265, 1.08736632800, 450.45594840240],
[0.264, 0.83337660655, 488.37653571910],
[0.290, 1.80003152563, 101.86893394120],
[0.262, 2.30390003360, 494.73932319450],
[0.325, 5.52669889053, 441.26722786230],
[0.254, 0.02963623277, 117.36805233000],
[0.300, 0.17435705540, 252.91660378410],
[0.315, 5.34885013040, 183.76407950930],
[0.313, 5.45945846595, 13.49338081870],
[0.306, 5.23085809622, 45.24658263860],
[0.237, 0.32676889138, 208.84567731310],
[0.263, 2.66670785888, 464.73122651380],
[0.234, 1.82700149824, 52175.80628314840],
[0.275, 5.04385701142, 156.15547927360],
[0.265, 5.64967127743, 326.86812094890],
[0.247, 1.74540930625, 65.87476231750],
[0.269, 6.09827783249, 1654.03263386460],
[0.229, 2.25832077914, 190.66517818900],
[0.294, 5.45249564193, 206.18554843720],
[0.238, 1.55647021369, 79.88940799800],
[0.230, 6.13158632762, 178.34745353790],
[0.274, 4.10829870815, 518.38463239980],
[0.225, 3.86300359251, 171.98466606250],
[0.228, 2.48511565618, 12566.15169998280],
[0.272, 5.61149862463, 148.33935685720],
[0.214, 1.45987216039, 522.57741809380],
[0.211, 4.04791980901, 6205.32530600750],
[0.266, 0.99036038827, 209.10630974400],
[0.230, 0.54049951530, 532.61172640140],
[0.226, 3.84152961620, 283.62727588040],
[0.243, 5.32730346969, 485.92885516430],
[0.209, 4.35051470487, 536.80451209540],
[0.232, 3.01948719112, 10.93382567930],
[0.264, 5.70536379124, 490.33408917940],
[0.280, 3.99993658196, 674.80074410430],
[0.246, 0.37698964335, 157.63995198190],
[0.219, 5.67679857772, 52099.54021187280],
[0.251, 1.52353965506, 6.85291456990],
[0.203, 5.44328656642, 145.63104387150],
[0.238, 0.96169723853, 497.18700374930],
[0.219, 4.52300776062, 1615.89959822680],
[0.275, 2.37619210741, 2118.76386037840],
[0.258, 5.12448148780, 608.87779767700],
[0.260, 3.88543008475, 513.07988101300],
[0.191, 3.72574595369, 65.22037101170],
[0.211, 0.06484535455, 215.43795945210],
[0.236, 3.95835282821, 141.48644228730],
[0.189, 5.28135043909, 377.15882254340],
[0.243, 4.35559878377, 482.95990974770],
[0.243, 6.06808644973, 154.01661525950],
[0.249, 1.57215637373, 14.22709400160],
[0.238, 1.93340192445, 500.15594916590],
[0.209, 5.02893682321, 364.55921360200],
[0.227, 5.72984298540, 1543.82631264520],
[0.217, 2.45036922991, 187.17496791060],
[0.181, 1.65699502247, 1627.20593092160],
[0.214, 1.60213179145, 11.30633269480],
[0.203, 0.74638490279, 14.55716240170],
[0.192, 3.17719161639, 343.47920503050],
[0.177, 1.50027795761, 9.44935297100],
[0.177, 0.03038098292, 165.60483224460],
[0.176, 4.64462444674, 315.16802937920],
[0.208, 2.65835778368, 496.01134758170],
[0.174, 2.76155855705, 49.17873590170],
[0.196, 1.95549714182, 335.77495719870],
[0.200, 4.16839394758, 285.11174858870],
[0.199, 0.06168021293, 73.55775828990],
[0.188, 6.17288913873, 535.32003938710],
[0.215, 1.92414563346, 552.69738935910],
[0.166, 5.49038139690, 10135.53500222710],
[0.192, 0.96973434120, 304.23420369990],
[0.209, 5.34065233845, 13.64213866500],
[0.203, 5.11234865419, 324.72925693480],
[0.177, 3.50680841790, 207.36120460480],
[0.174, 1.95010708561, 319.31263096340],
[0.187, 5.57685931698, 266.10116806210],
[0.181, 1.43525075751, 279.74330672710],
[0.165, 4.00537112057, 493.56366702690],
[0.191, 1.68313683465, 563.37058260750],
[0.173, 3.93200456456, 238.90195810360],
[0.161, 5.96143146317, 36.12729806770],
[0.194, 2.37664231450, 944.98282327580],
[0.165, 0.97421918976, 556.51766803760],
[0.189, 1.11279570541, 1127.26243007680],
[0.172, 0.75085513952, 267.58564077040],
[0.193, 2.12636756833, 20350.30502114640],
[0.181, 2.10814562080, 113.87784205160],
[0.194, 1.13504964219, 57.25549074900],
[0.181, 6.23699820519, 355.96119389290],
[0.198, 5.68125942959, 6280.10690457480],
[0.173, 5.15083799917, 474.94684537520],
[0.151, 1.66981962338, 116.53797092750],
[0.150, 5.42593657173, 526.98265210890],
[0.205, 4.16096717573, 711.44930703380],
[0.177, 3.49360697678, 421.22974901440],
[0.168, 0.52839230204, 487.10451133190],
[0.160, 4.77712663799, 524.01370669230],
[0.145, 2.81448128781, 1512.80682400820],
[0.146, 4.99570112660, 142.66209845490],
[0.188, 0.82104161550, 10210.31660079440],
[0.145, 4.96888131586, 1189.30140735080],
[0.181, 2.99704790590, 75.74480641380],
[0.176, 0.41626373842, 222.86032299360],
[0.137, 2.96534226337, 6206.80977871580],
[0.138, 1.22260849471, 187.69623277240],
[0.128, 2.53394068407, 276.77436131050],
[0.130, 3.04810765699, 310.71461125430],
[0.122, 3.01323006886, 70.84944530420],
[0.111, 0.77449448649, 179.35884549420],
[0.141, 0.18423889807, 131.40394986990],
[0.126, 5.77648809669, 525.23754696970],
[0.124, 2.93225731024, 179.61947792510],
[0.111, 6.18471578216, 981.63138620530],
[0.141, 2.63342951123, 381.61224066830],
[0.110, 5.25053027081, 986.08480433020],
[0.096, 3.86591534559, 240.12579838100],
[0.120, 3.78755085035, 1057.89745748090],
[0.093, 4.54014016637, 36.69674703930],
[0.109, 1.53327585900, 419.74527630610],
[0.094, 4.21870300178, 1024.21783996800],
[0.109, 2.15905156247, 289.56516671360],
[0.104, 0.20665642552, 564.85505531580],
[0.081, 1.89134135215, 36.60037881970],
[0.080, 4.38832594589, 10137.01947493540],
[0.080, 1.73940577376, 39.50563376150],
[0.084, 0.81316746605, 170.71264167530],
[0.090, 0.60145818457, 36.76043751410],
[0.074, 4.92511651321, 1549.45538693770],
[0.072, 5.06852406179, 249.94765836750],
],
# L1
[
[3837687716.731, 0.00000000000, 0.00000000000],
[16604.187, 4.86319129565, 1.48447270830],
[15807.148, 2.27923488532, 38.13303563780],
[3334.701, 3.68199676020, 76.26607127560],
[1305.840, 3.67320813491, 2.96894541660],
[604.832, 1.50477747549, 35.16409022120],
[178.623, 3.45318524147, 39.61750834610],
[106.537, 2.45126138334, 4.45341812490],
[105.747, 2.75479326550, 33.67961751290],
[72.684, 5.48724732699, 36.64856292950],
[57.069, 5.21649804970, 0.52126486180],
[57.355, 1.85767603384, 114.39910691340],
[35.368, 4.51676827545, 74.78159856730],
[32.216, 5.90411489680, 77.75054398390],
[29.871, 3.67043294114, 388.46515523820],
[28.866, 5.16877529164, 9.56122755560],
[28.742, 5.16732589024, 2.44768055480],
[25.507, 5.24526281928, 168.05251279940],
[24.869, 4.73193067810, 182.27960680100],
[20.205, 5.78945415677, 1021.24889455140],
[19.022, 1.82981144269, 484.44438245600],
[18.661, 1.31606255521, 498.67147645760],
[15.063, 4.95003893760, 137.03302416240],
[15.094, 3.98705254940, 32.19514480460],
[10.720, 2.44148149225, 4.19278569400],
[11.725, 4.89255650674, 71.81265315070],
[9.581, 1.23188039594, 5.93789083320],
[9.606, 1.88534821556, 41.10198105440],
[8.968, 0.01758559103, 8.07675484730],
[9.882, 6.08165628679, 7.11354700080],
[7.632, 5.51307048241, 73.29712585900],
[6.992, 0.61688864282, 2.92076130680],
[5.543, 2.24141557794, 46.20979048510],
[4.845, 3.71055823750, 112.91463420510],
[3.700, 5.25713252333, 111.43016149680],
[3.233, 6.10303038418, 70.32818044240],
[2.939, 4.86520586648, 98.89998852460],
[2.403, 2.90637675099, 601.76425067620],
[2.398, 1.04343654629, 6.59228213900],
[2.784, 4.95821114677, 108.46121608020],
[2.894, 4.20148844767, 381.35160823740],
[2.111, 5.93089610785, 25.60286266560],
[2.075, 5.20632201951, 30.71067209630],
[2.126, 0.54976393136, 41.05379694460],
[2.235, 2.38045158073, 453.42489381900],
[1.859, 0.89409373259, 24.11838995730],
[2.018, 3.42245274178, 31.01948863700],
[1.700, 3.91715254287, 11.04570026390],
[1.776, 3.86571077241, 395.57870223900],
[1.644, 0.15855999051, 152.53214255120],
[1.646, 3.34591387314, 44.72531777680],
[1.876, 2.59784179105, 33.94024994380],
[1.614, 0.42137145545, 175.16605980020],
[1.468, 6.12983933526, 1550.93985964600],
[1.408, 6.13722948564, 490.07345674850],
[1.207, 0.59525736062, 312.19908396260],
[1.336, 3.28611928206, 493.04240216510],
[1.176, 5.87266726996, 5.41662597140],
[1.517, 3.12967210501, 491.55792945680],
[1.053, 4.60375516830, 79.23501669220],
[1.037, 4.89007314395, 1.27202438720],
[1.034, 5.93741289103, 32.71640966640],
[1.038, 1.13470380744, 1014.13534755060],
[1.002, 1.85850922283, 5.10780943070],
[0.983, 0.05345050384, 7.42236354150],
[0.998, 1.73689827444, 1028.36244155220],
[1.193, 4.63176675581, 60.76695288680],
[0.940, 3.09103721222, 62.25142559510],
[0.994, 4.11489180313, 4.66586644600],
[0.890, 0.87049255398, 31.23193695810],
[0.852, 5.35508394316, 144.14657116320],
[0.922, 5.12373360511, 145.10977900970],
[0.789, 0.37496785039, 26.82670294300],
[0.828, 4.06035194600, 115.88357962170],
[0.711, 3.14189997439, 278.25883401880],
[0.727, 1.39718382835, 213.29909543800],
[0.781, 0.10946327923, 173.68158709190],
[0.793, 6.13086312116, 567.82400073240],
[0.669, 4.50554989443, 27.08733537390],
[0.825, 1.35568908148, 129.91947716160],
[0.738, 3.56766018960, 176.65053250850],
[0.714, 6.24797992301, 106.97674337190],
[0.654, 1.13177751192, 68.84370773410],
[0.624, 0.01567750666, 28.57180808220],
[0.608, 4.60180625368, 189.39315380180],
[0.595, 0.00857468445, 42.58645376270],
[0.530, 5.61201247153, 12.53017297220],
[0.521, 1.02371768017, 415.29185818120],
[0.639, 0.68930265745, 529.69096509460],
[0.526, 3.02138731705, 5.62907429250],
[0.456, 4.44331571392, 43.24084506850],
[0.524, 3.43316448349, 38.65430049960],
[0.436, 2.41630174435, 82.85835341460],
[0.424, 1.95736011325, 477.33083545520],
[0.443, 3.39350946329, 357.44566660120],
[0.383, 1.90232196422, 22.63391724900],
[0.479, 5.55141744216, 37.61177077600],
[0.462, 3.80436154644, 343.21857259960],
[0.384, 5.60377408953, 594.65070367540],
[0.369, 4.45577410338, 6.90109867970],
[0.358, 3.69126616347, 3.93215326310],
[0.352, 3.10952926034, 135.54855145410],
[0.368, 3.53577440355, 40.58071619260],
[0.424, 5.27159202779, 181.75834193920],
[0.361, 0.29018303419, 72.07328558160],
[0.390, 5.49512204296, 350.33211960040],
[0.378, 2.74122401337, 488.37653571910],
[0.372, 0.39980033572, 494.73932319450],
[0.353, 1.10614174053, 20.60692781950],
[0.296, 0.86351261285, 149.56319713460],
[0.307, 5.39420288683, 160.93896579860],
[0.395, 1.93577214824, 10137.01947493540],
[0.288, 2.28755739359, 47.69426319340],
[0.295, 2.48737537240, 19.12245511120],
[0.290, 0.18636083306, 143.62530630140],
[0.266, 3.09977370364, 69.36497259590],
[0.266, 1.21002824826, 505.78502345840],
[0.252, 3.12745026026, 460.53844081980],
[0.328, 0.50849285663, 6206.80977871580],
[0.257, 3.64119914774, 446.31134681820],
[0.239, 5.54080102299, 911.04257333200],
[0.265, 0.62702473701, 253.57099508990],
[0.287, 2.44403568436, 16.67477455640],
[0.231, 2.47026250085, 454.90936652730],
[0.230, 3.24571542922, 1066.49547719000],
[0.282, 1.48595620175, 983.11585891360],
[0.212, 5.41931177641, 64.95973858080],
[0.213, 1.64175339637, 1089.12939443900],
[0.238, 2.69801319489, 882.94384600180],
[0.210, 4.53976756699, 1093.32218013300],
[0.220, 2.30038816175, 1052.26838318840],
[0.256, 0.42073598460, 23.90594163620],
[0.216, 5.44225918870, 39.09624348430],
[0.201, 2.58746514605, 119.50691634410],
[0.224, 4.43751392203, 639.89728631400],
[0.186, 2.50651218075, 487.36514376280],
[0.189, 4.05785534221, 120.99138905240],
[0.184, 2.24245977278, 815.06334611420],
[0.202, 3.43517732411, 45.24658263860],
[0.175, 4.49165234532, 171.23390653710],
[0.171, 5.50633466316, 179.09821306330],
[0.200, 6.12663205401, 14.22709400160],
[0.173, 2.61090344107, 389.94962794650],
[0.167, 3.94754384833, 77.22927912210],
[0.166, 3.41009128748, 81.37388070630],
[0.163, 3.88198848446, 556.51766803760],
[0.164, 1.49614763046, 63.73589830340],
[0.176, 3.86129425367, 148.33935685720],
[0.161, 2.22215642318, 574.93754773320],
[0.171, 0.66899426684, 179.31066138440],
[0.161, 1.21480182441, 1024.43028828910],
[0.155, 3.25842414799, 10251.41858184880],
[0.183, 5.45168150656, 218.40690486870],
[0.152, 3.35145509017, 285.37238101960],
[0.152, 0.42398786475, 274.06604832480],
[0.146, 5.70714579127, 419.48464387520],
[0.156, 0.64321524870, 1029.84691426050],
[0.147, 4.30958930740, 157.63995198190],
[0.147, 1.80689177510, 377.41945497430],
[0.140, 1.49826604627, 386.98068252990],
[0.137, 2.14480243915, 563.63121503840],
[0.127, 3.98726599710, 84.34282612290],
[0.134, 4.16039455079, 169.53698550770],
[0.121, 0.29300927469, 206.18554843720],
[0.129, 2.67625057010, 180.79513409270],
[0.134, 3.18868986487, 166.56804009110],
[0.135, 5.07517561780, 426.59819087600],
[0.136, 1.81672451740, 151.04766984290],
[0.129, 3.64795525602, 183.76407950930],
[0.116, 6.06435563172, 220.41264243880],
[0.123, 4.46641157829, 1022.73336725970],
[0.112, 4.34485256988, 138.51749687070],
[0.116, 5.58946529961, 35.68535508300],
[0.108, 1.03796693383, 488.58898404020],
[0.108, 2.10378485880, 494.52687487340],
[0.106, 0.87068583107, 1059.38193018920],
[0.097, 0.74486741478, 485.92885516430],
[0.095, 5.54259914856, 497.18700374930],
[0.085, 3.16062141266, 522.57741809380],
[0.097, 6.05634803604, 482.95990974770],
[0.095, 0.23111852730, 500.15594916590],
[0.084, 2.64687252518, 536.80451209540],
[0.074, 3.90678924318, 1019.76442184310],
],
# L2
[
[53892.649, 0.00000000000, 0.00000000000],
[281.251, 1.19084538887, 38.13303563780],
[295.693, 1.85520292248, 1.48447270830],
[270.190, 5.72143228148, 76.26607127560],
[23.023, 1.21035596452, 2.96894541660],
[7.333, 0.54033306830, 2.44768055480],
[9.057, 4.42544992035, 35.16409022120],
[5.223, 0.67427930044, 168.05251279940],
[5.201, 3.02338671812, 182.27960680100],
[4.288, 3.84351844003, 114.39910691340],
[3.925, 3.53214557374, 484.44438245600],
[3.741, 5.90238217874, 498.67147645760],
[2.966, 0.31002477611, 4.45341812490],
[3.415, 0.55971639038, 74.78159856730],
[3.255, 1.84921884906, 175.16605980020],
[2.157, 1.89135758747, 388.46515523820],
[2.211, 4.37997092240, 7.11354700080],
[1.847, 3.48574435762, 9.56122755560],
[2.451, 4.68586840176, 491.55792945680],
[1.844, 5.12281562096, 33.67961751290],
[2.204, 1.69321574906, 77.75054398390],
[1.652, 2.55859494053, 36.64856292950],
[1.309, 4.52400192922, 1021.24889455140],
[1.124, 0.38710602242, 137.03302416240],
[0.664, 0.88101734307, 4.19278569400],
[0.497, 2.24615784762, 395.57870223900],
[0.512, 6.22609200672, 381.35160823740],
[0.582, 5.25716719826, 31.01948863700],
[0.446, 0.36647221351, 98.89998852460],
[0.383, 5.48585528762, 5.93789083320],
[0.375, 4.61250246774, 8.07675484730],
[0.354, 1.30783918287, 601.76425067620],
[0.259, 5.66033623678, 112.91463420510],
[0.247, 2.89695614593, 189.39315380180],
[0.245, 4.26572913391, 220.41264243880],
[0.200, 0.52604535784, 64.95973858080],
[0.191, 4.88786653062, 39.61750834610],
[0.233, 3.16423779113, 41.10198105440],
[0.248, 5.85877831382, 1059.38193018920],
[0.194, 2.37949641473, 73.29712585900],
[0.227, 0.20028518978, 60.76695288680],
[0.184, 3.01962045713, 1014.13534755060],
[0.190, 5.57500985081, 343.21857259960],
[0.172, 3.66036463613, 477.33083545520],
[0.172, 0.59550457102, 46.20979048510],
[0.182, 1.92429384025, 183.76407950930],
[0.171, 1.61368476689, 357.44566660120],
[0.173, 6.23717119485, 493.04240216510],
[0.217, 1.46218158211, 71.81265315070],
[0.178, 0.34928799031, 1028.36244155220],
[0.169, 4.91086673212, 166.56804009110],
[0.157, 5.89200571154, 169.53698550770],
[0.182, 2.33457064554, 152.53214255120],
[0.151, 3.81621340568, 146.59425171800],
[0.136, 2.75150881988, 144.14657116320],
[0.104, 6.03262825314, 529.69096509460],
[0.076, 0.20932812381, 453.42489381900],
],
# L3
[
[31.254, 0.00000000000, 0.00000000000],
[12.461, 6.04431418812, 1.48447270830],
[14.541, 1.35337075856, 76.26607127560],
[11.547, 6.11257808366, 38.13303563780],
[1.351, 4.93951495175, 2.96894541660],
[0.741, 2.35936954597, 168.05251279940],
[0.715, 1.27409542804, 182.27960680100],
[0.537, 5.23632185196, 484.44438245600],
[0.523, 4.16769839601, 498.67147645760],
[0.664, 0.55871435877, 31.01948863700],
[0.301, 2.69253200796, 7.11354700080],
[0.194, 2.05904114139, 137.03302416240],
[0.206, 2.51012178002, 74.78159856730],
[0.160, 5.63111039032, 114.39910691340],
[0.149, 3.09327713923, 35.16409022120],
],
# L4
[
[113.998, 3.14159265359, 0.00000000000],
[0.605, 3.18211885677, 76.26607127560]
],
# L5
[
[0.874, 3.14159265359, 0.00000000000]
],
]
"""This table contains Neptune's periodic terms (all of them) from the
planetary theory VSOP87 for the heliocentric longitude at the equinox of date
(taken from the 'D' solution). In Meeus' book a shortened version can be found
in pages 452-453."""
VSOP87_B = [
# B0
[
[3088622.933, 1.44104372626, 38.13303563780],
[27780.087, 5.91271882843, 76.26607127560],
[27623.609, 0.00000000000, 0.00000000000],
[15355.490, 2.52123799481, 36.64856292950],
[15448.133, 3.50877080888, 39.61750834610],
[1999.919, 1.50998669505, 74.78159856730],
[1967.540, 4.37778195768, 1.48447270830],
[1015.137, 3.21561035875, 35.16409022120],
[605.767, 2.80246601405, 73.29712585900],
[594.878, 2.12892708114, 41.10198105440],
[588.805, 3.18655882497, 2.96894541660],
[401.830, 4.16883287237, 114.39910691340],
[254.333, 3.27120499438, 453.42489381900],
[261.647, 3.76722704749, 213.29909543800],
[279.964, 1.68165309699, 77.75054398390],
[205.590, 4.25652348864, 529.69096509460],
[140.455, 3.52969556376, 137.03302416240],
[98.530, 4.16774829927, 33.67961751290],
[51.257, 1.95121181203, 4.45341812490],
[67.971, 4.66970781659, 71.81265315070],
[41.931, 5.41783694467, 111.43016149680],
[41.822, 5.94832001477, 112.91463420510],
[30.637, 0.93620571932, 42.58645376270],
[11.084, 5.88898793049, 108.46121608020],
[9.620, 0.03944255108, 70.32818044240],
[9.664, 0.22455797403, 79.23501669220],
[9.728, 5.30069593532, 32.19514480460],
[7.386, 3.00684933642, 426.59819087600],
[7.087, 0.12535040656, 109.94568878850],
[6.021, 6.20514068152, 115.88357962170],
[6.169, 3.62098109648, 983.11585891360],
[4.777, 0.75210194972, 5.93789083320],
[6.391, 5.84646101060, 148.07872442630],
[6.251, 2.41678769385, 152.53214255120],
[4.539, 5.58182098700, 175.16605980020],
[5.006, 4.60815664851, 1059.38193018920],
[4.289, 4.19647392821, 47.69426319340],
[5.795, 5.07516716087, 415.29185818120],
[4.749, 2.51605725604, 37.61177077600],
[4.119, 1.72779509865, 28.57180808220],
[4.076, 6.00252170354, 145.10977900970],
[4.429, 5.65995321659, 98.89998852460],
[3.950, 2.74104636753, 350.33211960040],
[4.091, 1.61787956945, 39.09624348430],
[4.131, 4.40682554313, 37.16982779130],
[4.710, 3.50929350767, 38.65430049960],
[4.440, 4.78977105547, 38.08485152800],
[4.433, 1.23386935925, 38.18121974760],
[3.762, 4.83940791709, 491.55792945680],
[2.606, 1.20956732792, 451.94042111070],
[2.537, 2.18628045751, 454.90936652730],
[2.328, 5.19779918719, 72.07328558160],
[2.502, 0.85987904350, 106.97674337190],
[2.342, 0.81387240947, 4.19278569400],
[1.981, 0.46617960831, 184.72728735580],
[1.963, 6.01909114576, 44.07092647100],
[2.180, 0.70099749844, 206.18554843720],
[1.811, 0.40456996647, 40.58071619260],
[1.814, 3.64699555185, 220.41264243880],
[1.705, 6.13551142362, 181.75834193920],
[1.855, 5.61635630213, 35.68535508300],
[1.595, 2.97147156093, 37.87240320690],
[1.785, 2.42154818096, 388.46515523820],
[1.595, 3.05266110075, 38.39366806870],
[1.437, 1.48678704605, 135.54855145410],
[1.387, 2.46149266117, 138.51749687070],
[1.366, 1.52026779665, 68.84370773410],
[1.575, 3.58964541604, 38.02116105320],
[1.297, 5.06156596196, 33.94024994380],
[1.487, 0.20211121607, 30.05628079050],
[1.504, 5.80298577327, 46.20979048510],
[1.192, 0.87275514483, 42.32582133180],
[1.569, 2.43405967107, 38.24491022240],
[1.207, 1.84658687853, 251.43213107580],
[1.015, 0.53439848924, 129.91947716160],
[0.999, 2.47463873948, 312.19908396260],
[0.990, 3.41514319052, 144.14657116320],
[0.963, 4.31733242907, 151.04766984290],
[1.020, 0.98226686775, 143.62530630140],
[0.941, 1.02993053785, 221.37585028530],
[0.938, 2.43648356625, 567.82400073240],
[1.111, 0.65175024456, 146.59425171800],
[0.777, 0.00175975222, 218.40690486870],
[0.895, 0.25123869620, 30.71067209630],
[0.795, 5.80519741659, 149.56319713460],
[0.737, 3.40060492866, 446.31134681820],
[0.719, 1.43795191278, 8.07675484730],
[0.720, 0.00651007550, 460.53844081980],
[0.766, 4.03399506246, 522.57741809380],
[0.666, 1.39457824982, 84.34282612290],
[0.584, 1.01405548136, 536.80451209540],
[0.596, 0.62390100715, 35.21227433100],
[0.598, 5.39946724188, 41.05379694460],
[0.475, 5.80072248338, 7.42236354150],
[0.510, 1.34478579740, 258.02441321480],
[0.458, 5.25325523118, 80.71948940050],
[0.421, 3.24496387889, 416.77633088950],
[0.446, 1.19167306357, 180.27386923090],
[0.471, 0.92632922375, 44.72531777680],
[0.387, 1.68488418788, 183.24281464750],
[0.375, 0.15223869165, 255.05546779820],
[0.354, 4.21526988674, 0.96320784650],
[0.379, 2.16947487177, 105.49227066360],
[0.341, 4.79194051680, 110.20632121940],
[0.427, 5.15774894584, 31.54075349880],
[0.302, 3.45706306280, 100.38446123290],
[0.298, 2.26790695187, 639.89728631400],
[0.279, 0.25689162963, 39.50563376150],
[0.320, 3.58085653166, 45.24658263860],
[0.269, 5.72024180826, 36.76043751410],
[0.247, 0.61040148804, 186.21176006410],
[0.245, 0.64173616273, 419.48464387520],
[0.235, 0.73189197665, 10213.28554621100],
[0.232, 0.37399822852, 490.07345674850],
[0.230, 5.76570492457, 12.53017297220],
[0.240, 4.13447692727, 0.52126486180],
[0.279, 1.62614865256, 294.67297614430],
[0.238, 2.18528916550, 219.89137757700],
[0.262, 3.08384135298, 6.59228213900],
[0.217, 2.93214905312, 27.08733537390],
[0.217, 4.69210602828, 406.10313764110],
[0.219, 1.35212712560, 216.92243216040],
[0.200, 2.35215465744, 605.95703637020],
[0.232, 3.92583619589, 1512.80682400820],
[0.223, 5.52392277606, 187.69623277240],
[0.190, 0.29169556516, 291.70403072770],
[0.236, 3.12464145036, 563.63121503840],
[0.193, 0.53675942386, 60.76695288680],
[0.215, 3.78391259001, 103.09277421860],
[0.172, 5.63262770743, 7.11354700080],
[0.164, 4.14700645532, 77.22927912210],
[0.162, 0.72021213236, 11.04570026390],
[0.160, 4.23490438166, 487.36514376280],
[0.191, 0.37651439206, 31.01948863700],
[0.157, 1.02419759383, 6283.07584999140],
[0.157, 4.42530429545, 6206.80977871580],
[0.178, 6.24797160202, 316.39186965660],
[0.161, 5.65988283675, 343.21857259960],
[0.153, 5.58405022784, 252.08652238160],
[0.189, 4.80791039970, 641.12112659140],
[0.166, 5.50438043692, 662.53120356300],
[0.146, 5.08949604858, 286.59622129700],
[0.145, 2.13015521881, 2042.49778910280],
[0.156, 2.19452173251, 274.06604832480],
[0.148, 4.85696640135, 442.75170057060],
[0.187, 4.96121139073, 1589.07289528380],
[0.155, 2.28260574227, 142.14083359310],
[0.134, 1.29277093566, 456.39383923560],
[0.126, 5.59769497652, 179.35884549420],
[0.146, 2.53359213478, 256.53994050650],
[0.140, 1.57962199954, 75.74480641380],
[0.123, 0.05442220184, 944.98282327580],
[0.122, 1.90676379802, 418.26080359780],
[0.154, 1.86865302773, 331.32153907380],
[0.144, 5.52229258454, 14.01464568050],
[0.138, 2.80728175526, 82.85835341460],
[0.107, 0.66995358132, 190.66517818900],
[0.114, 1.48894980280, 253.57099508990],
[0.110, 5.32587573069, 240.12579838100],
[0.105, 0.65548440578, 173.68158709190],
[0.102, 2.58735617801, 450.45594840240],
[0.098, 0.44044795266, 328.35259365720],
[0.101, 4.71267656829, 117.36805233000],
[0.094, 0.54938580474, 293.18850343600],
[0.095, 2.17636214523, 101.86893394120],
[0.093, 0.63687810471, 377.15882254340],
[0.091, 5.84828809934, 10137.01947493540],
[0.089, 1.02830167997, 1021.24889455140],
[0.094, 1.79320597168, 493.04240216510],
[0.080, 1.58140274465, 69.15252427480],
[0.075, 0.23453373368, 63.73589830340],
[0.071, 1.51961989690, 488.58898404020],
],
# B1
[
[227279.214, 3.80793089870, 38.13303563780],
[1803.120, 1.97576485377, 76.26607127560],
[1385.733, 4.82555548018, 36.64856292950],
[1433.300, 3.14159265359, 0.00000000000],
[1073.298, 6.08054240712, 39.61750834610],
[147.903, 3.85766231348, 74.78159856730],
[136.448, 0.47764957338, 1.48447270830],
[70.285, 6.18782052139, 35.16409022120],
[51.899, 5.05221791891, 73.29712585900],
[37.273, 4.89476629246, 41.10198105440],
[42.568, 0.30721737205, 114.39910691340],
[37.104, 5.75999349109, 2.96894541660],
[26.399, 5.21566335936, 213.29909543800],
[16.949, 4.26463671859, 77.75054398390],
[18.747, 0.90426522185, 453.42489381900],
[12.951, 6.17709713139, 529.69096509460],
[10.502, 1.20336443465, 137.03302416240],
[4.416, 1.25478204684, 111.43016149680],
[4.383, 6.14147099615, 71.81265315070],
[3.694, 0.94837702528, 33.67961751290],
[2.957, 4.77532871210, 4.45341812490],
[2.698, 1.92435531119, 112.91463420510],
[1.989, 3.96637567224, 42.58645376270],
[1.150, 4.30568700024, 37.61177077600],
[0.871, 4.81775882249, 152.53214255120],
[0.944, 2.21777772050, 109.94568878850],
[0.936, 1.17054983940, 148.07872442630],
[0.925, 2.40329074000, 206.18554843720],
[0.690, 1.57381082857, 38.65430049960],
[0.624, 2.79466003645, 79.23501669220],
[0.726, 4.13829519132, 28.57180808220],
[0.640, 2.46161252327, 115.88357962170],
[0.531, 2.96991530500, 98.89998852460],
[0.537, 1.95986772922, 220.41264243880],
[0.539, 2.06690307827, 40.58071619260],
[0.716, 0.55781847010, 350.33211960040],
[0.563, 1.84072805158, 983.11585891360],
[0.533, 1.34787677940, 47.69426319340],
[0.566, 1.80111775954, 175.16605980020],
[0.449, 1.62191691011, 144.14657116320],
[0.371, 2.74239666472, 415.29185818120],
[0.381, 6.11910193382, 426.59819087600],
[0.366, 2.39752585360, 129.91947716160],
[0.456, 3.19611413854, 108.46121608020],
[0.327, 3.62341506247, 38.18121974760],
[0.328, 0.89613145346, 38.08485152800],
[0.341, 3.87265469070, 35.68535508300],
[0.331, 4.48858774501, 460.53844081980],
[0.414, 1.03543720726, 70.32818044240],
[0.310, 0.51297445145, 37.16982779130],
[0.287, 2.18351651800, 491.55792945680],
[0.274, 6.11504724934, 522.57741809380],
[0.281, 3.81657117512, 5.93789083320],
[0.298, 4.00532631258, 39.09624348430],
[0.265, 5.26569823181, 446.31134681820],
[0.319, 1.34097217817, 184.72728735580],
[0.203, 6.02944475303, 149.56319713460],
[0.205, 5.53935732020, 536.80451209540],
[0.226, 6.17710997862, 454.90936652730],
[0.186, 3.24302117645, 4.19278569400],
[0.179, 4.91458426239, 451.94042111070],
[0.198, 2.30775852880, 146.59425171800],
[0.166, 1.16793600058, 72.07328558160],
[0.147, 2.10574339673, 44.07092647100],
[0.123, 1.98250467171, 46.20979048510],
[0.159, 3.46955908364, 145.10977900970],
[0.116, 5.88971113590, 38.02116105320],
[0.115, 4.73412534395, 38.24491022240],
[0.125, 3.42713474801, 251.43213107580],
[0.128, 1.51108932026, 221.37585028530],
[0.127, 0.17176461812, 138.51749687070],
[0.124, 5.85160407534, 1059.38193018920],
[0.091, 2.38273591235, 30.05628079050],
[0.118, 5.27114846878, 37.87240320690],
[0.117, 5.35267669439, 38.39366806870],
[0.099, 5.19920708255, 135.54855145410],
[0.114, 4.37452353441, 388.46515523820],
[0.093, 4.64183693718, 106.97674337190],
[0.084, 1.35269684746, 33.94024994380],
[0.111, 3.56226463770, 181.75834193920],
[0.082, 3.18401661435, 42.32582133180],
[0.084, 5.51669920239, 8.07675484730],
],
# B2
[
[9690.766, 5.57123750291, 38.13303563780],
[78.815, 3.62705474219, 76.26607127560],
[71.523, 0.45476688580, 36.64856292950],
[58.646, 3.14159265359, 0.00000000000],
[29.915, 1.60671721861, 39.61750834610],
[6.472, 5.60736756575, 74.78159856730],
[5.800, 2.25341847151, 1.48447270830],
[4.309, 1.68126737666, 35.16409022120],
[3.502, 2.39142672984, 114.39910691340],
[2.649, 0.65061457644, 73.29712585900],
[1.518, 0.37600329684, 213.29909543800],
[1.223, 1.23116043030, 2.96894541660],
[0.766, 5.45279753249, 453.42489381900],
[0.779, 2.07081431472, 529.69096509460],
[0.496, 0.26552533921, 41.10198105440],
[0.469, 5.87866293959, 77.75054398390],
[0.482, 5.63056237954, 137.03302416240],
[0.345, 1.80085651594, 71.81265315070],
[0.274, 2.86650141006, 33.67961751290],
[0.158, 4.63868656467, 206.18554843720],
[0.166, 1.24877330835, 220.41264243880],
[0.153, 2.87376446497, 111.43016149680],
[0.116, 3.63838544843, 112.91463420510],
[0.085, 0.43712705655, 4.45341812490],
[0.104, 6.12597614674, 144.14657116320],
],
# B3
[
[273.423, 1.01688979072, 38.13303563780],
[2.274, 2.36805657126, 36.64856292950],
[2.029, 5.33364321342, 76.26607127560],
[2.393, 0.00000000000, 0.00000000000],
[0.538, 3.21934211365, 39.61750834610],
[0.242, 4.52650721578, 114.39910691340],
[0.185, 1.04913770083, 74.78159856730],
[0.155, 3.62376309338, 35.16409022120],
[0.157, 3.94195369610, 1.48447270830],
],
# B4
[[5.728, 2.66872693322, 38.13303563780]],
# B5
[[0.113, 4.70646877989, 38.13303563780]],
]
"""This table contains Neptune's periodic terms (all of them) from the
planetary theory VSOP87 for the heliocentric latitude at the equinox of date
(taken from the 'D' solution). In Meeus' book a shortened version can be found
in page 453."""
VSOP87_R = [
# R0
[
[3007013206.102, 0.00000000000, 0.00000000000],
[27062259.490, 1.32999458930, 38.13303563780],
[1691764.281, 3.25186138896, 36.64856292950],
[807830.737, 5.18592836167, 1.48447270830],
[537760.613, 4.52113902845, 35.16409022120],
[495725.642, 1.57105654815, 491.55792945680],
[274571.970, 1.84552256801, 175.16605980020],
[135134.095, 3.37220607384, 39.61750834610],
[121801.825, 5.79754444303, 76.26607127560],
[100895.397, 0.37702748681, 73.29712585900],
[69791.722, 3.79617226928, 2.96894541660],
[46687.838, 5.74937810094, 33.67961751290],
[24593.778, 0.50801728204, 109.94568878850],
[16939.242, 1.59422166991, 71.81265315070],
[14229.686, 1.07786112902, 74.78159856730],
[12011.825, 1.92062131635, 1021.24889455140],
[8394.731, 0.67816895547, 146.59425171800],
[7571.800, 1.07149263431, 388.46515523820],
[5720.852, 2.59059512267, 4.45341812490],
[4839.672, 1.90685991070, 41.10198105440],
[4483.492, 2.90573457534, 529.69096509460],
[4270.202, 3.41343865825, 453.42489381900],
[4353.790, 0.67985662370, 32.19514480460],
[4420.804, 1.74993796503, 108.46121608020],
[2881.063, 1.98600105123, 137.03302416240],
[2635.535, 3.09755943422, 213.29909543800],
[3380.930, 0.84810683275, 183.24281464750],
[2878.942, 3.67415901855, 350.33211960040],
[2306.293, 2.80962935724, 70.32818044240],
[2530.149, 5.79839567009, 490.07345674850],
[2523.132, 0.48630800015, 493.04240216510],
[2087.303, 0.61858378281, 33.94024994380],
[1976.522, 5.11703044560, 168.05251279940],
[1905.254, 1.72186472126, 182.27960680100],
[1654.039, 1.92782545887, 145.10977900970],
[1435.072, 1.70005157785, 484.44438245600],
[1403.029, 4.58914203187, 498.67147645760],
[1499.193, 1.01623299513, 219.89137757700],
[1398.860, 0.76220317620, 176.65053250850],
[1403.377, 6.07659416908, 173.68158709190],
[1128.560, 5.96661179805, 9.56122755560],
[1228.304, 1.59881465324, 77.75054398390],
[835.414, 3.97066884218, 114.39910691340],
[811.186, 3.00258880870, 46.20979048510],
[731.925, 2.10447054189, 181.75834193920],
[615.781, 2.97874625677, 106.97674337190],
[704.778, 1.18738210880, 256.53994050650],
[502.040, 1.38657803368, 5.93789083320],
[530.357, 4.24059166485, 111.43016149680],
[437.096, 2.27029212923, 1550.93985964600],
[400.250, 1.25609325435, 8.07675484730],
[421.011, 1.89084929506, 30.71067209630],
[382.457, 3.29965259685, 983.11585891360],
[422.485, 5.53186169605, 525.49817940060],
[355.389, 2.27847846648, 218.40690486870],
[280.062, 1.54129714238, 98.89998852460],
[314.499, 3.95932948594, 381.35160823740],
[280.556, 4.54238271682, 44.72531777680],
[267.738, 5.13323364247, 112.91463420510],
[333.311, 5.75067616021, 39.09624348430],
[291.625, 4.02398326341, 68.84370773410],
[321.429, 1.50625025822, 454.90936652730],
[309.196, 2.85452752153, 72.07328558160],
[345.094, 1.35905860594, 293.18850343600],
[307.439, 0.31964571332, 601.76425067620],
[251.356, 3.53992782846, 312.19908396260],
[248.152, 3.41078346726, 37.61177077600],
[306.000, 2.72475094464, 6244.94281435360],
[293.532, 4.89079857814, 528.20649238630],
[234.479, 0.59231043427, 42.58645376270],
[239.628, 3.16441455173, 143.62530630140],
[214.523, 3.62480283040, 278.25883401880],
[246.198, 1.01506302015, 141.22580985640],
[174.089, 5.55011789988, 567.82400073240],
[163.934, 2.10166491786, 2.44768055480],
[162.897, 2.48946521653, 4.19278569400],
[193.455, 1.58425287580, 138.51749687070],
[155.323, 3.28425127954, 31.01948863700],
[182.469, 2.45244890571, 255.05546779820],
[177.846, 4.14773474853, 10175.15251057320],
[174.413, 1.53042999914, 329.83706636550],
[137.649, 3.34900537767, 0.96320784650],
[161.011, 5.16655038482, 211.81462272970],
[113.473, 4.96286007991, 148.07872442630],
[128.823, 3.25521535448, 24.11838995730],
[107.363, 3.26457701792, 1059.38193018920],
[122.732, 5.39399536941, 62.25142559510],
[120.529, 3.08050145518, 184.72728735580],
[99.356, 1.92888554099, 28.57180808220],
[97.713, 2.59474415429, 6.59228213900],
[124.095, 3.11516750340, 221.37585028530],
[124.693, 2.97042405451, 251.43213107580],
[114.252, 0.25039919123, 594.65070367540],
[111.006, 3.34276426767, 180.27386923090],
[120.939, 1.92914010593, 25.60286266560],
[104.667, 0.94883561775, 395.57870223900],
[109.779, 5.43147520571, 494.52687487340],
[96.919, 0.86184760695, 1014.13534755060],
[98.685, 0.89577952710, 488.58898404020],
[88.968, 4.78109764779, 144.14657116320],
[107.888, 0.98700578434, 1124.34166877000],
[97.067, 2.62667400276, 291.70403072770],
[75.131, 5.88936524779, 43.24084506850],
[93.718, 6.09873565184, 526.72201967800],
[94.822, 0.20662943940, 456.39383923560],
[70.036, 2.39683345663, 426.59819087600],
[77.187, 4.21076753240, 105.49227066360],
[89.874, 3.25100749923, 258.02441321480],
[69.133, 4.93031154435, 1028.36244155220],
[90.657, 1.69466970587, 366.48562929500],
[74.242, 3.14479101276, 82.85835341460],
[57.995, 0.86159785905, 60.76695288680],
[78.695, 1.09307575550, 700.66423920080],
[57.230, 0.81331949225, 2.92076130680],
[63.443, 4.39590123005, 149.56319713460],
[55.698, 3.89047249911, 47.69426319340],
[56.430, 5.15003563302, 0.52126486180],
[56.174, 5.42986960794, 911.04257333200],
[61.746, 6.16453667559, 1019.76442184310],
[70.503, 0.08077330612, 40.58071619260],
[74.677, 4.85904499980, 186.21176006410],
[61.861, 4.78702599861, 11.04570026390],
[61.135, 0.83712253227, 1022.73336725970],
[61.268, 5.70228826765, 178.13500521680],
[52.887, 0.37458943972, 27.08733537390],
[56.722, 3.52318112447, 216.92243216040],
[48.819, 5.10789123481, 64.95973858080],
[63.290, 4.39424910030, 807.94979911340],
[64.062, 6.28297531806, 7.11354700080],
[46.356, 1.34735469284, 451.94042111070],
[60.540, 3.40316162416, 294.67297614430],
[46.900, 0.17048203552, 7.42236354150],
[56.766, 0.45048868231, 140.00196957900],
[55.887, 1.06815733757, 172.19711438360],
[53.761, 2.79644687008, 328.35259365720],
[43.828, 6.04655696644, 135.54855145410],
[49.549, 0.64106656292, 41.05379694460],
[53.960, 2.91774494436, 563.63121503840],
[42.961, 5.40175361431, 487.36514376280],
[51.508, 0.09105540708, 210.33015002140],
[41.889, 3.12343223889, 29.22619938800],
[47.655, 3.90701760087, 63.73589830340],
[41.639, 6.26847783513, 32.71640966640],
[41.429, 4.45464156759, 37.16982779130],
[40.745, 0.16043648294, 79.23501669220],
[48.205, 1.84198373010, 403.13419222450],
[36.912, 0.44771386183, 30.05628079050],
[47.762, 0.88083849566, 3302.47939106200],
[39.465, 3.50565484069, 357.44566660120],
[42.139, 0.63375113663, 343.21857259960],
[41.275, 1.36370496322, 31.23193695810],
[42.612, 3.55270845713, 38.65430049960],
[38.931, 5.26691753270, 415.29185818120],
[38.967, 5.25866056502, 386.98068252990],
[33.734, 5.24400184426, 67.35923502580],
[40.879, 3.55292279438, 331.32153907380],
[38.768, 1.12288359393, 38.18121974760],
[37.500, 6.08687972441, 35.42472265210],
[38.831, 4.67876780698, 38.08485152800],
[38.231, 6.26491054328, 389.94962794650],
[29.976, 4.45759985804, 22.63391724900],
[31.356, 0.07746010366, 12.53017297220],
[26.341, 4.59559782754, 106.01353552540],
[27.465, 5.99541587890, 206.18554843720],
[25.152, 4.49867760320, 34.20088237470],
[24.122, 5.17089441917, 129.91947716160],
[28.997, 3.64927210210, 253.57099508990],
[27.173, 4.37944546475, 142.14083359310],
[30.634, 1.59348806560, 348.84764689210],
[31.464, 1.05065113524, 100.38446123290],
[24.056, 1.02801635413, 41.75637236020],
[22.632, 4.72511111292, 81.37388070630],
[21.942, 3.48416607882, 69.15252427480],
[26.333, 3.01556008632, 365.00115658670],
[22.355, 3.92220883921, 5.10780943070],
[22.498, 4.03487494425, 19.12245511120],
[22.885, 1.58977064672, 189.39315380180],
[26.520, 3.61427038042, 367.97010200330],
[25.496, 2.43810518614, 351.81659230870],
[19.111, 2.59694457001, 2080.63082474060],
[19.640, 6.15701741238, 35.21227433100],
[25.688, 2.00512719767, 439.78275515400],
[21.613, 3.32354204724, 119.50691634410],
[25.389, 4.74025836522, 1474.67378837040],
[18.107, 5.35129342595, 244.31858407500],
[23.295, 5.93767742799, 316.39186965660],
[22.087, 4.81594755148, 84.34282612290],
[16.972, 3.05105149940, 220.41264243880],
[20.022, 4.99276451168, 179.09821306330],
[20.370, 1.86508317889, 171.23390653710],
[19.426, 2.04829970231, 5.41662597140],
[22.628, 0.27205783433, 666.72398925700],
[19.072, 3.70882976684, 164.12035953630],
[17.969, 3.40425338171, 69.36497259590],
[18.716, 0.90215956591, 285.37238101960],
[15.889, 0.42011285882, 697.74347789400],
[14.988, 3.08544843665, 704.85702489480],
[14.774, 3.36129613309, 274.06604832480],
[15.972, 1.82864185268, 477.33083545520],
[13.892, 2.94161501165, 38.39366806870],
[13.922, 2.85574364078, 37.87240320690],
[15.481, 4.94982954853, 101.86893394120],
[17.571, 5.82317632469, 35.68535508300],
[15.856, 5.04973561582, 36.90919536040],
[16.414, 3.63049397028, 45.24658263860],
[17.158, 2.51251149482, 20.60692781950],
[12.941, 3.03041555329, 522.57741809380],
[15.752, 5.00292909214, 247.23934538180],
[12.679, 0.20331109568, 460.53844081980],
[16.260, 5.93480347217, 815.06334611420],
[12.903, 3.51141502996, 446.31134681820],
[13.891, 5.51064697670, 31.54075349880],
[13.668, 5.45576135320, 39.35687591520],
[13.418, 3.95805150079, 290.21955801940],
[15.368, 2.45783892707, 26.82670294300],
[14.246, 3.18588280921, 401.64971951620],
[12.222, 4.94370170146, 14.01464568050],
[15.484, 3.79703715637, 404.61866493280],
[13.427, 3.79527836573, 151.04766984290],
[14.450, 4.93940408761, 120.99138905240],
[14.331, 4.71117327722, 738.79727483860],
[11.566, 5.91003539239, 536.80451209540],
[15.578, 2.91836788254, 875.83029900100],
[13.124, 2.16056013419, 152.53214255120],
[11.744, 2.94770244071, 2.70831298570],
[12.793, 1.97868575679, 1.37259812370],
[12.969, 0.00535826017, 97.41551581630],
[13.891, 4.76435441820, 0.26063243090],
[13.729, 2.32306473850, 38.24491022240],
[10.714, 6.18129683877, 115.88357962170],
[11.610, 4.61712859898, 178.78939652260],
[11.257, 0.79300245838, 42.32582133180],
[14.500, 5.44690193314, 44.07092647100],
[11.534, 5.26580538005, 160.93896579860],
[13.355, 5.20849186729, 32.45577723550],
[13.658, 2.15687632802, 476.43131808350],
[13.782, 3.47865209163, 38.02116105320],
[12.714, 2.09462988855, 20.49505323490],
[13.257, 5.15138524813, 103.09277421860],
[9.715, 0.74597883480, 918.15612033280],
[10.340, 5.38977407079, 222.86032299360],
[13.357, 5.89635739027, 748.09786996330],
[12.632, 1.20306997433, 16.15350969460],
[11.437, 1.58444114292, 495.49008271990],
[11.424, 4.74142930795, 487.62577619370],
[9.098, 5.19932138822, 118.02244363580],
[9.336, 0.97313630925, 662.53120356300],
[9.827, 4.48170250645, 505.78502345840],
[8.585, 0.20375451897, 944.98282327580],
[8.875, 5.53111742265, 17.52610781830],
[9.957, 4.03258125243, 169.53698550770],
[11.506, 3.11649121817, 17.63798240290],
[9.818, 5.20376439002, 1.59634729290],
[10.160, 3.74441320429, 457.61767951300],
[8.661, 0.31247523804, 1440.73353842660],
[8.496, 1.06445636872, 55.77101804070],
[11.162, 1.92907800408, 564.85505531580],
[8.057, 0.31116345866, 377.41945497430],
[9.851, 4.23328578127, 418.26080359780],
[7.938, 2.40417397694, 488.37653571910],
[9.894, 0.63707319139, 183.76407950930],
[9.913, 3.94049519088, 441.26722786230],
[7.867, 3.87469522964, 494.73932319450],
[7.589, 3.15909316566, 416.77633088950],
[8.496, 5.38968698704, 104.00779795530],
[9.716, 3.06038536864, 166.56804009110],
[9.377, 0.56416645296, 673.31627139600],
[8.771, 5.24534141981, 1057.89745748090],
[7.990, 1.55726966638, 59.28248017850],
[9.090, 4.32953439022, 29.74746424980],
[9.667, 5.89033222679, 358.40887444770],
[7.209, 2.29464803358, 79.18683258240],
[8.062, 0.44458003524, 19.01058052660],
[8.254, 3.47304582051, 156.15547927360],
[9.804, 6.06393995615, 784.74643289280],
[8.516, 5.99060386955, 180.79513409270],
[8.090, 1.38588221442, 1654.03263386460],
[9.074, 4.03971490460, 1017.05610885740],
[6.908, 1.41919832926, 178.34745353790],
[8.230, 2.53750470473, 518.38463239980],
[8.594, 5.29104206063, 457.87831194390],
[6.769, 5.43380191356, 171.98466606250],
[8.571, 0.35876828441, 636.66770846650],
[8.995, 1.36992508507, 6209.77872413240],
[6.641, 2.92327140872, 0.04818410980],
[9.278, 3.80308677009, 25558.21217647960],
[6.567, 4.01934954352, 0.11187458460],
[6.441, 4.28250687347, 36.12729806770],
[7.257, 4.09776235307, 326.86812094890],
[8.384, 5.49363770202, 532.61172640140],
[7.471, 4.62144262894, 526.98265210890],
[7.500, 0.61545750834, 485.92885516430],
[7.716, 1.04880632264, 525.23754696970],
[8.504, 2.79350586429, 10139.98842035200],
[7.466, 5.07942174095, 157.63995198190],
[7.186, 6.22833818429, 77.22927912210],
[7.784, 1.89308880453, 984.60033162190],
[6.513, 0.07498932215, 79.88940799800],
[6.077, 2.96673519667, 36.69674703930],
[7.706, 5.70632580790, 209.10630974400],
[7.265, 4.94483532589, 131.40394986990],
[6.984, 2.53239305821, 497.18700374930],
[7.824, 2.31462643851, 513.07988101300],
[7.175, 3.69203633127, 524.01370669230],
[6.855, 0.14076801572, 283.62727588040],
[6.922, 3.36515011915, 438.29828244570],
[7.349, 3.50406958122, 500.15594916590],
[6.301, 0.14776691217, 608.87779767700],
[5.892, 4.24403528888, 4.66586644600],
[7.613, 5.14905171677, 259.50888592310],
[7.128, 5.92696788834, 482.95990974770],
[6.829, 1.01745137848, 1543.82631264520],
[5.981, 4.79954091087, 215.43795945210],
[5.526, 2.34003154732, 65.22037101170],
[6.817, 6.12162829690, 395.05743737720],
[5.369, 3.76855960849, 52099.54021187280],
[5.776, 5.61434462641, 987.56927703850],
[7.523, 5.60432148128, 2810.92146160520],
[7.329, 3.76815551582, 1512.80682400820],
[5.616, 2.13872867116, 145.63104387150],
[5.258, 0.30850836910, 36.60037881970],
[5.688, 1.82274388581, 1227.43444298860],
[5.658, 2.35049199704, 5.62907429250],
[6.135, 4.23390561816, 496.01134758170],
[5.128, 2.89050864873, 313.68355667090],
[6.472, 3.49494191669, 552.69738935910],
[4.983, 3.91958511552, 10135.53500222710],
[5.217, 0.40052635702, 319.31263096340],
[4.952, 1.42482088612, 49.17873590170],
[5.964, 5.70758449643, 309.79958751760],
[5.091, 6.00974510144, 1409.71404978960],
[5.205, 5.50271334510, 238.90195810360],
[4.800, 1.13450310670, 134.06407874580],
[4.943, 1.43051344597, 422.40540518200],
[5.604, 2.05669305961, 207.36120460480],
[6.310, 5.22966882627, 139.74133714810],
[4.772, 3.06668713747, 464.73122651380],
[4.919, 3.57280542629, 52175.80628314840],
[4.762, 5.90654311203, 838.96928775040],
[4.848, 0.77467099227, 1.69692102940],
[5.694, 0.77313415569, 709.96483432550],
[5.455, 0.90289242792, 208.84567731310],
[4.901, 3.79986913631, 15.49911838880],
[4.772, 0.15755140037, 39.50563376150],
[5.673, 2.68359159067, 1127.26243007680],
[5.477, 0.53123497431, 113.87784205160],
[5.077, 1.59268428609, 1547.97091422940],
[4.981, 1.44584050478, 1.27202438720],
[5.813, 5.85024085408, 57.25549074900],
[5.520, 5.06396698257, 421.22974901440],
[5.938, 0.96886308551, 6280.10690457480],
[5.206, 3.58003819370, 474.94684537520],
[5.256, 0.61005270999, 95.97922721780],
[5.531, 5.28764137194, 36.76043751410],
[6.158, 5.73176703797, 711.44930703380],
[5.003, 2.19048397989, 501.64042187420],
[5.150, 5.58407480282, 26049.77010593640],
[5.138, 4.55234158942, 670.91677495100],
[5.609, 4.37272759780, 52.80207262410],
[5.636, 2.39183054397, 10210.31660079440],
[4.512, 2.59978208967, 1234.54798998940],
[5.412, 4.58813638089, 179.61947792510],
[4.314, 3.38846714337, 142.66209845490],
[4.708, 5.23537414423, 3.62333672240],
[4.471, 3.94378336812, 12566.15169998280],
[5.296, 1.12249063176, 134.11226285560],
[4.188, 2.52490407427, 6205.32530600750],
[4.645, 1.90644271528, 13324.31667116140],
[4.502, 2.01956920977, 315.16802937920],
[5.346, 2.94804816223, 353.04043258610],
[4.177, 2.09489065926, 803.75701341940],
[5.296, 3.88249567974, 2118.76386037840],
[5.325, 4.28221258353, 477.91579079180],
[5.519, 0.09960891963, 600.01914553700],
[5.169, 0.59948596687, 6.90109867970],
[4.179, 0.14619703083, 6644.57629047010],
[4.490, 1.07042724999, 52139.15772021889],
[3.970, 6.13227798578, 1553.90880506260],
[3.970, 4.69887237362, 91.78644152380],
[4.234, 0.14478458924, 65.87476231750],
[5.183, 3.52837189306, 110.20632121940],
[5.259, 6.20809827528, 142.71028256470],
[3.869, 5.25125030487, 1558.05340664680],
[4.457, 2.10248126544, 487.10451133190],
[4.890, 1.83606790269, 46.51860702580],
[3.875, 5.60269278935, 385.49620982160],
[3.826, 1.30946706974, 2176.61005195840],
[4.591, 4.84657580441, 1337.64076420800],
[5.111, 1.18808079775, 981.63138620530],
[4.709, 1.40878215308, 52213.93931878620],
[3.891, 5.43661875415, 154.67100656530],
[4.145, 4.32505910718, 363.51668387840],
[4.441, 3.50158424570, 187.69623277240],
[3.703, 2.48768949613, 67.88049988760],
[4.094, 1.42347047260, 310.71461125430],
[3.681, 5.70552661143, 491.66980404140],
[4.787, 3.65822147476, 589.34595228860],
[4.020, 5.45643059988, 6641.60734505350],
[3.656, 0.57790726599, 491.44605487220],
[4.288, 3.35265955957, 203.21660302060],
[3.843, 4.61508898119, 1025.70231267630],
[3.767, 0.05292047125, 320.27583880990],
[4.632, 0.82011276589, 3265.83082813250],
[4.609, 5.25443775917, 296.15744885260],
[4.555, 5.30391170376, 26013.12154300690],
[3.556, 4.80267245336, 224.34479570190],
[4.859, 5.52756242256, 487.41332787260],
[3.626, 1.44624342082, 70.84944530420],
[4.302, 1.60914544159, 12529.50313705330],
[3.493, 4.75315651083, 12489.88562870720],
[3.722, 0.27433061822, 949.43624140070],
[4.234, 5.25112033465, 194.28851491140],
[3.451, 2.97409317928, 499.63468430410],
[4.796, 6.21059766333, 491.81856188770],
[3.639, 1.25605018211, 2603.20824283440],
[4.646, 5.71392540144, 321.76031151820],
[3.702, 2.08952561657, 491.03666459500],
[3.672, 2.87489628704, 497.49582029000],
[3.965, 1.05484988240, 75.74480641380],
[3.416, 0.68584132933, 305.08553696180],
[4.513, 4.38927002490, 425.11371816770],
[3.853, 0.61321572401, 12526.53419163670],
[3.788, 3.32221995840, 3140.01275492980],
[3.781, 5.58125317044, 1652.54816115630],
[3.903, 5.31609723466, 408.17831118040],
[3.945, 3.60558877407, 1589.07289528380],
[4.084, 0.83813879869, 52.36012963940],
[4.084, 3.50290269471, 23.90594163620],
[3.694, 1.03218855688, 481.47543703940],
[3.636, 5.31068934607, 141.48644228730],
[3.345, 3.94392179077, 20389.92252949249],
[4.639, 6.24618220184, 821.39499582230],
[3.934, 0.26992234338, 1655.51710657290],
[4.431, 2.48647437800, 549.72844394250],
[4.168, 5.39993754642, 236.50246165860],
[4.020, 0.07393243012, 52136.18877480229],
[4.055, 1.34004288978, 1054.92851206430],
[3.275, 0.98533127454, 1344.75431120880],
[3.213, 2.97105590703, 20386.95358407589],
[4.428, 0.06728869735, 491.29729702590],
[4.063, 0.06192838570, 6168.67674307800],
[3.804, 5.34897033476, 523.75307426140],
[3.917, 5.67905809516, 1131.19458333990],
[3.833, 0.87811168267, 52.69019803950],
[4.020, 2.69209723289, 1439.46151403940],
[4.373, 1.86209663434, 73.55775828990],
[3.159, 1.04693380342, 703.37255218650],
[3.116, 5.20159166840, 449.23210812500],
[3.258, 4.65131076542, 696.25900518570],
[3.427, 0.27003884843, 2389.90914739640],
[4.349, 0.07531141761, 20426.57109242200],
[3.383, 5.61838426864, 699.22795060230],
[3.305, 1.41666877290, 562.14674233010],
[3.297, 5.46677712589, 1442.21801113490],
[3.277, 2.71815883511, 980.14691349700],
[3.171, 4.49510885866, 1439.24906571830],
[4.175, 4.24327707038, 381.61224066830],
[3.155, 3.40776789576, 39.72938293070],
[4.112, 0.90309319273, 1087.69310584050],
[3.350, 5.27474671017, 80.71948940050],
[3.725, 1.52448613082, 1058.10990580200],
[3.650, 3.59798316565, 192.80404220310],
[3.837, 1.48519528444, 10098.88643929760],
[2.959, 1.23012121982, 2500.11546861580],
[3.330, 6.12470287875, 10172.18356515660],
[3.361, 4.31837298696, 492.07919431860],
[3.288, 3.14692435376, 347.36317418380],
[2.992, 5.01304660316, 175.21424391000],
[3.294, 2.52694043155, 1692.16566950240],
[2.984, 1.81780659890, 175.11787569040],
[3.013, 0.92957285991, 1515.77576942480],
[3.863, 5.46044928570, 332.80601178210],
[3.403, 1.10932483984, 987.30864460760],
[3.312, 0.67710158807, 977.48678462110],
[3.030, 1.77996261146, 156489.28581380739],
[3.605, 4.89955108152, 1043.88281180040],
[2.937, 0.60469671230, 990.22940591440],
[3.276, 4.26765608367, 1189.30140735080],
[2.966, 5.29808076929, 31.98269648350],
[2.994, 2.58599359402, 178.08682110700],
[3.905, 1.87748122254, 1158.28191871380],
[3.110, 3.09203517638, 235.93301268700],
[3.313, 2.70308129756, 604.47256366190],
[3.276, 1.24440460327, 874.65464283340],
[3.276, 5.58544609667, 950.92071410900],
[3.746, 0.33859914037, 913.96333463880],
[3.552, 3.07180917863, 240.38643081190],
[2.885, 6.01130634957, 1097.51496582700],
[3.643, 5.11977873355, 452.20105354160],
[2.768, 4.38396269009, 391.43410065480],
[2.776, 5.01821594830, 8.90683624980],
[2.990, 5.62911695857, 140.65636088480],
[2.761, 4.05534163807, 6283.07584999140],
[3.226, 4.76711354367, 6241.97386893700],
[3.748, 4.84009347869, 341.73409989130],
[2.752, 4.53621078796, 6206.80977871580],
[3.847, 2.40982343643, 26086.41866886590],
[2.727, 3.28234198801, 483.48117460950],
[2.884, 4.05452029151, 1.22384027740],
[2.702, 3.72061244391, 946.46729598410],
[2.723, 4.37517047024, 15.19030184810],
[2.847, 5.22951186538, 661.04673085470],
[2.680, 4.19379121323, 13.18456427800],
[3.269, 0.43119778520, 496.97455542820],
[3.489, 3.82213189319, 625.99451521810],
[3.757, 3.88223872147, 495.70253104100],
[2.872, 5.00345974886, 252.08652238160],
[3.742, 2.03372773652, 8.59801970910],
[3.172, 1.11135762382, 260.99335863140],
[3.341, 2.91360557418, 304.23420369990],
[2.915, 2.63627684599, 6681.22485339960],
[2.915, 1.43773625890, 6604.95878212400],
[2.629, 2.09824407450, 2713.41456405380],
[2.901, 3.33924800230, 515.46387109300],
[2.803, 1.23584865903, 6643.09181776180],
[3.045, 3.33515866438, 921.07688163960],
[2.699, 5.42597794650, 925.26966733360],
[2.808, 5.77870303237, 1024.21783996800],
[3.028, 3.75501312393, 511.59540830470],
[3.090, 2.49453093252, 14.66903698630],
[2.913, 4.83296711477, 515.93695184500],
[3.139, 5.99134254710, 570.74476203920],
[2.752, 3.08268180744, 853.19638175200],
[2.779, 3.74527347899, 494.00561001160],
[2.643, 1.99093797444, 470.21728845440],
[2.763, 4.01095972177, 448.97147569410],
[2.643, 5.24970673655, 249.94765836750],
[3.426, 4.73955481174, 1050.99635880120],
[2.573, 2.01267457287, 1514.29129671650],
[2.633, 1.63640090603, 170.71264167530],
[3.034, 4.48979734509, 560.71045373160],
[3.025, 5.51446170055, 369.45457471160],
[3.095, 4.01459691667, 1615.89959822680],
[2.490, 0.15301603966, 78187.44335344699],
[2.589, 0.79196093766, 1228.91891569690],
[3.143, 5.33170343283, 1542.34183993690],
[3.138, 4.50785484172, 461.76228109720],
[2.812, 3.74246594120, 2.00573757010],
[3.062, 4.88018345098, 227.96813242430],
[2.553, 4.85437812287, 488.84961647110],
[2.971, 1.27359129352, 530.91480537200],
[2.646, 3.64828423565, 335.77495719870],
[3.329, 2.71693827722, 171.02145821600],
[2.648, 0.60243117586, 70.58881287330],
[3.061, 5.05044834864, 378.64329525170],
[2.738, 4.75405645015, 151.26011816400],
[2.728, 5.89052930055, 213.95348674380],
[3.411, 2.24137878065, 734.45573129830],
[2.623, 0.54340876464, 1586.10394986720],
[3.169, 5.84871429991, 1049.51188609290],
[2.430, 2.34595493263, 450.45594840240],
[2.907, 5.58085498481, 597.57146498220],
[3.300, 0.94221473935, 58.17051448570],
[2.543, 5.30426930256, 419.48464387520],
[3.175, 2.32600231924, 339.28641933650],
[2.858, 2.36621678719, 32.50396134530],
[2.712, 5.79983621237, 1587.58842257550],
[3.340, 1.36950315448, 384.27236954420],
[3.301, 5.83023910521, 51.77517430280],
[2.415, 0.69446923670, 489.55219188670],
[2.736, 5.74320864965, 1167.84314626940],
[2.956, 5.22962139507, 199.85389872910],
[3.262, 0.01501002027, 1545.31078535350],
[2.506, 4.84043333582, 943.49835056750],
[3.240, 2.46676155925, 1016.79547642650],
[3.148, 4.62079057738, 233.53351624200],
[2.327, 4.10421417326, 70.11573212130],
[2.371, 4.79963943424, 271.14528701800],
[3.006, 3.66877796077, 1476.15826107870],
[2.537, 5.66681769885, 21.14944454070],
[3.006, 0.93048909480, 21.97952594320],
[3.033, 0.67157488690, 292.48592802040],
[2.344, 1.83547256266, 492.30868898220],
[3.117, 2.76268894894, 1473.18931566210],
[2.323, 2.88799980853, 533.62311835770],
[2.340, 4.44862573253, 490.80716993140],
[2.511, 0.99467349084, 266.10116806210],
[2.919, 4.75889516601, 1511.32235129990],
[2.493, 6.10541658597, 1225.94997028030],
[2.798, 3.06162629894, 419.74527630610],
[2.691, 3.20679023131, 463.50738623640],
[2.291, 5.81534758547, 246.97871295090],
[2.319, 6.05514281470, 525.75881183150],
[3.112, 0.89712836583, 314.90739694830],
[3.085, 5.84605938859, 1192.22216865760],
[2.897, 0.54747024257, 20350.30502114640],
[3.067, 2.22206306288, 248.46318565920],
[2.252, 0.87483094907, 61.02758531770],
[2.392, 3.62837597194, 439.19779981740],
[2.817, 2.73562306571, 16.67477455640],
[2.379, 6.17876088396, 467.65198782060],
[2.598, 4.82643304253, 384.58118608490],
[2.718, 1.01823841209, 215.95922431390],
[2.998, 1.09755715300, 1964.74724511890],
[2.884, 2.97813466834, 383.09671337660],
[2.231, 4.48841493844, 4.14460158420],
[2.203, 2.23336308907, 481.26298871830],
[2.260, 2.35404913660, 659.61044225620],
[2.491, 1.70236357070, 445.34813897170],
[3.041, 5.55577674116, 674.80074410430],
[2.289, 1.18497528002, 1552.42433235430],
[2.975, 0.48272389481, 1052.48083150950],
[2.339, 0.75318738767, 478.81530816350],
[3.011, 0.16359500858, 54.28654533240],
[2.820, 6.18522693724, 556.51766803760],
[2.266, 5.91286000054, 3.49021027840],
[2.231, 1.45038594906, 196.50670080260],
],
# R1
[
[236338.502, 0.70498011235, 38.13303563780],
[13220.279, 3.32015499895, 1.48447270830],
[8621.863, 6.21628951630, 35.16409022120],
[2701.740, 1.88140666779, 39.61750834610],
[2153.150, 5.16873840979, 76.26607127560],
[2154.735, 2.09431198086, 2.96894541660],
[1463.924, 1.18417031047, 33.67961751290],
[1603.165, 0.00000000000, 0.00000000000],
[1135.773, 3.91891199655, 36.64856292950],
[897.650, 5.24122933533, 388.46515523820],
[789.908, 0.53315484580, 168.05251279940],
[760.030, 0.02051033644, 182.27960680100],
[607.183, 1.07706500350, 1021.24889455140],
[571.622, 3.40060785432, 484.44438245600],
[560.790, 2.88685815667, 498.67147645760],
[490.190, 3.46830928696, 137.03302416240],
[264.093, 0.86220057976, 4.45341812490],
[270.526, 3.27355867939, 71.81265315070],
[203.524, 2.41820674409, 32.19514480460],
[155.438, 0.36537064534, 41.10198105440],
[132.766, 3.60157672619, 9.56122755560],
[93.626, 0.66670888163, 46.20979048510],
[83.317, 3.25992461673, 98.89998852460],
[72.205, 4.47717435693, 601.76425067620],
[68.983, 1.46326969479, 74.78159856730],
[86.953, 5.77228651853, 381.35160823740],
[68.717, 4.52563942435, 70.32818044240],
[64.724, 3.85477388838, 73.29712585900],
[68.377, 3.39509945953, 108.46121608020],
[53.375, 5.43650770516, 395.57870223900],
[44.453, 3.61409723545, 2.44768055480],
[41.243, 4.73866592865, 8.07675484730],
[48.331, 1.98568593981, 175.16605980020],
[41.744, 4.94257598763, 31.01948863700],
[44.102, 1.41744904844, 1550.93985964600],
[41.170, 1.41999374753, 490.07345674850],
[41.099, 4.86312637841, 493.04240216510],
[36.267, 5.30764043577, 312.19908396260],
[36.284, 0.38187812797, 77.75054398390],
[40.619, 2.27237172464, 529.69096509460],
[32.360, 5.91123007786, 5.93789083320],
[31.197, 2.70549944134, 1014.13534755060],
[32.730, 5.22147683115, 41.05379694460],
[36.079, 4.87817494829, 491.55792945680],
[30.181, 3.63273193845, 30.71067209630],
[29.991, 3.30769367603, 1028.36244155220],
[27.048, 1.77647060739, 44.72531777680],
[27.756, 4.55583165091, 7.11354700080],
[27.475, 0.97228280623, 33.94024994380],
[24.944, 3.10083391185, 144.14657116320],
[25.958, 2.99724758632, 60.76695288680],
[21.369, 4.71270048898, 278.25883401880],
[21.283, 0.68957829113, 251.43213107580],
[23.727, 5.12044184469, 176.65053250850],
[21.392, 0.86286397645, 4.19278569400],
[23.373, 1.64955088447, 173.68158709190],
[24.163, 3.56602004577, 145.10977900970],
[20.238, 5.61479765982, 24.11838995730],
[26.958, 4.14294870704, 453.42489381900],
[24.048, 1.00718363213, 213.29909543800],
[18.322, 1.98028683488, 72.07328558160],
[18.266, 6.17260374467, 189.39315380180],
[19.201, 4.65162168927, 106.97674337190],
[17.606, 1.60307551767, 62.25142559510],
[16.545, 1.69931816587, 357.44566660120],
[20.132, 3.29520553529, 114.39910691340],
[15.425, 4.38812302799, 25.60286266560],
[19.173, 2.20014267311, 343.21857259960],
[15.077, 3.66802659382, 0.52126486180],
[14.029, 0.55336333290, 129.91947716160],
[13.361, 5.85751083720, 68.84370773410],
[15.357, 4.20731277007, 567.82400073240],
[12.746, 3.52815836608, 477.33083545520],
[11.724, 5.57647263460, 31.23193695810],
[11.533, 0.89138506506, 594.65070367540],
[10.508, 4.35552732772, 32.71640966640],
[10.826, 5.21826226871, 26.82670294300],
[10.085, 1.98102855874, 40.58071619260],
[10.518, 5.27281360238, 2.92076130680],
[9.207, 0.50092534158, 64.95973858080],
[9.231, 0.68180977710, 160.93896579860],
[8.735, 5.80657503476, 6.59228213900],
[10.114, 4.51164596694, 28.57180808220],
[10.392, 5.18877536013, 42.58645376270],
[9.873, 3.76512158080, 181.75834193920],
[8.350, 2.82449631025, 43.24084506850],
[9.838, 1.49438763600, 47.69426319340],
[7.645, 4.07503370297, 389.94962794650],
[8.004, 2.78082277326, 505.78502345840],
[7.440, 2.35731983047, 11.04570026390],
[7.342, 1.62279119952, 135.54855145410],
[9.450, 0.27241261915, 426.59819087600],
[7.192, 0.82841201068, 911.04257333200],
[6.979, 1.86753914872, 206.18554843720],
[6.874, 0.83802906828, 82.85835341460],
[7.897, 1.86554246391, 38.65430049960],
[6.729, 3.98338053636, 12.53017297220],
[6.357, 0.90093123522, 487.36514376280],
[6.720, 1.33936040700, 220.41264243880],
[7.695, 5.13312500855, 23.90594163620],
[7.059, 5.99832463494, 639.89728631400],
[8.302, 3.85960902325, 37.61177077600],
[6.412, 2.41743702679, 1059.38193018920],
[6.751, 1.96860894470, 45.24658263860],
[6.431, 4.07813226506, 35.68535508300],
[5.517, 3.81325790890, 815.06334611420],
[5.562, 0.41619602150, 563.63121503840],
[6.115, 2.10934525342, 697.74347789400],
[6.216, 4.79301628209, 143.62530630140],
[5.346, 3.13071964722, 386.98068252990],
[5.245, 6.06245070403, 171.23390653710],
[5.129, 0.79394555531, 179.09821306330],
[5.168, 4.73765992885, 522.57741809380],
[6.422, 0.64684316894, 350.33211960040],
[5.006, 2.37645082899, 77.22927912210],
[5.005, 4.70632786971, 460.53844081980],
[5.167, 5.20246616570, 446.31134681820],
[5.119, 2.17338058771, 494.73932319450],
[5.025, 4.21265519856, 536.80451209540],
[4.722, 6.22814313946, 63.73589830340],
[5.125, 5.38138329172, 179.31066138440],
[4.918, 4.09031782903, 488.37653571910],
[4.652, 5.10765073368, 274.06604832480],
[4.711, 5.56542374115, 42.32582133180],
[4.459, 1.30784829830, 69.36497259590],
[5.485, 3.88088464259, 218.40690486870],
[4.416, 3.05353893868, 27.08733537390],
[4.559, 4.92224120952, 285.37238101960],
[4.393, 4.18047835584, 5.41662597140],
[4.687, 2.21401153210, 1029.84691426050],
[4.644, 1.87902594973, 1433.61999142580],
[5.639, 3.05596737234, 983.11585891360],
[6.045, 5.68817982786, 351.81659230870],
[4.430, 3.37768805833, 377.41945497430],
[4.683, 2.14346624864, 97.41551581630],
[5.845, 4.62301099402, 1024.21783996800],
[4.536, 2.45860473853, 496.01134758170],
[4.398, 5.65312496227, 3.93215326310],
[4.287, 0.66340266603, 1012.65087484230],
[4.086, 0.14551174994, 385.28376150050],
[4.029, 5.98399329775, 178.34745353790],
[4.276, 3.68205082970, 348.84764689210],
[5.257, 3.75263242432, 379.86713552910],
[4.012, 0.42559540783, 104313.47953065898],
[4.025, 2.40645188238, 84.34282612290],
[3.957, 0.86846121055, 171.98466606250],
[3.961, 3.04953080906, 1017.31674128830],
[5.559, 0.77714806229, 1447.84708542740],
[5.071, 2.61075526868, 1536.71276564440],
[4.052, 5.00014006312, 391.64654897590],
[5.182, 4.73444634983, 382.83608094570],
[3.763, 4.29449373755, 313.68355667090],
[4.038, 2.82857942788, 1661.14618086540],
[4.067, 5.73169928960, 169.53698550770],
[3.841, 1.62580928420, 0.96320784650],
[3.901, 2.70874386576, 14.01464568050],
[3.721, 1.20062375429, 1026.87796884390],
[3.911, 3.01809123569, 100.38446123290],
[3.489, 4.28865448963, 1025.18104781450],
[3.714, 5.05021268365, 292.48592802040],
[3.816, 3.93084933114, 39.09624348430],
[3.988, 2.82832650224, 134.11226285560],
[3.745, 4.24728135115, 180.79513409270],
[3.836, 1.02685786071, 1018.27994913480],
[3.941, 5.21895739331, 183.76407950930],
[4.669, 4.38080962573, 1066.49547719000],
[3.780, 6.03723468132, 1022.73336725970],
[3.647, 3.98130320367, 608.87779767700],
[3.456, 5.54052355058, 846.08283475120],
[4.047, 3.71041480907, 1018.06750081370],
[3.865, 4.76002199091, 166.56804009110],
[3.629, 3.29053233846, 447.79581952650],
[3.564, 4.36703678321, 397.06317494730],
[3.304, 1.49289552229, 1505.69327700740],
[3.976, 2.42476188945, 106.01353552540],
[4.217, 4.21677652639, 1052.26838318840],
[3.294, 0.42088065654, 22.63391724900],
[3.615, 3.68096122231, 494.52687487340],
[3.230, 5.10786091356, 69.15252427480],
[3.280, 3.62226152032, 531.17543780290],
[3.337, 2.72502876320, 481.47543703940],
[3.187, 0.08677634706, 399.51085550210],
[3.389, 1.79454271219, 1519.92037100900],
[3.179, 3.40418030121, 423.62924545940],
[3.154, 3.69356460843, 470.21728845440],
[3.706, 2.79048710497, 462.02291352810],
[3.136, 4.38015969606, 385.49620982160],
[3.122, 0.48346644637, 79.18683258240],
[3.392, 0.48037804731, 521.09294538550],
[3.465, 0.93152295589, 2183.72359895920],
[3.735, 0.98809808606, 487.41332787260],
[3.998, 3.38773325131, 6283.07584999140],
[2.998, 2.61728063127, 487.62577619370],
[3.295, 2.53821501556, 4.66586644600],
[2.964, 3.66274645375, 495.49008271990],
[3.901, 1.65463523144, 210.33015002140],
[2.950, 1.99904237956, 872.90953769420],
[2.948, 2.90769224206, 391.43410065480],
[2.971, 0.31626092637, 5.10780943070],
[3.085, 0.95725590904, 109.94568878850],
[2.995, 3.34433305798, 394.09422953070],
[3.126, 5.89472116854, 105.49227066360],
[3.904, 3.01022809543, 556.51766803760],
[3.388, 6.24936444215, 535.32003938710],
[2.930, 6.15005257333, 164.12035953630],
[3.267, 4.19718045293, 518.38463239980],
[3.946, 2.88842759670, 151.26011816400],
[3.076, 6.04134449219, 142.14083359310],
[2.823, 0.60712626756, 214.78356814630],
[2.917, 2.74502617182, 138.51749687070],
[3.347, 6.09373507569, 6246.42728706190],
[3.659, 5.12211619716, 79.23501669220],
[3.010, 0.24656411754, 91.78644152380],
[2.861, 6.17465663902, 422.40540518200],
[2.989, 2.31620917965, 485.92885516430],
[3.088, 2.29186342974, 110.20632121940],
[3.030, 3.69866149100, 532.61172640140],
[3.020, 2.36422658177, 290.21955801940],
[3.170, 1.23078934548, 10176.63698328150],
[2.652, 3.35836234807, 148.07872442630],
[2.673, 6.03366372927, 196.50670080260],
[2.630, 0.46957619348, 1970.42450352120],
[2.599, 4.86022081674, 439.19779981740],
[2.878, 2.61946597178, 488.58898404020],
[2.720, 1.71836225398, 364.55921360200],
[3.333, 3.25126857354, 30.05628079050],
[3.053, 2.49346960035, 6243.45834164530],
[3.062, 6.23776299963, 419.48464387520],
[2.786, 0.83078219939, 497.18700374930],
[2.834, 3.52926079424, 457.87831194390],
[2.932, 1.80245810977, 500.15594916590],
[3.030, 5.10152500393, 367.97010200330],
[2.956, 5.76230870725, 986.08480433020],
[3.116, 2.20042242739, 495.70253104100],
[2.554, 0.65945973992, 67.35923502580],
[2.901, 3.91891656185, 10173.66803786490],
[2.840, 1.34453183591, 482.95990974770],
[2.458, 1.20012815574, 489.11024890200],
[2.556, 3.86921927085, 487.10451133190],
[2.614, 1.51881085312, 463.50738623640],
[2.386, 4.58400538443, 615.99134467780],
[2.438, 5.19827220476, 501.11915701240],
[2.537, 1.64802783144, 519.60847267720],
[2.444, 3.87859489652, 185.24855221760],
[2.795, 4.04265752580, 255.05546779820],
[2.895, 3.26202698812, 1646.91908686380],
[2.225, 5.75197574692, 605.95703637020],
[2.324, 3.99503920129, 481.26298871830],
[2.962, 1.74151265966, 2080.63082474060],
[2.621, 1.74442251671, 35.21227433100],
],
# R2
[
[4247.412, 5.89910679117, 38.13303563780],
[217.570, 0.34581829080, 1.48447270830],
[163.025, 2.23872947130, 168.05251279940],
[156.285, 4.59414467342, 182.27960680100],
[117.940, 5.10295026024, 484.44438245600],
[112.429, 1.19000583596, 498.67147645760],
[127.141, 2.84786298079, 35.16409022120],
[99.467, 3.41578558739, 175.16605980020],
[64.814, 3.46214064840, 388.46515523820],
[77.286, 0.01659281785, 491.55792945680],
[49.509, 4.06995509133, 76.26607127560],
[39.330, 6.09521855958, 1021.24889455140],
[36.450, 5.17130059988, 137.03302416240],
[37.080, 5.97288967681, 2.96894541660],
[30.484, 3.58259801313, 33.67961751290],
[21.099, 0.76843555176, 36.64856292950],
[13.886, 3.59248623971, 395.57870223900],
[13.117, 5.09263515697, 98.89998852460],
[11.379, 1.18060018898, 381.35160823740],
[9.132, 2.34787658568, 601.76425067620],
[8.527, 5.25134685897, 2.44768055480],
[8.136, 4.96270726986, 4.45341812490],
[7.417, 4.46775409796, 189.39315380180],
[7.225, 1.92287508629, 9.56122755560],
[7.289, 1.65519525780, 1028.36244155220],
[8.076, 5.84268048311, 220.41264243880],
[9.654, 0.00000000000, 0.00000000000],
[6.554, 0.69397520733, 144.14657116320],
[7.782, 1.14341656235, 1059.38193018920],
[5.665, 6.25378258571, 74.78159856730],
[5.628, 5.23383764266, 46.20979048510],
[5.523, 4.59041448911, 1014.13534755060],
[5.177, 5.23116646157, 477.33083545520],
[5.503, 3.49522319102, 183.76407950930],
[4.878, 3.52934357721, 39.61750834610],
[4.787, 2.08260524745, 41.10198105440],
[5.055, 0.19949888617, 166.56804009110],
[4.751, 1.18054948270, 169.53698550770],
[4.747, 1.50608965076, 73.29712585900],
[6.113, 6.18326155595, 71.81265315070],
[4.606, 3.91970908886, 587.53715667460],
[5.756, 2.23667359233, 176.65053250850],
[4.536, 2.84337336954, 7.11354700080],
[4.338, 0.51553847388, 446.31134681820],
[3.891, 0.26338839265, 1550.93985964600],
[4.465, 3.01487041298, 129.91947716160],
[3.727, 2.37977930658, 160.93896579860],
[3.840, 3.79290381880, 111.43016149680],
[4.142, 1.70293820961, 983.11585891360],
[3.296, 1.07748822909, 505.78502345840],
[4.008, 0.30663868827, 494.73932319450],
[3.974, 5.97351783840, 488.37653571910],
[3.925, 4.85736421123, 60.76695288680],
[2.966, 2.01608546009, 822.17689311500],
[3.972, 1.07780371834, 374.23806123660],
[3.843, 5.23002047199, 350.33211960040],
[2.848, 6.17799253802, 704.85702489480],
[3.527, 0.79317138165, 274.06604832480],
[2.828, 1.32275775835, 386.98068252990],
[2.773, 5.37132330836, 251.43213107580],
[3.113, 5.12622288690, 426.59819087600],
[3.344, 5.61433537548, 1124.34166877000],
[2.597, 0.67759426519, 312.19908396260],
[2.581, 3.55847612121, 567.82400073240],
[2.578, 1.45603792456, 1035.47598855300],
[2.541, 5.19427579702, 1227.43444298860],
[2.510, 4.12148891512, 171.23390653710],
[2.511, 2.71606957319, 179.09821306330],
[2.342, 0.96469916587, 1019.76442184310],
[2.500, 0.70282276030, 707.77778620160],
[2.480, 4.59623030219, 693.55069220000],
[2.253, 0.74334306011, 976.00231191280],
],
# R3
[
[166.297, 4.55243893489, 38.13303563780],
[22.380, 3.94830879358, 168.05251279940],
[21.348, 2.86296778794, 182.27960680100],
[16.233, 0.54226725872, 484.44438245600],
[15.623, 5.75702251906, 498.67147645760],
[11.867, 4.40280192710, 1.48447270830],
[6.448, 5.19003066847, 31.01948863700],
[3.655, 5.91335292846, 1007.02180054980],
[3.681, 1.62865545676, 388.46515523820],
[3.198, 0.70197118575, 1558.05340664680],
[3.243, 1.88035665980, 522.57741809380],
[3.269, 2.94301808574, 76.26607127560],
[2.688, 1.87062743473, 402.69224923980],
[3.246, 0.79381356193, 536.80451209540],
[2.650, 5.76858449026, 343.21857259960],
[2.644, 4.64542905401, 500.15594916590],
[2.541, 4.79217120822, 482.95990974770],
[2.523, 1.72869889780, 395.57870223900],
[2.690, 2.21096415618, 446.31134681820],
[2.355, 5.77381398401, 485.92885516430],
[2.874, 6.19643340540, 815.06334611420],
[2.278, 3.66579603119, 497.18700374930],
],
# R4
[
[4.227, 2.40375758563, 477.33083545520],
[4.333, 0.10459484545, 395.57870223900],
[3.545, 4.78431259422, 1028.36244155220],
[3.154, 3.88192942366, 505.78502345840],
[3.016, 1.03609346831, 189.39315380180],
[2.294, 1.10879658603, 182.27960680100],
[2.295, 5.67776133184, 168.05251279940],
],
]
"""This table contains Neptune's periodic terms (all of them) from the
planetary theory VSOP87 for the radius vector at the equinox of date (taken
from the 'D' solution). In Meeus' book a shortened version can be found in
page 454."""
ORBITAL_ELEM = [
[304.348665, 219.8833092, 0.00030882, 0.000000018], # L
[30.110386869, -0.0000001663, 0.00000000069, 0.0], # a
[0.00945575, 0.000006033, 0.0, -0.00000000005], # e
[1.769953, -0.0093082, -0.00000708, 0.000000027], # i
[131.748057, 1.1022039, 0.00025952, -0.000000637], # Omega
[48.120276, 1.4262957, 0.00038434, 0.00000002] # pie
]
"""This table contains the parameters to compute Neptune's orbital elements for
the mean equinox of date. Based in Table 31.A, page 213"""
ORBITAL_ELEM_J2000 = [
[304.348665, 218.4862002, 0.00000059, -0.000000002], # L
[1.769953, 0.0002256, 0.00000023, 0.0], # i
[131.748057, -0.0061651, -0.00000219, -0.000000078], # Omega
[48.120276, 0.0291866, 0.0000761, 0.0] # pie
]
"""This table contains the parameters to compute Neptune's orbital elements for
the standard equinox J2000.0. Based on Table 31.B, page 215"""
class Neptune(object):
"""
Class Neptune models that planet.
"""
@staticmethod
def geometric_heliocentric_position(epoch, tofk5=True):
"""This method computes the geometric heliocentric position of planet
Neptune for a given epoch, using the VSOP87 theory.
:param epoch: Epoch to compute Neptune position, as an Epoch object
:type epoch: :py:class:`Epoch`
:param tofk5: Whether or not the small correction to convert to the FK5
system will be applied or not
:type tofk5: bool
:returns: A tuple with the heliocentric longitude and latitude (as
:py:class:`Angle` objects), and the radius vector (as a float,
in astronomical units), in that order
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(2018, 10, 27.0)
>>> l, b, r = Neptune.geometric_heliocentric_position(epoch)
>>> print(round(l.to_positive(), 4))
345.3776
>>> print(round(b, 4))
-0.9735
>>> print(round(r, 5))
29.93966
"""
return geometric_vsop_pos(epoch, VSOP87_L, VSOP87_B, VSOP87_R, tofk5)
@staticmethod
def apparent_heliocentric_position(epoch):
"""This method computes the apparent heliocentric position of planet
Neptune for a given epoch, using the VSOP87 theory.
:param epoch: Epoch to compute Neptune position, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple with the heliocentric longitude and latitude (as
:py:class:`Angle` objects), and the radius vector (as a float,
in astronomical units), in that order
:rtype: tuple
:raises: TypeError if input values are of wrong type.
"""
return apparent_vsop_pos(epoch, VSOP87_L, VSOP87_B, VSOP87_R)
@staticmethod
def orbital_elements_mean_equinox(epoch):
"""This method computes the orbital elements of Neptune for the mean
equinox of the date for a given epoch.
:param epoch: Epoch to compute orbital elements, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple containing the following six orbital elements:
- Mean longitude of the planet (Angle)
- Semimajor axis of the orbit (float, astronomical units)
- eccentricity of the orbit (float)
- inclination on the plane of the ecliptic (Angle)
- longitude of the ascending node (Angle)
- argument of the perihelion (Angle)
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(2065, 6, 24.0)
>>> l, a, e, i, ome, arg = Neptune.orbital_elements_mean_equinox(epoch)
>>> print(round(l, 6))
88.321947
>>> print(round(a, 8))
30.11038676
>>> print(round(e, 7))
0.0094597
>>> print(round(i, 6))
1.763855
>>> print(round(ome, 5))
132.46986
>>> print(round(arg, 6))
-83.415521
"""
return orbital_elements(epoch, ORBITAL_ELEM, ORBITAL_ELEM)
@staticmethod
def orbital_elements_j2000(epoch):
"""This method computes the orbital elements of Neptune for the
standard equinox J2000.0 for a given epoch.
:param epoch: Epoch to compute orbital elements, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple containing the following six orbital elements:
- Mean longitude of the planet (Angle)
- Semimajor axis of the orbit (float, astronomical units)
- eccentricity of the orbit (float)
- inclination on the plane of the ecliptic (Angle)
- longitude of the ascending node (Angle)
- argument of the perihelion (Angle)
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(2065, 6, 24.0)
>>> l, a, e, i, ome, arg = Neptune.orbital_elements_j2000(epoch)
>>> print(round(l, 6))
87.407029
>>> print(round(a, 8))
30.11038676
>>> print(round(e, 7))
0.0094597
>>> print(round(i, 6))
1.770101
>>> print(round(ome, 5))
131.74402
>>> print(round(arg, 6))
-83.6046
"""
return orbital_elements(epoch, ORBITAL_ELEM, ORBITAL_ELEM_J2000)
@staticmethod
def geocentric_position(epoch):
"""This method computes the geocentric position of Neptune (right
ascension and declination) for the given epoch, as well as the
elongation angle.
:param epoch: Epoch to compute geocentric position, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple containing the right ascension, the declination and
the elongation angle as Angle objects
:rtype: tuple
:raises: TypeError if input value is of wrong type.
>>> epoch = Epoch(1992, 12, 20.0)
>>> ra, dec, elon = Neptune.geocentric_position(epoch)
>>> print(ra.ra_str(n_dec=1))
19h 17' 14.5''
>>> print(dec.dms_str(n_dec=1))
-21d 34' 15.1''
>>> print(elon.dms_str(n_dec=1))
19d 44' 59.6''
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Compute the heliocentric position of Neptune
l, b, r = Neptune.geometric_heliocentric_position(epoch, tofk5=False)
# Compute the heliocentric position of the Earth
l0, b0, r0 = Earth.geometric_heliocentric_position(epoch, tofk5=False)
# Convert to radians
lr = l.rad()
br = b.rad()
l0r = l0.rad()
b0r = b0.rad()
# Compute first iteration
x = r * cos(br) * cos(lr) - r0 * cos(b0r) * cos(l0r)
y = r * cos(br) * sin(lr) - r0 * cos(b0r) * sin(l0r)
z = r * sin(br) - r0 * sin(b0r)
delta = sqrt(x * x + y * y + z * z)
tau = 0.0057755183 * delta
# Adjust the epoch for light-time
epoch -= tau
# Compute again Neptune coordinates with this correction
l, b, r = Neptune.geometric_heliocentric_position(epoch, tofk5=False)
# Compute second iteration
lr = l.rad()
br = b.rad()
x = r * cos(br) * cos(lr) - r0 * cos(b0r) * cos(l0r)
y = r * cos(br) * sin(lr) - r0 * cos(b0r) * sin(l0r)
z = r * sin(br) - r0 * sin(b0r)
# Compute longitude and latitude
lamb = atan2(y, x)
beta = atan2(z, sqrt(x * x + y * y))
# Now, let's compute the aberration effect
t = (epoch - JDE2000) / 36525
e = 0.016708634 + t * (-0.000042037 - t * 0.0000001267)
pie = 102.93735 + t * (1.71946 + t * 0.00046)
pie = radians(pie)
lon = l0 + 180.0
lon = lon.rad()
k = 20.49552 # The constant of aberration
deltal1 = k * (-cos(lon - lamb) + e * cos(pie - lamb)) / cos(beta)
deltab1 = -k * sin(beta) * (sin(lon - lamb) - e * sin(pie - lamb))
deltal1 = Angle(0, 0, deltal1)
deltab1 = Angle(0, 0, deltab1)
# Correction to FK5 system
lamb = Angle(lamb, radians=True)
lamb = lamb.to_positive()
beta = Angle(beta, radians=True)
l_prime = lamb - t * (1.397 + t * 0.00031)
deltal2 = Angle(0, 0, -0.09033)
a = 0.03916 * (cos(l_prime.rad()) + sin(l_prime.rad()))
a = a * tan(b.rad())
deltal2 += Angle(0, 0, a)
deltab2 = 0.03916 * (cos(l_prime.rad()) - sin(l_prime.rad()))
deltab2 = Angle(0, 0, deltab2)
# Apply the corrections
lamb = lamb + deltal1 + deltal2
beta = beta + deltab1 + deltab2
# Correction for nutation
dpsi = nutation_longitude(epoch)
lamb += dpsi
e = true_obliquity(epoch)
ra, dec = ecliptical2equatorial(lamb, beta, e)
# Let's compute the elongation angle
lons, lats, rs = Sun.apparent_geocentric_position(epoch)
lambr = lamb.rad()
lsr = lons.rad()
betar = beta.rad()
elon = acos(cos(betar) * cos(lambr - lsr))
elon = Angle(elon, radians=True)
return ra, dec, elon
@staticmethod
def conjunction(epoch):
"""This method computes the time of the conjunction closest to the
given epoch.
:param epoch: Epoch close to the desired conjunction
:type epoch: :py:class:`Epoch`
:returns: The time when the conjunction happens, as an Epoch
:rtype: :py:class:`Epoch`
:raises: TypeError if input value is of wrong type.
:raises: ValueError if input epoch outside the -2000/4000 range.
>>> epoch = Epoch(1993, 10, 1.0)
>>> conj = Neptune.conjunction(epoch)
>>> y, m, d = conj.get_date()
>>> print(y)
1994
>>> print(m)
1
>>> print(round(d, 4))
11.3057
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Check that the input epoch is within valid range
y = epoch.year()
if y < -2000.0 or y > 4000.0:
raise ValueError("Epoch outside the -2000/4000 range")
# Set some specific constants for Neptune's conjunction
a = 2451569.379
b = 367.486703
m0 = 21.5569
m1 = 2.194998
k = round((365.2425 * y + 1721060.0 - a) / b)
jde0 = a + k * b
m = m0 + k * m1
m = Angle(m).to_positive()
m = m.rad()
t = (jde0 - 2451545.0) / 36525.0
# Compute a couple auxiliary angles
ee = 207.83 + 8.51 * t
gg = 276.74 + 209.98 * t
# Convert to radians
ee = Angle(ee).rad()
gg = Angle(gg).rad()
corr = (0.0168 +
sin(m) * (-2.5606 + t * (0.0088 + t * 0.00002)) +
cos(m) * (-0.8611 + t * (-0.0037 + t * 0.00002)) +
sin(2.0 * m) * (0.0118 + t * (-0.0004 + t * 0.00001)) +
cos(2.0 * m) * (0.0307 - t * 0.0003) +
cos(ee) * (-0.5964) +
cos(gg) * (0.0728))
to_return = jde0 + corr
return Epoch(to_return)
@staticmethod
def opposition(epoch):
"""This method computes the time of the opposition closest to the given
epoch.
:param epoch: Epoch close to the desired opposition
:type epoch: :py:class:`Epoch`
:returns: The time when the opposition happens, as an Epoch
:rtype: :py:class:`Epoch`
:raises: TypeError if input value is of wrong type.
:raises: ValueError if input epoch outside the -2000/4000 range.
>>> epoch = Epoch(1846, 8, 1)
>>> oppo = Neptune.opposition(epoch)
>>> y, m, d = oppo.get_date()
>>> print(y)
1846
>>> print(m)
8
>>> print(round(d, 4))
20.1623
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Check that the input epoch is within valid range
y = epoch.year()
if y < -2000.0 or y > 4000.0:
raise ValueError("Epoch outside the -2000/4000 range")
# Set some specific constants for Neptune's opposition
a = 2451753.122
b = 367.486703
m0 = 202.6544
m1 = 2.194998
k = round((365.2425 * y + 1721060.0 - a) / b)
jde0 = a + k * b
m = m0 + k * m1
m = Angle(m).to_positive()
m = m.rad()
t = (jde0 - 2451545.0) / 36525.0
# Compute a couple auxiliary angles
ee = 207.83 + 8.51 * t
gg = 276.74 + 209.98 * t
# Convert to radians
ee = Angle(ee).rad()
gg = Angle(gg).rad()
corr = (-0.014 + t * t * 0.00001 +
sin(m) * (-1.3486 + t * (0.001 + t * 0.00001)) +
cos(m) * (0.8597 + t * 0.0037) +
sin(2.0 * m) * (-0.0082 + t * (-0.0002 + t * 0.00001)) +
cos(2.0 * m) * (0.0037 - t * 0.0003) +
cos(ee) * (-0.5964) +
cos(gg) * (0.0728))
to_return = jde0 + corr
return Epoch(to_return)
@staticmethod
def magnitude(sun_dist, earth_dist):
"""This function computes the approximate magnitude of Neptune.
:param sun_dist: Distance from Neptune to Sun, in Astronomical Units
:type sun_dist: float
:param earth_dist: Distance Neptune to Earth, in Astronomical Units
:type earth_dist: float
:returns: Neptune's magnitude
:rtype: float
:raises: TypeError if input values are of wrong type.
"""
if not (isinstance(sun_dist, float) and isinstance(earth_dist, float)):
raise TypeError("Invalid input types")
m = -7.05 + 5.0 * log10(sun_dist * earth_dist)
return round(m, 1)
def main():
# Let's define a small helper function
def print_me(msg, val):
print("{}: {}".format(msg, val))
# Let's show some uses of Neptune class
print("\n" + 35 * "*")
print("*** Use of Neptune class")
print(35 * "*" + "\n")
# Let's now compute the heliocentric position for a given epoch
epoch = Epoch(2018, 10, 27.0)
lon, lat, r = Neptune.geometric_heliocentric_position(epoch)
print_me("Geometric Heliocentric Longitude", lon.to_positive())
print_me("Geometric Heliocentric Latitude", lat)
print_me("Radius vector", r)
print("")
# Compute the geocentric position for 1992/12/20:
epoch = Epoch(1992, 12, 20.0)
ra, dec, elon = Neptune.geocentric_position(epoch)
print_me("Right ascension", ra.ra_str(n_dec=1))
print_me("Declination", dec.dms_str(n_dec=1))
print_me("Elongation", elon.dms_str(n_dec=1))
print("")
# Print mean orbital elements for Neptune at 2065.6.24
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Neptune.orbital_elements_mean_equinox(epoch)
print_me("Mean longitude of the planet", round(l, 6)) # 88.321947
print_me("Semimajor axis of the orbit (UA)", round(a, 8)) # 30.11038676
print_me("Eccentricity of the orbit", round(e, 7)) # 0.0094597
print_me("Inclination on plane of the ecliptic", round(i, 6)) # 1.763855
print_me("Longitude of the ascending node", round(ome, 5)) # 132.46986
print_me("Argument of the perihelion", round(arg, 6)) # -83.415521
print("")
# Compute the time of the conjunction close to 1993/10/1
epoch = Epoch(1993, 10, 1.0)
conj = Neptune.conjunction(epoch)
y, m, d = conj.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Conjunction date", date)
# Compute the time of the opposition close to 1846/8/1
epoch = Epoch(1846, 8, 1)
oppo = Neptune.opposition(epoch)
y, m, d = oppo.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Opposition date", date)
if __name__ == "__main__":
main()
pymeeus-0.3.6/pymeeus/Pluto.py 0000664 0000000 0000000 00000026242 13555455377 0016404 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from math import sin, cos, sqrt, asin, atan2
from pymeeus.Angle import Angle
from pymeeus.Epoch import Epoch, JDE2000
from pymeeus.Sun import Sun
"""
.. module:: Pluto
:synopsis: Class to model Pluto minor planet
:license: GNU Lesser General Public License v3 (LGPLv3)
.. moduleauthor:: Dagoberto Salazar
"""
PLUTO_ARGUMENT = [
(0.0, 0.0, 1.0),
(0.0, 0.0, 2.0),
(0.0, 0.0, 3.0),
(0.0, 0.0, 4.0),
(0.0, 0.0, 5.0),
(0.0, 0.0, 6.0),
(0.0, 1.0, -1.0),
(0.0, 1.0, 0.0),
(0.0, 1.0, 1.0),
(0.0, 1.0, 2.0),
(0.0, 1.0, 3.0),
(0.0, 2.0, -2.0),
(0.0, 2.0, -1.0),
(0.0, 2.0, 0.0),
(1.0, -1.0, 0.0),
(1.0, -1.0, 1.0),
(1.0, 0.0, -3.0),
(1.0, 0.0, -2.0),
(1.0, 0.0, -1.0),
(1.0, 0.0, 0.0),
(1.0, 0.0, 1.0),
(1.0, 0.0, 2.0),
(1.0, 0.0, 3.0),
(1.0, 0.0, 4.0),
(1.0, 1.0, -3.0),
(1.0, 1.0, -2.0),
(1.0, 1.0, -1.0),
(1.0, 1.0, 0.0),
(1.0, 1.0, 1.0),
(1.0, 1.0, 3.0),
(2.0, 0.0, -6.0),
(2.0, 0.0, -5.0),
(2.0, 0.0, -4.0),
(2.0, 0.0, -3.0),
(2.0, 0.0, -2.0),
(2.0, 0.0, -1.0),
(2.0, 0.0, 0.0),
(2.0, 0.0, 1.0),
(2.0, 0.0, 2.0),
(2.0, 0.0, 3.0),
(3.0, 0.0, -2.0),
(3.0, 0.0, -1.0),
(3.0, 0.0, 0.0)
]
"""This table contains Pluto's argument coefficients according to Table 37.A in
Meeus' book, page 265."""
PLUTO_LONGITUDE = [
(-19799805.0, 19850055.0),
(897144.0, -4954829.0),
(611149.0, 1211027.0),
(-341243.0, -189585.0),
(129287.0, -34992.0),
(-38164.0, 30893.0),
(20442.0, -9987.0),
(-4063.0, -5071.0),
(-6016.0, -3336.0),
(-3956.0, 3039.0),
(-667.0, 3572.0),
(1276.0, 501.0),
(1152.0, -917.0),
(630.0, -1277.0),
(2571.0, -459.0),
(899.0, -1449.0),
(-1016.0, 1043.0),
(-2343.0, -1012.0),
(7042.0, 788.0),
(1199.0, -338.0),
(418.0, -67.0),
(120.0, -274.0),
(-60.0, -159.0),
(-82.0, -29.0),
(-36.0, -29.0),
(-40.0, 7.0),
(-14.0, 22.0),
(4.0, 13.0),
(5.0, 2.0),
(-1.0, 0.0),
(2.0, 0.0),
(-4.0, 5.0),
(4.0, -7.0),
(14.0, 24.0),
(-49.0, -34.0),
(163.0, -48.0),
(9.0, -24.0),
(-4.0, 1.0),
(-3.0, 1.0),
(1.0, 3.0),
(-3.0, -1.0),
(5.0, -3.0),
(0.0, 0.0)
]
"""This table contains the periodic terms to compute Pluto's heliocentric
longitude according to Table 37.A in Meeus' book, page 265"""
PLUTO_LATITUDE = [
(-5452852.0, -14974862),
(3527812.0, 1672790.0),
(-1050748.0, 327647.0),
(178690.0, -292153.0),
(18650.0, 100340.0),
(-30697.0, -25823.0),
(4878.0, 11248.0),
(226.0, -64.0),
(2030.0, -836.0),
(69.0, -604.0),
(-247.0, -567.0),
(-57.0, 1.0),
(-122.0, 175.0),
(-49.0, -164.0),
(-197.0, 199.0),
(-25.0, 217.0),
(589.0, -248.0),
(-269.0, 711.0),
(185.0, 193.0),
(315.0, 807.0),
(-130.0, -43.0),
(5.0, 3.0),
(2.0, 17.0),
(2.0, 5.0),
(2.0, 3.0),
(3.0, 1.0),
(2.0, -1.0),
(1.0, -1.0),
(0.0, -1.0),
(0.0, 0.0),
(0.0, -2.0),
(2.0, 2.0),
(-7.0, 0.0),
(10.0, -8.0),
(-3.0, 20.0),
(6.0, 5.0),
(14.0, 17.0),
(-2.0, 0.0),
(0.0, 0.0),
(0.0, 0.0),
(0.0, 1.0),
(0.0, 0.0),
(1.0, 0.0)
]
"""This table contains the periodic terms to compute Pluto's heliocentric
latitude according to Table 37.A in Meeus' book, page 265"""
PLUTO_RADIUS_VECTOR = [
(66865439.0, 68951812.0),
(-11827535.0, -332538.0),
(1593179.0, -1438890.0),
(-18444.0, 483220.0),
(-65977.0, -85431.0),
(31174.0, -6032.0),
(-5794.0, 22161.0),
(4601.0, 4032.0),
(-1729.0, 234.0),
(-415.0, 702.0),
(239.0, 723.0),
(67.0, -67.0),
(1034.0, -451.0),
(-129.0, 504.0),
(480.0, -231.0),
(2.0, -441.0),
(-3359.0, 265.0),
(7856.0, -7832.0),
(36.0, 45763.0),
(8663.0, 8547.0),
(-809.0, -769.0),
(263.0, -144.0),
(-126.0, 32.0),
(-35.0, -16.0),
(-19.0, -4.0),
(-15.0, 8.0),
(-4.0, 12.0),
(5.0, 6.0),
(3.0, 1.0),
(6.0, -2.0),
(2.0, 2.0),
(-2.0, -2.0),
(14.0, 13.0),
(-63.0, 13.0),
(136.0, -236.0),
(273.0, 1065.0),
(251.0, 149.0),
(-25.0, -9.0),
(9.0, -2.0),
(-8.0, 7.0),
(2.0, -10.0),
(19.0, 35.0),
(10.0, 3.0)
]
"""This table contains the periodic terms to compute Pluto's heliocentric
radius vector according to Table 37.A in Meeus' book, page 265"""
class Pluto(object):
"""
Class Pluto models that minor planet.
"""
@staticmethod
def geometric_heliocentric_position(epoch):
"""This method computes the geometric heliocentric position of planet
Pluto for a given epoch.
:param epoch: Epoch to compute Pluto position, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple with the heliocentric longitude and latitude (as
:py:class:`Angle` objects), and the radius vector (as a float,
in astronomical units), in that order
:rtype: tuple
:raises: TypeError if input value is of wrong type.
:raises: ValueError if input epoch outside the 1885-2099 range.
>>> epoch = Epoch(1992, 10, 13.0)
>>> l, b, r = Pluto.geometric_heliocentric_position(epoch)
>>> print(round(l, 5))
232.74071
>>> print(round(b, 5))
14.58782
>>> print(round(r, 6))
29.711111
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Check that the input epoch is within valid range
y = epoch.year()
if y < 1885.0 or y > 2099.0:
raise ValueError("Epoch outside the 1885-2099 range")
t = (epoch - JDE2000) / 36525.0
jj = 34.35 + 3034.9057 * t
ss = 50.08 + 1222.1138 * t
pp = 238.96 + 144.96 * t
# Compute the arguments
corr_lon = 0.0
corr_lat = 0.0
corr_rad = 0.0
for n, argument in enumerate(PLUTO_ARGUMENT):
iii, jjj, kkk = argument
alpha = Angle(iii * jj + jjj * ss + kkk * pp).to_positive()
alpha = alpha.rad()
sin_a = sin(alpha)
cos_a = cos(alpha)
a_lon, b_lon = PLUTO_LONGITUDE[n]
corr_lon += a_lon * sin_a + b_lon * cos_a
a_lat, b_lat = PLUTO_LATITUDE[n]
corr_lat += a_lat * sin_a + b_lat * cos_a
a_rad, b_rad = PLUTO_RADIUS_VECTOR[n]
corr_rad += a_rad * sin_a + b_rad * cos_a
# The coefficients in the tables were scaled up. Let's scale them down
corr_lon /= 1000000.0
corr_lat /= 1000000.0
corr_rad /= 10000000.0
lon = Angle(238.958116 + 144.96 * t + corr_lon)
lat = Angle(-3.908239 + corr_lat)
radius = 40.7241346 + corr_rad
return lon, lat, radius
@staticmethod
def geocentric_position(epoch):
"""This method computes the geocentric position of Pluto (right
ascension and declination) for the given epoch, for the standard
equinox J2000.0.
:param epoch: Epoch to compute geocentric position, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple containing the right ascension and the declination as
Angle objects
:rtype: tuple
:raises: TypeError if input value is of wrong type.
:raises: ValueError if input epoch outside the 1885-2099 range.
>>> epoch = Epoch(1992, 10, 13.0)
>>> ra, dec = Pluto.geocentric_position(epoch)
>>> print(ra.ra_str(n_dec=1))
15h 31' 43.7''
>>> print(dec.dms_str(n_dec=0))
-4d 27' 29.0''
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Check that the input epoch is within valid range
y = epoch.year()
if y < 1885.0 or y > 2099.0:
raise ValueError("Epoch outside the 1885-2099 range")
# Compute the heliocentric position of Pluto
ll, b, r = Pluto.geometric_heliocentric_position(epoch)
# Change angles to radians
ll = ll.rad()
b = b.rad()
# Values corresponding to obliquity of ecliptic (epsilon) for J2000.0
sine = 0.397777156
cose = 0.917482062
x = r * cos(ll) * cos(b)
y = r * (sin(ll) * cos(b) * cose - sin(b) * sine)
z = r * (sin(ll) * cos(b) * sine + sin(b) * cose)
# Compute Sun's J2000.0 rectacngular coordinates
xs, ys, zs = Sun.rectangular_coordinates_j2000(epoch)
# Compute auxiliary quantities
xi = x + xs
eta = y + ys
zeta = z + zs
# Compute Pluto's distance to Earth
delta = sqrt(xi * xi + eta * eta + zeta * zeta)
# Get the light-time difference
tau = 0.0057755183 * delta
# Repeat the computations using the light-time correction
ll, b, r = Pluto.geometric_heliocentric_position(epoch - tau)
# Change angles to radians
ll = ll.rad()
b = b.rad()
x = r * cos(ll) * cos(b)
y = r * (sin(ll) * cos(b) * cose - sin(b) * sine)
z = r * (sin(ll) * cos(b) * sine + sin(b) * cose)
# Compute auxiliary quantities
xi = x + xs
eta = y + ys
zeta = z + zs
# Compute Pluto's distance to Earth
delta = sqrt(xi * xi + eta * eta + zeta * zeta)
# Compute right ascension and declination
alpha = Angle(atan2(eta, xi), radians=True)
dec = Angle(asin(zeta / delta), radians=True)
return alpha.to_positive(), dec
def main():
# Let's define a small helper function
def print_me(msg, val):
print("{}: {}".format(msg, val))
# Let's show some uses of Pluto class
print("\n" + 35 * "*")
print("*** Use of Pluto class")
print(35 * "*" + "\n")
# Let's now compute the heliocentric position for a given epoch
epoch = Epoch(1992, 10, 13.0)
lon, lat, r = Pluto.geometric_heliocentric_position(epoch)
print_me("Geometric Heliocentric Longitude", lon.to_positive())
print_me("Geometric Heliocentric Latitude", lat)
print_me("Radius vector", r)
print("")
# Compute the geocentric position for 1992/10/13:
epoch = Epoch(1992, 10, 13.0)
ra, dec = Pluto.geocentric_position(epoch)
print_me("Right ascension", ra.ra_str(n_dec=1))
print_me("Declination", dec.dms_str(n_dec=1))
if __name__ == "__main__":
main()
pymeeus-0.3.6/pymeeus/Saturn.py 0000664 0000000 0000000 00001152016 13555455377 0016555 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from math import sin, cos, tan, acos, atan2, sqrt, radians, log10
from pymeeus.Angle import Angle
from pymeeus.Epoch import Epoch, JDE2000
from pymeeus.Interpolation import Interpolation
from pymeeus.Coordinates import (
geometric_vsop_pos, apparent_vsop_pos, orbital_elements,
nutation_longitude, true_obliquity, ecliptical2equatorial,
passage_nodes_elliptic
)
from pymeeus.Earth import Earth
from pymeeus.Sun import Sun
"""
.. module:: Saturn
:synopsis: Class to model Saturn planet
:license: GNU Lesser General Public License v3 (LGPLv3)
.. moduleauthor:: Dagoberto Salazar
"""
VSOP87_L = [
# L0
[
[87401354.029, 0.00000000000, 0.00000000000],
[11107659.780, 3.96205090194, 213.29909543800],
[1414150.958, 4.58581515873, 7.11354700080],
[398379.386, 0.52112025957, 206.18554843720],
[350769.223, 3.30329903015, 426.59819087600],
[206816.296, 0.24658366938, 103.09277421860],
[79271.288, 3.84007078530, 220.41264243880],
[23990.338, 4.66976934860, 110.20632121940],
[16573.583, 0.43719123541, 419.48464387520],
[14906.995, 5.76903283845, 316.39186965660],
[15820.300, 0.93808953760, 632.78373931320],
[14609.562, 1.56518573691, 3.93215326310],
[13160.308, 4.44891180176, 14.22709400160],
[15053.509, 2.71670027883, 639.89728631400],
[13005.305, 5.98119067061, 11.04570026390],
[10725.066, 3.12939596466, 202.25339517410],
[5863.207, 0.23657028777, 529.69096509460],
[5227.771, 4.20783162380, 3.18139373770],
[6126.308, 1.76328499656, 277.03499374140],
[5019.658, 3.17787919533, 433.71173787680],
[4592.541, 0.61976424374, 199.07200143640],
[4005.862, 2.24479893937, 63.73589830340],
[2953.815, 0.98280385206, 95.97922721780],
[3873.696, 3.22282692566, 138.51749687070],
[2461.172, 2.03163631205, 735.87651353180],
[3269.490, 0.77491895787, 949.17560896980],
[1758.143, 3.26580514774, 522.57741809380],
[1640.183, 5.50504966218, 846.08283475120],
[1391.336, 4.02331978116, 323.50541665740],
[1580.641, 4.37266314120, 309.27832265580],
[1123.515, 2.83726793572, 415.55249061210],
[1017.258, 3.71698151814, 227.52618943960],
[848.643, 3.19149825839, 209.36694217490],
[1087.237, 4.18343232481, 2.44768055480],
[956.752, 0.50740889886, 1265.56747862640],
[789.205, 5.00745123149, 0.96320784650],
[686.965, 1.74714407827, 1052.26838318840],
[654.470, 1.59889331515, 0.04818410980],
[748.811, 2.14398149298, 853.19638175200],
[633.980, 2.29889903023, 412.37109687440],
[743.584, 5.25276954625, 224.34479570190],
[852.677, 3.42141350697, 175.16605980020],
[579.857, 3.09259007048, 74.78159856730],
[624.904, 0.97046831256, 210.11770170030],
[529.861, 4.44938897119, 117.31986822020],
[542.643, 1.51824320514, 9.56122755560],
[474.279, 5.47527185987, 742.99006053260],
[448.542, 1.28990416161, 127.47179660680],
[546.358, 2.12678554211, 350.33211960040],
[478.054, 2.96488054338, 137.03302416240],
[354.944, 3.01286483030, 838.96928775040],
[451.827, 1.04436664241, 490.33408917940],
[347.413, 1.53928227764, 340.77089204480],
[343.475, 0.24604039134, 0.52126486180],
[309.001, 3.49486734909, 216.48048917570],
[322.185, 0.96137456104, 203.73786788240],
[372.308, 2.27819108625, 217.23124870110],
[321.543, 2.57182354537, 647.01083331480],
[330.196, 0.24715617844, 1581.95934828300],
[249.116, 1.47010534421, 1368.66025284500],
[286.688, 2.37043745859, 351.81659230870],
[220.225, 4.20422424873, 200.76892246580],
[277.775, 0.40020408926, 211.81462272970],
[204.500, 6.01082206600, 265.98929347750],
[207.663, 0.48349820488, 1162.47470440780],
[208.655, 1.34516255304, 625.67019231240],
[182.454, 5.49122292426, 2.92076130680],
[226.609, 4.91003163138, 12.53017297220],
[207.659, 1.28302218900, 39.35687591520],
[173.914, 1.86305806814, 0.75075952540],
[184.690, 3.50344404958, 149.56319713460],
[183.511, 0.97254952728, 4.19278569400],
[146.068, 6.23102544071, 195.13984817330],
[164.541, 0.44005517520, 5.41662597140],
[147.526, 1.53529320509, 5.62907429250],
[139.666, 4.29450260069, 21.34064100240],
[131.283, 4.06828961903, 10.29494073850],
[117.283, 2.67920400584, 1155.36115740700],
[149.299, 5.73594349789, 52.69019803950],
[122.373, 1.97588777199, 4.66586644600],
[113.747, 5.59427544714, 1059.38193018920],
[102.702, 1.19748124058, 1685.05212250160],
[118.156, 5.34072933900, 554.06998748280],
[109.275, 3.43812715686, 536.80451209540],
[110.399, 0.16604024090, 1.48447270830],
[124.969, 6.27737805832, 1898.35121793960],
[89.949, 5.80392934702, 114.13847448250],
[103.956, 2.19210363069, 88.86568021700],
[112.437, 1.10502663534, 191.20769491020],
[106.570, 4.01156608514, 956.28915597060],
[91.430, 1.87521577510, 38.13303563780],
[83.791, 5.48810655641, 0.11187458460],
[83.461, 2.28972767279, 628.85158605010],
[96.987, 4.53666595763, 302.16477565500],
[100.631, 4.96513666539, 269.92144674060],
[75.491, 2.18045274099, 728.76296653100],
[96.330, 2.83319189210, 275.55052103310],
[82.363, 3.05469876064, 440.82528487760],
[73.888, 5.08914205084, 1375.77379984580],
[71.633, 5.10940743430, 65.22037101170],
[70.409, 4.86846451411, 0.21244832110],
[69.760, 3.71029022489, 14.97785352700],
[88.772, 3.86334563977, 278.51946644970],
[68.090, 0.73415460990, 1478.86657406440],
[66.501, 0.02677580336, 70.84944530420],
[65.682, 2.02165559602, 142.44965013380],
[75.765, 1.61410487792, 284.14854074220],
[63.153, 3.49493353034, 479.28838891550],
[62.539, 2.58713611532, 422.66603761290],
[69.313, 3.43979731402, 515.46387109300],
[79.021, 4.45154941586, 35.42472265210],
[63.664, 3.31749528708, 62.25142559510],
[52.939, 5.51392725227, 0.26063243090],
[53.011, 3.18480701697, 8.07675484730],
[54.492, 2.45674090515, 22.09140052780],
[50.514, 4.26749346978, 99.16062095550],
[55.170, 0.96797446150, 942.06206196900],
[49.288, 2.38641424063, 1471.75302706360],
[47.199, 2.02515248245, 312.19908396260],
[61.080, 1.50295092063, 210.85141488320],
[45.126, 0.93109376473, 2001.44399215820],
[60.556, 2.68715551585, 388.46515523820],
[43.452, 2.52602011714, 288.08069400530],
[42.544, 3.81793980322, 330.61896365820],
[39.915, 5.71378652900, 408.43894361130],
[50.145, 6.03164759907, 2214.74308759620],
[45.860, 0.54229721801, 212.33588759150],
[54.165, 0.78154835399, 191.95845443560],
[47.016, 4.59934671151, 437.64389113990],
[42.362, 1.90070070955, 430.53034413910],
[39.722, 1.63259419913, 1066.49547719000],
[36.345, 0.84756992711, 213.34727954780],
[35.468, 4.18603772925, 215.74677599280],
[36.344, 3.93295730315, 213.25091132820],
[38.005, 0.31313803095, 423.41679713830],
[44.746, 1.12488341174, 6.15033915430],
[37.902, 1.19795851115, 2.70831298570],
[43.402, 1.37363944007, 563.63121503840],
[43.764, 3.93043802956, 525.49817940060],
[34.825, 1.01566605408, 203.00415469950],
[31.755, 1.69273634405, 0.16005869440],
[30.880, 6.13525703832, 417.03696332040],
[36.388, 6.00586032647, 18.15924726470],
[29.032, 1.19660544505, 404.50679034820],
[32.812, 0.53649479713, 107.02492748170],
[30.433, 0.72335287989, 222.86032299360],
[32.644, 0.81204701486, 1795.25844372100],
[37.769, 3.69666903716, 1272.68102562720],
[27.679, 1.45663979401, 7.16173111060],
[27.187, 1.89731951902, 1045.15483618760],
[37.699, 4.51997049537, 24.37902238820],
[34.885, 4.46095761791, 214.26230328450],
[32.650, 0.66372395761, 692.58748435350],
[30.324, 5.30369950147, 33.94024994380],
[27.480, 6.22702216249, 1.27202438720],
[26.657, 4.56713198392, 7.06536289100],
[31.745, 5.49798599565, 56.62235130260],
[28.050, 5.64447420566, 128.95626931510],
[24.277, 3.93966553574, 414.06801790380],
[32.017, 5.22260660455, 92.04707395470],
[26.976, 0.06705123981, 205.22234059070],
[22.974, 3.65817751770, 207.67002114550],
[31.775, 5.59198119173, 6069.77675455340],
[23.153, 2.10054506119, 1788.14489672020],
[31.025, 0.37190053329, 703.63318461740],
[29.376, 0.14742155778, 131.40394986990],
[22.562, 5.24009182383, 212.77783057620],
[26.185, 5.41311252822, 140.00196957900],
[25.673, 4.36038885283, 32.24332891440],
[20.392, 2.82413909260, 429.77958461370],
[20.659, 0.67091805084, 2317.83586181480],
[24.397, 3.08740396398, 145.63104387150],
[23.735, 2.54365387567, 76.26607127560],
[20.157, 5.06708675157, 617.80588578620],
[23.307, 3.97357729211, 483.22054217860],
[22.878, 6.10452832642, 177.87437278590],
[22.978, 3.20140795404, 208.63322899200],
[20.638, 5.22128727027, 6.59228213900],
[21.446, 0.72034565528, 1258.45393162560],
[18.034, 6.11382719947, 210.37833413120],
[22.380, 5.92299908546, 173.94221952280],
[19.128, 5.77772013766, 213.82036029980],
[20.871, 5.79126331864, 2531.13495725280],
[19.327, 1.64147367403, 565.11568774670],
[16.806, 3.27953583323, 98.89998852460],
[20.833, 2.01655935909, 860.30992875280],
[17.939, 3.14329498012, 831.85574074960],
[15.653, 3.10137669623, 106.27416795630],
[18.235, 5.22595172482, 73.29712585900],
[19.302, 5.93947114050, 425.11371816770],
[14.514, 2.75049388379, 1.22384027740],
[14.562, 5.18795088579, 305.34616939270],
[14.254, 3.88079504939, 54.17467074780],
[14.594, 3.25016810034, 78.71375183040],
[13.637, 2.55486219141, 405.25754987360],
[13.914, 1.72356993808, 69.15252427480],
[13.689, 2.37430586272, 125.98732389850],
[13.496, 0.82683590985, 99.91138048090],
[18.483, 0.73171264866, 9999.98645077300],
[13.542, 3.58584380924, 234.63973644040],
[13.741, 6.18458356845, 245.54242435240],
[16.944, 0.72200792996, 2111.65031337760],
[17.441, 0.23803796878, 134.58534360760],
[14.181, 4.51963935804, 59.80374504030],
[13.598, 2.53776983965, 1.69692102940],
[12.240, 2.11973445754, 28.31117565130],
[11.988, 1.62114832786, 1361.54670584420],
[11.974, 4.07378735120, 280.96714700450],
[12.758, 5.31146919749, 344.70304530790],
[16.051, 3.97093160336, 355.74874557180],
[11.427, 5.51123470805, 192.69216761850],
[13.133, 4.69168003518, 767.36908292080],
[14.746, 3.28998910617, 1589.07289528380],
[11.417, 1.81615681635, 2104.53676637680],
[11.626, 2.79410384978, 362.86229257260],
[13.234, 4.16642914717, 225.82926841020],
[10.599, 5.50554288376, 199.28444975750],
[10.558, 3.57501718639, 1.43628859850],
[10.485, 2.84462532686, 85.82729883120],
[10.296, 0.22225264071, 198.32124191100],
[10.552, 0.18716643576, 217.49188113200],
[11.853, 0.11584857323, 7.63481186260],
[10.248, 0.21904154170, 144.14657116320],
[10.403, 1.68776321208, 31.01948863700],
[10.313, 4.72132701805, 216.21985674480],
[10.719, 2.60869377832, 339.28641933650],
[9.636, 3.66746262954, 212.54833591260],
[9.631, 3.34275630477, 223.59403617650],
[9.684, 0.41556436593, 2634.22773147140],
[9.885, 4.01798130416, 207.14875628370],
[13.212, 6.00683506785, 214.78356814630],
[11.346, 2.61898383052, 7.86430652620],
[9.158, 5.39855118256, 342.25536475310],
[11.882, 4.00188476744, 267.47376618580],
[12.054, 3.59904816676, 124.43341522100],
[8.921, 4.22716773496, 6.36278747540],
[10.142, 3.60807025662, 14.01464568050],
[9.350, 0.72255756005, 347.88443904560],
[10.529, 2.36779614951, 831.10498122420],
[8.587, 4.48439552745, 1692.16566950240],
[10.142, 3.93620624488, 207.88246946660],
[9.147, 4.28032835242, 312.45971639350],
[8.088, 0.81225752596, 264.50482076920],
[9.241, 4.26402650779, 20.60692781950],
[9.614, 0.64291347187, 218.92816973050],
[8.537, 0.48756672382, 1574.84580128220],
[7.986, 4.71088791079, 333.65734504400],
[8.951, 0.90641577433, 497.44763618020],
[7.959, 2.73277594136, 4.14460158420],
[9.133, 5.08250578843, 241.61027108930],
[9.669, 1.60623316904, 0.89377187730],
[8.883, 5.55491009279, 2847.52682690940],
[8.926, 5.80857835271, 329.72519178090],
[7.226, 0.60164771281, 206.23373254700],
[7.655, 5.53676341721, 116.42609634290],
[7.118, 0.18747501525, 209.10630974400],
[7.507, 5.43555636173, 621.73803904930],
[8.885, 5.36210591059, 343.21857259960],
[7.056, 0.41911130648, 756.32338265690],
[8.124, 4.05571025939, 237.67811782620],
[8.964, 1.65023927130, 210.33015002140],
[6.961, 3.17855200943, 543.02428721890],
[8.916, 0.56503620503, 2428.04218303420],
[6.926, 3.66869171435, 247.23934538180],
[8.982, 4.25046722481, 46.47042291600],
[7.089, 5.14399672225, 231.45834270270],
[7.381, 1.25092810119, 217.96496188400],
[7.134, 2.83090354854, 1148.24761040620],
[6.353, 0.82582711056, 31.49256938900],
[7.558, 5.62617378543, 518.64526483070],
[6.383, 3.54809945181, 244.31858407500],
[6.914, 3.70012837706, 206.13736432740],
[6.286, 5.79144749096, 179.35884549420],
[6.639, 4.55197585824, 120.35824960600],
[5.823, 1.40737990571, 214.04985496340],
[5.850, 4.86725483749, 320.32402291970],
[6.213, 1.07959478499, 251.43213107580],
[7.730, 3.82244175824, 380.12776796000],
[5.716, 1.34909972549, 1677.93857550080],
[6.469, 1.34776801494, 188.92007304980],
[5.668, 2.28643368177, 20.44686912510],
[6.092, 3.62275289839, 1169.58825140860],
[5.711, 0.51687421521, 148.07872442630],
[5.804, 1.54831552984, 2420.92863603340],
[5.703, 5.05993483230, 2.96894541660],
[5.913, 1.66225477547, 842.15068148810],
[7.449, 1.36195943673, 166.82867252200],
[6.482, 1.94032041024, 357.44566660120],
[6.368, 2.44556930837, 654.12438031560],
[6.327, 0.40654591365, 168.05251279940],
[5.573, 2.69383455663, 750.10360753340],
[7.216, 2.22547711392, 488.84961647110],
[6.701, 6.03737590382, 160.60889739850],
[6.938, 5.78362034410, 700.66423920080],
[6.701, 3.14738404371, 491.81856188770],
[5.684, 2.59531540359, 1.64453140270],
[4.900, 2.03902856851, 0.80314915210],
[5.147, 4.10182033298, 196.62432088160],
[4.985, 2.96765983996, 258.87574647670],
[5.911, 1.81507526918, 252.65597135320],
[6.056, 3.33431010543, 182.27960680100],
[6.195, 5.01900871714, 273.10284047830],
[6.316, 5.49053160191, 206.70681329900],
[5.529, 3.31498938717, 1905.46476494040],
[5.102, 3.98171453610, 254.94359321360],
[4.762, 2.24463685255, 635.96513305090],
[5.213, 0.53609344278, 135.54855145410],
[4.639, 0.04466373027, 213.18722085340],
[5.951, 0.54565487490, 51.20572533120],
[4.535, 0.16088614438, 2950.61960112800],
[4.639, 4.73769153591, 213.41097002260],
[4.716, 3.13636467789, 28.57180808220],
[4.748, 1.12156952989, 6.21977512350],
[5.735, 0.04425142145, 348.84764689210],
[4.334, 2.68814219154, 81.75213321620],
[4.538, 3.83676888638, 487.36514376280],
[5.582, 3.63486861028, 248.72381809010],
[4.106, 3.39164360376, 50.40257617910],
[5.657, 3.59967787362, 282.45161971280],
[5.145, 1.33329458239, 173.68158709190],
[3.898, 4.11804949361, 213.51154375910],
[3.898, 0.66430577257, 213.08664711690],
[4.418, 0.10784811796, 905.88657979150],
[4.935, 2.19060382431, 189.72322220190],
[3.799, 2.60752583205, 546.95644048200],
[3.960, 1.60339889010, 218.71572140940],
[3.740, 3.30724497407, 274.06604832480],
[3.778, 0.26606330942, 636.71589257630],
[4.657, 0.37532078548, 2744.43405269080],
[3.682, 5.11587898667, 458.84151979040],
[4.230, 5.18313062329, 27.08733537390],
[5.181, 3.75590784411, 3127.31333126180],
[3.904, 2.21738744557, 358.93013930950],
[4.784, 4.60666675927, 72.07328558160],
[3.552, 3.23789349146, 543.91805909620],
[3.502, 3.68869576093, 41.64449777560],
[4.803, 4.73553427126, 240.38643081190],
[3.768, 3.86077796242, 2008.55753915900],
[3.680, 5.36657425183, 10.03430830760],
[4.298, 3.15595944154, 738.79727483860],
[3.388, 0.73176365772, 11.30633269480],
[3.507, 2.62508475661, 13.33332212430],
[3.552, 0.28967392251, 1891.23767093880],
[3.604, 4.69324090480, 295.05122865420],
[3.621, 6.25264336426, 129.91947716160],
[3.334, 5.04221806054, 153.49535039770],
[3.837, 5.31732096284, 3163.91869656600],
[3.281, 5.59031570352, 2.00573757010],
[4.042, 2.37081308090, 176.65053250850],
[3.500, 2.54744268360, 1464.63948006280],
[4.144, 5.46982520458, 6.90109867970],
[3.691, 4.07518441665, 969.62247809490],
[3.947, 4.27108449197, 181.80652604900],
[3.867, 5.48643386310, 37.87240320690],
[3.339, 6.05372370584, 9.40116886120],
[3.484, 5.81097824751, 13.49338081870],
[3.033, 2.38897886651, 221.37585028530],
[2.990, 4.13995939326, 66.70484372000],
[3.746, 5.29902286106, 561.18353448360],
[3.233, 4.27743802321, 593.42686339800],
[3.170, 1.75400477770, 235.39049596580],
[4.114, 2.01006788412, 601.76425067620],
[2.937, 4.76351448561, 213.55972786890],
[2.932, 1.83671373509, 501.37978944330],
[2.937, 0.01884528825, 213.03846300710],
[3.268, 4.44653949711, 60.76695288680],
[3.608, 0.14307251176, 552.58551477450],
[2.947, 0.74753671556, 17.52610781830],
[3.979, 0.76931722276, 424.15051032120],
[2.803, 1.07518176128, 1994.33044515740],
[2.905, 1.27201007426, 2737.32050569000],
[3.610, 0.22394084000, 121.25202148330],
[2.846, 5.11748545179, 205.66428357540],
[3.156, 2.74955723696, 494.26624244250],
[3.576, 4.49826302447, 167.08930495290],
[2.746, 0.66908290712, 7.00167241620],
[2.780, 2.10066625279, 894.84087952760],
[2.875, 2.39009721774, 151.04766984290],
[3.020, 0.25475826890, 40.84134862350],
[2.731, 3.74814908509, 429.04587143080],
[2.793, 4.17938837230, 292.01284726840],
[2.706, 5.34438894925, 327.43756992050],
[2.965, 0.61653881148, 643.82943957710],
[2.616, 4.81901387560, 681.54178408960],
[2.548, 3.78162580820, 1485.98012106520],
[3.483, 5.76091147029, 141.22580985640],
[3.257, 0.75722680616, 555.55446019110],
[2.887, 6.15899159727, 425.63498302950],
[2.450, 1.29619859767, 193.65537546500],
[3.401, 2.48137843009, 43.28902917830],
[3.208, 0.66002842340, 776.93031047640],
[2.435, 4.58097103726, 477.80391620720],
[2.577, 1.41538858001, 100.64509366380],
[2.600, 3.73139519973, 17.40848773930],
[2.428, 1.04400815278, 1279.79457262800],
[2.569, 5.36004101928, 7.22542158540],
[2.844, 2.47228767650, 280.00393915800],
[2.847, 1.52706408796, 17.26547538740],
[2.461, 2.73899140465, 172.24529849340],
[3.228, 4.10258705369, 618.55664531160],
[2.288, 0.18365494079, 426.64637498580],
[2.952, 3.97748947007, 650.94298657790],
[2.653, 0.14255829255, 162.89651925890],
[2.291, 3.26940117011, 426.55000676620],
[3.118, 2.80941831445, 2221.85663459700],
[2.343, 4.24349768377, 113.38771495710],
[2.780, 4.36271946528, 130.44074202340],
[2.539, 5.58396427573, 381.35160823740],
[2.673, 2.74210116623, 45.57665103870],
[3.017, 3.72208070740, 228.27694896500],
[2.781, 0.36312756349, 8.59801970910],
[2.377, 4.49193242045, 25.12978191360],
[2.140, 5.43424670725, 630.33605875840],
[2.456, 1.71617205116, 313.68355667090],
[2.071, 2.40453395841, 16.46232623530],
[2.050, 6.19704773331, 3267.01147078460],
[2.764, 0.40107063007, 219.44943459230],
[2.307, 2.61462153778, 26.82670294300],
[2.650, 0.05892373791, 5856.47765911540],
[1.974, 2.15890150781, 746.92221379570],
[1.949, 3.13157993205, 226.63241756230],
[2.063, 0.75916097286, 472.17484191470],
[2.172, 1.41622302638, 23.57587323610],
[2.378, 3.45446288811, 241.87090352020],
[2.314, 2.92766120608, 170.76082578510],
[2.409, 1.55291842382, 112.65400177420],
[2.092, 4.33481587531, 210.59078245230],
[1.883, 4.75777119721, 115.62294719080],
[1.963, 5.63940648232, 454.90936652730],
[1.871, 2.14579836453, 135.33610313300],
[2.304, 0.11816226543, 3060.82592234740],
[2.221, 4.34506511014, 556.51766803760],
[1.867, 5.70943358261, 19.12245511120],
[2.269, 3.36100653157, 696.51963761660],
[2.127, 0.44754929310, 216.00740842370],
[1.807, 6.15427316170, 5.84152261360],
[2.213, 3.42223891884, 533.62311835770],
[1.866, 3.90535444843, 220.36445832900],
[1.767, 0.94232357739, 213.45915413240],
[1.767, 3.84003619647, 213.13903674360],
[1.910, 3.72504487558, 104.05598206510],
[1.750, 0.82378244287, 220.46082654860],
[1.838, 0.06310147657, 436.15941843160],
[2.146, 4.41415180481, 184.09414790940],
[1.730, 2.21039276178, 416.30325013750],
[1.715, 0.26601715797, 103.14095832840],
[1.710, 0.63515407580, 181.05576652360],
[2.307, 3.29544714308, 569.04784100980],
[1.906, 5.30639447218, 405.99126305650],
[1.863, 4.68613642432, 286.59622129700],
[1.873, 2.26516020863, 1781.03134971940],
[2.035, 3.85188859267, 672.14061522840],
[2.236, 3.01959133214, 105.54045477340],
[1.767, 1.45800271562, 16.67477455640],
[1.633, 0.16030477876, 18.91000679010],
[2.116, 2.90186702031, 486.40193591630],
[2.202, 3.88125957017, 427.56139872250],
[1.706, 3.35213628354, 103.04459010880],
[1.604, 2.48973273967, 55.65914345610],
[1.744, 1.83791106739, 1044.40407666220],
[1.569, 6.10089581118, 106.01353552540],
[2.081, 6.03810192844, 916.93228005540],
[1.799, 5.01592570405, 731.94436026870],
[1.737, 1.49651330833, 25.86349509650],
[1.695, 3.53314158403, 627.36711334180],
[1.543, 0.81384993001, 2310.72231481400],
[1.896, 3.38169845451, 2324.94940881560],
[1.926, 4.66519027283, 353.30106501700],
[1.765, 5.14740716994, 107.28555991260],
[1.556, 1.12431826916, 230.82520325630],
[1.843, 0.02435960281, 102.12956637210],
[1.501, 4.18415120927, 194.17664032680],
[1.528, 1.00328674046, 3053.71237534660],
[1.529, 5.58893570479, 212.02707105080],
[1.684, 5.08547245125, 3480.31056622260],
[1.461, 2.31020597821, 721.64941953020],
[1.480, 5.34331643017, 418.52143602870],
[1.601, 5.53623000915, 391.17346822390],
[1.893, 3.62340803433, 204.70107572890],
[1.529, 6.06535432009, 77.96299230500],
[1.529, 5.47660937625, 214.57111982520],
[1.552, 2.06693539836, 36.64856292950],
[1.453, 6.04709831442, 165.60483224460],
[1.393, 2.28253369060, 403.02231763990],
[1.444, 2.90650214018, 447.93883187840],
[1.924, 1.37028714759, 468.24268865160],
[1.426, 0.13255011458, 2207.62954059540],
[1.389, 2.21739183113, 643.07868005170],
[1.365, 1.63853880518, 629.60234557550],
[1.362, 3.35131049142, 93.53154666300],
[1.376, 5.36989538450, 180.16199464630],
[1.584, 0.85642767335, 271.40591944890],
[1.405, 5.69231057947, 25.27279426550],
[1.681, 5.30308110734, 835.03713448730],
[1.598, 3.04233449432, 42.53826965290],
[1.759, 3.59043066940, 508.35032409220],
[1.394, 4.55070863290, 426.07692601420],
[1.314, 1.81147178081, 1382.88734684660],
[1.281, 4.26508388040, 123.53964334370],
[1.742, 5.71133189432, 22.89454967990],
[1.483, 1.84687831602, 289.56516671360],
[1.257, 3.01131200921, 409.92341631960],
[1.285, 4.41168551011, 558.00214074590],
[1.355, 3.87115897452, 1802.37199072180],
[1.333, 0.08474224795, 411.62033734900],
[1.235, 4.08060394635, 28.45418800320],
[1.373, 5.06955106471, 427.11945573780],
[1.565, 2.32953532704, 41.05379694460],
[1.656, 6.06169130804, 268.43697403230],
[1.212, 3.05966957556, 420.96911658350],
[1.238, 5.25936700679, 412.58354519550],
[1.220, 3.92987038126, 2.66012887590],
[1.552, 1.48184004773, 9786.68735533500],
[1.240, 1.46716327302, 291.26208774300],
[1.133, 5.39046583617, 423.67742956920],
[1.319, 5.79905891015, 1108.13997496560],
[1.329, 0.92291650117, 778.41478318470],
[1.399, 2.55906860098, 421.93232443000],
[1.120, 3.86777259232, 1033.35837639830],
[1.164, 4.10048660918, 685.47393735270],
[1.321, 1.45843550806, 1073.60902419080],
[1.313, 0.11761534168, 71.81265315070],
[1.438, 2.57741975416, 100.38446123290],
[1.190, 5.63379509659, 5.10780943070],
[1.289, 5.20604565993, 278.25883401880],
[1.157, 5.00101860101, 230.56457082540],
[1.233, 2.70207317014, 282.66406803390],
[1.209, 4.02230498135, 980.66817835880],
[1.070, 5.17569455055, 313.21047591890],
[1.292, 4.30946655209, 219.89137757700],
[1.399, 2.58476795858, 2538.24850425360],
[1.038, 0.14212199680, 820.05928096030],
[1.245, 4.08278897130, 525.75881183150],
[1.254, 2.46275017735, 457.61767951300],
[1.021, 1.11239421009, 69.36497259590],
[1.009, 1.01709171385, 143.93412284210],
[1.075, 2.39196853318, 48.75804477640],
[1.180, 6.18938910429, 3377.21779200400],
[0.989, 5.94928603657, 3583.40334044120],
[0.972, 4.25434114756, 397.39324334740],
[0.983, 0.04442608551, 140.96517742550],
[0.972, 5.67683107883, 422.40540518200],
[1.298, 1.34524469231, 875.83029900100],
[1.190, 0.67933974618, 699.70103135430],
[0.950, 2.66964340700, 92.30770638560],
[0.933, 0.63000656580, 406.95447090300],
[0.959, 1.77556884452, 67.66805156650],
[1.185, 3.70140604185, 285.63301345050],
[0.956, 5.18928530992, 319.31263096340],
[1.014, 1.97449310063, 2097.42321937600],
[1.048, 3.69659410655, 117.91056905120],
[1.153, 2.53320305623, 104.57724692690],
[1.258, 2.51536062507, 694.07195706180],
[0.971, 5.19147635849, 240.12579838100],
[0.940, 3.94701776697, 35.21227433100],
[1.047, 6.12360979460, 238.90195810360],
[1.185, 5.28289734361, 638.41281360570],
[0.893, 0.95364488395, 14.81779483260],
[1.094, 3.93009679240, 945.24345570670],
[0.949, 3.46451925897, 443.86366626340],
[1.002, 3.18639902867, 337.73251065900],
[1.017, 2.87111101661, 211.60217440860],
[0.875, 0.58638080067, 2.28762186040],
[0.925, 1.54981519784, 19.64371997300],
[1.152, 1.68528608590, 691.10301164520],
[0.832, 2.64637256467, 436.89313161450],
[0.834, 3.88913521570, 331.20966448920],
[0.825, 2.15437872210, 739.80866679490],
[0.848, 3.18263239100, 196.03362005060],
[1.044, 3.87842686803, 532.61172640140],
[0.846, 5.38853773752, 97.67614824720],
[1.021, 2.93075488512, 184.98791978670],
[0.843, 6.12012061227, 616.32141307790],
[0.820, 1.01380400969, 480.77286162380],
[0.842, 3.56523575381, 421.18156490460],
[1.076, 3.28234305253, 5.67725840230],
[0.808, 2.78227865672, 212.07525516060],
[0.812, 0.94281737163, 108.72184851110],
[0.808, 2.21202653278, 610.69233878540],
[0.808, 2.00008111713, 214.52293571540],
[0.875, 2.14897461363, 114.39910691340],
[0.791, 2.35474255596, 1.37259812370],
[0.960, 0.25496742364, 710.74673161820],
[1.001, 2.34471240227, 16.04163511000],
[0.994, 0.63700664871, 84.93352695390],
[0.985, 2.63664920104, 395.57870223900],
[0.874, 2.59112594967, 418.00017116690],
[0.758, 0.58117487362, 2627.11418447060],
[0.894, 1.48976897396, 760.25553592000],
[0.768, 5.25095392845, 305.08553696180],
[1.020, 2.73153988233, 268.95823889410],
[0.903, 0.13224671457, 238.42887735160],
[0.750, 0.76128043194, 724.83081326790],
[0.903, 3.37105323370, 526.50957135690],
[0.930, 2.83622594110, 2641.34127847220],
[0.808, 5.23759255053, 216.26804085460],
[0.864, 1.22059443823, 570.74476203920],
[0.798, 3.72388187653, 124.50285119020],
[0.753, 0.72747041757, 3370.10424500320],
[0.844, 2.03251767810, 511.53171782990],
[0.827, 4.49936223096, 444.75743814070],
[0.848, 3.74330244183, 2118.76386037840],
[0.795, 0.27939057139, 101.86893394120],
[0.754, 5.68583497533, 662.53120356300],
[0.750, 4.78778128003, 102.57150935680],
[0.709, 1.64518562815, 159.12442469020],
[0.770, 4.02404991950, 909.81873305460],
[0.765, 1.62693133597, 465.95506679120],
[0.911, 5.04635658282, 913.96333463880],
[0.861, 2.78971410809, 495.75071515080],
[0.688, 1.10207467005, 1.53686233500],
[0.803, 4.33043919090, 453.42489381900],
[0.673, 0.03439333853, 2524.02141025200],
[0.856, 3.50639182375, 439.12836384820],
[0.684, 3.93906807606, 337.80194662820],
[0.716, 6.18909854987, 310.71461125430],
[0.922, 1.70634200320, 125.18417474640],
[0.885, 1.69955870744, 6283.07584999140],
[0.656, 1.28102954508, 432.01481684740],
[0.808, 1.64410808383, 299.12639426920],
[0.656, 1.49449164620, 849.26422848890],
[0.679, 4.02962984490, 429.51895218280],
[0.854, 3.04068731741, 298.23262239190],
[0.676, 2.17631477883, 576.16138801060],
[0.881, 5.47733557925, 220.93390730060],
[0.739, 5.85330901725, 938.12990870590],
[0.637, 2.96294462433, 425.84743135060],
[0.665, 1.62998758015, 221.16340196420],
[0.693, 3.53871697600, 1182.92157353290],
[0.659, 1.85319023888, 72.33391801250],
[0.631, 2.01234919422, 58.10682401090],
[0.806, 5.21763933753, 428.08266358430],
[0.804, 5.94281804567, 26.02355379090],
[0.679, 2.11784460940, 256.42806592190],
[0.692, 1.88791537515, 214.99601646740],
[0.731, 1.95762888351, 19.01058052660],
[0.786, 0.91252523635, 518.38463239980],
[0.684, 4.89288171806, 3796.70243587920],
[0.612, 2.08511492036, 1038.04128918680],
[0.598, 3.48814927085, 219.66188291340],
[0.828, 0.31689472200, 25.60286266560],
[0.773, 4.57524006328, 624.91943278700],
[0.775, 6.12920077021, 432.22726516850],
[0.820, 4.11320326130, 141.48644228730],
[0.588, 1.95775535412, 211.86280683950],
[0.661, 5.30100397707, 103.61403908040],
[0.588, 2.82460441973, 214.73538403650],
[0.651, 5.56732715834, 393.46109008430],
[0.564, 4.01666572198, 850.01498801430],
[0.657, 2.58166087726, 526.98265210890],
[0.722, 0.68494219480, 953.10776223290],
[0.592, 2.37190662490, 205.43478891180],
[0.738, 1.07981019512, 239.16259053450],
[0.590, 6.03587790219, 188.02630117250],
[0.559, 5.76010635813, 430.79097657000],
[0.535, 5.80499883199, 100.17201291180],
[0.611, 5.95439360100, 3693.60966166060],
[0.591, 4.22379888536, 505.31194270640],
[0.691, 2.96568305933, 606.76018552230],
[0.648, 2.33387623043, 30.75885620610],
[0.544, 2.21686115865, 92.79783348010],
[0.517, 2.68282421083, 262.05714021440],
[0.563, 1.69735688719, 2413.81508903260],
[0.569, 2.85075508949, 227.31374111850],
[0.531, 2.17713708433, 263.02034806090],
[0.504, 4.44947885193, 343.73983746140],
[0.578, 3.31462999801, 33.72780162270],
[0.619, 1.83409636127, 867.42347575360],
[0.546, 4.82201187196, 1048.33622992530],
[0.517, 1.42016110098, 1246.65747183630],
[0.681, 1.94124532036, 25874.60404613620],
[0.551, 5.70617358907, 1119.18567522950],
[0.523, 5.78878978812, 366.79444583570],
[0.486, 1.90063955671, 1063.31408345230],
[0.552, 3.64325031166, 256.58812461630],
[0.612, 2.39349965241, 2854.64037391020],
[0.495, 3.46833581240, 597.35901666110],
[0.622, 1.86539391351, 524.01370669230],
[0.480, 5.33557742428, 29.20494752860],
[0.492, 4.64109549618, 384.05992122310],
[0.520, 2.32171681836, 2957.73314812880],
[0.545, 0.53274778710, 431.26405732200],
[0.479, 2.13325177240, 319.57326339430],
[0.526, 4.17771910249, 136.06981631590],
[0.612, 4.56148986681, 774.48262992160],
[0.642, 3.25195912708, 67.88049988760],
[0.527, 4.00299045889, 2435.15573003500],
[0.524, 4.69817741494, 336.83873878170],
[0.495, 5.95703962647, 765.88461021250],
[0.463, 6.09780322600, 54.33472944220],
[0.538, 0.22116216124, 450.97721326420],
[0.465, 1.87487942848, 958.57677783100],
[0.500, 1.54084756342, 572.22923474750],
[0.528, 3.54764543325, 233.90602325750],
[0.451, 5.72664397006, 3899.79521009780],
[0.514, 5.00509609437, 273.85360000370],
[0.471, 2.96871670899, 306.83064210100],
[0.447, 1.87279400375, 62.03897727400],
[0.456, 5.45521998520, 1171.87587326900],
[0.499, 1.92821778530, 217.44369702220],
[0.548, 3.21873307934, 824.74219374880],
[0.579, 2.29424247924, 810.65811209910],
[0.550, 0.67875196590, 315.16802937920],
[0.556, 1.30277646899, 133.10087089930],
[0.449, 6.05954557724, 141.69889060840],
[0.447, 5.83737433218, 823.99143422340],
[0.517, 3.62832879827, 934.94851496820],
[0.482, 1.04855231956, 1055.44977692610],
[0.482, 4.07207792722, 195.89060769870],
[0.428, 0.65142455407, 427.34895040140],
[0.585, 5.48406138684, 376.19561469690],
[0.469, 3.87344294455, 320.58465535060],
[0.488, 2.83523964260, 460.53844081980],
[0.450, 4.30419652064, 88.11492069160],
[0.537, 0.85582040238, 214.19286731530],
[0.438, 1.32216133929, 963.40270297140],
[0.560, 2.50374228728, 952.09637027660],
[0.442, 2.80002649649, 209.15449385380],
[0.443, 4.31062007978, 9992.87290377220],
[0.469, 0.45235276525, 464.73122651380],
[0.488, 0.35817443686, 36.90919536040],
[0.418, 4.81080887468, 775.23338944700],
[0.417, 4.93943593579, 306.09692891810],
[0.483, 3.92847922420, 39.61750834610],
[0.467, 1.89153069484, 30.05628079050],
[0.410, 5.52148731635, 118.07062774560],
[0.406, 1.35991757653, 945.99421523210],
[0.446, 4.06656112480, 380.38840039090],
[0.466, 3.65954736664, 988.53248488500],
[0.418, 1.40185532806, 313.94418910180],
[0.481, 1.80873987903, 43.12897048390],
[0.437, 0.86746182155, 170.97327410620],
[0.483, 4.49894122772, 46.20979048510],
[0.398, 2.90977731924, 131.54696222180],
[0.529, 3.74604329884, 699.17976649250],
[0.396, 0.34033987778, 2943.50605412720],
[0.545, 2.97400965609, 305.60680182360],
[0.412, 3.81935995126, 84.34282612290],
[0.425, 2.60672101181, 121.84272231430],
[0.474, 2.41769418569, 838.21852822500],
[0.457, 1.27246488727, 107.75864066460],
[0.519, 3.12247974037, 10213.28554621100],
[0.495, 4.63705386984, 301.41401612960],
[0.537, 3.92653937147, 212.40532356070],
[0.385, 3.33476325050, 806.72595883600],
[0.477, 1.66001855277, 175.42669223110],
[0.378, 0.47722247042, 200.55647414470],
[0.459, 5.14821844812, 960.22130923370],
[0.401, 4.36420932544, 739.05790726950],
[0.467, 2.96423984091, 170.01006625970],
[0.457, 4.45829983338, 33.13710079170],
[0.476, 3.63257697985, 20.49505323490],
[0.462, 3.57494442856, 71.60020482960],
[0.376, 2.94770389653, 6062.66320755260],
[0.473, 5.32759318114, 373.90799283650],
[0.383, 1.84111991862, 346.39996633730],
[0.366, 2.05039240297, 87.31177153950],
[0.383, 2.00608370504, 3274.12501778540],
[0.374, 5.65444305031, 540.73666535850],
[0.410, 5.62629715297, 58.31927233200],
[0.441, 6.26992749567, 378.90392768260],
[0.451, 3.05920369737, 898.77303279070],
[0.371, 5.65787287655, 89.75945209430],
[0.367, 5.71998148487, 96.87299909510],
[0.410, 1.06290837961, 1257.70317210020],
[0.418, 2.03053179312, 146.59425171800],
[0.492, 0.89529424356, 423.62924545940],
[0.474, 2.43080822444, 705.11765732570],
[0.457, 3.42347802916, 829.62050851590],
[0.419, 0.32183412086, 90.56260124640],
[0.347, 3.60116807440, 449.23210812500],
[0.397, 2.29159647723, 782.34693644780],
[0.433, 3.40938468811, 32.45577723550],
[0.343, 4.30952656038, 401.32539661050],
[0.351, 0.42160026295, 3686.49611465980],
[0.360, 5.83204569879, 491.55792945680],
[0.389, 2.73429108352, 36.17548217750],
[0.434, 0.33664392528, 55.13787859430],
[0.346, 5.09191837323, 392.65794093220],
[0.336, 2.38696934868, 295.19424100610],
[0.336, 1.56832822829, 233.74596456310],
[0.400, 3.08774286568, 745.91082183940],
[0.468, 4.21298903633, 832.58945393250],
[0.400, 1.32415028336, 551.10104206620],
[0.344, 1.52193307438, 754.83890994860],
[0.433, 3.06696455642, 885.43971066640],
[0.346, 4.76971433870, 4113.09430553580],
[0.329, 3.31034285904, 952.35700270750],
[0.425, 2.90590905341, 462.02291352810],
[0.342, 5.87738962422, 561.93429400900],
[0.439, 0.20791179302, 768.85355562910],
[0.330, 2.08599193524, 614.62449204850],
[0.394, 3.59805431851, 1261.63532536330],
[0.369, 6.03075127328, 199.80571461930],
[0.375, 2.56075851331, 732.69511979410],
[0.408, 0.69233617038, 328.24071907260],
[0.331, 4.28333309370, 541.53981451060],
[0.323, 0.06694179304, 433.75992198660],
[0.431, 4.50603340920, 2914.01423582380],
[0.343, 2.18898146246, 80.19822453870],
[0.437, 5.34124436008, 387.24131496080],
[0.371, 4.82569229712, 103.35340664950],
[0.318, 3.75720880396, 749.20983565610],
[0.344, 0.70749566894, 229.97386999440],
[0.312, 6.02741985422, 361.37781986430],
[0.340, 0.64358874512, 303.86169668440],
[0.394, 0.49801994278, 248.46318565920],
[0.309, 5.83535487659, 236.19364511790],
[0.325, 2.65292455786, 757.21715453420],
[0.365, 0.56788400592, 402.21916848780],
[0.342, 3.83450185886, 519.39602435610],
[0.306, 0.35126074897, 354.99798604640],
[0.314, 5.42086935152, 1151.42900414390],
[0.384, 0.09367760642, 201.51968199120],
[0.307, 5.62165090342, 426.48631629140],
[0.301, 1.78550205039, 1354.43315884340],
[0.300, 5.23426324539, 190.40454575810],
[0.296, 3.15801280224, 192.85222631290],
[0.381, 1.98600461808, 109.94568878850],
[0.370, 5.57659190517, 562.14674233010],
[0.305, 2.73187068494, 840.66620877980],
[0.374, 3.73375594662, 420.44785172170],
[0.307, 4.03149340189, 426.71006546060],
[0.320, 1.42665180100, 2730.20695868920],
[0.392, 0.14343294900, 206.39799675830],
[0.288, 2.44787565138, 623.22251175760],
[0.344, 1.57825843162, 6290.18939699220],
[0.317, 1.84490263693, 214.94362684070],
[0.346, 2.16849893508, 3171.03224356680],
[0.286, 1.01623455966, 315.64111013120],
[0.361, 3.44807605339, 259.76951835400],
[0.280, 4.64272946177, 254.14044406150],
[0.285, 2.09430258387, 335.14181775230],
[0.281, 4.72136141979, 317.14262918200],
[0.289, 4.70265740009, 29.74746424980],
[0.290, 2.74360609522, 551.03160609700],
[0.300, 5.23308974173, 1321.43907040360],
[0.283, 1.21193797828, 1699.27921650320],
[0.280, 0.45877292284, 38.60611638980],
[0.273, 1.81952809851, 1056.20053645150],
[0.336, 5.63115066542, 95.22846769240],
[0.309, 3.33676739908, 1193.96727379680],
[0.288, 2.57603349418, 1166.40685767090],
[0.277, 3.35359995343, 532.87235883230],
[0.287, 0.37229115993, 114.94162363460],
[0.274, 4.21164027953, 90.82323367730],
[0.267, 5.61367132586, 870.46185713940],
[0.376, 6.14391456675, 913.00012679230],
[0.296, 5.75705165982, 4010.00153131720],
[0.304, 1.97982468634, 495.96316347190],
[0.308, 5.08911712262, 481.73606947030],
[0.265, 0.02893016561, 172.45774681450],
[0.291, 2.10106037916, 619.29035849450],
[0.273, 4.78343050572, 771.30123618390],
[0.358, 0.04093867464, 637.44960575920],
[0.272, 5.86505586319, 332.17287233570],
[0.266, 3.28626000731, 560.71045373160],
[0.312, 3.91213951915, 1226.21060271120],
[0.258, 3.41185135958, 426.81063919710],
[0.257, 1.06772454181, 714.67888488130],
[0.258, 6.24129294573, 426.38574255490],
[0.256, 0.75289096697, 103.84353374400],
[0.254, 3.21116652124, 102.34201469320],
[0.254, 6.14632777985, 620.25356634100],
[0.266, 2.54280196709, 132.88842257820],
[0.314, 0.31303204249, 991.71387862270],
[0.317, 2.93589163442, 357.23321828010],
[0.266, 6.12280636670, 57.51612317990],
[0.254, 2.99730079627, 642.34496686880],
[0.267, 5.54663413439, 628.59095361920],
[0.348, 1.33319249154, 815.06334611420],
[0.278, 5.59573741920, 334.55111692130],
[0.303, 3.22789148979, 409.18970313670],
[0.246, 3.90430259983, 441.57604440300],
[0.260, 3.86355293530, 639.37602145220],
[0.250, 0.07635434166, 2840.41327990860],
[0.246, 5.71009371698, 476.31944349890],
[0.301, 6.15272106984, 559.69906177530],
[0.268, 3.73809606804, 658.05653357870],
[0.316, 4.63035287047, 745.27768239300],
[0.311, 3.51827727424, 2751.54759969160],
[0.239, 0.51133317457, 1041.22268292450],
[0.238, 5.46347279420, 4216.18707975440],
[0.262, 3.20254407166, 1251.34038462480],
[0.238, 1.02679111743, 1262.38608488870],
[0.277, 3.32996713394, 545.47196777370],
[0.271, 0.49229846069, 419.53282798500],
[0.303, 3.77087511317, 285.37238101960],
[0.234, 3.64328189368, 407.47573576480],
[0.270, 3.93080966194, 313.47110834980],
[0.302, 3.15201610429, 915.23535902600],
[0.264, 0.46127639727, 720.89866000480],
[0.235, 1.74238582338, 369.08206769610],
[0.284, 5.20345848078, 395.10562148700],
[0.295, 5.03016292492, 594.65070367540],
[0.290, 1.94941528794, 907.37105249980],
[0.229, 0.11049722694, 3259.89792378380],
[0.304, 1.81516929363, 49.72125262290],
[0.268, 5.54944666204, 12352.85260454480],
[0.248, 4.39993603541, 385.54439393140],
[0.234, 1.63365119249, 3590.51688744200],
[0.317, 4.74907646809, 420.00590873700],
[0.228, 4.89094697746, 1181.43710082460],
[0.258, 2.41510535278, 550.13783421970],
[0.236, 4.10002766188, 6467.92575796160],
[0.249, 1.97767956861, 589.49471013490],
[0.226, 1.60308230318, 316.27999507200],
[0.286, 6.10513234736, 484.70501488690],
[0.299, 3.71741328977, 1123.11782849260],
[0.263, 1.85502475341, 608.87779767700],
[0.220, 0.94624116595, 316.50374424120],
[0.292, 3.12099513976, 47.69426319340],
[0.217, 4.93010394323, 281.17959532560],
[0.295, 3.18346450625, 1050.99635880120],
[0.248, 5.48523310249, 638.93407846750],
[0.276, 1.09325899753, 544.50875992720],
[0.279, 2.65446123759, 134.11226285560],
[0.247, 4.17284927352, 950.13881681630],
[0.212, 2.45582771491, 1164.76232626820],
[0.266, 2.30028827109, 314.90739694830],
[0.215, 3.55148746518, 1097.09427470170],
[0.223, 0.36862624591, 81.89514556810],
[0.283, 0.35013012349, 1269.49963188950],
[0.263, 0.58255768951, 386.98068252990],
[0.208, 4.61303945066, 668.20846196530],
[0.222, 4.51639912193, 304.12232911530],
[0.274, 0.63572336701, 679.25416222920],
[0.215, 0.74685271552, 1008.97935401010],
[0.268, 3.43326489941, 598.84348936940],
[0.271, 3.98364990268, 453.68552624990],
[0.215, 2.24139383226, 661.23792731640],
[0.264, 2.58516335032, 2527.20280398970],
[0.205, 1.94472028389, 650.19222705250],
[0.258, 1.50724315598, 1759.83372106890],
[0.272, 6.27135287672, 990.22940591440],
[0.201, 1.11891338895, 97.41551581630],
[0.236, 4.13547185065, 348.63519857100],
[0.201, 2.67485193508, 1546.53462563090],
[0.250, 5.44391862722, 1254.52177836250],
[0.203, 5.48660442144, 557.03893289940],
[0.250, 0.32142312427, 25448.00585526019],
[0.198, 0.91019549387, 1310.39337013970],
[0.200, 0.90438804926, 47.06112374700],
[0.194, 4.05730813129, 426.85882330690],
[0.197, 0.58292199999, 156.67674413540],
[0.197, 2.59384188520, 639.84910220420],
[0.201, 1.49980256114, 827.92358748650],
[0.197, 5.79126360809, 639.94547042380],
[0.266, 1.45514683392, 109.24311337290],
[0.239, 4.63640382863, 868.71675200020],
[0.194, 5.59582424111, 426.33755844510],
[0.247, 2.91348766248, 689.61853893690],
[0.205, 1.04616771894, 448.68959140380],
[0.232, 1.76503818816, 354.26427286350],
[0.224, 3.45391027762, 1190.03512053370],
[0.221, 6.27951545913, 1596.18644228460],
[0.237, 1.24961141369, 882.94384600180],
[0.206, 5.17010664247, 253.45912050530],
[0.203, 0.25518217825, 4002.88798431640],
[0.245, 3.94368773869, 769.81676347560],
[0.255, 6.11790751550, 763.43692965770],
[0.194, 2.83197251801, 263.70167161710],
[0.237, 2.14007373880, 2700.71514038580],
[0.203, 3.00078001542, 1385.17496870700],
[0.203, 3.88000057282, 419.43645976540],
[0.186, 4.79530535895, 843.63515419640],
[0.203, 0.16707173895, 535.91074021810],
[0.245, 0.76762638475, 5643.17856367740],
[0.183, 2.20151176434, 35.16409022120],
[0.242, 3.41613986919, 864.24208201590],
[0.249, 3.47840802421, 1045.88854937050],
[0.199, 4.70077509959, 1276.61317889030],
[0.189, 1.84247610390, 434.67494572330],
[0.192, 3.83148077309, 666.72398925700],
[0.201, 1.34290804373, 1012.91150727320],
[0.210, 5.12097279511, 3494.53766022420],
[0.192, 1.36630036429, 904.40210708320],
[0.195, 1.62629576534, 364.34676528090],
[0.179, 1.66502999050, 244.79166482700],
[0.186, 4.55663748319, 347.41135829360],
[0.201, 0.50219680740, 36.38793049860],
[0.179, 4.55153097409, 97.46369992610],
[0.200, 0.68398141887, 2015.67108615980],
[0.195, 2.20599546209, 66.18357885820],
[0.186, 4.48925201018, 611.44309831080],
[0.186, 3.13663606153, 433.66355376700],
[0.177, 3.62811326217, 326.68681039510],
[0.206, 0.38552475035, 857.12853501510],
[0.229, 1.22330638216, 2906.90068882300],
[0.213, 6.08436923028, 271.61836777000],
[0.174, 6.18833529233, 3576.28979344040],
[0.220, 2.89866380776, 322.61164478010],
[0.202, 2.43755817264, 812.14258480740],
[0.211, 4.27999470527, 1127.26243007680],
[0.188, 0.97173474238, 1080.72257119160],
[0.168, 0.65008064023, 1493.09366806600],
[0.208, 4.68942071563, 5429.87946823940],
[0.182, 0.76058628096, 504.56118318100],
[0.167, 6.22608046965, 108.50940019000],
[0.176, 2.08816807487, 670.91677495100],
[0.170, 1.55680702386, 1670.82502850000],
[0.187, 4.12687876136, 9985.75935677140],
[0.166, 1.58596354370, 1379.70595310890],
[0.170, 1.30946662341, 837.69726336320],
[0.166, 0.02413278965, 224.60542813280],
[0.204, 6.12072939658, 9360.08916445900],
[0.189, 0.28191962964, 1175.80802653210],
[0.184, 2.87461093640, 398.14400287280],
[0.172, 5.41410693088, 2306.79016155090],
[0.174, 0.94052578814, 632.03297978780],
[0.181, 2.20017945285, 1049.08698945070],
[0.176, 1.09857632660, 531.97858695500],
[0.201, 2.68411933635, 795.68025857210],
[0.197, 1.43444932583, 347.36317418380],
[0.200, 4.33954193534, 1364.72809958190],
[0.166, 2.83936872840, 3553.91152213780],
[0.160, 1.28778451384, 962.50893109410],
[0.206, 3.02518737424, 1141.13406340540],
[0.200, 5.54644533685, 308.31511480930],
[0.158, 4.75462437610, 1534.73816584160],
[0.156, 3.42359004405, 241.75328344120],
[0.182, 5.26192506263, 968.13800538660],
[0.168, 0.37055108740, 10007.09999777380],
[0.174, 4.61279044571, 223.33340374560],
[0.158, 4.23116519562, 821.70381236300],
[0.212, 5.98406058023, 432.74853003030],
[0.160, 4.08093018212, 632.73555520340],
[0.179, 5.74376301842, 924.04582705620],
[0.185, 3.01715709315, 55.87159177720],
[0.185, 0.75718598244, 1286.90811962880],
[0.170, 3.46903106526, 1304.92435454160],
[0.167, 3.19767851189, 635.23141986800],
[0.153, 3.83006208210, 318.67949151700],
[0.156, 1.61558494091, 110.25450532920],
[0.206, 1.62702696825, 389.94962794650],
[0.184, 3.31730160238, 1578.02719501990],
[0.184, 6.19913208096, 731.68372783780],
[0.158, 5.58628906712, 42.32582133180],
[0.159, 2.00727485442, 702.14871190910],
[0.155, 0.02889842368, 1357.61455258110],
[0.151, 5.80616069064, 680.05731138130],
[0.157, 5.67235483479, 77837.11123384659],
[0.156, 2.78001360754, 1567.73225428140],
[0.203, 5.91820261629, 971.10695080320],
[0.156, 5.68482948401, 649.45851386960],
[0.186, 5.72093247348, 664.27630870220],
[0.184, 4.05878767739, 976.73602509570],
[0.159, 3.10978439502, 230.70758317730],
[0.154, 4.54479813612, 1239.54392483550],
[0.177, 4.68148789757, 2921.12778282460],
[0.158, 4.30854435851, 633.74694715970],
[0.195, 5.33376523453, 1130.23137549340],
[0.188, 2.04023570497, 1127.04998175570],
[0.174, 2.88817750136, 25668.41849769900],
[0.161, 2.96300008890, 152.74459087230],
[0.170, 1.70779560770, 493.30303459600],
[0.156, 3.05331862578, 913.75088631770],
[0.169, 3.18325334507, 757.80785536520],
[0.145, 0.89672198690, 632.83192342300],
[0.149, 2.69519361988, 203.26478713040],
[0.167, 2.96547549589, 1201.83158032300],
[0.187, 3.17592113403, 842.90144101350],
[0.173, 1.91528836350, 3487.42411322340],
[0.154, 0.37169915171, 285.11174858870],
[0.198, 3.14620903981, 640.86049416050],
[0.143, 3.42760427364, 520.12973753900],
[0.157, 2.34913118792, 5959.57043333400],
[0.178, 5.34566184657, 272.58157561650],
[0.171, 3.34185265551, 3067.93946934820],
[0.171, 4.87848878292, 354.52490529440],
[0.189, 0.07069084691, 1585.89150154610],
[0.137, 1.28925665885, 214.10224459010],
[0.137, 3.49438482900, 212.49594628590],
[0.174, 3.07450555579, 64.95973858080],
[0.181, 0.78652249647, 657.16276170140],
[0.158, 2.93809799392, 211.65456403530],
[0.133, 5.70724173596, 469.72716135990],
[0.140, 0.35530248121, 219.51887056150],
[0.132, 1.60614108449, 1372.59240610810],
[0.164, 1.68236348359, 707.56533788050],
[0.128, 1.49742950959, 45.24658263860],
[0.132, 4.98075995751, 238.57188970350],
[0.140, 3.62845435388, 423.88987789030],
[0.134, 1.41837795083, 3906.90875709860],
[0.127, 1.48966646069, 856.37777548970],
[0.158, 2.57990141197, 369.97583957340],
[0.132, 2.39662455993, 184.72728735580],
[0.140, 4.36785639279, 207.07932031450],
[0.157, 4.56655940808, 251.17149864490],
[0.125, 4.60433583965, 6076.89030155420],
[0.121, 1.59513269211, 184.84490743480],
[0.145, 5.85121885906, 221.89711514710],
[0.137, 0.76499603885, 476.10699517780],
[0.139, 6.02467582226, 429.30650386170],
[0.117, 0.23611722307, 426.75824957040],
[0.117, 3.13382984215, 426.43813218160],
[0.116, 4.34801448720, 418.96337901340],
[0.135, 2.69789181467, 455.16999895820],
[0.134, 1.19058772772, 502.86426215160],
[0.123, 3.97560160218, 499.89531673500],
[0.110, 2.37032413718, 439.93151300030],
[0.109, 6.20303291896, 220.30076785420],
[0.109, 1.38979633175, 325.95309721220],
[0.115, 0.05845336809, 631.82053146670],
[0.139, 2.21086387259, 9573.38825989700],
[0.142, 6.14666228712, 3340.61242669980],
[0.122, 4.77182119272, 604.47256366190],
[0.119, 3.03461367061, 528.20649238630],
[0.127, 2.97263950543, 498.93210888850],
[0.111, 5.01192320232, 220.20019411770],
[0.126, 3.95743516129, 566.60016045500],
[0.098, 2.36210526249, 634.26821202150],
[0.108, 2.46872857126, 83.37961827640],
[0.101, 4.88259474274, 425.32616648880],
[0.127, 4.89006771254, 162.09337010680],
[0.099, 0.90073463816, 586.31331639720],
[0.099, 0.16310526294, 394.35486196160],
[0.115, 0.49160291262, 517.16079212240],
[0.101, 3.86043866859, 198.10879358990],
[0.105, 3.48222097813, 5863.59120611620],
[0.104, 4.61148354671, 220.52451702340],
[0.101, 4.77041950285, 427.87021526320],
[0.098, 2.90784721214, 199.96577331370],
[0.127, 0.14136936897, 2332.06295581640],
[0.091, 6.22628300117, 211.29335786790],
[0.100, 5.14847283436, 226.79247625670],
[0.091, 4.84054379386, 215.30483300810],
[0.099, 4.37583492400, 640.41855117580],
[0.093, 5.30395179617, 222.70026429920],
[0.086, 4.57481701854, 636.97652500720],
[0.111, 0.61102669309, 1089.12939443900],
[0.086, 4.50969293872, 625.88264063350],
[0.088, 0.36828594935, 444.12429869430],
[0.093, 5.76287499885, 203.89792657680],
[0.082, 2.85558603378, 318.83955021140],
[0.082, 5.19618475111, 1467.82087380050],
[0.086, 0.97633784601, 200.03520928290],
[0.082, 4.78557953017, 195.77298761970],
[0.106, 2.29520624233, 799.61241183520],
[0.081, 3.57727166766, 205.97310011610],
[0.078, 5.50343512580, 262.80789973980],
[0.087, 0.76830756075, 201.99276274320],
[0.102, 2.11516755277, 206.93630796260],
[0.081, 5.29639775054, 111.16952906590],
[0.075, 2.77117107886, 255.83736509090],
[0.074, 5.81587984729, 316.44005376640],
[0.076, 1.78743197928, 171.65459766240],
[0.094, 4.99996904753, 378.64329525170],
[0.089, 5.85818860151, 807.94979911340],
[0.072, 0.99858616883, 280.21638747910],
[0.099, 0.15018241445, 186.21176006410],
[0.072, 5.15715918322, 110.15813710960],
],
# L1
[
[21354295595.986, 0.00000000000, 0.00000000000],
[1296855.005, 1.82820544701, 213.29909543800],
[564347.566, 2.88500136429, 7.11354700080],
[98323.030, 1.08070061328, 426.59819087600],
[107678.770, 2.27769911872, 206.18554843720],
[40254.586, 2.04128257090, 220.41264243880],
[19941.734, 1.27954662736, 103.09277421860],
[10511.706, 2.74880392800, 14.22709400160],
[6939.233, 0.40493079985, 639.89728631400],
[4803.325, 2.44194097666, 419.48464387520],
[4056.325, 2.92166618776, 110.20632121940],
[3768.630, 3.64965631460, 3.93215326310],
[3384.684, 2.41694251653, 3.18139373770],
[3302.200, 1.26256486715, 433.71173787680],
[3071.382, 2.32739317750, 199.07200143640],
[1953.036, 3.56394683300, 11.04570026390],
[1249.348, 2.62803737519, 95.97922721780],
[921.683, 1.96089834250, 227.52618943960],
[705.587, 4.41689249330, 529.69096509460],
[649.654, 6.17418093659, 202.25339517410],
[627.603, 6.11088227167, 309.27832265580],
[486.843, 6.03998200305, 853.19638175200],
[468.377, 4.61707843907, 63.73589830340],
[478.501, 4.98776987984, 522.57741809380],
[417.010, 2.11708169277, 323.50541665740],
[407.630, 1.29949556676, 209.36694217490],
[343.826, 3.95854178574, 412.37109687440],
[339.724, 3.63396398752, 316.39186965660],
[335.936, 3.77173072712, 735.87651353180],
[331.933, 2.86077699882, 210.11770170030],
[352.489, 2.31707079463, 632.78373931320],
[289.429, 2.73263080235, 117.31986822020],
[265.801, 0.54344631312, 647.01083331480],
[230.493, 1.64428879621, 216.48048917570],
[280.911, 5.74398845416, 2.44768055480],
[191.667, 2.96512946582, 224.34479570190],
[172.891, 4.07695221044, 846.08283475120],
[167.131, 2.59745202658, 21.34064100240],
[136.328, 2.28580246629, 10.29494073850],
[131.364, 3.44108355646, 742.99006053260],
[127.838, 4.09533471247, 217.23124870110],
[108.862, 6.16141072262, 415.55249061210],
[93.909, 3.48397279899, 1052.26838318840],
[92.482, 3.94755499926, 88.86568021700],
[97.584, 4.72845436677, 838.96928775040],
[86.600, 1.21951325061, 440.82528487760],
[83.463, 3.11269504725, 625.67019231240],
[77.588, 6.24408938835, 302.16477565500],
[61.557, 1.82789612597, 195.13984817330],
[61.900, 4.29344363385, 127.47179660680],
[67.106, 0.28961738595, 4.66586644600],
[56.919, 5.01889578112, 137.03302416240],
[54.160, 5.12628572382, 490.33408917940],
[54.585, 0.28356341456, 74.78159856730],
[51.425, 1.45766406064, 536.80451209540],
[65.843, 5.64757042732, 9.56122755560],
[57.780, 2.47630552035, 191.95845443560],
[44.444, 2.70873627665, 5.41662597140],
[46.799, 1.17721211050, 149.56319713460],
[40.380, 3.88870105683, 728.76296653100],
[37.768, 2.53379013859, 12.53017297220],
[46.649, 5.14818326902, 515.46387109300],
[45.891, 2.23198878761, 956.28915597060],
[40.400, 0.41281520440, 269.92144674060],
[37.191, 3.78239026411, 2.92076130680],
[33.778, 3.21070688046, 1368.66025284500],
[37.969, 0.64665967180, 422.66603761290],
[32.857, 0.30063884563, 351.81659230870],
[33.050, 5.43038091186, 1066.49547719000],
[30.276, 2.84067004928, 203.00415469950],
[35.116, 6.08421794089, 5.62907429250],
[29.667, 3.39052569135, 1059.38193018920],
[33.217, 4.64063092111, 277.03499374140],
[31.876, 4.38622923770, 1155.36115740700],
[28.913, 2.02614760507, 330.61896365820],
[28.264, 2.74178953996, 265.98929347750],
[30.089, 6.18684614308, 284.14854074220],
[31.329, 2.43455855525, 52.69019803950],
[26.493, 4.51214170121, 340.77089204480],
[21.983, 5.14437352579, 4.19278569400],
[22.230, 1.96481952451, 203.73786788240],
[20.824, 6.16048095923, 860.30992875280],
[21.690, 2.67578768862, 942.06206196900],
[22.552, 5.88579123000, 210.85141488320],
[19.807, 2.31345263487, 437.64389113990],
[19.447, 4.76573277668, 70.84944530420],
[19.310, 4.10209060369, 18.15924726470],
[22.662, 4.13732273379, 191.20769491020],
[18.209, 0.90310796389, 429.77958461370],
[17.667, 1.84954766042, 234.63973644040],
[17.547, 2.44735118493, 423.41679713830],
[15.428, 4.23790088205, 1162.47470440780],
[14.608, 3.59713247857, 1045.15483618760],
[14.111, 2.94262468353, 1685.05212250160],
[16.328, 4.05665272725, 949.17560896980],
[13.348, 6.24509592240, 38.13303563780],
[15.918, 1.06434204938, 56.62235130260],
[14.059, 1.43503954068, 408.43894361130],
[13.093, 5.75815864257, 138.51749687070],
[15.772, 5.59350835225, 6.15033915430],
[14.962, 5.77192239389, 22.09140052780],
[16.024, 1.93900586533, 1272.68102562720],
[16.751, 5.96673627422, 628.85158605010],
[12.843, 4.24658666814, 405.25754987360],
[13.628, 4.09892958087, 1471.75302706360],
[15.067, 0.74142807591, 200.76892246580],
[10.961, 1.55022573283, 223.59403617650],
[11.695, 1.81237511034, 124.43341522100],
[10.346, 3.46814088412, 1375.77379984580],
[12.056, 1.85655834555, 131.40394986990],
[10.123, 2.38221133049, 107.02492748170],
[9.855, 3.95166998848, 430.53034413910],
[9.803, 2.55389483994, 99.91138048090],
[10.614, 5.36692189034, 215.74677599280],
[12.080, 4.84549317054, 831.85574074960],
[10.210, 6.07692961370, 32.24332891440],
[9.245, 3.65417467270, 142.44965013380],
[8.984, 1.23808405498, 106.27416795630],
[9.336, 5.81062768434, 7.16173111060],
[9.717, 1.38703872827, 145.63104387150],
[8.394, 4.42341211111, 703.63318461740],
[8.370, 5.64015188458, 62.25142559510],
[8.244, 2.42225929772, 1258.45393162560],
[7.784, 0.52562994711, 654.12438031560],
[7.626, 3.75258725596, 312.19908396260],
[7.222, 0.28429555677, 0.75075952540],
[8.236, 6.22250515902, 14.97785352700],
[7.054, 0.53177810740, 388.46515523820],
[6.567, 3.48657341701, 35.42472265210],
[9.011, 4.94919626910, 208.63322899200],
[8.980, 0.08138173719, 288.08069400530],
[6.421, 3.32905264657, 1361.54670584420],
[6.489, 2.89389587598, 114.13847448250],
[6.244, 0.54973852782, 65.22037101170],
[6.154, 2.67885860584, 2001.44399215820],
[6.742, 0.23586769279, 8.07675484730],
[7.297, 4.85321224483, 222.86032299360],
[6.302, 3.80651124694, 1788.14489672020],
[5.824, 4.39327457448, 81.75213321620],
[6.102, 0.88585782895, 92.04707395470],
[6.914, 2.04631426723, 99.16062095550],
[5.363, 5.47995103139, 563.63121503840],
[5.172, 2.11968421583, 214.26230328450],
[5.117, 5.76987684107, 565.11568774670],
[6.197, 1.62553688800, 1589.07289528380],
[4.970, 0.41949366126, 76.26607127560],
[6.640, 5.82582210639, 483.22054217860],
[5.277, 4.57975789757, 134.58534360760],
[4.974, 4.20243895902, 404.50679034820],
[5.150, 4.67582673243, 212.33588759150],
[4.764, 4.59303997414, 554.06998748280],
[4.573, 3.24875415786, 231.45834270270],
[4.811, 0.46206327592, 362.86229257260],
[5.148, 3.33570646174, 1.48447270830],
[4.654, 5.80233066659, 217.96496188400],
[4.509, 5.37581684215, 497.44763618020],
[4.443, 0.11349392292, 295.05122865420],
[4.943, 3.78020789259, 1265.56747862640],
[4.211, 4.88306021960, 98.89998852460],
[4.252, 5.00120115113, 213.34727954780],
[4.774, 4.53259894142, 1148.24761040620],
[3.911, 0.58582192963, 750.10360753340],
[5.069, 2.20305668335, 207.88246946660],
[3.553, 0.35374030841, 333.65734504400],
[3.771, 0.98542435766, 24.37902238820],
[3.458, 1.84990273999, 225.82926841020],
[3.401, 5.31342401626, 347.88443904560],
[3.347, 0.21414641376, 635.96513305090],
[3.637, 1.61315058382, 245.54242435240],
[3.416, 2.19551489078, 1574.84580128220],
[3.655, 0.80544245690, 343.21857259960],
[4.260, 1.80258750109, 213.25091132820],
[3.110, 3.03815175282, 1677.93857550080],
[3.052, 1.33858964447, 543.91805909620],
[3.694, 0.81606028298, 344.70304530790],
[3.016, 3.36219319026, 7.86430652620],
[2.937, 4.86927342776, 144.14657116320],
[2.768, 2.42707131609, 2317.83586181480],
[3.059, 4.30820099442, 6062.66320755260],
[3.650, 5.12802531219, 218.92816973050],
[2.963, 3.53480751374, 2104.53676637680],
[3.230, 2.88057019783, 216.21985674480],
[2.984, 2.52971310583, 1692.16566950240],
[2.897, 5.73256482240, 9992.87290377220],
[2.591, 3.79880285744, 17.26547538740],
[3.495, 5.29902525443, 350.33211960040],
[2.859, 3.72804950659, 6076.89030155420],
[2.775, 0.23549396237, 357.44566660120],
[2.976, 2.48769315964, 46.47042291600],
[2.487, 4.37868078530, 217.49188113200],
[2.711, 5.15376840150, 10007.09999777380],
[3.127, 1.92343235583, 17.40848773930],
[3.181, 1.72419900322, 1169.58825140860],
[2.348, 0.77373103004, 414.06801790380],
[2.606, 3.42836913440, 31.01948863700],
[2.556, 0.91735028377, 479.28838891550],
[2.399, 4.82440545738, 1279.79457262800],
[2.245, 3.76323995584, 425.11371816770],
[3.020, 0.25310250109, 120.35824960600],
[2.503, 2.10679832121, 168.05251279940],
[2.564, 1.63158205055, 182.27960680100],
[2.221, 3.15472373256, 212.77783057620],
[2.357, 2.33145013714, 218.71572140940],
[2.510, 4.51903989011, 198.32124191100],
[2.715, 5.76330259543, 618.55664531160],
[2.204, 3.35952557362, 160.60889739850],
[2.648, 0.71962005233, 85.82729883120],
[2.029, 5.28642331696, 125.98732389850],
[2.497, 1.36671447252, 1905.46476494040],
[2.017, 1.11498225426, 447.93883187840],
[2.052, 1.27587874735, 14.01464568050],
[2.254, 3.22447674190, 273.10284047830],
[2.014, 0.39787014152, 358.93013930950],
[1.981, 2.33696859021, 28.45418800320],
[2.197, 5.93386789705, 13.33332212430],
[2.237, 3.64433751164, 213.82036029980],
[1.930, 1.85671740340, 1.27202438720],
[2.037, 5.05300562628, 424.15051032120],
[1.994, 1.35690802366, 20.60692781950],
[1.911, 3.44106886717, 69.15252427480],
[1.925, 3.75243031545, 28.31117565130],
[2.297, 4.24557050896, 1464.63948006280],
[2.117, 2.25897766314, 116.42609634290],
[1.847, 5.40631472802, 31.49256938900],
[1.841, 1.56916484272, 650.94298657790],
[1.884, 6.27233535258, 25.12978191360],
[1.960, 4.89484014840, 275.55052103310],
[2.016, 5.45791785675, 842.15068148810],
[2.282, 4.96276947440, 258.87574647670],
[1.709, 3.99098237135, 416.30325013750],
[2.176, 0.00746756006, 0.89377187730],
[1.634, 5.30978165487, 251.43213107580],
[1.687, 0.41586020065, 54.17467074780],
[1.910, 2.59825755790, 329.72519178090],
[2.113, 2.56582292726, 59.80374504030],
[1.921, 2.42279051938, 113.38771495710],
[1.658, 5.47323651540, 1073.60902419080],
[1.590, 2.77545297350, 1994.33044515740],
[1.936, 3.47558926847, 1581.95934828300],
[1.649, 1.82779010589, 128.95626931510],
[1.598, 1.71806465300, 129.91947716160],
[1.967, 1.25160413795, 621.73803904930],
[1.702, 1.91076102800, 278.51946644970],
[1.569, 0.16491194947, 643.07868005170],
[1.989, 5.28799230992, 508.35032409220],
[1.520, 0.56950979689, 320.32402291970],
[1.501, 1.99815894193, 1891.23767093880],
[1.532, 3.27362317849, 2420.92863603340],
[1.701, 2.72041261115, 767.36908292080],
[1.561, 6.09424459628, 280.96714700450],
[1.331, 4.20944443790, 546.95644048200],
[1.381, 2.06768100830, 192.69216761850],
[1.368, 6.28049502257, 1795.25844372100],
[1.519, 2.20299556153, 2008.55753915900],
[1.356, 4.01521042413, 721.64941953020],
[1.296, 4.84815978742, 45.57665103870],
[1.267, 5.28146654999, 173.94221952280],
[1.402, 6.12951551550, 39.35687591520],
[1.252, 2.19169926554, 2634.22773147140],
[1.466, 4.16354845643, 26.82670294300],
[1.285, 3.76170874847, 2.28762186040],
[1.500, 5.41022492529, 214.04985496340],
[1.396, 4.78595583428, 219.44943459230],
[1.430, 0.70934745161, 254.94359321360],
[1.195, 3.71281085322, 264.50482076920],
[1.181, 0.42635230882, 41.64449777560],
[1.190, 2.02079286787, 1485.98012106520],
[1.160, 5.23649231796, 181.05576652360],
[1.535, 3.62746990294, 561.18353448360],
[1.120, 1.09127922130, 6.59228213900],
[1.100, 0.27844612141, 184.09414790940],
[1.227, 1.39969681270, 209.10630974400],
[1.353, 6.12903657666, 207.67002114550],
[1.124, 6.05105541765, 291.26208774300],
[1.194, 4.79565407023, 1478.86657406440],
[1.082, 4.73602931755, 78.71375183040],
[1.202, 3.47301104146, 51.20572533120],
[1.298, 2.34761557822, 210.37833413120],
[1.166, 4.20037524355, 417.03696332040],
[1.228, 3.94985981275, 1781.03134971940],
[1.401, 2.41318931513, 636.71589257630],
[1.009, 6.17414889934, 2111.65031337760],
[1.084, 3.68958647346, 274.06604832480],
[1.068, 0.80258823981, 436.89313161450],
[1.007, 3.42792508860, 629.60234557550],
[0.998, 5.57130056835, 205.22234059070],
[1.058, 1.05742945779, 237.67811782620],
[1.020, 3.33667290300, 166.82867252200],
[0.965, 6.08359503243, 601.76425067620],
[1.005, 3.56310748091, 643.82943957710],
[0.987, 0.97129012811, 305.34616939270],
[0.927, 3.87717400791, 135.33610313300],
[1.129, 5.94840103961, 196.62432088160],
[1.118, 5.25415059584, 189.72322220190],
[1.200, 1.16671933467, 2221.85663459700],
[0.909, 2.14001565047, 617.80588578620],
[0.899, 2.31811625712, 312.45971639350],
[1.081, 0.91006048421, 313.21047591890],
[0.891, 3.74923531791, 916.93228005540],
[0.886, 4.76066858907, 776.93031047640],
[0.912, 0.99592540858, 491.81856188770],
[0.880, 3.67349449376, 25.27279426550],
[1.203, 1.39749267410, 337.73251065900],
[0.867, 0.11684071625, 267.47376618580],
[0.879, 6.12222682852, 867.42347575360],
[1.080, 0.15038819285, 175.16605980020],
[0.988, 3.12456192471, 214.78356814630],
[0.889, 4.70508769146, 148.07872442630],
[0.827, 6.08977582217, 488.84961647110],
[0.889, 5.05124166027, 220.46082654860],
[0.828, 6.27262544155, 1382.88734684660],
[1.040, 5.76735098196, 501.37978944330],
[1.103, 0.48706477230, 692.58748435350],
[0.810, 2.50362385080, 2310.72231481400],
[0.850, 4.55410385197, 77.96299230500],
[1.108, 5.31792012163, 235.39049596580],
[0.790, 0.89213206336, 342.25536475310],
[0.775, 2.85873930879, 211.81462272970],
[0.842, 2.99884993009, 2737.32050569000],
[0.784, 0.05748459240, 543.02428721890],
[0.754, 5.18317747668, 244.31858407500],
[0.969, 1.31760425414, 486.40193591630],
[0.943, 5.48641674428, 339.28641933650],
[0.759, 6.25347177163, 151.04766984290],
[0.710, 2.41619968810, 247.23934538180],
[0.794, 2.59522645936, 1.64453140270],
[0.857, 1.99318788624, 248.72381809010],
[0.717, 4.56798357445, 121.25202148330],
[0.671, 2.50955477476, 444.75743814070],
[0.683, 5.51033310275, 487.36514376280],
[0.684, 0.01892628603, 228.27694896500],
[0.665, 1.47172657769, 427.56139872250],
[0.761, 4.61079808671, 23.57587323610],
[0.807, 3.21513718120, 1898.35121793960],
[0.645, 1.92436523628, 2950.61960112800],
[0.624, 6.05830190539, 241.61027108930],
[0.699, 4.02804515616, 425.63498302950],
[0.624, 5.85966148394, 696.51963761660],
[0.620, 1.86426453489, 2207.62954059540],
[0.641, 5.69868017561, 319.57326339430],
[0.646, 3.78920578728, 1038.04128918680],
[0.672, 2.54160055954, 271.40591944890],
[0.768, 1.80484245332, 2324.94940881560],
[0.737, 1.50539891226, 268.43697403230],
[0.836, 1.26583811010, 212.54833591260],
[0.753, 5.27536166240, 204.70107572890],
[0.633, 2.19920009577, 1802.37199072180],
[0.720, 2.58587107868, 472.17484191470],
[0.683, 3.83223866420, 43.28902917830],
[0.740, 6.21601938401, 556.51766803760],
[0.795, 1.14460330178, 381.35160823740],
[0.678, 3.65930963429, 2097.42321937600],
[0.568, 5.92158661090, 2428.04218303420],
[0.570, 1.18024241664, 131.54696222180],
[0.566, 4.74157739398, 380.12776796000],
[0.586, 5.71168743146, 570.74476203920],
[0.550, 4.92413290959, 188.92007304980],
[0.712, 2.69456114358, 16.67477455640],
[0.545, 5.38725529600, 206.23373254700],
[0.572, 5.79167804981, 195.89060769870],
[0.602, 5.81756794592, 963.40270297140],
[0.588, 4.25026865253, 426.64637498580],
[0.563, 3.28295055824, 193.65537546500],
[0.583, 5.44099997963, 526.50957135690],
[0.679, 4.45748326743, 105.54045477340],
[0.516, 5.99843937287, 289.56516671360],
[0.520, 2.19322568805, 180.16199464630],
[0.543, 4.19333695628, 213.18722085340],
[0.586, 3.03470168346, 6275.96230299060],
[0.572, 3.96788877624, 140.00196957900],
[0.611, 4.15392239870, 436.15941843160],
[0.505, 2.95739392583, 135.54855145410],
[0.587, 4.55320395537, 5863.59120611620],
[0.492, 2.71595874382, 84.93352695390],
[0.576, 5.98300938454, 9793.80090233580],
[0.489, 5.68450383182, 533.62311835770],
[0.519, 3.09688510923, 327.43756992050],
[0.486, 5.24220804875, 5849.36411211460],
[0.475, 4.51295931678, 411.62033734900],
[0.540, 4.44843952768, 10206.17199921020],
[0.479, 0.87707794164, 207.14875628370],
[0.468, 0.46572028197, 306.09692891810],
[0.586, 0.86387928244, 2538.24850425360],
[0.475, 6.19152982788, 397.39324334740],
[0.541, 1.47958133221, 42.53826965290],
[0.496, 6.07879620658, 576.16138801060],
[0.447, 2.59259132013, 7.22542158540],
[0.445, 5.06827300470, 778.41478318470],
[0.560, 0.00461017471, 221.37585028530],
[0.456, 4.60143715337, 710.74673161820],
[0.449, 5.79223649465, 685.47393735270],
[0.501, 1.91370965325, 831.10498122420],
[0.595, 4.90329839607, 824.74219374880],
[0.447, 4.88662794571, 429.04587143080],
[0.445, 1.74764943142, 525.75881183150],
[0.457, 0.80892712530, 458.84151979040],
[0.543, 2.60317945475, 213.41097002260],
[0.493, 0.61947189193, 41.05379694460],
[0.455, 2.69847252264, 3053.71237534660],
[0.429, 3.89071982978, 92.79783348010],
[0.411, 1.34981168865, 27.08733537390],
[0.448, 1.84775051361, 980.66817835880],
[0.445, 4.21745990439, 905.88657979150],
[0.403, 2.33067250642, 2627.11418447060],
[0.404, 5.00179215709, 431.26405732200],
[0.384, 1.65634584042, 241.75328344120],
[0.410, 0.76907037678, 395.57870223900],
[0.456, 1.98353741244, 213.51154375910],
[0.459, 2.04878772547, 285.63301345050],
[0.396, 5.04141834913, 298.23262239190],
[0.377, 5.68073822097, 2744.43405269080],
[0.415, 4.41600504868, 179.35884549420],
[0.396, 4.29872851950, 206.70681329900],
[0.389, 5.69091953122, 849.26422848890],
[0.369, 1.36192003466, 835.03713448730],
[0.374, 0.41402282126, 9779.57380833420],
[0.379, 1.72255764532, 184.98791978670],
[0.365, 5.88205574821, 19.64371997300],
[0.456, 4.81297899859, 213.08664711690],
[0.359, 1.06819138836, 206.13736432740],
[0.367, 1.14184327929, 569.04784100980],
[0.352, 3.04388401587, 638.41281360570],
[0.463, 1.55834877017, 421.18156490460],
[0.459, 5.34648461645, 699.70103135430],
[0.383, 4.05921035379, 739.80866679490],
[0.354, 1.09760553168, 738.79727483860],
[0.382, 0.05348541587, 252.65597135320],
[0.344, 1.18536656224, 439.12836384820],
[0.382, 2.10483762147, 532.61172640140],
[0.361, 0.50215018154, 50.40257617910],
[0.351, 3.49546336297, 1354.43315884340],
[0.395, 4.26278871560, 432.22726516850],
[0.345, 2.38455893509, 426.07692601420],
[0.350, 1.51541607946, 259.76951835400],
[0.426, 5.29998227949, 934.94851496820],
[0.339, 5.59774645356, 519.39602435610],
[0.388, 3.40083809779, 2413.81508903260],
[0.324, 3.68352014131, 72.07328558160],
[0.323, 1.79597508586, 405.99126305650],
[0.366, 3.56764349139, 1119.18567522950],
[0.358, 4.11241839677, 37.87240320690],
[0.423, 1.45116702108, 2641.34127847220],
[0.314, 0.68465789313, 757.21715453420],
[0.320, 3.12697568936, 945.99421523210],
[0.338, 4.89782013581, 898.77303279070],
[0.319, 5.76881401291, 69.36497259590],
[0.310, 5.35598720822, 815.06334611420],
[0.369, 4.46143610142, 421.93232443000],
[0.311, 2.19275640712, 5856.47765911540],
[0.306, 2.99917010799, 1130.23137549340],
[0.330, 0.64102961163, 558.00214074590],
[0.305, 0.40963115602, 661.23792731640],
[0.320, 3.29267319940, 760.25553592000],
[0.298, 5.48693246086, 702.14871190910],
[0.352, 2.18179692198, 2118.76386037840],
[0.299, 5.94980651345, 572.22923474750],
[0.343, 2.62900083650, 213.55972786890],
[0.296, 4.12563821701, 73.29712585900],
[0.360, 2.94387423457, 2214.74308759620],
[0.293, 5.71837797264, 60.76695288680],
[0.326, 1.93806509331, 480.77286162380],
[0.335, 2.60120542851, 518.38463239980],
[0.322, 2.89685459163, 427.11945573780],
[0.367, 2.20489848330, 518.64526483070],
[0.361, 3.31464351282, 630.33605875840],
[0.288, 0.87760478150, 887.72733252680],
[0.290, 0.24071300709, 705.11765732570],
[0.332, 5.96464701829, 100.64509366380],
[0.284, 1.58760551116, 681.54178408960],
[0.281, 1.68339116394, 3267.01147078460],
[0.287, 3.54730637851, 756.32338265690],
[0.331, 2.74250642576, 22.89454967990],
[0.281, 4.79802388453, 409.92341631960],
[0.372, 1.08754087151, 426.55000676620],
[0.340, 0.59629116557, 627.36711334180],
[0.325, 4.07319450014, 511.53171782990],
[0.273, 0.71334827688, 305.08553696180],
[0.272, 1.76124839309, 945.24345570670],
[0.295, 4.00327005783, 432.74853003030],
[0.271, 5.28903262032, 1080.72257119160],
[0.276, 3.89192411657, 610.69233878540],
[0.294, 2.80121651058, 724.83081326790],
[0.319, 5.24824059915, 229.97386999440],
[0.264, 2.36406383589, 731.94436026870],
[0.288, 4.67818844930, 170.76082578510],
[0.326, 3.81328980623, 525.49817940060],
[0.283, 3.52027709716, 319.31263096340],
[0.264, 0.25871603855, 494.26624244250],
[0.261, 4.08135671345, 25.86349509650],
[0.296, 4.49129913731, 693.55069220000],
[0.292, 0.65370180027, 25867.49049913539],
[0.292, 0.12510953311, 25881.71759313700],
[0.254, 4.03912322565, 990.22940591440],
[0.288, 3.98604904657, 707.77778620160],
[0.285, 1.92328297431, 3134.42687826260],
[0.284, 2.45411523294, 3120.19978426100],
[0.256, 3.63282757780, 430.79097657000],
[0.283, 2.51091647682, 286.59622129700],
[0.325, 4.33261281211, 732.69511979410],
[0.264, 0.05450228136, 650.19222705250],
[0.273, 4.90735780421, 409.18970313670],
[0.304, 4.61759348542, 468.24268865160],
[0.285, 5.72467903890, 33.94024994380],
[0.242, 5.28336514054, 403.02231763990],
[0.270, 0.51583145648, 263.70167161710],
[0.263, 4.81670787366, 1055.44977692610],
[0.237, 2.92617048443, 913.96333463880],
[0.246, 2.19675150666, 2943.50605412720],
[0.278, 4.58404840578, 398.14400287280],
[0.234, 2.64374114605, 739.05790726950],
[0.229, 3.80445074468, 58.10682401090],
[0.300, 2.06111081979, 429.51895218280],
[0.223, 3.39888651505, 188.02630117250],
[0.301, 2.96411385108, 624.91943278700],
[0.221, 1.79137414078, 2524.02141025200],
[0.220, 0.95686592581, 1894.41906467650],
[0.225, 4.30669421945, 637.44960575920],
[0.214, 1.70442143644, 658.05653357870],
[0.227, 3.22613053351, 638.93407846750],
[0.220, 2.66798936385, 953.10776223290],
[0.253, 3.09377787768, 29.20494752860],
[0.244, 3.15828383212, 7.00167241620],
[0.295, 4.95843934543, 714.67888488130],
[0.209, 0.94525938634, 864.24208201590],
[0.216, 0.12221236180, 28.57180808220],
[0.214, 2.80190604605, 373.90799283650],
[0.212, 2.07343849515, 1357.61455258110],
[0.216, 1.25531205533, 477.80391620720],
[0.206, 5.35971491902, 3060.82592234740],
[0.204, 3.08579410460, 67.66805156650],
[0.210, 1.91489853604, 938.12990870590],
[0.209, 1.46554109301, 952.35700270750],
[0.202, 3.57670882297, 334.55111692130],
[0.228, 5.66209641464, 1699.27921650320],
[0.197, 4.61055255182, 464.73122651380],
[0.193, 4.24606721746, 141.69889060840],
[0.266, 0.69665031373, 2854.64037391020],
[0.227, 1.31845358943, 230.70758317730],
[0.192, 5.26739976413, 504.56118318100],
[0.187, 0.85537192230, 273.85360000370],
[0.199, 3.91291687807, 418.52143602870],
[0.192, 6.15674105214, 611.44309831080],
[0.210, 1.47873602747, 205.43478891180],
[0.194, 2.37167703302, 3370.10424500320],
[0.228, 2.15266015145, 55.13787859430],
[0.201, 2.71380671608, 586.31331639720],
[0.194, 3.29560033731, 1670.82502850000],
[0.201, 4.23447633663, 1493.09366806600],
[0.181, 3.61567262848, 9786.68735533500],
[0.181, 2.83211558346, 1262.38608488870],
[0.242, 4.69869158516, 1141.13406340540],
[0.184, 4.66807336402, 1251.34038462480],
[0.221, 2.25887876254, 355.74874557180],
[0.200, 1.17340443616, 4952.06359328620],
[0.222, 2.23360866067, 2435.15573003500],
[0.175, 0.04701598422, 107.75864066460],
[0.171, 5.02500742690, 93.53154666300],
[0.184, 5.19723697138, 835.78789401270],
[0.221, 4.49141283681, 913.00012679230],
[0.195, 0.92088046109, 551.03160609700],
[0.166, 5.01778115937, 354.99798604640],
[0.165, 2.26267552932, 406.95447090300],
[0.189, 0.31221126958, 420.96911658350],
[0.196, 2.70333585839, 774.48262992160],
[0.176, 6.12029409039, 181.80652604900],
[0.172, 1.94132177757, 3259.89792378380],
[0.160, 0.55319954265, 5429.87946823940],
[0.161, 2.88623631474, 184.84490743480],
[0.192, 0.26639534884, 295.19424100610],
[0.167, 3.71345214172, 1056.20053645150],
[0.195, 4.83926717598, 1596.18644228460],
[0.156, 2.81916058733, 428.08266358430],
[0.215, 1.88276472005, 220.36445832900],
[0.167, 2.68872854428, 423.67742956920],
[0.154, 1.66553954375, 115.62294719080],
[0.175, 0.20216461467, 384.05992122310],
[0.201, 4.38095931887, 418.00017116690],
[0.167, 1.86485857353, 393.46109008430],
[0.155, 0.92480392431, 282.66406803390],
[0.146, 1.97663966745, 9360.08916445900],
[0.160, 2.62483919699, 353.30106501700],
[0.186, 1.37307151419, 292.01284726840],
[0.198, 1.15631374887, 2957.73314812880],
[0.144, 4.82956915076, 453.42489381900],
[0.149, 3.60682821788, 205.66428357540],
[0.147, 4.48377791879, 81.89514556810],
[0.147, 5.74795037748, 856.37777548970],
[0.142, 3.53823120158, 212.02707105080],
[0.140, 0.70476909062, 640.86049416050],
[0.139, 1.39047667205, 1261.63532536330],
[0.153, 3.29559426243, 391.17346822390],
[0.158, 1.79872341304, 326.68681039510],
[0.174, 3.98677435872, 1049.08698945070],
[0.171, 4.16825100469, 213.03846300710],
[0.133, 4.74095454922, 0.04818410980],
[0.155, 5.32313618730, 2015.67108615980],
[0.158, 2.67557086253, 2531.13495725280],
[0.158, 4.64622526567, 427.34895040140],
[0.123, 2.20103444636, 210.59078245230],
[0.160, 1.85888551524, 201.51968199120],
[0.119, 3.12572799769, 238.57188970350],
[0.120, 4.62897224203, 203.26478713040],
[0.129, 4.92592016162, 1286.90811962880],
[0.132, 3.44682160054, 156.67674413540],
[0.143, 0.67951827513, 425.84743135060],
[0.114, 5.46519773276, 552.58551477450],
[0.132, 1.76335093671, 432.01481684740],
[0.113, 0.68933513038, 450.97721326420],
[0.128, 2.13986068877, 2751.54759969160],
[0.123, 4.59695145319, 216.00740842370],
[0.119, 1.04688666457, 462.02291352810],
[0.108, 5.36873170289, 3377.21779200400],
[0.142, 6.24626256472, 299.12639426920],
[0.118, 0.63448253510, 369.97583957340],
[0.105, 2.31570619675, 200.55647414470],
[0.124, 1.87110815140, 850.01498801430],
[0.106, 0.55623662570, 114.39910691340],
[0.102, 3.95315219638, 361.37781986430],
[0.095, 4.10658529323, 10213.28554621100],
[0.097, 1.13534710734, 387.24131496080],
[0.096, 4.46689094543, 401.32539661050],
[0.119, 2.33636675091, 318.83955021140],
[0.115, 3.37508073115, 313.94418910180],
[0.106, 3.73586211650, 220.93390730060],
[0.090, 0.59788492023, 227.31374111850],
[0.103, 5.09172929383, 213.45915413240],
[0.097, 5.95268532215, 1044.40407666220],
[0.103, 1.70625660572, 213.13903674360],
[0.080, 0.86872596168, 233.90602325750],
[0.089, 5.35990932230, 214.19286731530],
[0.080, 2.69565238975, 540.73666535850],
[0.095, 1.19504849611, 460.53844081980],
[0.105, 0.58624363205, 481.73606947030],
[0.099, 2.68841109007, 219.89137757700],
[0.098, 1.59923557478, 484.70501488690],
[0.081, 1.12279793521, 420.44785172170],
[0.075, 4.58892231446, 394.35486196160],
[0.099, 4.68895851750, 448.68959140380],
[0.076, 1.66929798365, 196.03362005060],
[0.087, 3.12477195090, 857.12853501510],
[0.078, 5.59819387460, 364.34676528090],
[0.079, 3.53267171729, 969.62247809490],
],
# L2
[
[116441.181, 1.17987850633, 7.11354700080],
[91920.844, 0.07425261094, 213.29909543800],
[90592.251, 0.00000000000, 0.00000000000],
[15276.909, 4.06492007503, 206.18554843720],
[10631.396, 0.25778277414, 220.41264243880],
[10604.979, 5.40963595885, 426.59819087600],
[4265.368, 1.04595556630, 14.22709400160],
[1215.527, 2.91860042123, 103.09277421860],
[1164.684, 4.60942128971, 639.89728631400],
[1081.967, 5.69130351670, 433.71173787680],
[1020.079, 0.63369182642, 3.18139373770],
[1044.754, 4.04206453611, 199.07200143640],
[633.582, 4.38825410036, 419.48464387520],
[549.329, 5.57303134242, 3.93215326310],
[456.914, 1.26840971349, 110.20632121940],
[425.100, 0.20935499279, 227.52618943960],
[273.739, 4.28841011784, 95.97922721780],
[161.571, 1.38139149420, 11.04570026390],
[129.494, 1.56586884170, 309.27832265580],
[117.008, 3.88120915956, 853.19638175200],
[105.415, 4.90003203599, 647.01083331480],
[100.967, 0.89270493100, 21.34064100240],
[95.227, 5.62561150598, 412.37109687440],
[81.948, 1.02477558315, 117.31986822020],
[74.857, 4.76178468163, 210.11770170030],
[82.727, 6.05030934786, 216.48048917570],
[95.659, 2.91093561539, 316.39186965660],
[63.696, 0.35179804917, 323.50541665740],
[84.860, 5.73472777961, 209.36694217490],
[60.647, 4.87517850190, 632.78373931320],
[66.459, 0.48297940601, 10.29494073850],
[67.184, 0.45648612616, 522.57741809380],
[53.281, 2.74730541387, 529.69096509460],
[45.827, 5.69296621745, 440.82528487760],
[45.293, 1.66856699796, 202.25339517410],
[42.330, 5.70768187703, 88.86568021700],
[32.140, 0.07050050346, 63.73589830340],
[31.573, 1.67190022213, 302.16477565500],
[31.150, 4.16379537691, 191.95845443560],
[24.631, 5.65564728570, 735.87651353180],
[26.558, 0.83256214407, 224.34479570190],
[20.108, 5.94364609981, 217.23124870110],
[17.511, 4.90014736798, 625.67019231240],
[17.130, 1.62593421274, 742.99006053260],
[13.744, 3.76497167300, 195.13984817330],
[12.236, 4.71789723976, 203.00415469950],
[11.940, 0.12620714199, 234.63973644040],
[16.040, 0.57886320845, 515.46387109300],
[11.154, 5.92216844780, 536.80451209540],
[14.068, 0.20675293700, 838.96928775040],
[11.013, 5.60207982774, 728.76296653100],
[11.718, 3.12098483554, 846.08283475120],
[9.962, 4.15472049127, 860.30992875280],
[10.601, 3.20327613035, 1066.49547719000],
[10.072, 0.25709351996, 330.61896365820],
[9.490, 0.46379969328, 956.28915597060],
[10.240, 4.98736656070, 422.66603761290],
[8.287, 2.13990364272, 269.92144674060],
[7.238, 5.39724715258, 1052.26838318840],
[7.730, 5.24602742309, 429.77958461370],
[6.353, 4.46211130731, 284.14854074220],
[5.935, 5.40967847103, 149.56319713460],
[7.550, 4.03401153929, 9.56122755560],
[5.779, 4.29380891110, 415.55249061210],
[6.082, 5.93416924841, 405.25754987360],
[5.711, 0.01824076994, 124.43341522100],
[5.676, 6.02235682150, 223.59403617650],
[4.757, 4.92804854717, 654.12438031560],
[4.727, 2.27461984667, 18.15924726470],
[4.509, 4.40688707557, 942.06206196900],
[5.621, 0.29694719379, 127.47179660680],
[5.453, 5.53868222772, 949.17560896980],
[4.130, 4.68673560379, 74.78159856730],
[4.098, 5.30851262200, 1045.15483618760],
[4.223, 2.89014939299, 56.62235130260],
[4.887, 3.20022991216, 277.03499374140],
[3.905, 3.30270187305, 490.33408917940],
[3.923, 6.09732996823, 81.75213321620],
[3.755, 4.93065184796, 52.69019803950],
[4.602, 6.13908576681, 1155.36115740700],
[3.714, 0.40648076787, 137.03302416240],
[3.407, 4.28514461015, 99.91138048090],
[3.579, 0.20402442077, 1272.68102562720],
[3.946, 0.36500928968, 12.53017297220],
[3.246, 1.56761884227, 1059.38193018920],
[4.063, 0.29084229143, 831.85574074960],
[3.688, 0.15467406177, 437.64389113990],
[2.895, 3.13473183482, 70.84944530420],
[2.800, 0.32727938074, 191.20769491020],
[2.672, 1.87612402267, 295.05122865420],
[3.454, 4.77197610696, 423.41679713830],
[2.623, 5.15237415384, 1368.66025284500],
[2.457, 3.89612890177, 210.85141488320],
[2.461, 1.58522876760, 32.24332891440],
[2.595, 3.59007068361, 131.40394986990],
[2.289, 4.76825865118, 351.81659230870],
[2.357, 5.83099000562, 106.27416795630],
[2.221, 5.98277491515, 6062.66320755260],
[2.221, 2.05930402282, 6076.89030155420],
[2.183, 5.94985336393, 145.63104387150],
[2.718, 3.37801252354, 408.43894361130],
[2.288, 3.14000619320, 22.09140052780],
[2.090, 1.12304173562, 9992.87290377220],
[2.089, 3.48276230686, 10007.09999777380],
[2.570, 5.12167203704, 265.98929347750],
[1.835, 4.15379879659, 1258.45393162560],
[1.820, 5.05340615445, 1361.54670584420],
[1.760, 4.13532689228, 107.02492748170],
[1.921, 4.51790997496, 138.51749687070],
[1.707, 1.35864593280, 231.45834270270],
[1.956, 5.87006093798, 1471.75302706360],
[2.133, 5.23409848720, 1265.56747862640],
[1.595, 5.61962698786, 447.93883187840],
[1.609, 3.74893709671, 628.85158605010],
[1.490, 0.48352404940, 340.77089204480],
[1.560, 5.97095003614, 430.53034413910],
[1.352, 0.71405348653, 28.45418800320],
[1.355, 2.91219493604, 215.74677599280],
[1.298, 5.84254169775, 543.91805909620],
[1.664, 6.23834873469, 1148.24761040620],
[1.205, 2.83373725021, 200.76892246580],
[1.192, 3.52219428945, 497.44763618020],
[1.122, 2.60571030270, 1279.79457262800],
[1.217, 6.23528359211, 1589.07289528380],
[1.420, 0.85079202155, 6069.77675455340],
[1.120, 4.95656566453, 1685.05212250160],
[1.010, 3.39689646619, 1073.60902419080],
[1.352, 2.27575429523, 9999.98645077300],
[0.979, 1.58571463442, 1375.77379984580],
[1.159, 0.71823181781, 508.35032409220],
[1.014, 2.40759054741, 703.63318461740],
[0.956, 2.66256831556, 134.58534360760],
[1.110, 1.19713920197, 618.55664531160],
[0.945, 4.68155456977, 362.86229257260],
[0.953, 4.20749172571, 288.08069400530],
[1.033, 1.08781255146, 184.84490743480],
[0.942, 2.43465223460, 222.86032299360],
[0.909, 4.51769385360, 38.13303563780],
[1.002, 1.38543153271, 483.22054217860],
[1.082, 4.52832816548, 635.96513305090],
[1.008, 4.91325851448, 750.10360753340],
[0.862, 4.79998518474, 1677.93857550080],
[0.828, 2.21940849017, 333.65734504400],
[0.745, 3.97279299984, 1574.84580128220],
[0.903, 5.58963782799, 1788.14489672020],
[0.735, 2.28191723259, 1162.47470440780],
[0.773, 5.82270096882, 416.30325013750],
[0.734, 2.35356586018, 120.35824960600],
[0.745, 4.84266000843, 76.26607127560],
[0.765, 2.50840146722, 343.21857259960],
[0.908, 5.01046293458, 1581.95934828300],
[0.707, 3.66631544506, 347.88443904560],
[0.870, 0.77106152694, 113.38771495710],
[0.686, 2.88543836068, 92.04707395470],
[0.673, 3.75650667651, 203.73786788240],
[0.656, 3.77718582702, 217.96496188400],
[0.675, 5.62875135263, 17.26547538740],
[0.691, 0.21330089609, 99.16062095550],
[0.786, 4.49318079175, 643.07868005170],
[0.641, 0.67588390141, 46.47042291600],
[0.663, 5.74837848383, 721.64941953020],
[0.809, 5.94893988352, 1464.63948006280],
[0.638, 4.86195439622, 357.44566660120],
[0.740, 6.00053422445, 337.73251065900],
[0.555, 4.95858934298, 358.93013930950],
[0.581, 3.87669679805, 565.11568774670],
[0.541, 1.22296838713, 62.25142559510],
[0.697, 0.00715950269, 1169.58825140860],
[0.524, 1.53830423608, 195.89060769870],
[0.518, 5.41992758537, 312.19908396260],
[0.626, 5.26580317026, 436.89313161450],
[0.537, 6.17031657600, 182.27960680100],
[0.574, 5.98607898826, 1905.46476494040],
[0.541, 0.30589337713, 98.89998852460],
[0.603, 3.26888470585, 208.63322899200],
[0.504, 3.80930996688, 168.05251279940],
[0.477, 3.56642391994, 563.63121503840],
[0.511, 4.70719837179, 2001.44399215820],
[0.475, 1.06025557585, 5856.47765911540],
[0.540, 0.87230551412, 1692.16566950240],
[0.454, 2.48128029368, 9786.68735533500],
[0.456, 3.18303484133, 218.92816973050],
[0.462, 0.71358186864, 258.87574647670],
[0.424, 4.89778948357, 636.71589257630],
[0.537, 2.59376221736, 313.21047591890],
[0.410, 4.22147787617, 867.42347575360],
[0.408, 3.06057772788, 424.15051032120],
[0.407, 3.79376013938, 24.37902238820],
[0.569, 3.68547825941, 350.33211960040],
[0.404, 0.91401255827, 114.13847448250],
[0.395, 3.50478374207, 129.91947716160],
[0.395, 2.86309689622, 212.33588759150],
[0.386, 5.00762729432, 388.46515523820],
[0.393, 6.26835522096, 241.75328344120],
[0.401, 4.60258908692, 1994.33044515740],
[0.385, 0.91582119643, 160.60889739850],
[0.467, 0.54876489832, 404.50679034820],
[0.368, 0.35674031808, 214.26230328450],
[0.471, 0.67360047481, 207.88246946660],
[0.379, 0.92901327825, 767.36908292080],
[0.420, 5.69797398044, 225.82926841020],
[0.356, 3.10092792842, 842.15068148810],
[0.428, 5.35375368944, 2104.53676637680],
[0.422, 2.67975581832, 77.96299230500],
[0.370, 5.46144813372, 1038.04128918680],
[0.379, 5.56429091578, 131.54696222180],
[0.441, 5.68196668399, 1781.03134971940],
[0.361, 5.20616019966, 629.60234557550],
[0.341, 5.92928351979, 26.82670294300],
[0.419, 5.26851686707, 85.82729883120],
[0.322, 0.80223983857, 6283.07584999140],
[0.323, 3.86700993914, 576.16138801060],
[0.321, 2.17186032970, 10213.28554621100],
[0.355, 2.80560859177, 344.70304530790],
[0.311, 3.77477255556, 1891.23767093880],
[0.318, 5.22020784209, 142.44965013380],
[0.315, 0.52272202855, 5849.36411211460],
[0.428, 4.63722058283, 1898.35121793960],
[0.337, 0.68198429948, 45.57665103870],
[0.316, 0.54074780109, 444.75743814070],
[0.310, 1.41032075652, 273.10284047830],
[0.311, 3.53744556230, 251.43213107580],
[0.295, 1.93253015677, 436.15941843160],
[0.296, 1.97705648834, 9779.57380833420],
[0.326, 3.67854047003, 963.40270297140],
[0.389, 5.76841276132, 39.35687591520],
[0.277, 5.73995694175, 92.79783348010],
[0.315, 4.96371610197, 757.21715453420],
[0.295, 1.81638833900, 1493.09366806600],
[0.287, 0.97698377929, 685.47393735270],
[0.281, 2.66463042095, 1286.90811962880],
[0.330, 5.79776922760, 650.94298657790],
[0.292, 3.97858181479, 472.17484191470],
[0.266, 4.13716111320, 601.76425067620],
[0.262, 0.91887592474, 245.54242435240],
[0.278, 3.08964256591, 778.41478318470],
[0.277, 3.08750916880, 621.73803904930],
[0.255, 3.93981592051, 181.05576652360],
[0.333, 2.04835822938, 561.18353448360],
[0.247, 2.92754257675, 219.44943459230],
[0.306, 0.36127922606, 824.74219374880],
[0.253, 1.80130756458, 5643.17856367740],
[0.337, 4.97764462199, 175.16605980020],
[0.273, 0.66599369335, 2008.55753915900],
[0.227, 4.87285356383, 661.23792731640],
[0.249, 3.14202895058, 144.14657116320],
[0.220, 3.93526603081, 319.57326339430],
[0.212, 5.85248164087, 546.95644048200],
[0.234, 1.65314711167, 554.06998748280],
[0.204, 0.88373842674, 31.49256938900],
[0.205, 2.93169866171, 1596.18644228460],
[0.201, 3.36504567824, 1080.72257119160],
[0.224, 4.34612745705, 1382.88734684660],
[0.192, 5.13697232918, 329.72519178090],
[0.208, 3.08549771485, 41.64449777560],
[0.236, 0.07998742860, 1141.13406340540],
[0.203, 4.13011580915, 2627.11418447060],
[0.203, 0.13969067385, 1485.98012106520],
[0.204, 3.38137545713, 699.70103135430],
[0.212, 4.52370676085, 2310.72231481400],
[0.218, 5.79277335862, 2221.85663459700],
[0.213, 0.50441377637, 934.94851496820],
[0.210, 5.04017633795, 2420.92863603340],
[0.214, 4.64286758581, 2317.83586181480],
[0.178, 0.84588580004, 128.36556848410],
[0.170, 2.75006619605, 710.74673161820],
[0.171, 4.32615182967, 291.26208774300],
[0.172, 3.46971306920, 501.37978944330],
[0.170, 1.05408992106, 526.50957135690],
[0.162, 1.15683042950, 519.39602435610],
[0.180, 4.96266204107, 1670.82502850000],
[0.172, 1.65385549578, 916.93228005540],
[0.170, 2.30821101766, 429.04587143080],
[0.170, 5.98716489326, 643.82943957710],
[0.173, 5.19933564968, 1354.43315884340],
[0.195, 4.50165508529, 2214.74308759620],
[0.156, 4.16290662749, 572.22923474750],
[0.153, 1.23776248578, 2413.81508903260],
[0.150, 0.63076983213, 1478.86657406440],
[0.169, 4.28090123029, 305.34616939270],
[0.174, 6.23077892653, 3384.33133900480],
[0.149, 3.13274908516, 9573.38825989700],
[0.162, 6.25601818345, 213.25091132820],
[0.149, 4.81749019484, 945.99421523210],
[0.162, 0.88610129190, 216.21985674480],
[0.133, 2.31915371262, 156.67674413540],
[0.165, 6.06456216591, 732.69511979410],
[0.141, 6.14293754333, 1795.25844372100],
[0.133, 0.06530337135, 218.71572140940],
[0.162, 3.17058130506, 213.34727954780],
[0.125, 2.07143636845, 425.11371816770],
[0.146, 1.88627500632, 211.81462272970],
[0.113, 2.79541965778, 235.39049596580],
[0.117, 0.76464798684, 479.28838891550],
[0.108, 3.95650672786, 570.74476203920],
[0.106, 0.12820734703, 188.02630117250],
[0.134, 3.58244908862, 849.26422848890],
[0.114, 0.25990388555, 398.14400287280],
[0.112, 2.39181495831, 217.49188113200],
[0.091, 2.50716605179, 121.25202148330],
[0.091, 1.75367948574, 213.82036029980],
[0.088, 5.26121947108, 395.57870223900],
[0.096, 3.98832609364, 289.56516671360],
[0.091, 0.35318362186, 312.45971639350],
[0.112, 1.14387590923, 1802.37199072180],
[0.082, 3.73605217214, 207.67002114550],
[0.082, 6.06283262812, 210.37833413120],
[0.084, 3.34470673492, 67.66805156650],
[0.086, 2.73917300180, 5863.59120611620],
[0.083, 2.81499116485, 776.93031047640],
[0.091, 1.26160093170, 212.77783057620],
[0.090, 2.08722491981, 2111.65031337760],
[0.080, 2.13136842916, 421.93232443000],
[0.082, 4.16358350281, 9793.80090233580],
[0.077, 2.96973341607, 431.26405732200],
[0.079, 3.42790361067, 417.03696332040],
[0.079, 3.18693585419, 320.32402291970],
[0.080, 0.78975763683, 204.70107572890],
[0.077, 1.89354243952, 556.51766803760],
[0.073, 4.85923277221, 2118.76386037840],
[0.071, 3.64551577433, 198.32124191100],
],
# L3
[
[16038.734, 5.73945377424, 7.11354700080],
[4249.793, 4.58539675603, 213.29909543800],
[1906.524, 4.76082050205, 220.41264243880],
[1465.687, 5.91326678323, 206.18554843720],
[1162.041, 5.61973132428, 14.22709400160],
[1066.581, 3.60816533142, 426.59819087600],
[239.377, 3.86088273439, 433.71173787680],
[236.975, 5.76826451465, 199.07200143640],
[165.641, 5.11641150216, 3.18139373770],
[131.409, 4.74327544615, 227.52618943960],
[151.352, 2.73594641861, 639.89728631400],
[61.630, 4.74287052463, 103.09277421860],
[63.365, 0.22850089497, 419.48464387520],
[40.437, 5.47298059144, 21.34064100240],
[40.205, 5.96420266720, 95.97922721780],
[38.746, 5.83386199529, 110.20632121940],
[28.025, 3.01235311514, 647.01083331480],
[25.029, 0.98808170740, 3.93215326310],
[18.101, 1.02506397063, 412.37109687440],
[17.879, 3.31913418974, 309.27832265580],
[16.208, 3.89825272754, 440.82528487760],
[15.763, 5.61667809625, 117.31986822020],
[19.014, 1.91614237463, 853.19638175200],
[18.262, 4.96738415934, 10.29494073850],
[12.947, 1.18068953942, 88.86568021700],
[17.919, 4.20376505349, 216.48048917570],
[11.453, 5.57520615096, 11.04570026390],
[10.548, 5.92906266269, 191.95845443560],
[10.389, 3.94838736947, 209.36694217490],
[8.650, 3.39335369698, 302.16477565500],
[7.580, 4.87736913157, 323.50541665740],
[6.697, 0.38198725552, 632.78373931320],
[5.864, 1.05621157685, 210.11770170030],
[5.449, 4.64268475485, 234.63973644040],
[6.327, 2.25492722762, 522.57741809380],
[3.602, 2.30677010956, 515.46387109300],
[3.229, 2.20309400066, 860.30992875280],
[3.701, 3.14159265359, 0.00000000000],
[2.583, 4.93447677059, 224.34479570190],
[2.543, 0.42393884183, 625.67019231240],
[2.213, 3.19814958289, 202.25339517410],
[2.421, 4.76621391814, 330.61896365820],
[2.850, 0.58604395010, 529.69096509460],
[1.965, 4.39525359412, 124.43341522100],
[2.154, 1.35488209144, 405.25754987360],
[2.296, 3.34809165905, 429.77958461370],
[2.018, 3.06693569701, 654.12438031560],
[1.979, 1.02981005658, 728.76296653100],
[1.868, 3.09383546177, 422.66603761290],
[1.846, 4.15225985450, 536.80451209540],
[2.194, 1.18918501013, 1066.49547719000],
[2.090, 4.15631351317, 223.59403617650],
[1.481, 0.37916705169, 316.39186965660],
[1.720, 5.82865773356, 195.13984817330],
[1.460, 1.57663426355, 81.75213321620],
[1.623, 6.03706764648, 742.99006053260],
[1.286, 1.66154726117, 63.73589830340],
[1.304, 5.02409881054, 956.28915597060],
[1.446, 2.10575519127, 838.96928775040],
[1.245, 3.88109752770, 269.92144674060],
[1.018, 3.72599601656, 295.05122865420],
[1.323, 1.38492882986, 735.87651353180],
[1.318, 2.33460998999, 217.23124870110],
[0.943, 2.75813531246, 284.14854074220],
[0.906, 0.71155526266, 846.08283475120],
[0.886, 3.83754799777, 447.93883187840],
[0.943, 3.31480217015, 18.15924726470],
[0.800, 4.71386673963, 56.62235130260],
[0.908, 2.02119147951, 831.85574074960],
[0.787, 0.80410269937, 1045.15483618760],
[0.709, 4.27064410504, 437.64389113990],
[0.651, 6.17565900032, 942.06206196900],
[0.785, 2.40767785311, 203.00415469950],
[0.702, 1.64585301418, 423.41679713830],
[0.543, 2.86326941725, 184.84490743480],
[0.532, 6.25762144463, 1059.38193018920],
[0.521, 3.43013038466, 149.56319713460],
[0.484, 4.88366060720, 1272.68102562720],
[0.437, 5.40220619672, 408.43894361130],
[0.388, 2.57589594168, 508.35032409220],
[0.421, 4.05836524024, 543.91805909620],
[0.375, 1.22747948298, 2324.94940881560],
[0.347, 0.59237194522, 22.09140052780],
[0.433, 1.69090148012, 1155.36115740700],
[0.389, 1.46170367972, 1073.60902419080],
[0.307, 1.82185086955, 628.85158605010],
[0.409, 1.21858750514, 1052.26838318840],
[0.309, 0.33610530663, 6076.89030155420],
[0.309, 1.42279282226, 6062.66320755260],
[0.340, 1.83325770310, 1141.13406340540],
[0.303, 2.41584747330, 127.47179660680],
[0.305, 5.34154702988, 131.40394986990],
[0.298, 2.28594631393, 635.96513305090],
[0.372, 1.03723911390, 313.21047591890],
[0.338, 0.69100012338, 1361.54670584420],
[0.325, 1.78816356937, 1148.24761040620],
[0.322, 1.18628805010, 721.64941953020],
[0.271, 2.45663156460, 415.55249061210],
[0.251, 3.12046701975, 1382.88734684660],
[0.254, 3.00353256829, 618.55664531160],
[0.295, 0.35280179538, 2730.20695868920],
[0.242, 1.52154324392, 70.84944530420],
[0.296, 0.89576757167, 2104.53676637680],
[0.264, 3.00987438634, 661.23792731640],
[0.267, 0.31623829657, 1677.93857550080],
[0.270, 2.56774718753, 643.07868005170],
[0.261, 1.55058302472, 1457.52593306200],
[0.246, 2.29214585472, 867.42347575360],
[0.269, 3.18157515051, 750.10360753340],
[0.272, 1.12208982319, 1788.14489672020],
[0.256, 0.37673546414, 1279.79457262800],
[0.206, 1.81129778306, 497.44763618020],
[0.251, 0.61933213502, 2413.81508903260],
[0.237, 3.35941544147, 436.89313161450],
[0.247, 0.10102936687, 99.91138048090],
[0.247, 0.93125798111, 52.69019803950],
[0.221, 2.07880035795, 824.74219374880],
[0.197, 6.16682223437, 1258.45393162560],
[0.229, 5.57917534840, 2943.50605412720],
[0.227, 0.43324651601, 2737.32050569000],
[0.203, 4.12623986247, 337.73251065900],
[0.214, 3.57607524509, 934.94851496820],
[0.212, 1.25688162158, 1773.91780271860],
[0.215, 0.88867647880, 1038.04128918680],
[0.244, 5.51572084570, 231.45834270270],
[0.181, 2.13821830481, 416.30325013750],
[0.210, 4.19139167658, 2221.85663459700],
[0.178, 2.91685344537, 74.78159856730],
[0.201, 0.46214583002, 2854.64037391020],
[0.236, 4.64388694899, 1905.46476494040],
[0.199, 1.54991619669, 1471.75302706360],
[0.199, 0.70725247497, 2420.92863603340],
[0.162, 2.51488345020, 430.53034413910],
[0.160, 1.23508694599, 1596.18644228460],
[0.175, 4.14605894816, 2090.30967237520],
[0.152, 0.05796022559, 32.24332891440],
[0.176, 1.29002070623, 490.33408917940],
[0.154, 3.60622857548, 650.94298657790],
[0.185, 4.74969742128, 319.57326339430],
[0.154, 1.54587199996, 1464.63948006280],
[0.108, 4.25125786500, 145.63104387150],
[0.106, 1.04047809351, 1162.47470440780],
[0.114, 2.64055737100, 362.86229257260],
[0.093, 3.36746275886, 483.22054217860],
[0.091, 2.05796248692, 210.85141488320],
[0.091, 4.53336314765, 241.75328344120],
[0.072, 3.74361312157, 1485.98012106520],
[0.076, 3.33892447677, 195.89060769870],
],
# L4
[
[1661.894, 3.99826248978, 7.11354700080],
[257.107, 2.98436499013, 220.41264243880],
[236.344, 3.90241428075, 14.22709400160],
[149.418, 2.74110824208, 213.29909543800],
[109.598, 1.51515739251, 206.18554843720],
[113.953, 3.14159265359, 0.00000000000],
[68.390, 1.72120953337, 426.59819087600],
[37.699, 1.23795458356, 199.07200143640],
[40.060, 2.04644897412, 433.71173787680],
[31.219, 3.01094184090, 227.52618943960],
[15.111, 0.82897064529, 639.89728631400],
[9.444, 3.71485300868, 21.34064100240],
[5.690, 2.41995290633, 419.48464387520],
[4.470, 1.45120818748, 95.97922721780],
[5.608, 1.15607095740, 647.01083331480],
[4.463, 2.11783225176, 440.82528487760],
[3.229, 4.09278077834, 110.20632121940],
[2.871, 2.77203153866, 412.37109687440],
[2.796, 3.00730249564, 88.86568021700],
[2.638, 0.00255721254, 853.19638175200],
[2.574, 0.39246854091, 103.09277421860],
[1.862, 5.07955457727, 309.27832265580],
[2.225, 3.77689198137, 117.31986822020],
[1.769, 5.19176876406, 302.16477565500],
[1.921, 2.82884328662, 234.63973644040],
[1.805, 2.23816036743, 216.48048917570],
[1.211, 1.54685246534, 191.95845443560],
[0.765, 3.44501766503, 323.50541665740],
[0.763, 4.83197222448, 210.11770170030],
[0.613, 4.19052656353, 515.46387109300],
[0.648, 2.28591710303, 209.36694217490],
[0.616, 4.03194472161, 522.57741809380],
[0.630, 2.37952532019, 632.78373931320],
[0.639, 0.29772678242, 860.30992875280],
[0.559, 2.17110060530, 124.43341522100],
[0.442, 2.23500083592, 447.93883187840],
[0.407, 5.44515970990, 1066.49547719000],
[0.469, 1.26889429317, 654.12438031560],
[0.488, 3.20329778617, 405.25754987360],
[0.415, 3.12435410343, 330.61896365820],
[0.442, 3.38933498625, 81.75213321620],
[0.332, 4.12464206608, 838.96928775040],
[0.320, 3.18332026736, 529.69096509460],
[0.312, 1.40962796637, 429.77958461370],
[0.291, 3.18885372262, 1464.63948006280],
[0.333, 2.94355912397, 728.76296653100],
[0.235, 3.67049647573, 1148.24761040620],
[0.286, 2.57895004576, 1045.15483618760],
[0.223, 3.57980034401, 1155.36115740700],
[0.261, 2.04564143519, 1677.93857550080],
[0.218, 2.61967125327, 536.80451209540],
[0.262, 2.48322150677, 625.67019231240],
[0.191, 4.39064160974, 1574.84580128220],
[0.176, 1.26161895188, 422.66603761290],
[0.190, 2.32693171200, 223.59403617650],
[0.185, 1.08713469614, 742.99006053260],
[0.168, 0.69946458053, 824.74219374880],
[0.177, 5.02663339078, 203.00415469950],
[0.218, 0.40426546037, 867.42347575360],
[0.178, 3.67593243311, 831.85574074960],
[0.175, 5.75326979098, 1073.60902419080],
[0.156, 3.02120117572, 1781.03134971940],
[0.148, 2.28313808274, 295.05122865420],
[0.150, 3.48436135302, 956.28915597060],
[0.152, 1.91404443241, 942.06206196900],
[0.146, 6.16519696640, 316.39186965660],
[0.096, 2.93247663741, 224.34479570190],
[0.088, 4.48383632427, 423.41679713830],
],
# L5
[
[123.615, 2.25923345732, 7.11354700080],
[34.190, 2.16250652689, 14.22709400160],
[27.546, 1.19868150215, 220.41264243880],
[5.818, 1.21584270184, 227.52618943960],
[5.318, 0.23550400093, 433.71173787680],
[3.677, 6.22669694355, 426.59819087600],
[3.057, 2.97372046322, 199.07200143640],
[2.861, 4.28710932685, 206.18554843720],
[1.617, 6.25265362286, 213.29909543800],
[1.279, 5.27612561266, 639.89728631400],
[0.932, 5.56741549127, 647.01083331480],
[0.756, 6.17716234487, 191.95845443560],
[0.760, 0.69475544472, 302.16477565500],
[1.038, 0.23516951637, 440.82528487760],
[1.007, 3.14159265359, 0.00000000000],
[0.549, 4.87733288264, 88.86568021700],
[0.504, 4.77955496203, 419.48464387520],
[0.346, 4.31847547394, 853.19638175200],
[0.392, 5.69922389094, 654.12438031560],
[0.242, 2.05052677361, 323.50541665740],
[0.266, 1.11384528244, 234.63973644040],
[0.199, 0.88505901097, 309.27832265580],
[0.258, 5.10074489186, 95.97922721780],
[0.166, 2.40063312194, 515.46387109300],
[0.155, 4.70433216164, 860.30992875280],
[0.089, 1.36371070380, 412.37109687440],
[0.102, 0.49450039082, 117.31986822020],
],
]
"""This table contains Saturn's periodic terms (all of them) from the planetary
theory VSOP87 for the heliocentric longitude at the equinox of date (taken from
the 'D' solution). In Meeus' book a shortened version can be found in pages
435-440."""
VSOP87_B = [
# B0
[
[4330678.040, 3.60284428399, 213.29909543800],
[240348.303, 2.85238489390, 426.59819087600],
[84745.939, 0.00000000000, 0.00000000000],
[30863.357, 3.48441504465, 220.41264243880],
[34116.063, 0.57297307844, 206.18554843720],
[14734.070, 2.11846597870, 639.89728631400],
[9916.668, 5.79003189405, 419.48464387520],
[6993.564, 4.73604689179, 7.11354700080],
[4807.587, 5.43305315602, 316.39186965660],
[4788.392, 4.96512927420, 110.20632121940],
[3432.125, 2.73255752123, 433.71173787680],
[1506.129, 6.01304536144, 103.09277421860],
[1060.298, 5.63099292414, 529.69096509460],
[969.071, 5.20434966103, 632.78373931320],
[942.050, 1.39646678088, 853.19638175200],
[707.645, 3.80302329547, 323.50541665740],
[552.313, 5.13149109045, 202.25339517410],
[399.675, 3.35891413961, 227.52618943960],
[316.063, 1.99716764199, 647.01083331480],
[319.380, 3.62571550980, 209.36694217490],
[284.494, 4.88648481625, 224.34479570190],
[314.225, 0.46510272410, 217.23124870110],
[236.442, 2.13887472281, 11.04570026390],
[215.354, 5.94982610103, 846.08283475120],
[208.522, 2.12003893769, 415.55249061210],
[178.958, 2.95361514672, 63.73589830340],
[207.213, 0.73021462851, 199.07200143640],
[139.140, 1.99821990940, 735.87651353180],
[134.884, 5.24500819605, 742.99006053260],
[140.585, 0.64417620299, 490.33408917940],
[121.669, 3.11537140876, 522.57741809380],
[139.240, 4.59535168021, 14.22709400160],
[115.524, 3.10891547171, 216.48048917570],
[114.218, 0.96261442133, 210.11770170030],
[96.376, 4.48164339766, 117.31986822020],
[80.593, 1.31692750150, 277.03499374140],
[72.952, 3.05988482370, 536.80451209540],
[69.261, 4.92378633635, 309.27832265580],
[74.302, 2.89376539620, 149.56319713460],
[68.040, 2.18002263974, 351.81659230870],
[61.734, 0.67728106562, 1066.49547719000],
[56.598, 2.60963391288, 440.82528487760],
[48.864, 5.78725874107, 95.97922721780],
[48.243, 2.18211837430, 74.78159856730],
[38.304, 5.29151303843, 1059.38193018920],
[36.323, 1.63348365121, 628.85158605010],
[35.055, 1.71279210041, 1052.26838318840],
[34.270, 2.45740470599, 422.66603761290],
[34.313, 5.97994514798, 412.37109687440],
[33.787, 1.14073392951, 949.17560896980],
[31.633, 4.14722153007, 437.64389113990],
[36.833, 6.27769966148, 1162.47470440780],
[26.980, 1.27154816810, 860.30992875280],
[23.516, 2.74936525342, 838.96928775040],
[23.460, 0.98962849901, 210.85141488320],
[23.600, 4.11386961467, 3.93215326310],
[23.631, 3.07427204313, 215.74677599280],
[20.813, 3.51084686918, 330.61896365820],
[19.509, 2.81857577372, 127.47179660680],
[17.103, 3.89784279922, 214.26230328450],
[17.635, 6.19715516746, 703.63318461740],
[17.824, 2.28524493886, 388.46515523820],
[20.935, 0.14356167048, 430.53034413910],
[16.551, 1.66649120724, 38.13303563780],
[19.100, 2.97699096081, 137.03302416240],
[15.517, 4.54798410406, 956.28915597060],
[17.065, 0.16611115812, 212.33588759150],
[14.169, 0.48937283445, 213.34727954780],
[19.027, 6.27326062836, 423.41679713830],
[13.344, 2.37136126257, 429.77958461370],
[12.565, 1.03178071173, 563.63121503840],
[14.173, 3.57477564831, 213.25091132820],
[11.374, 1.45300927024, 1368.66025284500],
[10.585, 6.17633425930, 200.76892246580],
[10.600, 3.84358958373, 138.51749687070],
[10.263, 2.17423692422, 76.26607127560],
[10.072, 1.33197220789, 565.11568774670],
[12.058, 0.44149242700, 222.86032299360],
[10.367, 1.85278552549, 350.33211960040],
[8.706, 2.58144528603, 1155.36115740700],
[8.470, 1.97890349826, 625.67019231240],
[8.518, 4.51649648578, 3.18139373770],
[7.439, 4.92597321442, 212.77783057620],
[7.409, 2.03506679104, 288.08069400530],
[8.137, 3.98500592467, 85.82729883120],
[7.985, 2.20794292064, 362.86229257260],
[6.610, 6.14944028835, 417.03696332040],
[7.753, 6.23664549070, 1478.86657406440],
[6.318, 1.87388481013, 654.12438031560],
[6.319, 1.17328438271, 1265.56747862640],
[5.841, 2.35829915285, 750.10360753340],
[5.808, 5.01602242794, 479.28838891550],
[8.079, 0.42574715104, 554.06998748280],
[6.014, 5.58952234348, 425.11371816770],
[7.444, 5.41859596459, 213.82036029980],
[7.567, 2.68446523795, 191.20769491020],
[7.421, 4.19354269508, 9.56122755560],
[5.466, 3.21737829505, 234.63973644040],
[5.661, 1.46982713550, 265.98929347750],
[5.851, 4.81776629912, 1.48447270830],
[5.341, 3.45755372717, 203.73786788240],
[4.960, 1.04628615559, 12.53017297220],
[4.920, 3.85622235967, 173.94221952280],
[4.883, 1.94823282939, 195.13984817330],
[5.621, 0.81869581274, 52.69019803950],
[5.200, 3.32827437636, 515.46387109300],
[4.927, 3.81806549732, 225.82926841020],
[5.033, 0.10756875163, 252.65597135320],
[4.416, 5.45506938037, 408.43894361130],
[4.169, 1.21145214135, 1685.05212250160],
[4.066, 6.24213578122, 1279.79457262800],
[3.972, 6.13850317719, 217.49188113200],
[5.398, 5.67212179194, 1375.77379984580],
[3.916, 5.96105725915, 210.37833413120],
[4.017, 0.99840226682, 842.15068148810],
[3.899, 4.58983662507, 1272.68102562720],
[3.764, 3.30663337976, 212.54833591260],
[4.345, 3.18562241830, 414.06801790380],
[3.565, 4.75262007127, 207.88246946660],
[3.542, 2.30814954338, 1471.75302706360],
[3.732, 1.61040235688, 635.96513305090],
[3.709, 2.97082943086, 223.59403617650],
[3.576, 3.83436862558, 483.22054217860],
[4.053, 3.72105017218, 942.06206196900],
[3.756, 0.74987556308, 214.04985496340],
[3.162, 3.64550741000, 207.67002114550],
[3.149, 2.27647454229, 728.76296653100],
[3.971, 4.37874143597, 216.21985674480],
[3.541, 5.62281936827, 218.71572140940],
[2.965, 3.40117024932, 650.94298657790],
[3.949, 4.19728912450, 209.10630974400],
[2.853, 4.81077453523, 231.45834270270],
[2.826, 0.86682282341, 217.96496188400],
[2.970, 5.75162134301, 160.60889739850],
[2.724, 0.47941267764, 497.44763618020],
[2.787, 4.03144791896, 62.25142559510],
[2.605, 5.04152791794, 65.22037101170],
[2.652, 0.30602610654, 424.15051032120],
[2.543, 2.76499056123, 543.91805909620],
[2.485, 5.78396049817, 99.16062095550],
[3.209, 0.42853440759, 218.92816973050],
[2.509, 2.94704589100, 70.84944530420],
[2.308, 0.63861650866, 251.43213107580],
[2.869, 4.31959346745, 767.36908292080],
[2.232, 0.56929937568, 1073.60902419080],
[2.245, 1.69945964547, 488.84961647110],
[2.283, 1.55589787463, 601.76425067620],
[2.384, 4.44583493310, 21.34064100240],
[2.096, 5.77425542767, 88.86568021700],
[2.363, 3.35786310868, 124.43341522100],
[2.162, 6.24029269257, 1795.25844372100],
[2.452, 3.19804814047, 208.63322899200],
[2.033, 4.87029603776, 327.43756992050],
[1.950, 5.56004000293, 18.15924726470],
[2.283, 4.22375355881, 22.09140052780],
[2.217, 4.61433094630, 302.16477565500],
[1.888, 5.45600788064, 142.44965013380],
[2.075, 3.55622165076, 1169.58825140860],
[2.069, 2.75786819366, 491.81856188770],
[1.810, 5.96568495526, 213.18722085340],
[1.813, 1.39785500313, 211.81462272970],
[1.843, 1.15001484281, 203.00415469950],
[1.854, 1.41350087782, 1581.95934828300],
[1.697, 3.23613719814, 427.56139872250],
[1.736, 5.45933992115, 916.93228005540],
[1.714, 6.14729146384, 643.82943957710],
[1.948, 5.70817363392, 425.63498302950],
[1.770, 3.36194411768, 248.72381809010],
[1.611, 0.97888081762, 2001.44399215820],
[1.971, 2.59654430358, 429.04587143080],
[1.628, 0.74011617198, 177.87437278590],
[1.564, 2.04342011485, 1788.14489672020],
[1.574, 6.01995224314, 426.64637498580],
[1.939, 5.48134669380, 636.71589257630],
[1.651, 4.61629429952, 621.73803904930],
[1.552, 2.55542734908, 692.58748435350],
[1.484, 6.17173980637, 56.62235130260],
[1.782, 3.26122906302, 175.16605980020],
[1.503, 2.59953333916, 228.27694896500],
[1.559, 0.36281050773, 776.93031047640],
[1.799, 3.46395976970, 1258.45393162560],
[1.521, 3.75588462293, 213.51154375910],
[1.810, 4.37552745264, 213.41097002260],
[1.521, 0.30214462385, 213.08664711690],
[1.608, 4.66724132818, 269.92144674060],
[1.525, 1.47939329423, 198.32124191100],
[1.408, 1.38491846750, 501.37978944330],
[1.327, 0.23760037979, 148.07872442630],
[1.305, 2.41201772023, 275.55052103310],
[1.578, 2.82443242444, 426.55000676620],
[1.203, 1.36928065935, 235.39049596580],
[1.296, 5.75203277385, 1692.16566950240],
[1.295, 3.04090959062, 831.85574074960],
[1.283, 1.62400181159, 643.07868005170],
[1.617, 1.31181209458, 214.78356814630],
[1.346, 4.01262069353, 278.51946644970],
[1.166, 0.09590019561, 340.77089204480],
[1.115, 2.20460481017, 221.37585028530],
[1.176, 1.07528227869, 312.19908396260],
[1.107, 1.50329021421, 289.56516671360],
[1.143, 4.40125874383, 213.55972786890],
[1.253, 0.21632769953, 404.50679034820],
[1.074, 3.17412275025, 98.89998852460],
[1.103, 0.23626839162, 617.80588578620],
[1.077, 3.51670933532, 312.45971639350],
[1.039, 0.53953974796, 778.41478318470],
[1.195, 2.11232088496, 205.22234059070],
[1.093, 5.16243153571, 630.33605875840],
[1.143, 5.93977485365, 213.03846300710],
[1.040, 4.79631324365, 106.27416795630],
[1.100, 0.02509241739, 219.44943459230],
[1.311, 5.93900415785, 436.15941843160],
[1.260, 0.72481995446, 355.74874557180],
[0.950, 2.00801292252, 1045.15483618760],
[1.186, 1.84906064486, 151.04766984290],
[0.974, 3.01092368346, 696.51963761660],
[0.924, 4.88158186437, 39.35687591520],
[0.961, 2.80113869315, 738.79727483860],
[1.011, 6.27004359435, 121.25202148330],
[0.904, 4.15218356485, 426.07692601420],
[0.904, 4.24232505252, 10.29494073850],
[0.895, 2.47587956888, 447.93883187840],
[1.186, 0.85270715988, 525.49817940060],
[0.824, 3.97540449663, 210.59078245230],
[0.831, 4.05299295705, 207.14875628370],
[0.937, 5.44353432307, 344.70304530790],
[0.823, 2.08766677969, 358.93013930950],
[0.971, 5.09512804595, 1589.07289528380],
[1.037, 1.04152859909, 2.44768055480],
[0.816, 0.62175655307, 188.92007304980],
[0.798, 3.36396062989, 237.67811782620],
[0.755, 5.90983584858, 284.14854074220],
[0.870, 1.62765846893, 114.13847448250],
[0.734, 6.23523714922, 2111.65031337760],
[0.767, 2.73651219269, 627.36711334180],
[0.701, 0.72526525525, 10213.28554621100],
[0.801, 5.84130533519, 905.88657979150],
[0.710, 1.78740818763, 2104.53676637680],
[0.670, 0.75839374890, 2317.83586181480],
[0.720, 4.95645178898, 638.41281360570],
[0.796, 4.87623914638, 342.25536475310],
[0.703, 0.35096991676, 220.46082654860],
[0.835, 3.19492825640, 1574.84580128220],
[0.824, 0.08813665925, 216.00740842370],
[0.653, 4.19599635390, 247.23934538180],
[0.826, 4.66845240923, 427.11945573780],
[0.690, 0.41873449575, 5856.47765911540],
[0.690, 1.34023204821, 6283.07584999140],
[0.690, 0.58291546593, 213.45915413240],
[0.639, 1.20304559619, 867.42347575360],
[0.830, 1.57233214789, 1898.35121793960],
[0.753, 1.51187970880, 576.16138801060],
[0.629, 2.83598833891, 420.96911658350],
[0.690, 3.48062808501, 213.13903674360],
[0.600, 5.22938546212, 212.02707105080],
[0.565, 5.28099337758, 423.67742956920],
[0.552, 5.83265103738, 84.34282612290],
[0.546, 3.56588711151, 1485.98012106520],
[0.642, 6.15007145598, 179.35884549420],
[0.697, 1.91977327925, 134.58534360760],
[0.648, 5.15917450752, 8.07675484730],
[0.551, 3.33109164145, 980.66817835880],
[0.511, 3.87073988213, 125.98732389850],
[0.506, 0.80261216855, 181.05576652360],
[0.564, 4.05871107615, 831.10498122420],
[0.681, 3.45804290093, 220.36445832900],
[0.541, 2.39252901431, 421.93232443000],
[0.498, 3.11515053568, 439.12836384820],
[0.517, 2.75430004800, 1148.24761040620],
[0.491, 4.47199498503, 558.00214074590],
[0.467, 4.18144797677, 444.75743814070],
[0.458, 0.60848440253, 206.23373254700],
[0.542, 3.28613020157, 245.54242435240],
[0.477, 5.48556902348, 35.42472265210],
[0.474, 2.42545073874, 436.89313161450],
[0.481, 3.72498040536, 206.13736432740],
[0.435, 1.61732308614, 191.95845443560],
[0.488, 0.26059969650, 416.30325013750],
[0.493, 4.13699180247, 518.64526483070],
[0.595, 5.11706007934, 214.57111982520],
[0.486, 5.17710069856, 67.66805156650],
[0.463, 5.53192185211, 418.52143602870],
[0.421, 5.57377685121, 430.79097657000],
[0.446, 6.20735049659, 73.29712585900],
[0.421, 4.65837340438, 543.02428721890],
[0.435, 2.95256554350, 5.41662597140],
[0.416, 4.36391909218, 113.38771495710],
[0.495, 5.38121485133, 391.17346822390],
[0.520, 3.99939347071, 618.55664531160],
[0.429, 3.26903461513, 144.14657116320],
[0.435, 1.60816661416, 2214.74308759620],
[0.398, 2.38329818919, 299.12639426920],
[0.399, 0.06301179341, 206.70681329900],
[0.394, 2.75496219113, 425.84743135060],
[0.508, 2.86873328929, 337.73251065900],
[0.475, 5.68530292289, 320.32402291970],
[0.432, 0.68132398291, 116.42609634290],
[0.404, 1.84249441289, 9786.68735533500],
[0.371, 5.83382962844, 2008.55753915900],
[0.382, 4.24995364794, 387.24131496080],
[0.416, 3.81986946256, 429.51895218280],
[0.491, 4.18623117082, 219.89137757700],
[0.352, 1.65610545221, 963.40270297140],
[0.353, 5.50209003460, 305.34616939270],
[0.431, 4.39380503963, 353.30106501700],
[0.375, 2.67828133567, 319.57326339430],
[0.359, 3.54801032661, 421.18156490460],
[0.339, 5.19074405462, 69.15252427480],
[0.358, 1.11857595997, 1044.40407666220],
[0.334, 1.84260994740, 1361.54670584420],
[0.328, 6.07106596408, 710.74673161820],
[0.328, 1.48618893585, 2420.92863603340],
[0.359, 5.62797136991, 78.71375183040],
[0.405, 2.91366762549, 1891.23767093880],
[0.398, 2.08900381937, 4.66586644600],
[0.326, 1.62373774313, 5.62907429250],
[0.405, 1.87470341223, 114.39910691340],
[0.393, 0.56487847337, 128.95626931510],
[0.312, 5.29291124448, 347.88443904560],
[0.310, 0.31232452686, 427.34895040140],
[0.308, 2.84912656825, 487.36514376280],
[0.291, 3.25977762780, 494.26624244250],
[0.303, 4.93962873690, 373.90799283650],
[0.289, 2.83591185309, 212.07525516060],
[0.289, 2.05371431350, 214.52293571540],
[0.398, 6.03822674845, 432.22726516850],
[0.288, 6.16001418475, 969.62247809490],
[0.296, 0.30332524090, 1055.44977692610],
[0.280, 1.29728455136, 241.61027108930],
[0.280, 5.41630221077, 1493.09366806600],
[0.315, 6.24003908326, 465.95506679120],
[0.274, 5.03981944861, 458.84151979040],
[0.296, 3.04457317761, 211.60217440860],
[0.274, 2.72607352851, 145.63104387150],
[0.293, 1.32452002382, 159.12442469020],
[0.263, 6.11559198968, 2428.04218303420],
[0.323, 1.17502395659, 815.06334611420],
[0.345, 5.37083374878, 428.08266358430],
[0.258, 0.43205106363, 2634.22773147140],
[0.275, 0.91628212149, 849.26422848890],
[0.340, 1.29378813067, 329.72519178090],
[0.294, 4.29399534634, 4.19278569400],
[0.339, 1.03883773894, 32.24332891440],
[0.244, 3.52504227332, 184.98791978670],
[0.243, 3.13047989401, 525.75881183150],
[0.260, 5.99216785208, 20.60692781950],
[0.303, 3.96772261614, 934.94851496820],
[0.285, 5.69474711283, 220.93390730060],
[0.239, 2.09516779457, 292.01284726840],
[0.242, 0.98744748894, 282.45161971280],
[0.278, 2.81667003542, 87.31177153950],
[0.285, 4.76303256917, 54.17467074780],
[0.236, 5.79560286324, 280.96714700450],
[0.246, 1.83689902078, 214.99601646740],
[0.221, 0.48302467341, 153.49535039770],
[0.238, 3.52738705554, 267.47376618580],
[0.293, 5.91401607974, 14.97785352700],
[0.235, 0.29884419224, 14.01464568050],
[0.229, 3.91975580405, 182.27960680100],
[0.217, 3.96328561940, 894.84087952760],
[0.218, 1.46057992688, 2531.13495725280],
[0.210, 2.01138855049, 211.86280683950],
[0.210, 2.87823761610, 214.73538403650],
[0.223, 2.49651288358, 1464.63948006280],
[0.217, 4.03234048538, 835.03713448730],
[0.209, 2.97542058241, 273.10284047830],
[0.210, 2.56849303008, 593.42686339800],
[0.218, 1.71859101510, 0.96320784650],
[0.232, 1.86083014117, 221.16340196420],
[0.199, 3.53454927143, 219.66188291340],
[0.197, 2.65338829617, 864.24208201590],
[0.219, 3.46267185338, 1182.92157353290],
[0.199, 2.56046317223, 264.50482076920],
[0.199, 2.03508708900, 757.21715453420],
[0.237, 5.05443109284, 254.94359321360],
[0.191, 2.07106909876, 756.32338265690],
[0.192, 1.67985944172, 1677.93857550080],
[0.191, 1.05067348453, 702.14871190910],
[0.181, 1.89151852263, 6.15033915430],
[0.205, 1.98151360584, 199.28444975750],
[0.181, 1.25381796494, 2737.32050569000],
[0.186, 2.81416016738, 569.04784100980],
[0.215, 4.52373060846, 3060.82592234740],
[0.222, 2.90133577623, 205.43478891180],
[0.246, 3.55891849574, 1251.34038462480],
[0.191, 4.20221553993, 556.51766803760],
[0.217, 2.64509967170, 2207.62954059540],
[0.225, 0.14271906959, 131.40394986990],
[0.189, 1.27260556263, 192.69216761850],
[0.179, 6.15189171649, 2.92076130680],
[0.178, 2.01622328964, 705.11765732570],
[0.181, 3.62483757675, 233.90602325750],
[0.188, 2.92836809840, 227.31374111850],
[0.164, 3.50682537694, 1382.88734684660],
[0.166, 5.85452227121, 637.44960575920],
[0.160, 0.13309484488, 431.26405732200],
[0.158, 5.92242110049, 96.87299909510],
[0.178, 4.55557913565, 46.47042291600],
[0.157, 1.35908014451, 51.20572533120],
[0.155, 6.24092514222, 464.73122651380],
[0.155, 6.02684189458, 1286.90811962880],
[0.155, 1.36669731999, 206.93630796260],
[0.175, 4.95121713507, 1905.46476494040],
[0.153, 6.06094547271, 561.18353448360],
[0.208, 4.50537355579, 24.37902238820],
[0.185, 5.49802440713, 205.66428357540],
[0.160, 4.18196878816, 3340.61242669980],
[0.160, 2.85370771355, 209.15449385380],
[0.161, 4.98020340619, 2648.45482547300],
[0.152, 0.85558875667, 570.74476203920],
[0.156, 2.03601440129, 217.44369702220],
[0.192, 3.98017256784, 212.40532356070],
[0.192, 0.90945359875, 214.19286731530],
[0.198, 3.54289000289, 533.62311835770],
[0.160, 2.51522796187, 3127.31333126180],
[0.145, 0.93414637377, 1994.33044515740],
[0.141, 5.66801998888, 120.35824960600],
[0.141, 3.88995778619, 454.90936652730],
[0.152, 1.01453902153, 2840.41327990860],
[0.172, 4.15145223592, 2.96894541660],
[0.146, 5.26789260159, 7.06536289100],
[0.177, 0.43196690516, 140.00196957900],
[0.144, 3.95680110579, 300.61086697750],
[0.152, 4.29475572258, 555.55446019110],
[0.143, 4.15264164139, 31.01948863700],
[0.138, 4.20096561019, 731.94436026870],
[0.139, 0.79924371385, 166.82867252200],
[0.135, 1.27192121638, 92.94084583200],
[0.165, 1.94881873062, 107.02492748170],
[0.153, 3.07590434707, 3480.31056622260],
[0.125, 3.41796878361, 1802.37199072180],
[0.128, 5.83700968658, 2324.94940881560],
[0.129, 2.75851443754, 480.77286162380],
[0.122, 4.75728514255, 2854.64037391020],
[0.129, 4.67730374872, 913.96333463880],
[0.121, 1.19957548726, 572.22923474750],
[0.146, 3.71232877850, 546.95644048200],
[0.120, 4.59083886034, 339.28641933650],
[0.127, 6.19372294369, 59.80374504030],
[0.123, 5.98484393970, 477.80391620720],
[0.122, 5.82973501131, 990.22940591440],
[0.151, 2.39413061881, 2524.02141025200],
[0.147, 4.98199291770, 850.01498801430],
[0.127, 0.47350572907, 6.59228213900],
[0.116, 4.71488890981, 1130.23137549340],
[0.129, 5.42665311725, 2538.24850425360],
[0.111, 4.51520219898, 1699.27921650320],
[0.114, 2.06120434865, 952.09637027660],
[0.112, 4.14736642579, 422.40540518200],
[0.111, 5.53230411085, 857.12853501510],
[0.109, 3.00005651288, 420.44785172170],
[0.112, 2.20667724213, 395.57870223900],
[0.147, 1.52324472511, 552.58551477450],
[0.118, 5.47495367121, 2957.73314812880],
[0.113, 2.57036693965, 462.02291352810],
[0.122, 4.96246567897, 638.93407846750],
[0.104, 1.91139383428, 472.17484191470],
[0.116, 2.82742160564, 450.97721326420],
[0.115, 2.26043201622, 1781.03134971940],
[0.110, 4.86686492403, 2914.01423582380],
[0.109, 4.43848727280, 405.99126305650],
[0.102, 5.90112611078, 99.91138048090],
[0.101, 2.53392410330, 640.86049416050],
[0.112, 5.53802838779, 381.35160823740],
[0.099, 5.92199927896, 411.62033734900],
[0.100, 5.21941099517, 426.48631629140],
[0.137, 2.20269111622, 7.16173111060],
[0.097, 1.27914551364, 2847.52682690940],
[0.115, 5.22953781515, 1119.18567522950],
[0.095, 4.26135357007, 540.73666535850],
[0.098, 5.27107833435, 639.94547042380],
[0.107, 4.38879925113, 412.58354519550],
[0.093, 5.35954173624, 334.55111692130],
[0.094, 1.16749092536, 5643.17856367740],
[0.106, 4.19443004843, 486.40193591630],
[0.096, 0.59816870672, 714.67888488130],
[0.094, 0.54205024076, 423.62924545940],
[0.109, 2.82817225044, 468.24268865160],
[0.083, 6.12100285205, 380.12776796000],
[0.084, 2.20217125255, 909.81873305460],
[0.085, 5.20920130934, 562.14674233010],
[0.105, 2.66415710279, 460.53844081980],
[0.084, 0.14646013561, 681.54178408960],
[0.080, 3.03551986945, 409.92341631960],
[0.097, 5.09373549436, 92.04707395470],
[0.110, 2.03622569317, 642.34496686880],
[0.080, 5.71035549752, 361.37781986430],
[0.084, 3.00961145133, 426.81063919710],
[0.085, 4.28770375688, 135.54855145410],
[0.093, 5.32943472274, 432.01481684740],
[0.086, 1.51247258028, 760.25553592000],
[0.084, 5.83905303748, 426.38574255490],
[0.100, 3.62925349363, 426.71006546060],
[0.094, 4.30151510535, 3377.21779200400],
[0.098, 2.07334671974, 639.84910220420],
[0.080, 4.11576173565, 774.48262992160],
[0.075, 2.89122656610, 806.72595883600],
[0.080, 0.88468467902, 856.37777548970],
[0.072, 4.85259171933, 392.65794093220],
[0.083, 0.11133738383, 402.21916848780],
],
# B1
[
[397554.998, 5.33289992556, 213.29909543800],
[49478.641, 3.14159265359, 0.00000000000],
[18571.607, 6.09919206378, 426.59819087600],
[14800.587, 2.30586060520, 206.18554843720],
[9643.981, 1.69674660120, 220.41264243880],
[3757.161, 1.25429514018, 419.48464387520],
[2716.647, 5.91166664787, 639.89728631400],
[1455.309, 0.85161616532, 433.71173787680],
[1290.595, 2.91770857090, 7.11354700080],
[852.630, 0.43572078997, 316.39186965660],
[284.386, 1.61881754773, 227.52618943960],
[292.185, 5.31574251270, 853.19638175200],
[275.090, 3.88864137336, 103.09277421860],
[297.726, 0.91909206723, 632.78373931320],
[172.359, 0.05215146556, 647.01083331480],
[127.731, 1.20711452525, 529.69096509460],
[166.237, 2.44351613165, 199.07200143640],
[158.220, 5.20850125766, 110.20632121940],
[109.839, 2.45695551627, 217.23124870110],
[81.759, 2.75839171353, 210.11770170030],
[81.010, 2.86038377187, 14.22709400160],
[68.658, 1.65537623146, 202.25339517410],
[59.281, 1.82410768234, 323.50541665740],
[65.161, 1.25527521313, 216.48048917570],
[61.024, 1.25273412095, 209.36694217490],
[46.386, 0.81534705304, 440.82528487760],
[36.163, 1.81851057689, 224.34479570190],
[34.041, 2.83971297997, 117.31986822020],
[32.164, 1.18676132343, 846.08283475120],
[33.114, 1.30557080010, 412.37109687440],
[27.282, 4.64744847591, 1066.49547719000],
[22.805, 4.12923703368, 415.55249061210],
[27.128, 4.44228739187, 11.04570026390],
[18.100, 5.56392353608, 860.30992875280],
[20.851, 1.40999273740, 309.27832265580],
[14.947, 1.34302610607, 95.97922721780],
[15.316, 1.22393617996, 63.73589830340],
[14.601, 1.00753704970, 536.80451209540],
[12.842, 2.27059911053, 742.99006053260],
[12.832, 4.88898877901, 522.57741809380],
[13.137, 2.45991904379, 490.33408917940],
[11.883, 1.87308666696, 423.41679713830],
[13.027, 3.21731634178, 277.03499374140],
[9.946, 3.11650057543, 625.67019231240],
[12.710, 0.29501589197, 422.66603761290],
[9.644, 1.74586356703, 330.61896365820],
[8.079, 2.41931187953, 430.53034413910],
[8.245, 4.68121931659, 215.74677599280],
[8.958, 0.46482448501, 429.77958461370],
[6.547, 3.01351967549, 949.17560896980],
[7.251, 5.97098186912, 149.56319713460],
[6.056, 1.49115011100, 234.63973644040],
[5.791, 5.36720639912, 735.87651353180],
[5.994, 0.02442871989, 654.12438031560],
[6.647, 3.90879134581, 351.81659230870],
[6.824, 1.52456408861, 437.64389113990],
[5.134, 3.81149834833, 74.78159856730],
[3.959, 5.63505813057, 210.85141488320],
[3.811, 2.63992803111, 3.18139373770],
[3.643, 1.73267151007, 1059.38193018920],
[3.554, 4.98621474362, 3.93215326310],
[4.568, 4.33599514584, 628.85158605010],
[3.145, 2.51404811765, 1162.47470440780],
[3.522, 1.16093567319, 223.59403617650],
[2.933, 2.06057834252, 956.28915597060],
[2.644, 5.62559379305, 203.73786788240],
[2.992, 5.06312015437, 515.46387109300],
[2.304, 2.73123930535, 21.34064100240],
[2.168, 2.91805928238, 203.00415469950],
[2.398, 3.99421633537, 1279.79457262800],
[2.146, 0.87500689888, 408.43894361130],
[2.074, 1.65731069687, 137.03302416240],
[1.797, 1.56879308343, 124.43341522100],
[2.088, 1.85721384366, 138.51749687070],
[1.769, 4.82294294946, 1073.60902419080],
[1.635, 1.20387813348, 88.86568021700],
[2.202, 5.93027042684, 1052.26838318840],
[1.843, 0.22126910774, 750.10360753340],
[1.851, 2.45470409290, 340.77089204480],
[1.890, 0.41025631859, 127.47179660680],
[1.582, 5.63360832372, 214.26230328450],
[1.920, 3.77935901504, 350.33211960040],
[1.786, 5.78644477326, 635.96513305090],
[1.497, 3.13026893210, 703.63318461740],
[1.583, 3.46882532865, 38.13303563780],
[1.577, 4.02973226017, 388.46515523820],
[1.645, 5.59115773632, 483.22054217860],
[1.405, 4.07880624509, 728.76296653100],
[1.498, 5.87094430469, 362.86229257260],
[1.317, 2.22386203585, 213.34727954780],
[1.321, 2.91534782718, 1265.56747862640],
[1.307, 5.41748323885, 217.96496188400],
[1.483, 0.91111666841, 543.91805909620],
[1.291, 2.62333801070, 554.06998748280],
[1.406, 0.34582712649, 85.82729883120],
[1.287, 2.82247279651, 231.45834270270],
[1.563, 4.88438049382, 208.63322899200],
[1.316, 5.30963570131, 213.25091132820],
[1.164, 1.39531381032, 210.37833413120],
[1.295, 2.46089213219, 200.76892246580],
[1.236, 3.03659580871, 838.96928775040],
[1.449, 4.00934078371, 195.13984817330],
[1.251, 1.46674521697, 218.71572140940],
[1.568, 1.89939852487, 212.33588759150],
[1.067, 5.34734443894, 207.67002114550],
[1.111, 0.70962013461, 447.93883187840],
[1.012, 1.37217220640, 636.71589257630],
[1.163, 6.00108996618, 191.20769491020],
[0.887, 2.84483069917, 191.95845443560],
[1.005, 2.72373040634, 1478.86657406440],
[0.879, 1.19585734916, 417.03696332040],
[0.829, 4.94182950387, 497.44763618020],
[0.878, 6.24981924813, 265.98929347750],
[0.781, 4.61973017912, 424.15051032120],
[0.924, 3.64210508536, 222.86032299360],
[0.971, 2.89404568581, 563.63121503840],
[0.946, 5.72987725592, 1368.66025284500],
[0.834, 6.12384852532, 209.10630974400],
[0.911, 1.06795057723, 650.94298657790],
[0.731, 0.81660632103, 142.44965013380],
[0.795, 5.54574074566, 76.26607127560],
[1.012, 5.97140626297, 643.07868005170],
[0.703, 2.41479303782, 10.29494073850],
[0.726, 4.52598413209, 565.11568774670],
[0.691, 2.31682364985, 160.60889739850],
[0.695, 0.37889317398, 212.77783057620],
[0.676, 4.43606270900, 842.15068148810],
[0.769, 4.47368582271, 52.69019803950],
[0.658, 0.32331118921, 621.73803904930],
[0.838, 4.68035046143, 288.08069400530],
[0.674, 5.63961963995, 867.42347575360],
[0.695, 1.32062509205, 1169.58825140860],
[0.841, 2.46995220838, 1375.77379984580],
[0.633, 3.46145143241, 18.15924726470],
[0.722, 0.04119071457, 269.92144674060],
[0.757, 2.15030650611, 207.88246946660],
[0.692, 0.87072324976, 213.82036029980],
[0.602, 0.85288769518, 225.82926841020],
[0.635, 4.76109030475, 831.85574074960],
[0.701, 1.20410854661, 479.28838891550],
[0.624, 2.30585779534, 643.82943957710],
[0.582, 0.18811617696, 1.48447270830],
[0.513, 2.56525967840, 404.50679034820],
[0.502, 4.97423814367, 212.54833591260],
[0.644, 2.10955154583, 1272.68102562720],
[0.467, 4.47217820662, 235.39049596580],
[0.566, 4.44740324446, 429.04587143080],
[0.448, 0.57491120802, 22.09140052780],
[0.520, 1.15131866397, 337.73251065900],
[0.476, 4.78513362967, 218.92816973050],
[0.519, 0.61616177345, 436.89313161450],
[0.442, 2.10204008144, 416.30325013750],
[0.536, 1.08779067908, 344.70304530790],
[0.477, 2.42483193385, 216.21985674480],
[0.469, 5.22622034028, 942.06206196900],
[0.392, 0.41137926465, 302.16477565500],
[0.400, 5.17216478470, 414.06801790380],
[0.383, 3.58419227076, 1045.15483618760],
[0.443, 1.11051326413, 425.11371816770],
[0.517, 3.44547026103, 12.53017297220],
[0.369, 1.60095273908, 56.62235130260],
[0.354, 2.79123486392, 1581.95934828300],
[0.405, 5.93402105921, 173.94221952280],
[0.319, 4.31850876624, 219.44943459230],
[0.330, 0.62529198264, 358.93013930950],
[0.305, 0.82404423420, 1485.98012106520],
[0.391, 2.59385552893, 1795.25844372100],
[0.291, 3.12019266878, 217.49188113200],
[0.294, 2.18552193901, 444.75743814070],
[0.281, 0.77791302266, 757.21715453420],
[0.355, 5.44570491928, 1685.05212250160],
[0.305, 2.65927043884, 355.74874557180],
[0.269, 6.00323720265, 934.94851496820],
[0.287, 2.60486363576, 113.38771495710],
[0.348, 0.98872551635, 70.84944530420],
[0.331, 5.62133883922, 9.56122755560],
[0.255, 4.14086605030, 284.14854074220],
[0.311, 6.27145060602, 207.14875628370],
[0.267, 4.72606312146, 696.51963761660],
[0.319, 4.68828119248, 1155.36115740700],
[0.227, 3.10352674343, 1361.54670584420],
[0.228, 1.19253095837, 1589.07289528380],
[0.244, 5.36327976010, 245.54242435240],
[0.218, 2.16069250901, 177.87437278590],
[0.254, 4.51652534648, 1148.24761040620],
[0.211, 2.82699627326, 106.27416795630],
[0.230, 4.63171743406, 107.02492748170],
[0.201, 4.52152562223, 508.35032409220],
[0.230, 5.93560798508, 618.55664531160],
[0.253, 2.08074949572, 252.65597135320],
[0.234, 2.43423283339, 1692.16566950240],
[0.196, 1.01284131123, 114.39910691340],
[0.196, 2.73629728926, 214.04985496340],
[0.191, 1.51642829677, 6069.77675455340],
[0.252, 5.10097595426, 1258.45393162560],
[0.240, 2.93712394928, 916.93228005540],
[0.224, 4.42406538277, 251.43213107580],
[0.223, 2.34400676548, 1677.93857550080],
[0.228, 5.00073557208, 1574.84580128220],
[0.183, 5.09056895026, 220.46082654860],
[0.178, 6.05669760153, 206.13736432740],
[0.185, 3.73859309582, 114.13847448250],
[0.200, 1.89409546254, 2420.92863603340],
[0.158, 2.78517362162, 2008.55753915900],
[0.191, 2.28724146195, 2435.15573003500],
[0.188, 4.29343910228, 1471.75302706360],
[0.155, 5.35194123420, 576.16138801060],
[0.174, 2.80423114755, 1781.03134971940],
[0.166, 5.32531835813, 2001.44399215820],
[0.165, 2.62993712087, 525.49817940060],
[0.141, 4.73916921092, 501.37978944330],
[0.161, 5.83368523750, 181.05576652360],
[0.137, 1.45135867137, 131.54696222180],
[0.157, 3.22870773657, 1493.09366806600],
[0.136, 4.20279658293, 710.74673161820],
[0.144, 4.61003572124, 121.25202148330],
[0.131, 5.85409245557, 175.16605980020],
[0.144, 0.96056164245, 214.78356814630],
[0.146, 3.95687956474, 421.93232443000],
[0.138, 1.03080573610, 4.66586644600],
[0.167, 1.97508934614, 62.25142559510],
[0.123, 2.28640485589, 1898.35121793960],
[0.168, 4.63122081226, 1891.23767093880],
[0.129, 0.05327999225, 211.81462272970],
[0.134, 3.49720535944, 488.84961647110],
[0.117, 3.43819501459, 436.15941843160],
[0.125, 5.87007326241, 963.40270297140],
[0.120, 0.70795300239, 81.75213321620],
[0.125, 4.50999471095, 2317.83586181480],
[0.116, 6.11600926571, 558.00214074590],
[0.117, 4.78666549046, 601.76425067620],
[0.108, 0.45464469172, 1802.37199072180],
[0.111, 1.44669239244, 2531.13495725280],
[0.109, 6.14289264597, 151.04766984290],
[0.113, 4.05600865495, 1286.90811962880],
[0.129, 5.13936946160, 849.26422848890],
[0.127, 3.88189432056, 98.89998852460],
[0.133, 2.38290634070, 2111.65031337760],
[0.122, 4.40757611742, 778.41478318470],
[0.095, 0.07909774752, 213.41097002260],
[0.095, 1.66925524906, 213.18722085340],
[0.103, 1.88058957173, 99.16062095550],
[0.119, 3.62785705509, 248.72381809010],
[0.090, 4.63029999228, 228.27694896500],
[0.092, 5.48700119144, 767.36908292080],
[0.089, 4.61331934339, 431.26405732200],
[0.099, 3.60670326134, 776.93031047640],
[0.085, 4.93878023673, 2.44768055480],
[0.089, 6.24541644164, 661.23792731640],
[0.085, 0.45896349060, 1382.88734684660],
[0.088, 3.81144552178, 1788.14489672020],
[0.103, 3.20558404998, 312.19908396260],
[0.080, 2.28889729136, 213.08664711690],
[0.080, 5.74264101239, 213.51154375910],
[0.082, 3.23546757052, 198.32124191100],
[0.078, 6.03841191050, 835.03713448730],
[0.080, 0.22601918692, 427.56139872250],
[0.072, 2.05164614795, 2634.22773147140],
[0.091, 5.97938003596, 556.51766803760],
[0.087, 2.71469794199, 617.80588578620],
],
# B2
[
[20629.977, 0.50482422817, 213.29909543800],
[3719.555, 3.99833475829, 206.18554843720],
[1627.158, 6.18189939500, 220.41264243880],
[1346.067, 0.00000000000, 0.00000000000],
[705.842, 3.03914308836, 419.48464387520],
[365.042, 5.09928680706, 426.59819087600],
[329.632, 5.27899210039, 433.71173787680],
[219.335, 3.82841533795, 639.89728631400],
[139.393, 1.04272623499, 7.11354700080],
[103.980, 6.15730992966, 227.52618943960],
[92.961, 1.97994412845, 316.39186965660],
[71.242, 4.14754353431, 199.07200143640],
[51.927, 2.88364833898, 632.78373931320],
[48.961, 4.43390206741, 647.01083331480],
[41.373, 3.15927770079, 853.19638175200],
[28.602, 4.52978327558, 210.11770170030],
[23.969, 1.11595912146, 14.22709400160],
[20.511, 4.35095844197, 217.23124870110],
[19.532, 5.30779711223, 440.82528487760],
[18.263, 0.85391476786, 110.20632121940],
[15.742, 4.25767226302, 103.09277421860],
[16.840, 5.68112084135, 216.48048917570],
[13.613, 2.99904334066, 412.37109687440],
[11.567, 2.52679928410, 529.69096509460],
[7.963, 3.31512423920, 202.25339517410],
[6.599, 0.28766025146, 323.50541665740],
[6.312, 1.16121321336, 117.31986822020],
[5.891, 3.58260177246, 309.27832265580],
[6.648, 5.55714129949, 209.36694217490],
[5.590, 2.47783944511, 1066.49547719000],
[6.192, 3.61231886519, 860.30992875280],
[4.231, 3.02212363572, 846.08283475120],
[3.612, 4.79935735435, 625.67019231240],
[3.398, 3.76732731354, 423.41679713830],
[3.387, 6.04222745633, 234.63973644040],
[2.578, 5.63610668746, 735.87651353180],
[2.831, 4.81642822334, 429.77958461370],
[2.817, 4.47516563908, 654.12438031560],
[2.573, 0.22467245054, 522.57741809380],
[2.610, 3.29126967191, 95.97922721780],
[2.419, 0.02986335489, 415.55249061210],
[2.112, 4.55964179603, 422.66603761290],
[2.304, 6.25081073546, 330.61896365820],
[1.758, 5.53430456858, 536.80451209540],
[1.814, 5.05675881426, 277.03499374140],
[1.550, 5.60375604692, 223.59403617650],
[1.457, 4.47767649852, 430.53034413910],
[1.607, 5.53599550100, 224.34479570190],
[1.172, 4.71017775994, 203.00415469950],
[1.231, 0.25115931880, 3.93215326310],
[1.105, 1.01595427676, 21.34064100240],
[0.868, 4.84623483952, 949.17560896980],
[0.939, 1.35429452093, 742.99006053260],
[0.693, 6.03599130692, 124.43341522100],
[0.712, 4.45550701473, 191.95845443560],
[0.690, 5.44243765037, 437.64389113990],
[0.810, 0.46198177342, 515.46387109300],
[0.694, 5.23748122403, 447.93883187840],
[0.604, 2.95749705544, 88.86568021700],
[0.669, 0.08457977809, 215.74677599280],
[0.579, 0.65329445948, 3.18139373770],
[0.712, 6.05964117622, 11.04570026390],
[0.698, 2.91371419321, 1073.60902419080],
[0.526, 2.24947851818, 1059.38193018920],
[0.511, 2.86838724347, 408.43894361130],
[0.589, 5.79268515755, 63.73589830340],
[0.519, 1.76641574095, 1279.79457262800],
[0.503, 5.73762297081, 728.76296653100],
[0.482, 4.68234512154, 838.96928775040],
[0.494, 4.04363805503, 490.33408917940],
[0.458, 1.17998315936, 210.85141488320],
[0.380, 5.28045750432, 1052.26838318840],
[0.404, 4.58953258519, 302.16477565500],
[0.377, 5.20131800999, 74.78159856730],
[0.328, 0.11893501088, 956.28915597060],
[0.290, 3.99300398632, 1162.47470440780],
[0.262, 2.04320741578, 1471.75302706360],
[0.259, 3.76206113036, 635.96513305090],
[0.254, 0.16694559092, 195.13984817330],
[0.309, 5.44921175960, 543.91805909620],
[0.237, 1.27761853769, 231.45834270270],
[0.288, 1.32449995239, 203.73786788240],
[0.229, 4.19748765966, 1265.56747862640],
[0.238, 4.02925601887, 643.07868005170],
[0.238, 0.49997895983, 10.29494073850],
[0.257, 3.69107889837, 867.42347575360],
[0.191, 0.17807919948, 628.85158605010],
[0.246, 5.62469599682, 351.81659230870],
[0.183, 3.38184740572, 636.71589257630],
[0.172, 3.83173494030, 1581.95934828300],
[0.220, 1.03443668151, 483.22054217860],
[0.217, 4.65210162713, 750.10360753340],
[0.143, 2.31969979791, 18.15924726470],
[0.137, 5.50046852846, 1169.58825140860],
[0.120, 3.70151294359, 416.30325013750],
[0.136, 3.38453909352, 1155.36115740700],
[0.149, 0.85459831932, 1375.77379984580],
[0.150, 5.71949902293, 618.55664531160],
[0.125, 4.82446274394, 436.89313161450],
[0.120, 3.26968058035, 1478.86657406440],
[0.131, 0.11496484259, 1898.35121793960],
[0.099, 4.57241894541, 643.82943957710],
[0.095, 4.92115458463, 650.94298657790],
[0.090, 2.09300085806, 621.73803904930],
[0.111, 0.11975665259, 831.85574074960],
[0.089, 2.54351587616, 85.82729883120],
[0.080, 5.09103451442, 340.77089204480],
[0.078, 3.17395501851, 497.44763618020],
[0.085, 0.18997660997, 1258.45393162560],
[0.081, 1.16732337173, 217.96496188400],
[0.072, 5.47328223678, 337.73251065900],
],
# B3
[
[666.252, 1.99006340181, 213.29909543800],
[632.350, 5.69778316807, 206.18554843720],
[398.051, 0.00000000000, 0.00000000000],
[187.838, 4.33779804809, 220.41264243880],
[91.884, 4.84104208217, 419.48464387520],
[42.369, 2.38073239056, 426.59819087600],
[51.548, 3.42149490328, 433.71173787680],
[25.661, 4.40167213109, 227.52618943960],
[20.551, 5.85313509872, 199.07200143640],
[18.081, 1.99321433229, 639.89728631400],
[10.874, 5.37344546547, 7.11354700080],
[9.590, 2.54901825866, 647.01083331480],
[7.085, 3.45518372721, 316.39186965660],
[6.002, 4.80055225135, 632.78373931320],
[5.778, 0.01680378777, 210.11770170030],
[4.881, 5.63719730884, 14.22709400160],
[4.501, 1.22424419010, 853.19638175200],
[5.542, 3.51756747774, 440.82528487760],
[3.548, 4.71299370890, 412.37109687440],
[2.851, 0.62679207578, 103.09277421860],
[2.173, 3.71982274459, 216.48048917570],
[1.991, 6.10867071657, 217.23124870110],
[1.435, 1.69177141453, 860.30992875280],
[1.217, 4.30778838827, 234.63973644040],
[1.157, 5.75027789902, 309.27832265580],
[0.795, 5.69026441157, 117.31986822020],
[0.733, 0.59842720676, 1066.49547719000],
[0.713, 0.21700311697, 625.67019231240],
[0.773, 5.48361981990, 202.25339517410],
[0.897, 2.65577866867, 654.12438031560],
[0.509, 2.86079833766, 429.77958461370],
[0.462, 4.17742567173, 529.69096509460],
[0.390, 6.11288036049, 191.95845443560],
[0.505, 4.51905764563, 323.50541665740],
[0.379, 3.74436004151, 223.59403617650],
[0.332, 5.49370890570, 21.34064100240],
[0.377, 5.25624813434, 95.97922721780],
[0.384, 4.48187414769, 330.61896365820],
[0.367, 5.03190929680, 846.08283475120],
[0.281, 1.14133888637, 735.87651353180],
[0.245, 5.81618253250, 423.41679713830],
[0.241, 1.70335120180, 522.57741809380],
[0.258, 3.69110118716, 447.93883187840],
[0.231, 4.15697626494, 110.20632121940],
[0.305, 5.97746884029, 302.16477565500],
[0.284, 0.66224572127, 203.00415469950],
[0.204, 1.54683820621, 209.36694217490],
[0.194, 4.21193801453, 124.43341522100],
[0.145, 4.79689259614, 88.86568021700],
[0.151, 3.82010884134, 536.80451209540],
[0.100, 0.03596545368, 949.17560896980],
[0.097, 0.91303450276, 1073.60902419080],
[0.110, 2.21197473966, 515.46387109300],
[0.084, 2.53842533109, 422.66603761290],
[0.085, 5.11102520704, 3.93215326310],
[0.077, 6.04074586787, 838.96928775040],
[0.085, 1.18898817378, 728.76296653100],
[0.084, 4.10158366806, 224.34479570190],
],
# B4
[
[80.384, 1.11918414679, 206.18554843720],
[31.660, 3.12218745098, 213.29909543800],
[17.143, 2.48073200414, 220.41264243880],
[11.844, 3.14159265359, 0.00000000000],
[9.005, 0.38441424927, 419.48464387520],
[6.164, 1.56186379537, 433.71173787680],
[4.660, 1.28235639570, 199.07200143640],
[4.775, 2.63498295487, 227.52618943960],
[1.487, 1.43096671616, 426.59819087600],
[1.424, 0.66988083613, 647.01083331480],
[1.075, 6.18092274059, 639.89728631400],
[1.145, 1.72041928134, 440.82528487760],
[0.682, 3.84841098180, 14.22709400160],
[0.655, 3.49486258327, 7.11354700080],
[0.456, 0.47338193402, 632.78373931320],
[0.509, 0.31432285584, 412.37109687440],
[0.343, 5.86413875355, 853.19638175200],
[0.270, 2.50125594913, 234.63973644040],
[0.197, 5.39156324804, 316.39186965660],
[0.236, 2.11084590211, 210.11770170030],
[0.172, 6.09682874401, 860.30992875280],
[0.159, 5.95049154821, 216.48048917570],
[0.100, 1.98534903594, 625.67019231240],
[0.112, 0.85526419268, 654.12438031560],
[0.115, 5.03884718594, 117.31986822020],
[0.115, 0.44589613974, 110.20632121940],
],
# B5
[
[7.895, 2.81927558645, 206.18554843720],
[1.014, 0.51187210270, 220.41264243880],
[0.772, 2.99484124049, 199.07200143640],
[0.967, 3.14159265359, 0.00000000000],
[0.583, 5.96456944075, 433.71173787680],
[0.588, 0.78008666397, 227.52618943960],
[0.445, 2.38630799074, 419.48464387520],
[0.098, 5.10622131539, 647.01083331480],
[0.091, 5.81659714144, 7.11354700080],
[0.088, 6.17828532308, 440.82528487760],
[0.089, 0.58396864530, 213.29909543800],
],
]
"""This table contains Saturn's periodic terms (all of them) from the planetary
theory VSOP87 for the heliocentric latitude at the equinox of date (taken from
the 'D' solution). In Meeus' book a shortened version can be found in pages
440-442."""
VSOP87_R = [
# R0
[
[955758135.801, 0.00000000000, 0.00000000000],
[52921382.465, 2.39226219733, 213.29909543800],
[1873679.934, 5.23549605091, 206.18554843720],
[1464663.959, 1.64763045468, 426.59819087600],
[821891.059, 5.93520025371, 316.39186965660],
[547506.899, 5.01532628454, 103.09277421860],
[371684.449, 2.27114833428, 220.41264243880],
[361778.433, 3.13904303264, 7.11354700080],
[140617.548, 5.70406652991, 632.78373931320],
[108974.737, 3.29313595577, 110.20632121940],
[69007.015, 5.94099622447, 419.48464387520],
[61053.350, 0.94037761156, 639.89728631400],
[48913.044, 1.55733388472, 202.25339517410],
[34143.794, 0.19518550682, 277.03499374140],
[32401.718, 5.47084606947, 949.17560896980],
[20936.573, 0.46349163993, 735.87651353180],
[20839.118, 1.52102590640, 433.71173787680],
[20746.678, 5.33255667599, 199.07200143640],
[15298.457, 3.05943652881, 529.69096509460],
[14296.479, 2.60433537909, 323.50541665740],
[11993.314, 5.98051421881, 846.08283475120],
[11380.261, 1.73105746566, 522.57741809380],
[12884.128, 1.64892310393, 138.51749687070],
[7752.769, 5.85191318903, 95.97922721780],
[9796.061, 5.20475863996, 1265.56747862640],
[6465.967, 0.17733160145, 1052.26838318840],
[6770.621, 3.00433479284, 14.22709400160],
[5850.443, 1.45519636076, 415.55249061210],
[5307.481, 0.59737534050, 63.73589830340],
[4695.746, 2.14919036956, 227.52618943960],
[4043.988, 1.64010323863, 209.36694217490],
[3688.132, 0.78016133170, 412.37109687440],
[3376.457, 3.69528478828, 224.34479570190],
[2885.348, 1.38764077631, 838.96928775040],
[2976.033, 5.68467931117, 210.11770170030],
[3419.551, 4.94549148887, 1581.95934828300],
[3460.943, 1.85088802878, 175.16605980020],
[3400.616, 0.55386747515, 350.33211960040],
[2507.630, 3.53851863255, 742.99006053260],
[2448.325, 6.18412386316, 1368.66025284500],
[2406.138, 2.96559220267, 117.31986822020],
[2881.181, 0.17960757891, 853.19638175200],
[2173.959, 0.01508587396, 340.77089204480],
[2024.483, 5.05411271271, 11.04570026390],
[1740.254, 2.34657043464, 309.27832265580],
[1861.397, 5.93361638244, 625.67019231240],
[1888.436, 0.02968443389, 3.93215326310],
[1610.859, 1.17302463549, 74.78159856730],
[1462.631, 1.92588134017, 216.48048917570],
[1474.547, 5.67670461130, 203.73786788240],
[1395.109, 5.93669404929, 127.47179660680],
[1781.165, 0.76314388077, 217.23124870110],
[1817.186, 5.77713225779, 490.33408917940],
[1472.392, 1.40064915651, 137.03302416240],
[1304.089, 0.77235613966, 647.01083331480],
[1149.773, 5.74021249703, 1162.47470440780],
[1126.667, 4.46707803791, 265.98929347750],
[1277.489, 2.98412586423, 1059.38193018920],
[1207.053, 0.75285933160, 351.81659230870],
[1071.399, 1.13567265104, 1155.36115740700],
[1020.922, 5.91233512844, 1685.05212250160],
[1315.042, 5.11202572637, 211.81462272970],
[1295.553, 4.69184139933, 1898.35121793960],
[1099.037, 1.81765118601, 149.56319713460],
[998.462, 2.63131596867, 200.76892246580],
[985.869, 2.25992849742, 956.28915597060],
[932.434, 3.66980793184, 554.06998748280],
[664.481, 0.60297724821, 728.76296653100],
[659.850, 4.66635439533, 195.13984817330],
[617.740, 5.62092000007, 942.06206196900],
[626.382, 5.94208232590, 1478.86657406440],
[482.230, 1.84070179496, 479.28838891550],
[487.689, 2.79373616806, 3.18139373770],
[470.086, 0.83847755040, 1471.75302706360],
[451.817, 5.64468459871, 2001.44399215820],
[553.128, 3.41088600844, 269.92144674060],
[534.397, 1.26443331367, 275.55052103310],
[472.572, 1.88198584660, 515.46387109300],
[405.434, 1.64001413521, 536.80451209540],
[517.196, 4.44310450526, 2214.74308759620],
[452.848, 3.00349117198, 302.16477565500],
[494.340, 2.28626675074, 278.51946644970],
[489.825, 5.80631420383, 191.20769491020],
[427.459, 0.05741344372, 284.14854074220],
[339.763, 1.40198657693, 440.82528487760],
[340.627, 0.89091104306, 628.85158605010],
[385.974, 1.99700402508, 1272.68102562720],
[288.298, 1.12160250272, 422.66603761290],
[294.444, 0.42577061903, 312.19908396260],
[262.490, 0.31753439818, 1045.15483618760],
[295.331, 0.67144493789, 88.86568021700],
[342.968, 5.85600322299, 1795.25844372100],
[341.117, 2.37585247250, 525.49817940060],
[234.018, 4.22756813216, 114.13847448250],
[223.729, 2.28129446763, 330.61896365820],
[275.814, 0.47832439352, 38.13303563780],
[224.592, 0.54754005675, 1788.14489672020],
[303.300, 0.87946670205, 6069.77675455340],
[292.103, 6.21420611920, 210.85141488320],
[226.121, 0.37495223398, 142.44965013380],
[277.257, 5.31917702012, 692.58748435350],
[242.911, 5.37187983246, 1258.45393162560],
[205.571, 0.95755250527, 288.08069400530],
[207.567, 5.38126259725, 2317.83586181480],
[186.835, 6.03591766061, 404.50679034820],
[218.536, 5.25607043545, 212.33588759150],
[222.155, 5.94588016768, 39.35687591520],
[179.673, 4.41045924362, 408.43894361130],
[241.440, 1.12525868110, 388.46515523820],
[197.093, 3.90141942850, 52.69019803950],
[236.639, 0.90802744873, 1375.77379984580],
[171.915, 5.56318632797, 213.34727954780],
[169.865, 2.85667554010, 99.16062095550],
[214.398, 4.20253525974, 2531.13495725280],
[172.010, 2.36537801012, 213.25091132820],
[165.707, 2.63679789706, 215.74677599280],
[230.892, 5.49463421262, 191.95845443560],
[177.585, 0.38155817719, 430.53034413910],
[191.514, 2.95906900704, 437.64389113990],
[163.250, 3.45832517280, 617.80588578620],
[162.305, 5.73050678664, 203.00415469950],
[175.108, 5.71404465044, 1066.49547719000],
[183.041, 5.66851947172, 2111.65031337760],
[150.077, 4.40663921925, 417.03696332040],
[187.935, 6.07916265661, 563.63121503840],
[145.127, 5.08176368814, 423.41679713830],
[137.491, 5.43912787991, 222.86032299360],
[172.824, 1.84920994090, 1589.07289528380],
[165.478, 2.89132196119, 214.26230328450],
[145.727, 1.56565192483, 831.85574074960],
[176.864, 2.30323752987, 9999.98645077300],
[128.877, 2.55338644107, 414.06801790380],
[120.093, 0.04329750542, 1361.54670584420],
[143.441, 0.99817357720, 76.26607127560],
[108.747, 2.09282278191, 207.67002114550],
[132.106, 2.85902597898, 312.45971639350],
[112.238, 0.26221759151, 2104.53676637680],
[125.186, 4.78354048063, 205.22234059070],
[104.427, 3.63671899047, 65.22037101170],
[107.447, 3.67064138701, 212.77783057620],
[108.642, 2.85492389024, 21.34064100240],
[97.743, 5.12231845599, 2634.22773147140],
[109.097, 1.63231061493, 208.63322899200],
[96.852, 4.19928280035, 305.34616939270],
[96.507, 2.56002066845, 1692.16566950240],
[85.829, 4.54545085982, 210.37833413120],
[99.249, 5.13816222131, 1574.84580128220],
[112.532, 5.03109281265, 703.63318461740],
[84.023, 1.18337717265, 429.77958461370],
[89.021, 5.38791571457, 107.02492748170],
[110.191, 2.43656081234, 355.74874557180],
[90.659, 4.20908809746, 213.82036029980],
[95.885, 5.44594259071, 2428.04218303420],
[94.109, 2.39786381418, 483.22054217860],
[85.609, 0.03354346966, 860.30992875280],
[88.796, 4.05766306750, 128.95626931510],
[81.951, 1.66499731549, 62.25142559510],
[91.240, 3.96942332591, 2847.52682690940],
[83.961, 4.60845858022, 177.87437278590],
[88.376, 3.86800515885, 140.00196957900],
[93.308, 0.73846639887, 831.10498122420],
[91.872, 2.94977605320, 35.42472265210],
[87.077, 1.33390590052, 1905.46476494040],
[96.584, 4.84438390997, 131.40394986990],
[71.010, 0.99334817658, 405.25754987360],
[95.266, 2.51506908152, 2.44768055480],
[72.514, 4.63213873657, 245.54242435240],
[82.580, 1.52823217919, 145.63104387150],
[76.693, 3.15240783008, 767.36908292080],
[70.317, 4.04253707270, 173.94221952280],
[86.015, 2.30103727270, 85.82729883120],
[66.529, 4.75053522835, 70.84944530420],
[65.835, 2.46869725001, 280.96714700450],
[64.824, 0.09343869325, 9.56122755560],
[71.557, 0.01212415296, 565.11568774670],
[66.533, 1.08034871114, 339.28641933650],
[63.488, 2.01740971153, 234.63973644040],
[60.786, 5.12026947473, 756.32338265690],
[58.123, 6.05732868566, 1677.93857550080],
[64.236, 1.28586474622, 1148.24761040620],
[73.124, 4.37810889148, 425.11371816770],
[55.012, 3.85865703217, 342.25536475310],
[57.101, 6.26689214029, 2420.92863603340],
[64.090, 4.09854757476, 327.43756992050],
[55.306, 1.60456896521, 543.02428721890],
[57.987, 5.47269124340, 347.88443904560],
[73.581, 3.72292337326, 92.04707395470],
[73.760, 3.57045342615, 1.48447270830],
[64.940, 2.44739629174, 267.47376618580],
[54.414, 3.71479080197, 344.70304530790],
[49.783, 3.93453970179, 192.69216761850],
[49.537, 3.22831070579, 333.65734504400],
[47.539, 3.92925402178, 199.28444975750],
[49.368, 4.90341763553, 217.49188113200],
[62.711, 4.40120079629, 214.78356814630],
[46.359, 2.09430260266, 212.54833591260],
[46.289, 2.64038453480, 10.29494073850],
[54.335, 1.07179534996, 362.86229257260],
[58.742, 2.62270940799, 225.82926841020],
[48.457, 3.15166418511, 216.21985674480],
[46.316, 4.86226642770, 2950.61960112800],
[45.970, 4.97297391881, 198.32124191100],
[46.678, 2.44960215701, 207.14875628370],
[44.905, 1.77616995803, 223.59403617650],
[44.521, 5.55987055442, 264.50482076920],
[55.914, 4.29520232351, 329.72519178090],
[49.643, 5.20789299388, 2744.43405269080],
[58.829, 4.23073947869, 700.66423920080],
[52.629, 3.79230629070, 343.21857259960],
[41.532, 0.74488808688, 125.98732389850],
[47.767, 2.39260015876, 207.88246946660],
[56.157, 2.07214273531, 124.43341522100],
[43.345, 1.83707598036, 106.27416795630],
[39.793, 4.00870764324, 12.53017297220],
[53.882, 4.97905460628, 134.58534360760],
[50.135, 5.75914508514, 320.32402291970],
[44.960, 5.35721924134, 218.92816973050],
[41.089, 4.92252591399, 1891.23767093880],
[46.509, 2.06623129884, 2008.55753915900],
[42.949, 0.39856812529, 357.44566660120],
[37.992, 2.06495914285, 247.23934538180],
[48.733, 5.32762223699, 3127.31333126180],
[34.583, 5.62555932761, 99.91138048090],
[41.092, 2.47264897370, 237.67811782620],
[40.763, 4.08408559215, 621.73803904930],
[34.213, 0.73077393007, 750.10360753340],
[33.967, 5.31264617621, 206.23373254700],
[36.509, 1.68826775750, 22.09140052780],
[39.361, 3.45730719990, 241.61027108930],
[34.796, 2.24780137629, 487.36514376280],
[33.049, 4.86593901955, 209.10630974400],
[32.584, 2.22713131846, 319.57326339430],
[39.035, 3.73870591196, 3163.91869656600],
[32.722, 1.06640549236, 252.65597135320],
[38.671, 4.39617126814, 18.15924726470],
[34.514, 1.82607500690, 380.12776796000],
[41.539, 0.08136234251, 210.33015002140],
[33.527, 5.80475568528, 251.43213107580],
[31.221, 1.96489151107, 244.31858407500],
[30.521, 2.26854188579, 1169.58825140860],
[34.828, 5.96324553131, 217.96496188400],
[38.481, 4.43707551964, 160.60889739850],
[35.998, 3.83262381556, 56.62235130260],
[31.041, 4.89914223233, 144.14657116320],
[32.342, 3.58191018804, 231.45834270270],
[28.838, 5.80081031514, 1994.33044515740],
[32.175, 2.13166877923, 206.13736432740],
[32.643, 1.93131580544, 98.89998852460],
[34.917, 5.65276617691, 497.44763618020],
[28.928, 2.21653288920, 14.97785352700],
[31.569, 3.81846560564, 73.29712585900],
[32.199, 0.99811846290, 1464.63948006280],
[29.153, 5.98414099408, 2737.32050569000],
[36.706, 4.75493516597, 348.84764689210],
[28.665, 1.68732054583, 78.71375183040],
[27.501, 6.12086395418, 214.04985496340],
[28.795, 0.04448605904, 5.62907429250],
[27.205, 0.24587543816, 313.21047591890],
[32.441, 3.77921585847, 33.94024994380],
[27.088, 5.20310098020, 148.07872442630],
[34.956, 3.43886187587, 273.10284047830],
[33.076, 2.44662095168, 969.62247809490],
[27.745, 1.44598606685, 258.87574647670],
[27.178, 4.25918596220, 179.35884549420],
[27.872, 0.78772093522, 546.95644048200],
[29.106, 4.83947711462, 905.88657979150],
[27.417, 2.44930366818, 254.94359321360],
[34.296, 6.00920969644, 166.82867252200],
[28.859, 6.02917249910, 188.92007304980],
[26.001, 0.65046992484, 654.12438031560],
[33.560, 1.23732329127, 2221.85663459700],
[24.356, 0.52248751330, 894.84087952760],
[27.767, 5.17820678484, 5.41662597140],
[25.568, 3.35897159622, 0.96320784650],
[22.879, 3.51293480690, 458.84151979040],
[24.496, 0.00976884124, 69.15252427480],
[28.794, 0.75545700854, 488.84961647110],
[31.228, 2.05299907796, 282.45161971280],
[25.438, 5.29037729250, 636.71589257630],
[25.332, 4.97007969450, 3060.82592234740],
[23.596, 2.54766434769, 196.62432088160],
[29.602, 3.92688207792, 206.70681329900],
[28.255, 2.72125009693, 32.24332891440],
[22.115, 4.75775237642, 213.18722085340],
[22.130, 3.25436709191, 681.54178408960],
[21.675, 4.61403328597, 3267.01147078460],
[22.115, 3.16759500067, 213.41097002260],
[26.912, 2.86269769133, 24.37902238820],
[20.737, 1.66895754198, 274.06604832480],
[28.309, 4.73122154345, 552.58551477450],
[25.252, 5.11986371899, 168.05251279940],
[26.364, 1.59272536419, 491.81856188770],
[21.995, 0.88079009280, 635.96513305090],
[27.076, 5.53694832022, 555.55446019110],
[19.683, 2.14388519695, 54.17467074780],
[27.266, 3.57891326986, 561.18353448360],
[25.162, 1.78070903718, 182.27960680100],
[21.386, 3.86030772476, 116.42609634290],
[25.572, 1.62093861709, 2324.94940881560],
[20.025, 2.90618582553, 120.35824960600],
[19.882, 5.59203696008, 4.19278569400],
[19.454, 0.10623632006, 218.71572140940],
[25.617, 2.09931460158, 248.72381809010],
[19.804, 2.52180124343, 1485.98012106520],
[18.516, 2.54810951896, 213.51154375910],
[19.831, 0.07955320843, 842.15068148810],
[18.516, 5.37755110510, 213.08664711690],
[23.655, 1.59974907716, 738.79727483860],
[20.375, 2.94653107321, 59.80374504030],
[24.247, 3.15387696867, 240.38643081190],
[18.294, 3.18715992969, 295.05122865420],
[17.464, 2.90471803626, 477.80391620720],
[20.698, 1.07232100334, 494.26624244250],
[20.400, 1.83665590916, 533.62311835770],
[21.285, 0.63341794388, 189.72322220190],
[16.116, 0.60069688498, 746.92221379570],
[16.297, 3.98317294128, 2.92076130680],
[16.922, 4.74266972033, 2207.62954059540],
[20.479, 6.05098286202, 173.68158709190],
[15.447, 1.49120311247, 543.91805909620],
[19.944, 4.94086632750, 121.25202148330],
[17.127, 0.71458025372, 1781.03134971940],
[17.240, 0.67749766724, 151.04766984290],
[15.574, 5.70296527381, 3053.71237534660],
[15.036, 5.52770334605, 2310.72231481400],
[15.928, 4.45642717299, 643.82943957710],
[16.165, 0.63286131026, 358.93013930950],
[14.589, 5.26158292613, 472.17484191470],
[16.545, 3.52813228069, 3480.31056622260],
[18.912, 0.55218675639, 4.66586644600],
[17.595, 2.26495491189, 672.14061522840],
[18.104, 2.71285673689, 181.80652604900],
[15.918, 5.23446779429, 135.54855145410],
[13.931, 3.19357128657, 213.55972786890],
[14.058, 0.82375896652, 221.37585028530],
[13.931, 4.73208739639, 213.03846300710],
[14.690, 2.65882838685, 292.01284726840],
[14.454, 0.21819892811, 235.39049596580],
[16.168, 0.91025406068, 280.00393915800],
[13.327, 3.54947442109, 205.66428357540],
[16.104, 0.82547975762, 176.65053250850],
[16.441, 5.39398801335, 424.15051032120],
[12.747, 0.75780958758, 721.64941953020],
[12.754, 3.55466871752, 153.49535039770],
[14.448, 0.12049617049, 313.68355667090],
[16.499, 3.26383140489, 6283.07584999140],
[16.564, 1.62649604519, 5856.47765911540],
[14.950, 1.23923264394, 2641.34127847220],
[15.724, 1.18874754834, 486.40193591630],
[11.893, 0.91693668558, 416.30325013750],
[11.684, 1.11385455828, 81.75213321620],
[12.985, 4.74373293725, 3377.21779200400],
[11.864, 0.64411806416, 28.31117565130],
[13.216, 4.95904024430, 1279.79457262800],
[16.121, 0.98185208328, 2538.24850425360],
[14.900, 1.76649832526, 569.04784100980],
[11.337, 4.36555105334, 3583.40334044120],
[11.253, 5.98638731448, 193.65537546500],
[14.753, 2.92291248767, 167.08930495290],
[13.774, 2.50808183571, 1802.37199072180],
[11.068, 0.00471764868, 629.60234557550],
[12.781, 3.62178749219, 67.66805156650],
[12.238, 0.27163151602, 1044.40407666220],
[11.021, 0.15223056578, 501.37978944330],
[14.206, 2.63254885854, 618.55664531160],
[14.365, 0.37819794671, 601.76425067620],
[15.034, 2.67095006272, 46.47042291600],
[12.248, 2.19751851112, 650.94298657790],
[10.783, 2.86375137884, 113.38771495710],
[11.418, 1.20874560246, 172.24529849340],
[14.613, 6.05645353059, 468.24268865160],
[10.580, 2.05903854864, 429.04587143080],
[13.721, 2.20936291526, 228.27694896500],
[12.180, 1.82585577726, 241.87090352020],
[10.787, 5.06924118186, 162.89651925890],
[12.056, 3.20018724042, 72.07328558160],
[12.233, 4.50741930970, 425.63498302950],
[12.101, 4.14977794161, 1108.13997496560],
[9.843, 1.49451039604, 226.63241756230],
[10.287, 2.10680007784, 1033.35837639830],
[9.975, 2.81640446254, 518.64526483070],
[9.597, 4.80028087522, 426.64637498580],
[10.746, 4.66838299108, 129.91947716160],
[12.961, 5.11568581806, 219.44943459230],
[12.302, 5.33568547700, 776.93031047640],
[9.484, 4.85702954575, 820.05928096030],
[11.441, 3.85769732764, 405.99126305650],
[9.625, 1.60280478656, 426.55000676620],
[9.164, 0.70204567980, 403.02231763990],
[10.112, 2.76486875630, 210.59078245230],
[10.816, 1.36864298163, 170.76082578510],
[10.187, 2.36063948382, 685.47393735270],
[12.397, 6.06349943525, 875.83029900100],
[12.146, 2.04060386262, 508.35032409220],
[9.574, 3.19555214859, 286.59622129700],
[10.193, 4.01123146905, 381.35160823740],
[8.900, 3.63260235880, 319.31263096340],
[10.052, 5.16107251040, 216.00740842370],
[8.528, 3.88076551354, 630.33605875840],
[8.875, 5.46623776078, 3370.10424500320],
[8.401, 5.65557131026, 213.45915413240],
[10.033, 5.97497644283, 6.15033915430],
[8.401, 2.27009862215, 213.13903674360],
[11.661, 0.95163302252, 694.07195706180],
[8.696, 2.33868966556, 220.36445832900],
[8.141, 5.54059747150, 220.46082654860],
[9.615, 2.75755414306, 556.51766803760],
[9.120, 0.44322374149, 2097.42321937600],
[8.109, 5.53989498262, 181.05576652360],
[10.763, 0.05616402982, 691.10301164520],
[9.579, 2.84979792871, 184.09414790940],
[9.958, 2.38581008546, 945.24345570670],
[8.526, 0.17821781104, 289.56516671360],
[7.700, 0.00481375410, 7.16173111060],
[8.613, 0.82900327241, 2957.73314812880],
[9.517, 2.27516458273, 8.07675484730],
[9.049, 3.37335025790, 731.94436026870],
[7.888, 5.78452089815, 230.82520325630],
[7.684, 3.10462250617, 7.06536289100],
[7.391, 5.29648701813, 2627.11418447060],
[9.875, 4.69411059509, 10213.28554621100],
[7.328, 0.09051133382, 100.64509366380],
[7.999, 1.60928374337, 696.51963761660],
[7.600, 4.90078510977, 51.20572533120],
[9.928, 5.25713005643, 699.70103135430],
[7.333, 5.61982406824, 31.49256938900],
[7.376, 4.52737009022, 616.32141307790],
[9.422, 2.44475274779, 2118.76386037840],
[7.300, 4.01885475010, 212.02707105080],
[7.502, 4.71301501745, 436.15941843160],
[9.071, 2.75662160229, 130.44074202340],
[8.913, 2.19608557019, 427.56139872250],
[8.801, 4.26655882704, 141.22580985640],
[6.853, 5.69082635009, 480.77286162380],
[7.765, 3.27218537808, 3796.70243587920],
[9.159, 3.04713671650, 9786.68735533500],
[9.034, 2.04165937353, 204.70107572890],
[6.902, 4.61962635489, 2524.02141025200],
[6.728, 0.58794595002, 739.80866679490],
[6.741, 0.52362906624, 135.33610313300],
[8.201, 5.03994203224, 411.62033734900],
[7.240, 3.90653111215, 214.57111982520],
[6.887, 4.11954799957, 662.53120356300],
[6.566, 2.67659365854, 194.17664032680],
[6.539, 6.25585361704, 31.01948863700],
[7.484, 5.56871021201, 271.40591944890],
[8.078, 3.09955817560, 353.30106501700],
[7.072, 1.10066698352, 282.66406803390],
[6.089, 0.79684364835, 593.42686339800],
[6.140, 3.79672343724, 180.16199464630],
[6.703, 3.82854248620, 412.58354519550],
[6.024, 5.46288776207, 724.83081326790],
[8.102, 4.51051495778, 268.43697403230],
[6.033, 1.24326252021, 447.93883187840],
[7.425, 2.29394888999, 532.61172640140],
[6.007, 2.87215425398, 426.07692601420],
[7.568, 0.79147591036, 2854.64037391020],
[5.816, 1.70824982811, 50.40257617910],
[7.534, 5.38598292680, 953.10776223290],
[5.863, 2.04201456623, 454.90936652730],
[7.291, 0.88044346877, 457.61767951300],
[6.235, 4.51960341418, 3693.60966166060],
[6.359, 6.27053660532, 313.94418910180],
[5.722, 0.47241118592, 610.69233878540],
[5.704, 0.45599464136, 643.07868005170],
[6.176, 3.98739420856, 835.03713448730],
[5.730, 0.50814242490, 1038.04128918680],
[6.812, 4.20463385690, 938.12990870590],
[5.620, 4.08049141112, 3899.79521009780],
[6.770, 4.22172125738, 916.93228005540],
[6.069, 3.46762401122, 278.25883401880],
[5.875, 5.51773010551, 1073.60902419080],
[5.558, 3.29478679376, 20.60692781950],
[6.274, 4.88767368263, 0.52126486180],
[5.794, 4.09991767938, 391.17346822390],
[5.442, 2.79802608247, 397.39324334740],
[5.754, 4.42718264879, 165.60483224460],
[5.879, 6.17871525366, 291.26208774300],
[6.716, 2.18663847730, 627.36711334180],
[5.761, 0.62536160332, 114.39910691340],
[5.359, 2.29390692216, 331.20966448920],
[6.210, 4.92273259045, 450.97721326420],
[6.686, 2.13438181268, 285.63301345050],
[5.173, 4.10128119721, 6.59228213900],
[5.707, 3.48716972669, 230.56457082540],
[6.363, 5.64626069194, 518.38463239980],
[5.241, 3.78081098206, 418.52143602870],
[5.191, 4.39595146262, 84.34282612290],
[6.710, 2.96748528229, 624.91943278700],
[4.931, 2.71959451867, 558.00214074590],
[5.225, 4.65463431385, 310.71461125430],
[4.857, 2.61373582429, 66.70484372000],
[4.847, 3.76991373317, 423.67742956920],
[5.284, 1.96024672163, 1182.92157353290],
[5.933, 2.74003948393, 219.89137757700],
[6.373, 1.41296346460, 606.76018552230],
[4.728, 0.23421038001, 1063.31408345230],
[6.408, 1.16687419680, 268.95823889410],
[4.782, 1.56813683227, 420.96911658350],
[5.399, 4.57611449409, 238.90195810360],
[5.161, 0.14436456585, 2413.81508903260],
[4.858, 5.21378840436, 3686.49611465980],
[5.086, 1.73392381835, 337.73251065900],
[4.650, 3.71029121290, 305.08553696180],
[4.896, 3.67786531840, 240.12579838100],
[5.949, 0.29956165181, 524.01370669230],
[4.968, 2.53258931342, 980.66817835880],
[4.944, 2.16189522746, 104.05598206510],
[5.366, 3.54867806985, 107.28555991260],
[4.917, 0.48641512683, 3274.12501778540],
[5.617, 6.27593478237, 112.65400177420],
[4.524, 5.09539085552, 103.14095832840],
[5.643, 1.52724336480, 105.54045477340],
[4.504, 1.68251875362, 196.03362005060],
[4.897, 4.90011892854, 102.12956637210],
[4.525, 1.88735156553, 103.04459010880],
[4.327, 1.45407229380, 409.92341631960],
[5.095, 3.40640608336, 427.11945573780],
[5.782, 3.55197606731, 25874.60404613620],
[4.192, 0.16603430914, 958.57677783100],
[4.976, 0.50639895683, 511.53171782990],
[4.167, 5.94725762070, 316.44005376640],
[4.353, 3.78587101731, 1171.87587326900],
[5.387, 2.03693287651, 2435.15573003500],
[4.067, 4.66592603130, 106.01353552540],
[4.817, 3.53529781673, 960.22130923370],
[4.048, 3.20024146722, 775.23338944700],
[4.016, 6.00569143107, 945.99421523210],
[3.989, 3.15130319196, 115.62294719080],
[4.559, 5.59555355771, 778.41478318470],
[4.153, 2.75042736587, 316.34368554680],
[3.983, 2.00842137744, 597.35901666110],
[4.212, 4.16852690218, 823.99143422340],
[5.193, 0.71717111984, 810.65811209910],
[3.927, 5.04361736754, 2943.50605412720],
[4.225, 0.02571003853, 0.75075952540],
[4.926, 1.12994881124, 526.98265210890],
[4.170, 3.94116290117, 422.40540518200],
[4.432, 3.99599046800, 393.46109008430],
[3.840, 1.21234108241, 212.07525516060],
[3.866, 4.20930793423, 97.67614824720],
[4.440, 1.35536679738, 211.60217440860],
[3.840, 0.43014354282, 214.52293571540],
[4.724, 3.62039208608, 638.41281360570],
[4.870, 5.75874599620, 1246.65747183630],
[4.449, 1.43384065964, 184.98791978670],
[3.931, 2.36660272585, 909.81873305460],
[3.787, 5.98932416906, 325.95309721220],
[3.665, 0.72917314141, 20.44686912510],
[4.243, 2.29103096797, 453.42489381900],
[3.730, 6.24831601183, 159.12442469020],
[3.900, 1.31013240315, 850.01498801430],
[5.134, 1.97348901289, 526.50957135690],
[3.621, 2.77435773661, 123.53964334370],
[3.607, 5.32058842710, 406.95447090300],
[3.802, 1.94444523548, 421.18156490460],
[3.906, 3.02475451573, 317.35507750310],
[4.473, 0.80804073855, 838.21852822500],
[4.081, 2.08732468180, 988.53248488500],
[3.843, 4.99347148246, 7.63481186260],
[4.467, 6.09037793116, 760.25553592000],
[3.514, 3.97285766412, 426.48631629140],
[3.504, 0.85064201666, 299.12639426920],
[4.397, 1.68577228317, 824.74219374880],
[3.581, 2.35235960566, 337.80194662820],
[4.606, 3.48411642192, 913.96333463880],
[3.790, 3.64538213705, 216.26804085460],
[3.496, 0.95035381131, 436.89313161450],
[4.422, 0.82822191292, 43.28902917830],
[3.688, 2.83785443800, 739.05790726950],
[4.439, 1.19409419107, 421.93232443000],
[3.572, 2.77298538478, 444.75743814070],
[4.420, 5.44308967028, 963.40270297140],
[4.443, 3.73070830296, 37.87240320690],
[4.322, 4.75680702521, 40.84134862350],
[3.724, 0.59005210557, 256.42806592190],
[4.471, 2.22367643527, 318.83955021140],
[4.184, 1.52719196640, 298.23262239190],
[3.534, 5.01937599570, 386.98068252990],
[3.400, 3.22663067085, 4113.09430553580],
[4.556, 1.35715974815, 495.75071515080],
[4.453, 1.80417064247, 829.62050851590],
[3.617, 1.51036385224, 41.64449777560],
[3.789, 4.80357656146, 238.42887735160],
[3.514, 2.38272766645, 426.71006546060],
[3.208, 1.74465274123, 952.35700270750],
[4.398, 2.65839000906, 832.58945393250],
[4.092, 3.07954777295, 60.76695288680],
[3.813, 5.63047104819, 315.42866181010],
[3.219, 6.22278803635, 754.83890994860],
[3.102, 2.69222024257, 343.73983746140],
[4.045, 4.02463772100, 376.19561469690],
[3.576, 0.38532787280, 214.99601646740],
[3.291, 5.49542015261, 143.93412284210],
[3.981, 5.75449411958, 239.16259053450],
[3.249, 0.58789568678, 619.29035849450],
[3.114, 0.02831060137, 221.16340196420],
[3.555, 3.12207684735, 1048.33622992530],
[3.010, 1.91180343491, 93.53154666300],
[3.384, 1.81702854004, 443.86366626340],
[3.222, 2.37342117781, 429.51895218280],
[3.431, 5.92099840679, 570.74476203920],
[3.271, 2.04947945059, 806.72595883600],
[3.207, 5.44018976766, 402.21916848780],
[3.091, 0.10717557454, 3590.51688744200],
[2.951, 1.76365810296, 426.81063919710],
[2.958, 0.23653889192, 1354.43315884340],
[2.948, 4.59289832104, 426.38574255490],
[3.506, 5.43222584214, 84.93352695390],
[2.894, 5.69678330542, 1262.38608488870],
[3.682, 1.07122313007, 395.57870223900],
[2.983, 5.25093816048, 313.47110834980],
[3.117, 4.18767239237, 366.79444583570],
[2.873, 4.45472312727, 361.37781986430],
[3.521, 2.05528981993, 1261.63532536330],
[3.496, 1.87950759078, 439.12836384820],
[3.012, 0.64439385874, 263.02034806090],
[2.849, 1.12491777974, 262.05714021440],
[2.910, 2.76192171681, 541.53981451060],
[3.322, 6.08893948791, 108.72184851110],
[3.181, 1.01419299056, 418.00017116690],
[2.793, 0.38781777981, 211.86280683950],
[3.091, 2.18216748751, 306.83064210100],
[3.748, 3.89145855821, 220.93390730060],
[2.982, 1.99831689446, 117.91056905120],
[2.793, 1.25466684542, 214.73538403650],
[3.512, 1.50965040301, 885.43971066640],
[2.716, 0.80710391613, 757.21715453420],
[3.137, 2.09889265033, 2751.54759969160],
[2.738, 4.89270330923, 464.73122651380],
[2.875, 4.28436709414, 4010.00153131720],
[3.313, 3.01452486457, 336.83873878170],
[2.746, 2.69963506928, 380.38840039090],
[3.132, 2.19562786872, 2.96894541660],
[3.233, 0.60809684558, 3171.03224356680],
[3.034, 0.93246285284, 205.43478891180],
[3.006, 5.91067479448, 2.70831298570],
[3.643, 5.58302397259, 423.62924545940],
[2.625, 1.07042050691, 23.57587323610],
[3.495, 0.19887562030, 576.16138801060],
[2.590, 0.21252773750, 110.25450532920],
[2.704, 6.12908233599, 572.22923474750],
[2.568, 0.17571588314, 1056.20053645150],
[2.583, 2.96927378731, 384.05992122310],
[2.555, 3.96441052072, 430.79097657000],
[2.786, 2.54945911818, 195.89060769870],
[2.869, 4.82964665921, 710.74673161820],
[2.534, 5.31005598763, 427.34895040140],
[2.618, 1.22081401503, 36.64856292950],
[3.464, 2.32811328200, 285.37238101960],
[3.374, 3.34109586766, 162.09337010680],
[2.694, 4.64149271687, 140.96517742550],
[2.603, 0.99527295832, 92.30770638560],
[3.140, 5.40790277580, 328.24071907260],
[2.603, 4.31532790880, 561.93429400900],
[2.987, 0.82758128867, 45.57665103870],
[2.959, 3.35623851523, 273.85360000370],
[2.561, 0.54160683162, 107.75864066460],
[2.900, 1.20691455948, 462.02291352810],
[2.648, 1.90547819027, 88.11492069160],
[2.461, 4.68211868869, 2840.41327990860],
[2.534, 5.00311256556, 431.26405732200],
[2.521, 3.32160472310, 136.06981631590],
[2.945, 1.06452531856, 732.69511979410],
[2.654, 1.36744710395, 460.53844081980],
[3.297, 1.33975572602, 305.60680182360],
[2.634, 2.29995533800, 519.39602435610],
[2.805, 5.62255444533, 1699.27921650320],
[2.439, 5.14733660159, 303.86169668440],
[2.434, 3.71460437051, 4216.18707975440],
[2.416, 3.76296045457, 77.75054398390],
[2.803, 2.55280894914, 505.31194270640],
[2.592, 3.32836551071, 110.15813710960],
[3.074, 1.71462387764, 256.58812461630],
[3.295, 0.81766682522, 705.11765732570],
[3.183, 6.15742006608, 109.24311337290],
[2.908, 5.38534195293, 315.16802937920],
[2.326, 1.42604031905, 131.54696222180],
[2.427, 2.04627850740, 124.50285119020],
[2.632, 1.41253794767, 211.65456403530],
[2.297, 1.38016674676, 425.84743135060],
[2.318, 6.27716072818, 317.14262918200],
[2.310, 4.86442292404, 3259.89792378380],
[2.873, 1.10206537875, 7.86430652620],
[2.616, 0.11849676899, 133.10087089930],
[3.213, 4.49320461690, 432.22726516850],
[2.276, 6.04688191978, 214.10224459010],
[2.276, 1.96882478275, 212.49594628590],
[2.917, 0.96774661857, 100.38446123290],
[2.890, 5.72610904534, 322.02094394910],
[2.829, 2.66887892162, 141.48644228730],
[2.695, 1.47488571070, 42.53826965290],
[2.697, 5.34002228297, 432.01481684740],
[2.229, 4.40717937246, 540.73666535850],
[2.214, 2.43714413196, 426.85882330690],
[2.512, 4.68291916658, 1596.18644228460],
[2.202, 5.91122030007, 867.42347575360],
[2.856, 0.94736445171, 41.05379694460],
[2.396, 0.10516628717, 206.93630796260],
[2.345, 1.16685267780, 640.86049416050],
[2.263, 4.62327588198, 188.02630117250],
[2.214, 3.97566024178, 426.33755844510],
[2.274, 4.94055830720, 4002.88798431640],
[2.541, 0.83705615200, 12352.85260454480],
[2.145, 3.40120044084, 111.16952906590],
[2.895, 6.07389082608, 2914.01423582380],
[2.520, 1.05396310009, 184.72728735580],
[2.448, 3.49820841117, 481.73606947030],
[2.343, 2.86472924644, 207.07932031450],
[2.964, 5.96264929181, 465.95506679120],
[2.122, 4.04560058177, 118.07062774560],
[2.452, 4.35251210402, 1382.88734684660],
[2.131, 0.61211416273, 335.14181775230],
[2.116, 4.76181734842, 765.88461021250],
[2.245, 5.67078632283, 6467.92575796160],
[2.425, 0.84789834075, 550.13783421970],
[2.227, 1.15684015463, 227.31374111850],
[2.314, 6.13104971819, 2730.20695868920],
[2.344, 0.35844885568, 217.44369702220],
[2.529, 3.07975959821, 774.48262992160],
[2.523, 1.75026771081, 1578.02719501990],
[2.111, 4.24637589094, 96.87299909510],
[2.826, 1.01974994073, 87.31177153950],
[2.906, 3.75374302356, 428.08266358430],
[2.113, 2.19787343926, 449.23210812500],
[2.142, 1.19671359858, 209.15449385380],
[2.882, 2.59371585952, 39.61750834610],
[2.078, 2.87503604503, 14.01464568050],
[2.090, 1.99032225653, 441.57604440300],
[2.519, 2.99001165551, 745.27768239300],
[2.035, 5.37147785849, 1041.22268292450],
[2.054, 1.11817372961, 842.90144101350],
[2.023, 2.94559148702, 668.20846196530],
[2.529, 4.34280159004, 221.89711514710],
[2.554, 5.56906955622, 214.19286731530],
[2.712, 1.60469055827, 1050.99635880120],
[2.350, 3.36541706919, 220.20019411770],
[2.015, 2.60446576036, 315.64111013120],
[2.158, 1.64945261993, 219.66188291340],
[2.120, 2.93968038721, 304.12232911530],
[2.357, 1.94433441808, 233.90602325750],
[2.579, 4.54124062411, 484.70501488690],
[2.046, 5.45531068264, 200.55647414470],
[2.040, 2.04492641594, 1097.09427470170],
[2.675, 1.20234167733, 28.57180808220],
[2.528, 4.69268465973, 637.44960575920],
[2.314, 2.81193072994, 25.12978191360],
[2.689, 5.03868493349, 1269.49963188950],
[2.115, 3.10772296248, 1276.61317889030],
[2.712, 1.49710379127, 3340.61242669980],
[2.138, 4.52114042624, 378.90392768260],
[2.708, 0.01014338204, 389.94962794650],
[2.560, 5.75783882561, 544.50875992720],
[2.028, 0.24331359951, 146.59425171800],
[2.096, 1.44475430956, 864.24208201590],
[1.897, 4.63194412388, 220.30076785420],
[1.901, 1.78319572727, 192.85222631290],
[2.011, 4.11578325523, 315.87060479480],
[2.014, 2.26726355818, 198.10879358990],
[1.905, 2.15527255015, 326.68681039510],
[1.949, 3.95440811214, 103.61403908040],
[2.098, 5.24613314798, 175.42669223110],
[1.884, 5.66018186202, 1310.39337013970],
[1.911, 2.60665446600, 301.41401612960],
[2.160, 3.42888079793, 420.00590873700],
[2.325, 5.89632178100, 815.06334611420],
[1.914, 0.22451332248, 171.65459766240],
[1.854, 0.04278915026, 233.74596456310],
[1.973, 2.68640259480, 769.81676347560],
[1.941, 0.61369890353, 3487.42411322340],
[1.836, 3.41496980986, 195.77298761970],
[2.554, 2.35660179716, 212.40532356070],
[1.822, 4.05510232882, 639.94547042380],
[1.883, 6.27079329518, 16.67477455640],
[1.865, 0.17460226411, 244.79166482700],
[2.097, 4.58369520569, 316.91313451840],
[1.879, 2.76480572708, 28.45418800320],
[2.111, 2.92457831824, 328.92204262880],
[2.077, 0.35943033580, 589.49471013490],
[1.825, 4.04945265223, 190.40454575810],
[1.895, 3.89414880651, 334.55111692130],
[2.425, 3.76754213762, 25558.21217647960],
[2.218, 1.85341154236, 635.23141986800],
[1.782, 0.86927461254, 92.79783348010],
[2.432, 3.78026263567, 1254.52177836250],
[2.106, 0.17285594964, 354.26427286350],
[1.791, 6.23892012939, 1670.82502850000],
[1.996, 1.40940081042, 230.70758317730],
[1.753, 1.86660297451, 241.75328344120],
[2.093, 2.39366777880, 187.43560034150],
[2.007, 3.54083120293, 226.79247625670],
[1.949, 1.36533052698, 1385.17496870700],
[1.737, 2.67583588366, 6.36278747540],
[1.868, 4.24454204649, 1119.18567522950],
[1.896, 3.81474515719, 310.97524368520],
[1.860, 3.67887919389, 1321.43907040360],
[2.305, 3.53252557028, 1570.91364801910],
[2.008, 3.88504783546, 638.93407846750],
[1.928, 2.64393870433, 525.75881183150],
[1.807, 0.76057354967, 66.18357885820],
[1.824, 0.85822155861, 639.84910220420],
[2.221, 4.82210413830, 1585.89150154610],
[2.227, 4.58488941022, 271.61836777000],
[1.897, 0.64334758250, 55.65914345610],
[1.792, 0.00514800434, 827.92358748650],
[1.831, 3.69768852728, 172.45774681450],
[1.790, 4.80062977720, 3576.28979344040],
[1.698, 0.72475212282, 295.19424100610],
[1.744, 3.45256183290, 238.57188970350],
[2.334, 1.51845210531, 170.01006625970],
[1.669, 4.44620549295, 4319.27985397300],
[1.939, 3.43927826945, 102.57150935680],
[1.733, 5.96815907422, 837.69726336320],
[1.686, 2.12870436615, 491.55792945680],
[1.651, 3.20586624475, 281.17959532560],
[1.884, 4.24447812450, 13.49338081870],
[1.880, 0.33845094634, 214.94362684070],
[1.817, 3.07678560214, 220.52451702340],
[1.872, 3.79328892492, 392.65794093220],
[2.195, 1.93786776664, 259.76951835400],
[1.881, 4.49314034712, 199.80571461930],
[1.662, 0.29659841675, 314.90739694830],
[1.626, 2.29697402942, 3067.93946934820],
[1.927, 1.00706624515, 26.82670294300],
[1.621, 0.01495920679, 1379.70595310890],
[1.655, 4.15494230496, 4326.39340097380],
[1.719, 5.97443860990, 152.53214255120],
[1.653, 5.65633302949, 448.68959140380],
[1.790, 3.73709604091, 10.03430830760],
[1.600, 2.28430251221, 749.20983565610],
[1.770, 0.03256515992, 364.34676528090],
[1.939, 5.93191442558, 249.94765836750],
[1.988, 4.78810872536, 101.86893394120],
[1.667, 5.52149899431, 229.97386999440],
[2.215, 3.55121116323, 594.65070367540],
[1.950, 0.80878923373, 1049.08698945070],
[1.773, 2.55608046714, 9985.75935677140],
[2.088, 2.33165208016, 420.44785172170],
[2.107, 2.43624356568, 453.68552624990],
[1.907, 4.72569972805, 857.12853501510],
[1.609, 4.96540433043, 285.11174858870],
[2.152, 4.87024306306, 186.21176006410],
[1.685, 5.68609178354, 200.03520928290],
[1.752, 5.21532265401, 25448.00585526019],
[1.870, 6.14683645342, 347.36317418380],
[1.731, 1.95944272122, 934.94851496820],
[1.680, 5.56246697700, 170.97327410620],
[1.652, 1.24521351050, 398.14400287280],
[1.548, 0.38524522125, 17.26547538740],
[1.577, 0.23430114545, 434.67494572330],
[1.652, 2.84480428863, 385.54439393140],
[1.770, 1.15057996280, 199.96577331370],
[1.528, 4.02240583348, 236.19364511790],
[2.118, 5.47803429266, 369.08206769610],
[1.543, 2.54353574089, 632.73555520340],
[1.504, 5.94300855424, 280.21638747910],
[1.495, 2.19380669867, 407.47573576480],
[1.894, 1.88797605501, 598.84348936940],
[1.515, 4.70072295492, 211.29335786790],
[1.767, 3.11910667879, 2921.12778282460],
[1.515, 3.31498374761, 215.30483300810],
[1.728, 5.28095966912, 219.51887056150],
[1.906, 5.24236020775, 248.46318565920],
[1.607, 0.80041605735, 642.34496686880],
[1.640, 2.93387205029, 1364.72809958190],
[1.585, 0.77219822539, 661.23792731640],
[1.458, 5.67666822477, 632.83192342300],
[1.866, 4.40562835971, 971.10695080320],
[1.838, 0.48492190760, 1127.04998175570],
[1.903, 5.18692835916, 2015.67108615980],
[1.590, 2.80043208070, 633.74694715970],
[1.489, 4.10155671855, 77837.11123384659],
[1.573, 4.23741356107, 203.89792657680],
[1.690, 0.65475720351, 2700.71514038580],
[1.872, 3.54376036064, 354.52490529440],
[1.419, 4.53129346734, 224.60542813280],
[1.575, 3.52476647615, 373.90799283650],
[1.817, 3.95203885550, 6076.89030155420],
[1.446, 5.41423319377, 317.87634236490],
[1.552, 1.89030720529, 1304.92435454160],
[1.394, 1.86243646383, 913.75088631770],
[1.940, 4.36562864826, 432.74853003030],
[1.655, 1.31748248488, 25668.41849769900],
[1.438, 5.12958189872, 71.81265315070],
[1.929, 4.90721606846, 206.39799675830],
[1.533, 2.10965059985, 378.64329525170],
[1.421, 6.22897936063, 904.40210708320],
[1.450, 1.98065714692, 205.97310011610],
[1.584, 5.94110940455, 1226.21060271120],
[1.510, 3.77771207288, 222.70026429920],
[1.670, 2.51954641624, 976.73602509570],
[1.823, 1.60093991502, 1141.13406340540],
[1.564, 3.94804398924, 9566.27471289620],
[1.406, 3.65940442223, 316.50374424120],
[1.653, 3.62394476466, 968.13800538660],
[1.495, 0.77832279170, 5959.57043333400],
[1.408, 5.24970924980, 316.27999507200],
[1.724, 0.25483952164, 125.18417474640],
[1.426, 2.26871672572, 17.40848773930],
[1.881, 4.12588105003, 562.14674233010],
[1.370, 4.74474866880, 1357.61455258110],
[1.485, 2.18712736768, 9889.78012955360],
[1.369, 1.31846306523, 1160.83017300510],
[1.394, 5.66924517860, 1736.99156101570],
[1.375, 0.16983286236, 346.39996633730],
[1.525, 2.40244831911, 419.43645976540],
[1.359, 2.68668516027, 310.76279536410],
[1.396, 3.67055397940, 253.45912050530],
[1.454, 5.49356262440, 504.56118318100],
[1.813, 0.21882066860, 263.70167161710],
[1.330, 3.01736059716, 254.14044406150],
[1.498, 0.17578085903, 155.78297225810],
[1.509, 5.13129901759, 768.85355562910],
[1.550, 1.44225397189, 1894.41906467650],
[1.447, 1.44933809994, 893.35640681930],
[1.306, 5.76425101758, 714.67888488130],
[1.660, 1.34160526151, 322.61164478010],
[1.347, 3.00388920953, 843.63515419640],
[1.432, 3.43786149731, 251.17149864490],
[1.510, 4.39762427873, 25.27279426550],
[1.587, 5.17106904014, 141.69889060840],
[1.477, 5.47518377610, 226.04171673130],
[1.356, 4.24406292182, 332.17287233570],
[1.644, 1.74367211793, 67.88049988760],
[1.407, 5.79229630947, 188.16931352440],
[1.575, 0.09808372057, 702.14871190910],
[1.765, 4.93410889383, 201.51968199120],
[1.318, 4.91605557404, 17.52610781830],
[1.701, 4.47360878108, 384.27236954420],
[1.304, 6.04155032791, 25.86349509650],
[1.269, 4.91035989349, 354.99798604640],
[1.620, 5.54960841244, 260.36021918500],
[1.263, 1.16521999431, 255.83736509090],
[1.744, 3.70453251764, 147.11551657980],
[1.579, 4.31561365365, 2228.97018159780],
[1.557, 0.57740217353, 3178.14579056760],
[1.302, 0.32055726013, 119.76754877500],
[1.405, 3.20407486040, 395.10562148700],
[1.234, 2.34766954239, 318.67949151700],
[1.519, 4.74629629688, 100.17201291180],
[1.573, 4.00132484524, 1264.29545423920],
[1.222, 0.10709243166, 1372.59240610810],
[1.205, 0.24105241435, 466.75821594330],
[1.188, 1.27112537278, 1184.40604624120],
[1.280, 4.85454052139, 535.91074021810],
[1.482, 4.47166692910, 763.43692965770],
[1.233, 1.64803509193, 433.66355376700],
[1.476, 3.76634399110, 272.58157561650],
[1.199, 1.78020373551, 102.34201469320],
[1.186, 4.72162748523, 795.68025857210],
[1.291, 4.42697938285, 10220.39909321180],
[1.576, 2.40263038916, 348.63519857100],
[1.497, 3.44614317326, 3024.22055704320],
[1.175, 4.85145058205, 433.75992198660],
[1.262, 5.79416346069, 531.97858695500],
[1.486, 4.39599352105, 1055.44977692610],
[1.351, 0.46461977407, 707.56533788050],
[1.230, 5.18147817992, 752.39122939380],
[1.175, 4.35535063059, 3892.68166309700],
[1.581, 5.49361132323, 419.53282798500],
[1.247, 4.22328749428, 113.12708252620],
[1.145, 2.26067253357, 199.12018554620],
[1.385, 0.89711064123, 6073.70890781650],
[1.228, 4.55057016747, 680.05731138130],
[1.470, 1.58708185256, 409.18970313670],
[1.366, 3.99684537321, 6065.84460129030],
[1.131, 1.56474593118, 196.83676920270],
[1.163, 5.75528918663, 2303.60876781320],
[1.142, 4.35845106342, 1834.61531963620],
[1.244, 1.93187654929, 623.22251175760],
[1.136, 3.13253323524, 611.44309831080],
[1.425, 2.65840274172, 1253.77101883710],
[1.114, 3.43048279234, 771.30123618390],
[1.314, 0.15326588489, 493.30303459600],
[1.109, 2.95808402860, 1091.62525910360],
[1.177, 3.88159541809, 128.36556848410],
[1.150, 4.69140569690, 1.27202438720],
[1.527, 1.09983755253, 683.02625679790],
[1.304, 5.24544813643, 5650.29211067820],
[1.347, 4.11616699496, 97.46369992610],
[1.085, 0.70231952018, 1166.40685767090],
[1.224, 4.22994822530, 827.17282796110],
[1.142, 5.36157631813, 199.02381732660],
[1.373, 0.89371361814, 799.61241183520],
[1.085, 1.15969472512, 398.28701522470],
[1.098, 3.75659421786, 318.39760722670],
[1.136, 1.35127769399, 205.92491600630],
[1.108, 6.03201954623, 206.44618086810],
[1.146, 0.18236094571, 6386.16862421000],
[1.216, 0.49809632153, 1178.98942026980],
[1.295, 2.32056477953, 10003.91860403610],
[1.082, 1.96611069200, 3700.72320866140],
[1.094, 5.12244388591, 314.38613208650],
[1.464, 4.54056066665, 1248.14194454460],
[1.277, 5.42029902662, 9996.05429750990],
[1.248, 0.21625135029, 101.60830151030],
[1.055, 5.53725373260, 1578.77795454530],
[1.265, 5.85587479852, 82.85835341460],
[1.058, 0.73824266822, 670.91677495100],
[1.127, 3.63458498010, 582.38116313410],
[1.188, 2.10062104535, 423.88987789030],
[1.217, 2.49656109071, 311.72600321060],
[1.080, 3.96349373526, 118.87377689770],
[1.175, 0.91096377814, 740.06929922580],
[1.087, 5.46774426742, 494.47869076360],
[1.080, 3.49168860514, 847.04604259770],
[1.095, 0.97418295319, 1159.29331067010],
[1.078, 1.75579678521, 1457.52593306200],
[1.087, 4.81206824168, 109.68505635760],
[1.293, 0.02397468965, 2723.09341168840],
[1.190, 4.49552956868, 429.30650386170],
[1.127, 0.84707518843, 48.75804477640],
[1.047, 4.58416926615, 89.75945209430],
[1.251, 1.16783030789, 455.16999895820],
[1.122, 5.72161306640, 78263.70942472259],
[1.027, 0.16330222064, 229.76142167330],
[1.069, 2.37188773221, 848.53051530600],
[1.252, 5.28238896229, 6080.82245481730],
[1.181, 5.22299379363, 1459.95656727430],
[1.382, 0.51603096285, 774.00954916960],
[1.064, 5.95222326171, 1144.31545714310],
[1.083, 5.04862249728, 629.86297800640],
[1.061, 3.38604454777, 27.08733537390],
[1.415, 4.85796248007, 2332.06295581640],
[1.082, 4.07686503205, 1245.17299912800],
[1.112, 6.07617329506, 870.46185713940],
[1.072, 0.73647405514, 1482.79872732750],
[1.322, 2.81015928946, 223.33340374560],
[1.398, 1.55232715558, 25771.51127191760],
[1.065, 3.98884050015, 683.18631549230],
[1.008, 5.19594380826, 316.13123722570],
[1.197, 0.79148395839, 9580.50180689780],
[1.402, 4.82957073563, 883.79517926370],
[1.064, 4.65334775068, 201.99276274320],
[1.108, 5.88857586823, 657.16276170140],
[0.996, 4.99081076034, 426.75824957040],
[0.996, 1.60533807224, 426.43813218160],
[1.028, 5.92128319450, 108.50940019000],
[1.004, 3.54259597860, 754.03576079650],
[1.214, 0.81213286478, 1773.91780271860],
[1.318, 0.60269176130, 1123.11782849260],
[1.327, 4.75885008900, 321.80849562800],
[1.014, 5.79119811472, 6460.81221096080],
[1.178, 0.47169015111, 495.96316347190],
[0.999, 5.95030119388, 3906.90875709860],
[1.033, 3.75433174131, 414.81877742920],
[1.002, 1.39171012432, 1251.34038462480],
[0.990, 1.32621236288, 1268.74887236410],
[1.275, 1.95417923977, 757.80785536520],
[1.174, 6.04352585298, 225.07850888480],
[1.174, 5.43253033568, 849.26422848890],
[1.004, 5.33434806968, 46.20979048510],
[1.108, 1.28177889943, 294.30046912880],
[0.976, 1.83523959034, 5.88970672340],
[0.971, 3.38563950019, 306.09692891810],
[1.050, 3.88449467091, 632.26247445140],
[1.050, 3.26096036982, 159.71512552120],
[1.041, 2.36429894351, 821.54375366860],
[1.218, 4.61739999906, 990.22940591440],
[1.342, 1.55614528399, 498.93210888850],
[0.967, 3.84645372731, 604.47256366190],
[1.171, 0.42265751679, 10011.03215103690],
[0.965, 0.05396772193, 962.50893109410],
[1.096, 3.04685199735, 608.40471692500],
[1.166, 6.14999706886, 737.31280213030],
[0.986, 3.71830385737, 1235.61177157240],
[0.953, 0.79704964354, 16.46232623530],
[0.976, 1.05304205075, 8.33738727820],
[1.142, 1.06057209808, 369.97583957340],
[1.060, 4.36236322604, 633.30500417500],
[1.138, 4.31859245106, 98.42690777260],
[1.006, 5.89037944896, 10007.09999777380],
[0.967, 1.56852913547, 157.63995198190],
[1.082, 0.99548769517, 4.14460158420],
[1.009, 6.15037679495, 401.32539661050],
[0.981, 2.37620383333, 35.21227433100],
[1.011, 5.42685471402, 110.72758608120],
[0.989, 4.11575312649, 413.85556958270],
[1.024, 1.90798238649, 1175.80802653210],
[1.079, 4.95981991427, 631.82053146670],
[0.982, 3.02842195594, 347.41135829360],
[0.979, 3.74615289445, 700.45179087970],
[0.928, 5.22236951137, 1173.52040467170],
[0.912, 4.14451390992, 469.72716135990],
[0.938, 1.18273838991, 254.35289238260],
[0.977, 1.26684849112, 104.57724692690],
[1.134, 5.87478488618, 6058.73105428950],
[1.092, 4.51789158271, 532.13864564940],
[1.132, 4.55420027150, 1912.57831194120],
[0.915, 4.87266214195, 18.91000679010],
[0.915, 5.96624579967, 1987.21689815660],
[1.039, 2.40020830681, 6475.03930496240],
[0.965, 4.98927479154, 394.35486196160],
[0.964, 3.60903715900, 3281.23856478620],
[0.897, 2.81660605059, 316.23181096220],
[1.008, 5.78024010734, 502.86426215160],
[1.005, 6.12431717236, 6275.96230299060],
[0.895, 6.09245508513, 316.55192835100],
[1.224, 1.73535287415, 5120.60114558360],
[1.138, 2.92901543353, 1037.29052966140],
[0.924, 5.70601816488, 614.83694036960],
[0.893, 5.25155704274, 475.35623565240],
[1.042, 1.10027795842, 1518.22344997960],
[0.890, 4.03192782386, 1314.32552340280],
[0.926, 3.35110915055, 635.70450062000],
[1.130, 5.49282680494, 92.94084583200],
[0.890, 2.12933822393, 3384.33133900480],
[0.967, 5.86215202069, 13.33332212430],
[1.004, 1.73116475997, 10316.37832042960],
[1.226, 3.52834223937, 80.41067285980],
[1.029, 4.90620832171, 19.12245511120],
[0.996, 0.76740358631, 733.42883297700],
[0.910, 4.08904906301, 3333.49887969900],
[1.235, 1.23871819142, 357.23321828010],
[1.218, 0.18349810348, 1090.40141882620],
[0.864, 4.71917415767, 620.25356634100],
[0.935, 1.45887009044, 1042.91960395390],
[0.866, 4.04792682992, 522.52923398400],
[1.158, 5.43322209110, 1089.12939443900],
[0.860, 0.49220052417, 64.95973858080],
[1.190, 5.58965369650, 2810.92146160520],
[0.957, 3.12914047010, 628.59095361920],
[0.861, 5.69790389801, 103.84353374400],
[1.037, 5.91424823262, 11.30633269480],
[0.918, 0.21424702155, 373.01422095920],
[0.836, 3.02501867546, 387.24131496080],
[1.158, 3.33343863758, 6290.18939699220],
[0.856, 0.81593288669, 907.37105249980],
[1.036, 3.11936047271, 5429.87946823940],
[0.853, 6.23618175592, 938.88066823130],
[0.982, 3.39082880963, 521.61421024730],
[0.851, 5.14029961564, 802.79380557290],
[0.828, 0.28399876908, 338.48327018440],
[0.868, 1.89151676387, 627.15466502070],
[0.878, 2.67671626912, 688.65533109040],
[0.921, 0.18441593712, 3803.81598288000],
[0.821, 0.74694467095, 1152.17976366930],
[0.841, 2.42616504698, 625.88264063350],
[0.862, 3.35273419872, 425.32616648880],
[0.887, 3.46938383985, 1748.78802080500],
[0.815, 5.95428642326, 321.05773610260],
[0.958, 1.35525670354, 1201.83158032300],
[0.905, 5.43093361027, 236.87496867410],
[0.862, 3.24167644516, 427.87021526320],
[0.793, 5.01131700831, 109.99387289830],
[0.791, 2.21809404489, 110.41876954050],
[0.842, 5.04957483651, 444.12429869430],
[0.887, 4.23752031714, 3553.91152213780],
[0.851, 4.64229745145, 4105.98075853500],
[1.067, 4.69271921916, 559.69906177530],
[0.966, 4.55013458162, 9360.08916445900],
[0.977, 1.50925667031, 186.47239249500],
[1.092, 0.58153747940, 203.26478713040],
[0.997, 0.24589891452, 439.93151300030],
[0.786, 3.84829878956, 194.38908864790],
[0.774, 3.76050639310, 219.14061805160],
[0.845, 4.21602090805, 2648.45482547300],
[0.962, 0.30590569897, 229.34073054800],
[0.763, 0.05577842075, 846.13101886100],
[0.839, 5.68124142701, 2620.00063746980],
[0.818, 2.52609626540, 26301.20223701220],
[0.929, 0.71906225883, 740.28174754690],
[0.895, 5.83218231202, 4539.69249641180],
[0.939, 3.68460642343, 817.77165909990],
[0.755, 4.90024080821, 532.87235883230],
[0.784, 1.14096100609, 551.03160609700],
[0.899, 1.85252071775, 835.78789401270],
[0.753, 0.04254534997, 1534.73816584160],
[1.033, 1.00137993270, 134.11226285560],
[0.851, 6.12272864540, 1475.68518032670],
[0.797, 5.14322789256, 473.65931462300],
[0.729, 4.94931618796, 476.10699517780],
[0.852, 3.11058720799, 232.42155054920],
[0.783, 4.50805467439, 1151.42900414390],
[0.751, 0.92289775523, 1884.12412393800],
[0.832, 4.19686348297, 29.20494752860],
[0.720, 0.40961041030, 522.62560220360],
[0.722, 3.96121088528, 1474.93442080130],
[0.788, 0.99170388242, 121.84272231430],
[0.722, 4.16734185316, 232.20910222810],
[0.970, 2.32204039048, 566.60016045500],
[0.814, 5.19337022083, 948.21240112330],
[0.724, 2.30837674225, 949.12742486000],
[0.770, 5.89605163084, 156.67674413540],
[0.705, 5.40102118863, 1193.96727379680],
[0.809, 3.56474059969, 845.33207522580],
[0.755, 3.94580797273, 451.72797278960],
[0.731, 6.11847213487, 1239.54392483550],
[0.747, 1.40599730465, 782.34693644780],
[0.861, 1.84312374221, 984.60033162190],
[0.695, 4.78088165969, 10419.47109464820],
[0.804, 1.07998437400, 89.00869256890],
[0.828, 5.86080569334, 845.11962690470],
[0.692, 3.38736418117, 6489.26139842860],
[0.694, 3.07863807714, 316.60431797770],
[0.690, 5.86681311380, 316.17942133550],
[0.714, 5.38707933404, 567.82400073240],
[0.767, 0.12081849650, 485.88067105450],
[0.820, 1.87877245664, 499.89531673500],
[0.705, 0.57839934869, 1053.75285589670],
[0.684, 4.88442270630, 2545.36205125440],
[0.689, 6.14296395253, 622.48879857470],
[0.823, 3.50224755884, 877.57540414020],
[0.827, 2.59300433753, 232.94281541100],
[0.735, 3.05650026582, 66.91729204110],
],
# R1
[
[6182981.282, 0.25843515034, 213.29909543800],
[506577.574, 0.71114650941, 206.18554843720],
[341394.136, 5.79635773960, 426.59819087600],
[188491.375, 0.47215719444, 220.41264243880],
[186261.540, 3.14159265359, 0.00000000000],
[143891.176, 1.40744864239, 7.11354700080],
[49621.111, 6.01744469580, 103.09277421860],
[20928.189, 5.09245654470, 639.89728631400],
[19952.612, 1.17560125007, 419.48464387520],
[18839.639, 1.60819563173, 110.20632121940],
[12892.827, 5.94330258435, 433.71173787680],
[13876.565, 0.75886204364, 199.07200143640],
[5396.699, 1.28852405908, 14.22709400160],
[4869.308, 0.86793894213, 323.50541665740],
[4247.455, 0.39299384543, 227.52618943960],
[3252.084, 1.25853470491, 95.97922721780],
[2856.006, 2.16731405366, 735.87651353180],
[2909.411, 4.60679154788, 202.25339517410],
[3081.408, 3.43662557418, 522.57741809380],
[1987.689, 2.45054204795, 412.37109687440],
[1941.309, 6.02393385142, 209.36694217490],
[1581.446, 1.29191789712, 210.11770170030],
[1339.511, 4.30801821806, 853.19638175200],
[1315.590, 1.25296446023, 117.31986822020],
[1203.085, 1.86654673794, 316.39186965660],
[1091.088, 0.07527246854, 216.48048917570],
[954.403, 5.15173410519, 647.01083331480],
[966.012, 0.47991379141, 632.78373931320],
[881.827, 1.88471724478, 1052.26838318840],
[874.215, 1.40224683864, 224.34479570190],
[897.512, 0.98343776092, 529.69096509460],
[784.866, 3.06377517461, 838.96928775040],
[739.892, 1.38225356694, 625.67019231240],
[612.961, 3.03307306767, 63.73589830340],
[658.210, 4.14362930980, 309.27832265580],
[649.600, 1.72489486160, 742.99006053260],
[599.236, 2.54924174765, 217.23124870110],
[502.886, 2.12958819475, 3.93215326310],
[413.017, 4.59334402271, 415.55249061210],
[356.117, 2.30312127651, 728.76296653100],
[344.777, 5.88787577835, 440.82528487760],
[395.004, 0.53349091102, 956.28915597060],
[335.526, 1.61614647174, 1368.66025284500],
[362.772, 4.70691652867, 302.16477565500],
[321.611, 0.97931764923, 3.18139373770],
[277.783, 0.26007031431, 195.13984817330],
[291.173, 2.83129427918, 1155.36115740700],
[264.971, 2.42670902733, 88.86568021700],
[264.864, 5.82860588985, 149.56319713460],
[316.777, 3.58395655749, 515.46387109300],
[294.324, 2.81632778983, 11.04570026390],
[244.864, 1.04493438899, 942.06206196900],
[215.368, 3.56535574833, 490.33408917940],
[264.047, 1.28547685567, 1059.38193018920],
[246.245, 0.90730313861, 191.95845443560],
[222.077, 5.13193212050, 269.92144674060],
[194.973, 4.56665009915, 846.08283475120],
[182.802, 2.67913220473, 127.47179660680],
[181.645, 4.93431600689, 74.78159856730],
[174.651, 3.44560172182, 137.03302416240],
[165.515, 5.99775895715, 536.80451209540],
[154.809, 1.19720845085, 265.98929347750],
[169.743, 4.63464467495, 284.14854074220],
[151.526, 0.52928231044, 330.61896365820],
[152.461, 5.43886711695, 422.66603761290],
[157.687, 2.99559914619, 340.77089204480],
[140.630, 2.02069760726, 1045.15483618760],
[139.834, 1.35282959390, 1685.05212250160],
[140.977, 1.27099900689, 203.00415469950],
[136.013, 5.01678984678, 351.81659230870],
[153.391, 0.26968607873, 1272.68102562720],
[129.476, 1.14344730612, 21.34064100240],
[127.831, 2.53876158952, 1471.75302706360],
[126.538, 3.00310970076, 277.03499374140],
[100.277, 3.61360169153, 1066.49547719000],
[103.169, 0.38175114761, 203.73786788240],
[107.527, 4.31870663477, 210.85141488320],
[95.934, 0.79463744168, 1258.45393162560],
[82.663, 0.28181414606, 234.63973644040],
[97.986, 2.56085956186, 191.20769491020],
[97.389, 3.26245865063, 831.85574074960],
[72.227, 4.37984630380, 860.30992875280],
[70.639, 0.73191513920, 437.64389113990],
[70.447, 0.87698401733, 423.41679713830],
[72.057, 5.58013290518, 429.77958461370],
[73.332, 0.62505906432, 1375.77379984580],
[66.433, 2.68414462465, 405.25754987360],
[63.812, 1.75051498180, 1361.54670584420],
[61.601, 1.09332288242, 2001.44399215820],
[67.006, 0.06872766216, 408.43894361130],
[68.945, 2.47127505057, 949.17560896980],
[60.456, 2.25094790113, 1788.14489672020],
[67.074, 5.45365870159, 200.76892246580],
[65.579, 0.05539079332, 1589.07289528380],
[49.320, 4.17243429807, 138.51749687070],
[50.648, 6.26867505289, 223.59403617650],
[55.166, 4.59491533823, 628.85158605010],
[47.916, 0.83929741626, 10.29494073850],
[46.691, 2.17322569098, 312.19908396260],
[54.179, 0.28360076018, 124.43341522100],
[49.511, 3.79960349195, 215.74677599280],
[40.136, 5.18161452756, 1478.86657406440],
[39.302, 0.56257369109, 1574.84580128220],
[34.962, 4.68487505703, 38.13303563780],
[42.770, 2.98582069454, 1148.24761040620],
[36.521, 0.63453270366, 52.69019803950],
[39.752, 0.28412706854, 131.40394986990],
[31.777, 5.19036499973, 76.26607127560],
[33.041, 1.97964846430, 142.44965013380],
[42.053, 4.83017951800, 288.08069400530],
[30.757, 1.47903923433, 1677.93857550080],
[42.829, 3.38225543528, 208.63322899200],
[29.245, 5.09869866956, 654.12438031560],
[29.165, 4.95664881649, 1795.25844372100],
[29.136, 2.74747553685, 404.50679034820],
[32.689, 6.12099521344, 145.63104387150],
[28.008, 0.83185907283, 2317.83586181480],
[27.725, 2.24364073545, 430.53034413910],
[29.939, 1.96415498448, 2104.53676637680],
[32.982, 3.28236160491, 222.86032299360],
[31.772, 6.02453027348, 1905.46476494040],
[26.959, 5.24308283338, 388.46515523820],
[26.514, 0.99638302878, 107.02492748170],
[25.421, 2.87336642463, 703.63318461740],
[24.908, 1.07713811775, 99.91138048090],
[24.955, 6.23974037842, 106.27416795630],
[24.894, 0.81040976807, 312.45971639350],
[24.340, 0.54867402916, 214.26230328450],
[28.441, 0.82630052794, 1692.16566950240],
[23.219, 5.07995629354, 479.28838891550],
[24.362, 3.10643455533, 212.33588759150],
[21.951, 6.06688237952, 85.82729883120],
[22.046, 3.89863665506, 563.63121503840],
[22.596, 4.86725457223, 295.05122865420],
[21.256, 5.10797617452, 333.65734504400],
[25.985, 2.20813879137, 1265.56747862640],
[20.904, 3.28855303434, 70.84944530420],
[21.505, 3.79541155976, 347.88443904560],
[22.067, 4.22716352578, 217.96496188400],
[20.629, 1.68732248608, 231.45834270270],
[21.429, 3.08914428467, 554.06998748280],
[21.310, 0.38868340861, 319.57326339430],
[20.521, 2.45651851283, 18.15924726470],
[26.055, 4.27554951169, 483.22054217860],
[20.703, 5.12057936320, 362.86229257260],
[22.047, 5.51249354809, 343.21857259960],
[19.443, 2.02441679295, 313.21047591890],
[20.163, 5.08481373110, 750.10360753340],
[20.125, 3.42997916125, 213.34727954780],
[24.196, 0.64787472796, 207.88246946660],
[21.977, 0.72894956852, 99.16062095550],
[21.120, 2.69286728009, 1464.63948006280],
[17.192, 4.71525117969, 2111.65031337760],
[18.540, 0.04817255506, 245.54242435240],
[17.521, 3.83662880684, 497.44763618020],
[16.107, 4.22374822303, 565.11568774670],
[21.607, 4.16647257628, 2.44768055480],
[15.979, 0.27376396113, 225.82926841020],
[16.831, 1.41134653939, 114.13847448250],
[15.626, 2.82768623405, 81.75213321620],
[15.499, 1.20606390539, 1994.33044515740],
[15.168, 3.84591816174, 1162.47470440780],
[16.436, 3.04752365976, 134.58534360760],
[15.870, 0.33026420429, 1891.23767093880],
[20.370, 0.23170286692, 213.25091132820],
[16.291, 1.70643197929, 2420.92863603340],
[16.280, 4.94159427320, 357.44566660120],
[18.076, 5.69515344123, 56.62235130260],
[13.724, 0.57240190030, 2634.22773147140],
[17.355, 3.55311137444, 218.92816973050],
[13.740, 5.70545527289, 92.04707395470],
[15.328, 1.31338692850, 216.21985674480],
[12.538, 5.19222019427, 635.96513305090],
[12.815, 1.60151130870, 320.32402291970],
[13.043, 0.45068441373, 1169.58825140860],
[11.984, 5.94916123570, 543.91805909620],
[11.753, 2.80279347133, 217.49188113200],
[14.746, 5.56520105813, 344.70304530790],
[12.762, 1.63557330778, 273.10284047830],
[11.855, 2.46234840263, 721.64941953020],
[13.309, 5.75641013916, 2221.85663459700],
[14.471, 0.45316163629, 2008.55753915900],
[11.840, 1.75720772380, 160.60889739850],
[12.374, 1.01456317602, 329.72519178090],
[10.747, 1.58065203003, 212.77783057620],
[12.758, 1.91952373240, 1581.95934828300],
[11.944, 4.44720922423, 32.24332891440],
[11.865, 5.10696147162, 4.66586644600],
[11.861, 4.30847607078, 618.55664531160],
[10.036, 0.48709852137, 305.34616939270],
[12.777, 3.74412991331, 508.35032409220],
[10.677, 0.76645916273, 218.71572140940],
[11.351, 3.00009819697, 198.32124191100],
[10.249, 2.40923650192, 546.95644048200],
[9.984, 2.63882014753, 416.30325013750],
[9.345, 5.45917317860, 414.06801790380],
[9.317, 4.46380159546, 2428.04218303420],
[9.928, 4.04821559448, 62.25142559510],
[12.767, 3.43273835457, 258.87574647670],
[9.733, 1.61066324680, 327.43756992050],
[11.163, 2.40665325234, 1781.03134971940],
[10.608, 2.07480020830, 213.82036029980],
[9.125, 2.92369523159, 1279.79457262800],
[9.525, 1.10338403136, 113.38771495710],
[9.805, 3.28427768485, 275.55052103310],
[11.263, 1.89402915826, 561.18353448360],
[8.572, 2.17858055966, 425.11371816770],
[8.577, 1.95484887975, 35.42472265210],
[10.157, 0.09037368733, 182.27960680100],
[11.807, 3.71278037583, 350.33211960040],
[8.595, 1.83382454431, 629.60234557550],
[8.396, 3.76782674303, 251.43213107580],
[8.460, 0.35676476459, 617.80588578620],
[8.250, 5.31140994372, 65.22037101170],
[8.342, 1.38307663880, 1.48447270830],
[7.987, 5.13622898170, 22.09140052780],
[8.377, 0.91817077859, 1485.98012106520],
[7.980, 0.94199750915, 2310.72231481400],
[8.898, 0.54037636841, 168.05251279940],
[8.233, 3.45785310349, 424.15051032120],
[8.034, 3.38451795597, 144.14657116320],
[7.871, 5.14041888473, 358.93013930950],
[8.868, 6.13541788772, 621.73803904930],
[7.523, 5.75475671698, 447.93883187840],
[7.515, 2.18967849979, 264.50482076920],
[8.083, 1.42661116937, 2737.32050569000],
[8.199, 0.96419579079, 767.36908292080],
[8.232, 0.35471613534, 278.51946644970],
[8.226, 5.44467204721, 254.94359321360],
[6.779, 1.19567671732, 5.41662597140],
[8.928, 4.88240256153, 120.35824960600],
[7.845, 4.56376829397, 280.96714700450],
[6.566, 3.50152072308, 9.56122755560],
[6.398, 0.33471834269, 2950.61960112800],
[6.881, 3.39438820076, 98.89998852460],
[7.418, 4.52451404934, 5.62907429250],
[8.021, 0.94470052446, 636.71589257630],
[6.134, 0.18013315689, 2207.62954059540],
[7.153, 3.85218295688, 214.04985496340],
[6.046, 4.66733263196, 543.02428721890],
[6.365, 2.12000811873, 274.06604832480],
[6.481, 5.31032923608, 6076.89030155420],
[5.935, 6.16808119163, 650.94298657790],
[5.752, 3.55773840903, 1073.60902419080],
[6.438, 0.44934410249, 10007.09999777380],
[6.283, 3.20942251433, 219.44943459230],
[5.542, 3.61193204407, 125.98732389850],
[5.522, 3.84217355164, 181.05576652360],
[5.777, 3.00590926498, 121.25202148330],
[6.670, 1.65236689367, 1898.35121793960],
[7.591, 0.10483002359, 2324.94940881560],
[5.881, 1.04006410206, 9992.87290377220],
[5.609, 4.83142709229, 643.07868005170],
[5.569, 2.23863483508, 1038.04128918680],
[5.755, 5.91598458372, 6062.66320755260],
[5.845, 6.10234689502, 209.10630974400],
[5.577, 0.81426649853, 472.17484191470],
[5.247, 0.56496127013, 192.69216761850],
[5.493, 5.81071309534, 237.67811782620],
[5.148, 4.85160826999, 267.47376618580],
[6.122, 2.11480301005, 2097.42321937600],
[6.188, 4.59441762166, 207.67002114550],
[6.303, 0.75806431119, 210.37833413120],
[5.102, 4.01017179605, 205.22234059070],
[6.583, 1.79054357427, 12.53017297220],
[4.902, 0.85099521860, 247.23934538180],
[4.918, 4.03512681632, 487.36514376280],
[5.818, 5.48495503489, 2538.24850425360],
[4.855, 4.18197778083, 2744.43405269080],
[4.885, 0.25103933716, 129.91947716160],
[5.748, 0.55968589618, 116.42609634290],
[4.901, 4.48628916012, 291.26208774300],
[4.720, 5.57686152365, 342.25536475310],
[5.962, 5.12885837444, 692.58748435350],
[5.629, 4.39847572369, 196.62432088160],
[5.596, 0.94874135403, 1802.37199072180],
[6.197, 3.80364010966, 339.28641933650],
[4.668, 3.16816375033, 148.07872442630],
[4.891, 2.67234862638, 417.03696332040],
[4.959, 1.63453587065, 166.82867252200],
[4.408, 4.95179678525, 184.09414790940],
[4.449, 5.69134789394, 252.65597135320],
[4.943, 0.85358212806, 46.47042291600],
[5.153, 3.82176885491, 842.15068148810],
[5.930, 5.95484153666, 486.40193591630],
[4.206, 2.97664198894, 380.12776796000],
[4.467, 0.24914978400, 128.95626931510],
[5.419, 6.19106890918, 337.73251065900],
[4.499, 4.71434958315, 151.04766984290],
[4.233, 4.18702525973, 685.47393735270],
[4.695, 1.54881559549, 214.78356814630],
[4.084, 4.87173226400, 14.97785352700],
[4.321, 5.42615168860, 436.89313161450],
[5.145, 0.49931857511, 248.72381809010],
[3.897, 0.74661138504, 2627.11418447060],
[3.995, 3.07750371135, 710.74673161820],
[4.089, 5.81996977038, 491.81856188770],
[4.532, 3.67494714028, 189.72322220190],
[3.690, 1.26565281569, 211.81462272970],
[4.036, 1.15473702593, 3053.71237534660],
[3.672, 4.52661018437, 488.84961647110],
[3.662, 2.87243745783, 411.62033734900],
[3.653, 3.06205147988, 409.92341631960],
[3.908, 3.45947158106, 220.46082654860],
[4.989, 3.36376245705, 824.74219374880],
[3.677, 3.55713278092, 244.31858407500],
[3.580, 1.57825591891, 643.82943957710],
[3.546, 2.19846245030, 135.33610313300],
[3.560, 4.51362022045, 601.76425067620],
[3.843, 0.98567531677, 271.40591944890],
[3.559, 1.11005765159, 6283.07584999140],
[4.266, 6.19696005871, 268.43697403230],
[3.442, 4.27628882392, 867.42347575360],
[4.844, 3.73706907228, 235.39049596580],
[3.659, 2.21859531609, 2.92076130680],
[3.958, 5.17084570945, 114.39910691340],
[3.609, 5.54387488088, 458.84151979040],
[4.470, 3.74256930900, 699.70103135430],
[3.293, 4.48068043469, 289.56516671360],
[3.240, 5.94728881707, 131.54696222180],
[3.477, 3.54553285172, 963.40270297140],
[3.838, 4.77967877681, 175.16605980020],
[3.223, 1.95410765469, 212.02707105080],
[4.053, 4.19011281964, 501.37978944330],
[3.100, 2.11956558345, 916.93228005540],
[3.183, 1.93201605379, 1354.43315884340],
[3.301, 1.80825506815, 756.32338265690],
[4.187, 5.96622666047, 212.54833591260],
[3.716, 3.70660462807, 204.70107572890],
[3.000, 6.15443664698, 3267.01147078460],
[2.993, 4.20888489881, 533.62311835770],
[4.125, 6.09715151219, 2641.34127847220],
[3.145, 2.55483540896, 905.88657979150],
[2.982, 1.52760656472, 945.99421523210],
[3.015, 1.76012152992, 28.31117565130],
[3.453, 1.42473508236, 2214.74308759620],
[2.926, 5.50138147476, 24.37902238820],
[2.978, 4.27440059910, 195.89060769870],
[3.526, 3.63935401565, 229.97386999440],
[2.860, 4.52551886503, 241.61027108930],
[3.059, 5.68165832697, 282.66406803390],
[3.415, 5.26311934884, 67.66805156650],
[2.819, 5.42053027567, 305.08553696180],
[3.503, 1.31670335802, 69.15252427480],
[2.746, 0.82597971627, 444.75743814070],
[2.796, 0.07021047160, 681.54178408960],
[3.366, 4.03843228994, 6.15033915430],
[3.242, 2.63461047831, 739.80866679490],
[2.718, 3.40899287465, 188.92007304980],
[2.741, 3.22092213412, 776.93031047640],
[2.793, 3.39766347322, 431.26405732200],
[2.966, 3.91429372950, 526.50957135690],
[2.693, 3.38996413068, 778.41478318470],
[2.680, 3.82192393959, 3060.82592234740],
[2.954, 2.69669880207, 426.64637498580],
[2.681, 1.04615621583, 28.45418800320],
[3.182, 2.72333374876, 432.22726516850],
[2.633, 2.55029306465, 10213.28554621100],
[2.923, 0.85695094024, 2435.15573003500],
[2.596, 5.42890752137, 207.14875628370],
[3.225, 0.96538615730, 2118.76386037840],
[2.774, 0.33260844270, 326.68681039510],
[2.550, 5.88893697427, 439.12836384820],
[2.716, 3.15505406487, 170.76082578510],
[2.942, 4.88555233562, 397.39324334740],
[3.121, 1.87815629157, 2413.81508903260],
[3.263, 2.59868619716, 213.03846300710],
[2.518, 0.15471130491, 945.24345570670],
[3.169, 5.70993651497, 381.35160823740],
[2.515, 0.06248441393, 427.56139872250],
[3.279, 4.95751323467, 313.94418910180],
[2.595, 5.13169797457, 299.12639426920],
[2.572, 3.42558391509, 4.19278569400],
[2.580, 2.03280916494, 319.31263096340],
[3.294, 6.24566168486, 421.18156490460],
[2.580, 2.62721090534, 213.18722085340],
[2.879, 0.45679876898, 285.63301345050],
[2.406, 4.57473098758, 228.27694896500],
[2.518, 2.55500085830, 140.00196957900],
[2.422, 2.36310658303, 84.34282612290],
[2.374, 2.25544718932, 17.26547538740],
[2.627, 1.26370339212, 724.83081326790],
[2.346, 3.77641630157, 206.23373254700],
[2.463, 5.42094278240, 395.57870223900],
[2.352, 0.63041319237, 210.59078245230],
[3.166, 0.26273580642, 201.51968199120],
[2.405, 0.78919759458, 426.07692601420],
[2.390, 5.89523812458, 738.79727483860],
[2.515, 0.70044371265, 2943.50605412720],
[2.332, 4.06963624306, 519.39602435610],
[3.132, 2.79331632190, 732.69511979410],
[2.658, 3.34020209714, 1141.13406340540],
[2.258, 0.12403309730, 2524.02141025200],
[2.697, 2.58404587754, 425.63498302950],
[2.416, 3.85003724506, 696.51963761660],
[2.597, 2.54164936697, 436.15941843160],
[2.192, 3.07202313269, 203.26478713040],
[2.424, 2.60715310452, 511.53171782990],
[2.126, 0.14811901148, 405.99126305650],
[2.306, 1.25068142377, 427.11945573780],
[2.121, 0.43505808954, 184.98791978670],
[2.755, 3.02380019321, 468.24268865160],
[2.333, 3.02634928771, 216.00740842370],
[2.182, 4.27912012069, 7.16173111060],
[2.101, 4.31781498012, 572.22923474750],
[2.362, 4.82914341110, 556.51766803760],
[2.218, 0.82936075453, 3370.10424500320],
[2.103, 5.25950154713, 661.23792731640],
[2.580, 1.03705340380, 213.41097002260],
[2.366, 6.14368355608, 205.43478891180],
[2.042, 0.21462094901, 3259.89792378380],
[2.547, 4.69969204009, 221.37585028530],
[1.987, 3.22670561632, 1382.88734684660],
[2.213, 0.89932827487, 286.59622129700],
[2.191, 0.08759174058, 259.76951835400],
[1.968, 0.57824086026, 180.16199464630],
[2.037, 2.35713099759, 610.69233878540],
[1.959, 2.18553775379, 72.07328558160],
[2.061, 1.68041202479, 1670.82502850000],
[1.940, 0.62951066481, 406.95447090300],
[2.043, 4.39130144045, 576.16138801060],
[1.936, 1.05286934530, 1262.38608488870],
[1.975, 0.31945835160, 938.12990870590],
[2.015, 1.66410213484, 193.65537546500],
[1.971, 0.72639439054, 200.55647414470],
[1.952, 6.25320630177, 241.75328344120],
[1.976, 1.31263772699, 135.54855145410],
[2.448, 0.52850194172, 429.51895218280],
[1.977, 3.13944703383, 421.93232443000],
[1.853, 0.17184530353, 196.03362005060],
[2.552, 5.39764879348, 2854.64037391020],
[1.830, 1.47821899466, 638.41281360570],
[2.245, 6.00427164270, 230.70758317730],
[1.822, 6.08626100417, 1261.63532536330],
[2.168, 0.41741136149, 213.51154375910],
[1.869, 3.67791368036, 403.02231763990],
[1.866, 1.59662677545, 391.17346822390],
[2.034, 1.21814866092, 3046.59882834580],
[1.929, 4.93193335031, 420.96911658350],
[1.746, 5.09757251683, 107.75864066460],
[2.168, 3.24685294764, 213.08664711690],
[2.178, 5.09777299346, 558.00214074590],
[1.992, 2.29524873043, 1773.91780271860],
[1.761, 2.88655624670, 141.69889060840],
[1.769, 5.47051542758, 206.13736432740],
[1.734, 2.11941015901, 430.79097657000],
[2.377, 1.07633521570, 59.80374504030],
[1.797, 2.90984583978, 92.79783348010],
[1.725, 5.22827286197, 757.21715453420],
[2.305, 5.88235807192, 426.55000676620],
[1.751, 5.28990803470, 87.31177153950],
[2.202, 1.28096946505, 624.91943278700],
[2.043, 0.46193065602, 831.10498122420],
[1.931, 1.26974971942, 219.89137757700],
[1.953, 2.96900002385, 398.14400287280],
[1.676, 4.81683149512, 181.80652604900],
[1.902, 2.74426125465, 4952.06359328620],
[2.133, 5.37177705284, 627.36711334180],
[1.962, 3.52111949662, 213.45915413240],
[1.709, 6.14073761844, 952.35700270750],
[1.784, 1.05243716682, 353.30106501700],
[1.700, 1.17418864170, 739.05790726950],
[1.609, 1.35009554392, 84.93352695390],
[2.038, 2.47570829812, 26.82670294300],
[1.870, 5.61729116529, 2957.73314812880],
[1.962, 0.13564680851, 213.13903674360],
[2.041, 3.31354526279, 1596.18644228460],
[1.612, 6.19495100885, 432.01481684740],
[1.742, 2.87947098602, 179.35884549420],
[1.964, 2.84253666387, 429.04587143080],
[1.805, 0.60932632638, 532.61172640140],
[1.647, 0.82347900016, 214.57111982520],
[1.893, 4.33962647901, 173.94221952280],
[1.689, 1.13037158144, 586.31331639720],
[1.523, 2.71561930244, 73.29712585900],
[1.524, 5.26558677448, 5429.87946823940],
[1.582, 2.79533721474, 842.90144101350],
[1.608, 2.33230359324, 418.52143602870],
[1.579, 1.15182102801, 731.94436026870],
[1.689, 1.91915438546, 630.33605875840],
[1.990, 5.23790221176, 550.13783421970],
[1.772, 2.95372411478, 172.24529849340],
[1.596, 0.99004701777, 953.10776223290],
[1.784, 3.91391032360, 159.12442469020],
[1.592, 2.99690086808, 45.57665103870],
[1.968, 0.23073879009, 220.36445832900],
[1.549, 5.88699595922, 60.55450456570],
[1.459, 5.51999778036, 273.85360000370],
[1.909, 2.78415262815, 418.00017116690],
[1.445, 3.25530914937, 453.42489381900],
[1.454, 0.16250693313, 115.62294719080],
[1.566, 2.24077018103, 1056.20053645150],
[1.412, 3.45442909885, 354.99798604640],
[1.564, 3.38591337689, 409.18970313670],
[1.631, 1.06286709889, 213.55972786890],
[1.415, 1.32091877590, 373.90799283650],
[1.389, 0.40584159469, 9360.08916445900],
[1.663, 2.33357114562, 188.02630117250],
[1.426, 5.44677783737, 864.24208201590],
[1.716, 3.96056093028, 1699.27921650320],
[1.682, 0.39747670320, 17.40848773930],
[1.368, 5.83289186692, 569.04784100980],
[1.416, 3.65464640816, 6.85291456990],
[1.469, 3.49069193830, 934.94851496820],
[1.330, 4.41794310534, 3914.02230409940],
[1.309, 1.29979865382, 428.08266358430],
[1.300, 1.57748627871, 238.57188970350],
[1.389, 1.31202796503, 6275.96230299060],
[1.384, 0.67585082323, 2751.54759969160],
[1.471, 1.21149871903, 2531.13495725280],
[1.334, 4.11154515525, 206.93630796260],
[1.601, 0.93356520728, 355.74874557180],
[1.259, 2.56678207309, 850.01498801430],
[1.277, 0.41764451386, 100.64509366380],
[1.436, 4.06045514506, 177.87437278590],
[1.308, 1.01324076289, 423.67742956920],
[1.541, 6.03020449918, 292.01284726840],
[1.307, 5.83815678434, 5863.59120611620],
[1.613, 2.45074803642, 1049.08698945070],
[1.249, 3.01518429832, 464.73122651380],
[1.250, 6.23516728885, 823.99143422340],
[1.275, 2.68217384213, 637.44960575920],
[1.249, 2.97028182853, 51749.20809227239],
[1.240, 2.66940683813, 2700.71514038580],
[1.456, 1.85558224828, 96.87299909510],
[1.491, 4.98649587341, 295.19424100610],
[1.230, 4.27283851216, 12139.55350910680],
[1.292, 2.73196017809, 10206.17199921020],
[1.247, 3.77399749791, 504.56118318100],
[1.408, 1.02955773079, 518.38463239980],
[1.223, 1.12202093840, 221.16340196420],
[1.420, 4.39795293289, 606.76018552230],
[1.190, 1.57292553631, 820.05928096030],
[1.247, 0.99102599652, 9793.80090233580],
[1.234, 1.10826361423, 2303.60876781320],
[1.186, 4.55984967028, 9808.53818466140],
[1.346, 4.94456950019, 384.05992122310],
[1.514, 3.60392291730, 2015.67108615980],
[1.432, 2.28704432909, 525.49817940060],
[1.129, 0.87100340620, 162.09337010680],
[1.196, 5.13485214850, 227.31374111850],
[1.339, 2.48923887712, 206.70681329900],
[1.421, 1.65379789078, 857.12853501510],
[1.162, 1.92099315083, 220.93390730060],
[1.277, 4.85435999187, 54.17467074780],
[1.153, 5.33028034679, 233.90602325750],
[1.214, 4.11324721963, 3377.21779200400],
[1.109, 5.68915582674, 162.89651925890],
[1.068, 4.85383480876, 611.44309831080],
[1.119, 1.40805686363, 1987.21689815660],
[1.085, 0.64208148190, 731.68372783780],
[1.435, 3.20880139888, 835.78789401270],
[1.184, 2.99776919968, 199.28444975750],
[1.281, 3.12245339510, 427.34895040140],
[1.058, 5.17851282929, 306.09692891810],
[1.152, 4.39244449554, 199.96577331370],
[1.036, 3.68027119804, 597.35901666110],
[1.055, 3.25561743426, 394.35486196160],
[1.127, 4.33255371960, 552.58551477450],
[1.213, 6.21447612110, 42.53826965290],
[1.117, 3.74367882111, 214.19286731530],
[1.023, 3.84199833949, 894.84087952760],
[1.042, 5.30120078590, 450.97721326420],
[1.290, 3.96221234564, 318.83955021140],
[1.073, 4.10012122884, 188.16931352440],
[1.204, 0.37702365750, 393.46109008430],
[1.214, 2.01826978554, 401.32539661050],
[1.018, 0.02946649279, 2840.41327990860],
[1.237, 5.41088851225, 425.84743135060],
[1.187, 5.16511890602, 838.21852822500],
[1.276, 2.93572146232, 1457.52593306200],
[0.994, 3.40079885702, 211.60217440860],
[1.042, 2.42209320898, 361.37781986430],
[1.093, 3.66289018246, 226.63241756230],
[0.978, 3.76334208607, 5856.47765911540],
[1.263, 2.09195268609, 78.71375183040],
[1.009, 5.85963705048, 1268.74887236410],
[1.148, 4.39543895068, 570.74476203920],
[1.051, 3.27272240682, 153.49535039770],
[0.975, 3.42924642244, 105.54045477340],
[0.997, 4.30943991893, 212.40532356070],
[0.954, 3.88548755058, 171.65459766240],
[0.960, 1.90180005280, 1159.29331067010],
[0.953, 3.40787141587, 244.79166482700],
[0.969, 1.93369993197, 525.75881183150],
[0.918, 1.73738789723, 223.33340374560],
[1.164, 5.05392864346, 263.70167161710],
[0.951, 4.23581224839, 92.94084583200],
[1.160, 5.80630916592, 460.53844081980],
[1.186, 4.46262000755, 465.95506679120],
[0.931, 2.09868057209, 205.66428357540],
[0.942, 3.86810837922, 238.42887735160],
[1.020, 5.53181822898, 0.04818410980],
[0.995, 2.03457885490, 6290.18939699220],
[0.888, 2.60957592990, 1912.57831194120],
[0.873, 5.78433393020, 480.77286162380],
[0.854, 1.63255087291, 328.24071907260],
[1.123, 4.07401922216, 3693.60966166060],
[0.934, 3.52355235083, 10220.39909321180],
[0.833, 3.03302227840, 532.87235883230],
[1.007, 2.73615455688, 4841.85727206680],
[0.870, 1.06968760644, 51.20572533120],
[0.891, 1.36817544763, 700.45179087970],
[0.833, 5.39754715806, 159.71512552120],
[0.854, 1.91765015557, 622.48879857470],
[0.976, 3.09106001923, 2332.06295581640],
[0.819, 5.55683690482, 462.02291352810],
[0.800, 1.47042677460, 969.62247809490],
[0.933, 1.40166917666, 287.93768165340],
[0.784, 1.69235162770, 477.80391620720],
[0.782, 3.98153416585, 702.14871190910],
[0.810, 5.87689161549, 561.93429400900],
[0.858, 4.02964773169, 41.64449777560],
[0.819, 0.98885784755, 960.22130923370],
[0.882, 1.49559638306, 760.25553592000],
[0.767, 2.46787654531, 402.21916848780],
[0.851, 3.64678001195, 348.63519857100],
[0.852, 1.03470840672, 2620.00063746980],
[0.770, 4.67090683753, 16.67477455640],
[0.849, 5.27994730935, 74.63858621540],
[0.854, 2.56811257488, 432.74853003030],
[0.767, 1.11806243753, 2847.52682690940],
[0.729, 0.44171990710, 898.77303279070],
[0.776, 5.54603607568, 3171.03224356680],
[0.721, 6.05392551158, 91.78644152380],
[0.739, 3.57172839746, 775.23338944700],
[0.730, 4.98865345688, 705.11765732570],
[0.705, 0.44942445750, 219.66188291340],
[0.708, 0.69014726046, 1048.33622992530],
[0.706, 2.22974712805, 29.20494752860],
[0.711, 0.00981284716, 2115.58246664070],
[0.722, 4.14075205197, 225.07850888480],
[0.735, 1.54083195463, 201.99276274320],
[0.746, 4.08997409526, 849.26422848890],
[0.729, 2.81779134868, 419.53282798500],
[0.837, 1.00844734156, 4127.32139953740],
[0.939, 0.46037763932, 5488.86810538160],
[0.939, 1.85473712038, 5062.26991450560],
[0.721, 1.62872794201, 2200.51599359460],
],
# R2
[
[436902.464, 4.78671673044, 213.29909543800],
[71922.760, 2.50069994874, 206.18554843720],
[49766.792, 4.97168150870, 220.41264243880],
[43220.894, 3.86940443794, 426.59819087600],
[29645.554, 5.96310264282, 7.11354700080],
[4141.650, 4.10670940823, 433.71173787680],
[4720.909, 2.47527992423, 199.07200143640],
[3789.370, 3.09771025067, 639.89728631400],
[2963.990, 1.37206248846, 103.09277421860],
[2556.363, 2.85065721526, 419.48464387520],
[2208.457, 6.27588858707, 110.20632121940],
[2187.621, 5.85545832218, 14.22709400160],
[1956.896, 4.92448618045, 227.52618943960],
[2326.801, 0.00000000000, 0.00000000000],
[923.840, 5.46392422737, 323.50541665740],
[705.936, 2.97081280098, 95.97922721780],
[546.115, 4.12854181522, 412.37109687440],
[373.838, 5.83435991809, 117.31986822020],
[360.882, 3.27703082368, 647.01083331480],
[356.350, 3.19152043942, 210.11770170030],
[390.627, 4.48106176893, 216.48048917570],
[431.485, 5.17825414612, 522.57741809380],
[325.598, 2.26867601656, 853.19638175200],
[405.018, 4.17294157872, 209.36694217490],
[204.494, 0.08774848590, 202.25339517410],
[206.854, 4.02188336738, 735.87651353180],
[178.474, 4.09716541453, 440.82528487760],
[180.143, 3.59704903955, 632.78373931320],
[153.656, 3.13470530382, 625.67019231240],
[147.779, 0.13614300541, 302.16477565500],
[123.189, 4.18895309647, 88.86568021700],
[133.076, 2.59350469420, 191.95845443560],
[100.367, 5.46056190585, 3.18139373770],
[131.975, 5.93293968941, 309.27832265580],
[97.235, 4.01832604356, 728.76296653100],
[110.709, 4.77853798276, 838.96928775040],
[119.053, 5.55385105975, 224.34479570190],
[93.852, 4.38395529912, 217.23124870110],
[108.701, 5.29310899841, 515.46387109300],
[78.609, 5.72525447528, 21.34064100240],
[81.468, 5.10897365253, 956.28915597060],
[96.412, 6.25859229567, 742.99006053260],
[69.228, 4.04901237761, 3.93215326310],
[65.168, 3.77713343518, 1052.26838318840],
[64.088, 5.81235002453, 529.69096509460],
[62.541, 2.18445116349, 195.13984817330],
[56.987, 3.14666549033, 203.00415469950],
[55.979, 4.84108422860, 234.63973644040],
[52.940, 5.07780548444, 330.61896365820],
[50.635, 2.77318570728, 942.06206196900],
[41.649, 4.79014211005, 63.73589830340],
[44.858, 0.56460613593, 269.92144674060],
[41.357, 3.73496404402, 316.39186965660],
[52.847, 3.92623831484, 949.17560896980],
[38.398, 3.73966157784, 1045.15483618760],
[37.583, 4.18924633757, 536.80451209540],
[35.285, 2.90795856092, 284.14854074220],
[33.576, 3.80465978802, 149.56319713460],
[41.073, 4.57870454147, 1155.36115740700],
[30.412, 2.48140171991, 860.30992875280],
[31.373, 4.84075951849, 1272.68102562720],
[30.218, 4.35186294470, 405.25754987360],
[39.430, 3.50858482049, 422.66603761290],
[29.658, 1.58886982096, 1066.49547719000],
[35.202, 5.94478241578, 1059.38193018920],
[25.829, 3.54946335477, 1368.66025284500],
[26.283, 4.81567477177, 124.43341522100],
[29.963, 3.66312205813, 429.77958461370],
[33.011, 4.96879544579, 831.85574074960],
[24.305, 5.31133255082, 10.29494073850],
[26.332, 4.45253273390, 223.59403617650],
[22.108, 2.76092021113, 415.55249061210],
[27.187, 1.66347897738, 277.03499374140],
[21.639, 1.03836302307, 11.04570026390],
[19.713, 2.52194629263, 1258.45393162560],
[17.062, 3.27669927228, 654.12438031560],
[17.261, 3.49414816663, 1361.54670584420],
[16.097, 1.73396878598, 490.33408917940],
[21.099, 3.62102032955, 1265.56747862640],
[17.692, 4.31141612385, 1471.75302706360],
[13.458, 0.32327889681, 295.05122865420],
[12.586, 3.13794576887, 74.78159856730],
[12.023, 2.32917797741, 210.85141488320],
[15.120, 3.59558424278, 265.98929347750],
[12.959, 4.62359706368, 1589.07289528380],
[15.424, 5.01335704925, 127.47179660680],
[11.193, 4.54981248285, 81.75213321620],
[13.449, 4.88710089777, 437.64389113990],
[10.673, 5.05234757424, 191.20769491020],
[13.963, 3.04990968366, 423.41679713830],
[10.614, 5.02845923229, 137.03302416240],
[14.382, 4.68720080027, 1148.24761040620],
[13.470, 1.90280407135, 408.43894361130],
[10.077, 5.20426583827, 340.77089204480],
[10.323, 3.34460279759, 1685.05212250160],
[9.563, 3.17317920222, 351.81659230870],
[11.295, 5.47808960704, 1375.77379984580],
[8.617, 2.81294528041, 99.91138048090],
[8.460, 3.22691940753, 1677.93857550080],
[7.914, 2.35624291874, 1574.84580128220],
[7.587, 6.08171425316, 231.45834270270],
[9.175, 3.40072244924, 1581.95934828300],
[7.337, 2.00393601815, 131.40394986990],
[8.240, 4.04095881407, 1788.14489672020],
[7.579, 3.68311134272, 846.08283475120],
[6.691, 4.37253800717, 145.63104387150],
[7.539, 3.29482043104, 750.10360753340],
[6.367, 4.00239137708, 447.93883187840],
[6.249, 4.55603671940, 106.27416795630],
[6.489, 1.33782087599, 215.74677599280],
[6.501, 3.78204726337, 313.21047591890],
[5.978, 0.55276980086, 18.15924726470],
[6.171, 2.84712795642, 138.51749687070],
[6.837, 4.83481646949, 319.57326339430],
[6.678, 5.43046031699, 508.35032409220],
[7.175, 4.37855723752, 1464.63948006280],
[5.753, 4.14268749228, 543.91805909620],
[5.727, 4.35383078313, 1905.46476494040],
[5.101, 2.63866058897, 288.08069400530],
[5.311, 3.62520849510, 6076.89030155420],
[5.498, 4.19972735173, 721.64941953020],
[5.089, 5.04845206653, 10007.09999777380],
[5.505, 1.13479635941, 56.62235130260],
[4.820, 3.30043078578, 76.26607127560],
[4.915, 6.17790518458, 483.22054217860],
[5.048, 2.44627820757, 628.85158605010],
[4.534, 1.19648682598, 200.76892246580],
[4.817, 3.11549733365, 2001.44399215820],
[4.712, 1.26507812515, 6062.66320755260],
[4.811, 5.78388270496, 184.84490743480],
[4.775, 0.76197795755, 333.65734504400],
[4.514, 0.95293919611, 343.21857259960],
[4.525, 2.68827745072, 9992.87290377220],
[4.378, 0.80241129896, 222.86032299360],
[4.873, 5.92092913946, 618.55664531160],
[4.142, 1.91878383159, 497.44763618020],
[5.112, 4.50449287745, 416.30325013750],
[4.125, 1.98204847532, 347.88443904560],
[4.045, 2.87666810085, 38.13303563780],
[4.133, 2.90478811425, 107.02492748170],
[4.035, 2.92972681787, 1994.33044515740],
[4.916, 3.12316267561, 1898.35121793960],
[3.657, 3.24680246734, 362.86229257260],
[3.753, 0.87719890943, 703.63318461740],
[3.576, 3.48080143501, 388.46515523820],
[3.555, 4.08436297683, 430.53034413910],
[3.598, 0.05255328597, 32.24332891440],
[3.561, 5.46414552453, 6283.07584999140],
[3.480, 1.81622589595, 70.84944530420],
[3.827, 3.12041228490, 635.96513305090],
[3.399, 0.54882815021, 10213.28554621100],
[3.399, 3.51833356080, 629.60234557550],
[3.364, 3.27821747958, 357.44566660120],
[3.260, 1.97623748027, 203.73786788240],
[3.118, 2.18465627368, 1891.23767093880],
[3.163, 1.26040995242, 134.58534360760],
[4.004, 5.45434102599, 1692.16566950240],
[3.180, 2.46319174788, 867.42347575360],
[3.389, 4.20503159673, 337.73251065900],
[3.026, 2.19331614526, 217.96496188400],
[3.573, 5.55097240810, 113.38771495710],
[3.682, 3.78966280284, 2104.53676637680],
[3.125, 4.09203641264, 1478.86657406440],
[2.881, 3.90810650240, 312.19908396260],
[3.199, 3.92123638342, 1038.04128918680],
[4.014, 5.17826893553, 404.50679034820],
[3.907, 4.11767191780, 1781.03134971940],
[3.144, 1.61185684069, 1073.60902419080],
[3.072, 5.00675625396, 312.45971639350],
[3.034, 5.46288652854, 258.87574647670],
[2.884, 2.38477237305, 181.05576652360],
[2.986, 0.88783591586, 1279.79457262800],
[2.683, 0.00956197492, 195.89060769870],
[3.081, 5.60034737330, 216.21985674480],
[2.626, 6.12701960244, 273.10284047830],
[2.665, 2.31576422128, 565.11568774670],
[3.245, 3.87540558646, 85.82729883120],
[2.740, 5.73784096806, 160.60889739850],
[2.876, 4.74720607366, 213.25091132820],
[2.523, 5.30458920892, 444.75743814070],
[2.752, 5.08984539930, 1169.58825140860],
[2.889, 1.66674437398, 213.34727954780],
[2.923, 4.21481009033, 650.94298657790],
[3.036, 2.55426675350, 6069.77675455340],
[3.116, 2.67220972004, 52.69019803950],
[2.371, 0.89591351822, 121.25202148330],
[2.993, 3.96957827454, 9999.98645077300],
[3.088, 0.40656113014, 561.18353448360],
[2.385, 4.74063881551, 218.71572140940],
[2.632, 1.12706218927, 344.70304530790],
[2.316, 4.08445262041, 131.54696222180],
[2.214, 3.37726228553, 22.09140052780],
[2.129, 3.32497715011, 358.93013930950],
[2.679, 1.68971401870, 208.63322899200],
[2.607, 5.10250482155, 824.74219374880],
[2.250, 2.60474848767, 305.34616939270],
[2.087, 3.37293958793, 320.32402291970],
[2.693, 3.62159456470, 436.89313161450],
[2.492, 2.96129217279, 2214.74308759620],
[2.704, 2.88483697319, 643.07868005170],
[2.124, 1.61210282593, 218.92816973050],
[2.037, 4.63481160778, 188.02630117250],
[2.394, 3.46386258552, 6275.96230299060],
[1.973, 2.28886138203, 2627.11418447060],
[1.937, 5.67082364247, 28.45418800320],
[1.920, 4.25647211328, 546.95644048200],
[2.498, 3.57572154405, 2420.92863603340],
[1.898, 1.30987536388, 212.33588759150],
[1.852, 1.58508015515, 424.15051032120],
[1.850, 3.57830449726, 329.72519178090],
[2.128, 3.95329215734, 1795.25844372100],
[2.236, 4.22073549375, 2221.85663459700],
[1.933, 1.68771499202, 350.33211960040],
[1.799, 2.06541260431, 144.14657116320],
[1.904, 4.60953896857, 182.27960680100],
[2.236, 5.17945392885, 99.16062095550],
[1.755, 2.73425330428, 291.26208774300],
[2.231, 5.42548168745, 207.88246946660],
[1.848, 2.24194286719, 168.05251279940],
[1.726, 1.31878655393, 219.44943459230],
[1.709, 5.55913931846, 92.79783348010],
[1.693, 1.95360003617, 129.91947716160],
[2.064, 4.84900344498, 1141.13406340540],
[1.758, 5.05088656436, 214.26230328450],
[1.781, 2.85880153340, 636.71589257630],
[1.900, 2.90295578617, 2310.72231481400],
[1.759, 5.34657858395, 45.57665103870],
[1.654, 6.14450664508, 554.06998748280],
[1.578, 4.50941374663, 210.37833413120],
[1.681, 3.55136706992, 1354.43315884340],
[1.862, 3.01276783582, 2317.83586181480],
[1.589, 1.15773448350, 235.39049596580],
[1.551, 2.15558953807, 207.67002114550],
[1.874, 4.12861627986, 225.82926841020],
[1.621, 3.29992957653, 1670.82502850000],
[1.911, 0.17724319140, 12.53017297220],
[1.477, 5.90270260570, 1.48447270830],
[1.618, 5.72513459206, 1485.98012106520],
[1.446, 1.78104589920, 1382.88734684660],
[1.683, 3.43534671475, 2428.04218303420],
[1.542, 5.51223038941, 204.70107572890],
[1.420, 2.07339356364, 198.32124191100],
[1.444, 5.56032454849, 128.36556848410],
[1.476, 6.12782257368, 212.77783057620],
[1.474, 0.33626790634, 213.82036029980],
[1.428, 3.25039966249, 945.99421523210],
[1.410, 0.68747644676, 429.04587143080],
[1.752, 2.70090942746, 12.74262129330],
[1.681, 4.97526853273, 2008.55753915900],
[1.408, 0.80461100746, 1585.14074202070],
[1.485, 0.49674043855, 120.35824960600],
[1.490, 2.68459799437, 207.14875628370],
[1.411, 4.36399216092, 5863.59120611620],
[1.315, 4.73430848989, 241.75328344120],
[1.516, 4.99488503706, 1162.47470440780],
[1.310, 1.98714265058, 563.63121503840],
[1.286, 2.12891372062, 251.43213107580],
[1.271, 5.70165238307, 2.92076130680],
[1.312, 1.68811514551, 2207.62954059540],
[1.259, 0.35924965717, 334.55111692130],
[1.252, 2.14513440216, 1055.44977692610],
[1.401, 6.13250261735, 1802.37199072180],
[1.343, 5.79995727295, 9793.80090233580],
[1.228, 3.29059284057, 661.23792731640],
[1.202, 2.88792018909, 2413.81508903260],
[1.286, 5.72360160371, 298.23262239190],
[1.357, 0.93175963411, 217.49188113200],
[1.356, 2.28121627817, 601.76425067620],
[1.190, 1.94993809928, 501.37978944330],
[1.304, 0.37337923280, 3473.19701922180],
[1.350, 2.87235622320, 142.44965013380],
[1.349, 3.21102203937, 175.16605980020],
[1.312, 3.70149813509, 2111.65031337760],
[1.129, 1.08860603834, 842.15068148810],
[1.237, 0.08698781252, 526.50957135690],
[1.217, 3.89835349840, 209.10630974400],
[1.467, 1.16228775027, 621.73803904930],
[1.044, 0.30512759901, 436.15941843160],
[1.140, 5.33720637097, 114.13847448250],
[1.295, 4.70261675421, 9786.68735533500],
[1.037, 4.07846687083, 156.67674413540],
[1.391, 4.73554028436, 398.14400287280],
[1.167, 5.68899703631, 479.28838891550],
[1.035, 5.34279429465, 327.43756992050],
[0.997, 1.19323192891, 710.74673161820],
[1.193, 5.17722376816, 98.89998852460],
[1.165, 4.58588490135, 732.69511979410],
[1.161, 4.90854984994, 10206.17199921020],
[1.144, 0.50394784140, 3906.90875709860],
[1.182, 3.69482624364, 2854.64037391020],
[0.970, 2.89031410383, 1987.21689815660],
[1.039, 0.48694895443, 525.49817940060],
[1.079, 3.61750956217, 2097.42321937600],
[1.148, 3.31015591733, 5856.47765911540],
[1.241, 4.31971543677, 230.70758317730],
[0.910, 4.59825926062, 380.12776796000],
[0.907, 1.34912454077, 685.47393735270],
[1.166, 1.61085609717, 5849.36411211460],
[0.882, 6.12045540405, 519.39602435610],
[0.963, 4.96065454054, 699.70103135430],
[1.062, 5.13323858077, 2751.54759969160],
[0.865, 6.12821112133, 245.54242435240],
[1.100, 2.18435744407, 1699.27921650320],
[0.822, 5.55083534581, 739.05790726950],
[0.926, 2.01158276144, 417.03696332040],
[0.813, 5.18401872205, 214.78356814630],
[1.033, 5.48677848094, 3995.77443731560],
[0.872, 3.02363724703, 306.09692891810],
[0.796, 0.44343664540, 486.40193591630],
[0.878, 1.82164034386, 135.33610313300],
[0.791, 2.14989417962, 2620.00063746980],
[0.881, 2.39697554334, 289.56516671360],
[0.782, 4.50471317138, 980.66817835880],
[0.783, 1.14229319753, 540.73666535850],
[0.831, 0.69937251013, 421.93232443000],
[0.770, 2.40292326155, 576.16138801060],
[0.950, 5.97621460162, 196.62432088160],
[0.814, 4.19303098086, 831.10498122420],
[0.969, 4.78071024754, 326.68681039510],
[0.760, 0.44860533530, 425.63498302950],
[0.907, 0.94781730418, 525.75881183150],
[0.788, 0.14287187051, 916.93228005540],
[0.801, 1.86383119100, 3039.48528134500],
[0.801, 0.46947170994, 3466.08347222100],
[0.747, 6.05374861925, 211.81462272970],
[0.968, 3.02618272726, 2634.22773147140],
[0.739, 2.27110740297, 2303.60876781320],
[0.750, 5.48554383902, 173.94221952280],
[1.024, 1.91564925560, 229.97386999440],
[0.816, 4.98990432666, 4209.07353275360],
[0.728, 1.30997967935, 511.53171782990],
[0.716, 3.74192651696, 3053.71237534660],
[0.727, 0.39191881243, 1493.09366806600],
[0.717, 2.68899513085, 228.27694896500],
[0.739, 2.12749199443, 1176.70179840940],
[0.805, 0.07187193910, 556.51766803760],
[0.835, 3.48287855700, 84.93352695390],
[0.790, 0.48073040004, 4017.11507831800],
[0.725, 1.96643065215, 220.46082654860],
[0.683, 2.68825142163, 151.04766984290],
[0.739, 3.33688408107, 953.10776223290],
[0.745, 6.22304530635, 1269.49963188950],
],
# R3
[
[20315.005, 3.02186626038, 213.29909543800],
[8923.581, 3.19144205755, 220.41264243880],
[6908.677, 4.35174889353, 206.18554843720],
[4087.129, 4.22406927376, 7.11354700080],
[3879.041, 2.01056445995, 426.59819087600],
[1070.788, 4.20360341236, 199.07200143640],
[907.332, 2.28344368029, 433.71173787680],
[606.121, 3.17458570534, 227.52618943960],
[596.639, 4.13455753351, 14.22709400160],
[483.181, 1.17345973258, 639.89728631400],
[393.174, 0.00000000000, 0.00000000000],
[229.472, 4.69838526383, 419.48464387520],
[188.250, 4.59003889007, 110.20632121940],
[149.508, 3.20199444400, 103.09277421860],
[121.442, 3.76831374104, 323.50541665740],
[101.215, 5.81884137755, 412.37109687440],
[102.146, 4.70974422803, 95.97922721780],
[93.078, 1.43531270909, 647.01083331480],
[72.601, 4.15395598507, 117.31986822020],
[84.347, 2.63462379693, 216.48048917570],
[62.198, 2.31239345505, 440.82528487760],
[45.145, 4.37317047297, 191.95845443560],
[49.536, 2.38854232908, 209.36694217490],
[54.829, 0.30526468471, 853.19638175200],
[40.498, 1.83836569765, 302.16477565500],
[38.089, 5.94455115525, 88.86568021700],
[32.243, 4.01146349387, 21.34064100240],
[40.671, 0.68845183210, 522.57741809380],
[28.209, 5.77193013961, 210.11770170030],
[24.976, 3.06249709014, 234.63973644040],
[20.824, 4.92570695678, 625.67019231240],
[25.070, 0.73137425284, 515.46387109300],
[17.485, 5.73135068691, 728.76296653100],
[18.009, 1.45593152612, 309.27832265580],
[16.927, 3.52771580455, 3.18139373770],
[13.437, 3.36479898106, 330.61896365820],
[11.090, 3.37212682914, 224.34479570190],
[11.082, 3.41719974793, 956.28915597060],
[9.978, 1.58791582772, 202.25339517410],
[11.551, 5.99093726182, 735.87651353180],
[10.500, 6.06911092266, 405.25754987360],
[9.144, 2.93557421591, 124.43341522100],
[8.737, 4.65432480769, 632.78373931320],
[10.023, 0.58247011625, 860.30992875280],
[7.482, 4.50669216436, 942.06206196900],
[10.091, 0.28268774007, 838.96928775040],
[9.243, 2.57034547708, 223.59403617650],
[8.652, 1.75808100881, 429.77958461370],
[7.564, 1.45635107202, 654.12438031560],
[7.058, 5.47394786065, 1045.15483618760],
[6.970, 1.51811695028, 422.66603761290],
[8.067, 4.48457709292, 742.99006053260],
[6.817, 4.83084424818, 316.39186965660],
[7.693, 0.43769724671, 831.85574074960],
[7.934, 4.20112367712, 195.13984817330],
[6.119, 2.33960392135, 269.92144674060],
[5.589, 1.14518720694, 284.14854074220],
[5.564, 4.18123189068, 529.69096509460],
[5.034, 2.12020038657, 295.05122865420],
[6.556, 3.42459866876, 10.29494073850],
[5.544, 2.46823271699, 536.80451209540],
[6.189, 6.01433827520, 1066.49547719000],
[5.649, 0.82784598388, 217.23124870110],
[4.264, 3.23245736673, 1272.68102562720],
[4.450, 0.92477808590, 203.00415469950],
[3.268, 4.32777516976, 1258.45393162560],
[3.655, 0.05832123987, 81.75213321620],
[3.951, 0.11124996745, 1155.36115740700],
[3.773, 6.01157059552, 1052.26838318840],
[2.915, 5.64342950039, 3.93215326310],
[3.019, 2.19411778004, 447.93883187840],
[2.977, 1.89387342550, 149.56319713460],
[3.146, 0.19215180096, 1148.24761040620],
[2.763, 0.92363342001, 508.35032409220],
[2.790, 4.97199778427, 1677.93857550080],
[2.608, 2.99591016813, 1589.07289528380],
[2.881, 5.40535671721, 1361.54670584420],
[2.337, 1.30362271569, 184.84490743480],
[2.536, 3.71412120849, 408.43894361130],
[2.450, 3.22118361135, 319.57326339430],
[2.585, 2.31346415454, 543.91805909620],
[2.324, 5.87500715503, 721.64941953020],
[1.990, 0.51565577383, 416.30325013750],
[2.490, 4.24017800021, 1059.38193018920],
[1.935, 2.41463084855, 337.73251065900],
[1.886, 0.53809070779, 635.96513305090],
[1.893, 5.62352727352, 11.04570026390],
[2.389, 5.73399981234, 313.21047591890],
[1.900, 2.41000566465, 131.54696222180],
[1.743, 4.57646237847, 1994.33044515740],
[1.913, 5.17436386408, 2854.64037391020],
[1.946, 6.23355845623, 1471.75302706360],
[1.963, 6.17814558628, 1464.63948006280],
[1.838, 5.59464577559, 1038.04128918680],
[1.541, 0.60765337379, 210.85141488320],
[1.617, 1.75479346067, 195.89060769870],
[1.577, 0.55789908488, 2324.94940881560],
[1.492, 0.26624235633, 497.44763618020],
[1.659, 2.57526072926, 2090.30967237520],
[1.809, 1.82317819973, 436.89313161450],
[1.566, 6.15328100324, 490.33408917940],
[1.771, 6.11741716855, 1073.60902419080],
[1.456, 0.85374460914, 415.55249061210],
[1.645, 2.95335775161, 437.64389113990],
[1.391, 4.12025028560, 1574.84580128220],
[1.585, 5.96841377266, 1781.03134971940],
[1.507, 3.84895122542, 1251.34038462480],
[1.442, 5.32547705924, 2538.24850425360],
[1.805, 1.50973093681, 750.10360753340],
[1.462, 3.28599831588, 1884.12412393800],
[1.482, 0.99340744053, 643.07868005170],
[1.312, 3.79347668996, 1567.73225428140],
[1.665, 0.02551523913, 423.41679713830],
[1.469, 5.35285153471, 1354.43315884340],
[1.352, 0.69945139243, 867.42347575360],
[1.124, 1.79624810407, 618.55664531160],
[1.126, 4.70052329245, 113.38771495710],
[1.122, 3.95537224270, 1891.23767093880],
[1.458, 1.50198846753, 430.53034413910],
[1.145, 5.13093399117, 25.27279426550],
[1.178, 2.97062300389, 241.75328344120],
[1.274, 2.29089799814, 2420.92863603340],
[1.071, 0.04888943982, 63.73589830340],
[1.377, 5.58271514873, 1382.88734684660],
[1.145, 3.10797488346, 2200.51599359460],
[1.076, 0.79465514815, 127.47179660680],
[1.046, 5.85060227045, 215.74677599280],
[1.082, 3.72589445510, 131.40394986990],
[1.218, 0.47504349592, 824.74219374880],
[1.116, 3.78039049056, 1375.77379984580],
[0.969, 5.90752273481, 265.98929347750],
[1.230, 1.41325962069, 2634.22773147140],
[1.070, 4.80334493874, 1987.21689815660],
[0.946, 6.25968535931, 2015.67108615980],
[1.030, 1.08973644893, 362.86229257260],
[1.072, 5.41838042079, 1279.79457262800],
[0.880, 1.92224908504, 483.22054217860],
[0.878, 2.96591300878, 934.94851496820],
[0.879, 2.65659265685, 145.63104387150],
[0.872, 6.26261969664, 2.44768055480],
[1.082, 4.48298283322, 2214.74308759620],
[0.959, 0.74479087918, 16.67477455640],
[1.035, 4.05664979327, 231.45834270270],
[0.851, 0.09360495322, 628.85158605010],
[0.888, 5.98816755324, 2524.02141025200],
[0.866, 3.16259265630, 2207.62954059540],
[0.843, 1.23731248821, 74.78159856730],
[0.809, 2.89742868175, 2008.55753915900],
[0.779, 2.28434811609, 1478.86657406440],
[0.990, 5.32604038017, 2428.04218303420],
[0.795, 2.38178135810, 2228.97018159780],
[0.765, 4.70033674940, 1670.82502850000],
[1.024, 4.23352869513, 1802.37199072180],
[0.831, 5.87457134912, 1368.66025284500],
[0.717, 5.92144324994, 1685.05212250160],
[0.772, 1.15596098579, 3053.71237534660],
[0.691, 3.13193109668, 56.62235130260],
],
# R4
[
[1202.050, 1.41499446465, 220.41264243880],
[707.796, 1.16153570102, 213.29909543800],
[516.121, 6.23973568330, 206.18554843720],
[426.664, 2.46924890293, 7.11354700080],
[267.736, 0.18659206741, 426.59819087600],
[170.171, 5.95926972384, 199.07200143640],
[145.113, 1.44211060143, 227.52618943960],
[150.339, 0.47970167140, 433.71173787680],
[121.033, 2.40527320817, 14.22709400160],
[47.332, 5.56857488676, 639.89728631400],
[15.745, 2.90112466278, 110.20632121940],
[16.668, 0.52920774279, 440.82528487760],
[18.954, 5.85626429118, 647.01083331480],
[14.074, 1.30343550656, 412.37109687440],
[12.708, 2.09349305926, 323.50541665740],
[14.724, 0.29905316786, 419.48464387520],
[11.133, 2.46304825990, 117.31986822020],
[11.320, 0.21785507019, 95.97922721780],
[9.233, 2.28127318068, 21.34064100240],
[9.246, 1.56496312830, 88.86568021700],
[8.970, 0.68301278041, 216.48048917570],
[7.674, 3.59367715368, 302.16477565500],
[7.823, 4.48688804175, 853.19638175200],
[8.360, 1.27239488455, 234.63973644040],
[9.552, 3.14159265359, 0.00000000000],
[4.834, 2.58836294602, 515.46387109300],
[6.059, 5.16774448740, 103.09277421860],
[4.410, 0.02211643085, 191.95845443560],
[4.364, 1.59622746023, 330.61896365820],
[3.676, 3.29899839673, 210.11770170030],
[4.364, 5.97349927933, 654.12438031560],
[4.447, 4.97415112184, 860.30992875280],
[3.220, 2.72684237392, 522.57741809380],
[4.005, 1.59858435636, 405.25754987360],
[3.099, 0.75235436533, 209.36694217490],
[2.464, 1.19167306488, 124.43341522100],
[3.088, 1.32258934286, 728.76296653100],
[2.220, 3.28087994088, 203.00415469950],
[2.127, 6.14648095022, 429.77958461370],
[2.110, 0.75462855247, 295.05122865420],
[2.020, 3.89394929749, 1066.49547719000],
[2.248, 0.49319150178, 447.93883187840],
[2.180, 0.72761059998, 625.67019231240],
[1.809, 0.09057839517, 942.06206196900],
[1.672, 1.39635398184, 224.34479570190],
[1.641, 3.02468307550, 184.84490743480],
[1.772, 0.81879250825, 223.59403617650],
[1.902, 2.00472814984, 831.85574074960],
[1.600, 5.41185167676, 824.74219374880],
[1.505, 5.95520747253, 422.66603761290],
[1.133, 1.11512973946, 838.96928775040],
[1.190, 1.89600567803, 956.28915597060],
[1.487, 2.11906469507, 529.69096509460],
[1.409, 0.72254420236, 536.80451209540],
[1.125, 0.89062692183, 721.64941953020],
[1.301, 1.64867038984, 17.40848773930],
[1.164, 5.96957981840, 195.13984817330],
[0.950, 5.36080713290, 316.39186965660],
[0.985, 3.05768671768, 1574.84580128220],
[1.050, 1.59202481523, 735.87651353180],
[0.817, 4.92838813598, 56.62235130260],
[0.780, 2.72125404102, 508.35032409220],
[0.969, 1.00708261792, 1045.15483618760],
[0.716, 1.11042181341, 1169.58825140860],
],
# R5
[
[128.612, 5.91282565136, 220.41264243880],
[32.273, 0.69256228602, 7.11354700080],
[26.698, 5.91428528629, 227.52618943960],
[19.923, 0.67370653385, 14.22709400160],
[20.223, 4.95136801768, 433.71173787680],
[13.537, 1.45669521408, 199.07200143640],
[14.097, 2.67074280191, 206.18554843720],
[13.364, 4.58826996370, 426.59819087600],
[7.257, 4.62966127155, 213.29909543800],
[4.876, 3.61448275002, 639.89728631400],
[3.136, 4.65661021909, 191.95845443560],
[2.917, 0.48665273315, 323.50541665740],
[3.759, 4.89624165044, 440.82528487760],
[3.303, 4.07190859545, 647.01083331480],
[2.883, 3.18003019204, 419.48464387520],
[2.338, 3.69553554327, 88.86568021700],
[1.950, 5.32729247780, 302.16477565500],
[2.052, 3.31663577368, 95.97922721780],
[1.591, 2.67009215574, 853.19638175200],
[2.028, 0.56025552769, 117.31986822020],
[1.560, 0.85608042681, 515.46387109300],
[1.678, 0.00000000000, 0.00000000000],
[1.102, 5.98011943842, 3.18139373770],
[1.285, 5.82563377753, 234.63973644040],
[0.896, 5.22791858719, 216.48048917570],
[1.141, 0.15741228205, 412.37109687440],
[0.798, 0.37452846153, 28.45418800320],
[0.837, 5.04769794123, 124.43341522100],
],
]
"""This table contains Saturn's periodic terms (all of them) from the planetary
theory VSOP87 for the radius vector at the equinox of date (taken from the 'D'
solution). In Meeus' book a shortened version can be found in pages 442-445."""
ORBITAL_ELEM = [
[50.077444, 1223.5110686, 0.00051908, -0.00000003], # L
[9.554909192, -0.000002139, 0.000000004, 0.0], # a
[0.05554814, -0.000346641, -0.0000006436, 0.0000000034], # e
[2.488879, -0.0037362, -0.00001519, 0.000000087], # i
[113.665503, 0.877088, -0.00012176, -0.000002249], # Omega
[93.057237, 1.9637613, 0.00083753, 0.000004928] # pie
]
"""This table contains the parameters to compute Saturn's orbital elements for
the mean equinox of date. Based in Table 31.A, page 213"""
ORBITAL_ELEM_J2000 = [
[50.077444, 1222.1138488, 0.00021004, -0.000000046], # L
[2.488879, 0.0025514, -0.00004906, 0.000000017], # i
[113.665503, -0.2566722, -0.00018399, 0.00000048], # Omega
[93.057237, 0.5665415, 0.0005285, 0.000004912] # pie
]
"""This table contains the parameters to compute Saturn's orbital elements for
the standard equinox J2000.0. Based on Table 31.B, page 215"""
class Saturn(object):
"""
Class Saturn models that planet.
"""
@staticmethod
def geometric_heliocentric_position(epoch, tofk5=True):
"""This method computes the geometric heliocentric position of planet
Saturn for a given epoch, using the VSOP87 theory.
:param epoch: Epoch to compute Saturn position, as an Epoch object
:type epoch: :py:class:`Epoch`
:param tofk5: Whether or not the small correction to convert to the FK5
system will be applied or not
:type tofk5: bool
:returns: A tuple with the heliocentric longitude and latitude (as
:py:class:`Angle` objects), and the radius vector (as a float,
in astronomical units), in that order
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(2018, 10, 27.0)
>>> l, b, r = Saturn.geometric_heliocentric_position(epoch)
>>> print(round(l.to_positive(), 4))
279.5108
>>> print(round(b, 4))
0.6141
>>> print(round(r, 5))
10.06266
"""
return geometric_vsop_pos(epoch, VSOP87_L, VSOP87_B, VSOP87_R, tofk5)
@staticmethod
def apparent_heliocentric_position(epoch):
"""This method computes the apparent heliocentric position of planet
Saturn for a given epoch, using the VSOP87 theory.
:param epoch: Epoch to compute Saturn position, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple with the heliocentric longitude and latitude (as
:py:class:`Angle` objects), and the radius vector (as a float,
in astronomical units), in that order
:rtype: tuple
:raises: TypeError if input values are of wrong type.
"""
return apparent_vsop_pos(epoch, VSOP87_L, VSOP87_B, VSOP87_R)
@staticmethod
def orbital_elements_mean_equinox(epoch):
"""This method computes the orbital elements of Saturn for the mean
equinox of the date for a given epoch.
:param epoch: Epoch to compute orbital elements, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple containing the following six orbital elements:
- Mean longitude of the planet (Angle)
- Semimajor axis of the orbit (float, astronomical units)
- eccentricity of the orbit (float)
- inclination on the plane of the ecliptic (Angle)
- longitude of the ascending node (Angle)
- argument of the perihelion (Angle)
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(2065, 6, 24.0)
>>> l, a, e, i, ome, arg = Saturn.orbital_elements_mean_equinox(epoch)
>>> print(round(l, 6))
131.196871
>>> print(round(a, 8))
9.55490779
>>> print(round(e, 7))
0.0553209
>>> print(round(i, 6))
2.486426
>>> print(round(ome, 5))
114.23974
>>> print(round(arg, 6))
-19.896331
"""
return orbital_elements(epoch, ORBITAL_ELEM, ORBITAL_ELEM)
@staticmethod
def orbital_elements_j2000(epoch):
"""This method computes the orbital elements of Saturn for the
standard equinox J2000.0 for a given epoch.
:param epoch: Epoch to compute orbital elements, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple containing the following six orbital elements:
- Mean longitude of the planet (Angle)
- Semimajor axis of the orbit (float, astronomical units)
- eccentricity of the orbit (float)
- inclination on the plane of the ecliptic (Angle)
- longitude of the ascending node (Angle)
- argument of the perihelion (Angle)
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(2065, 6, 24.0)
>>> l, a, e, i, ome, arg = Saturn.orbital_elements_j2000(epoch)
>>> print(round(l, 6))
130.28188
>>> print(round(a, 8))
9.55490779
>>> print(round(e, 7))
0.0553209
>>> print(round(i, 6))
2.490529
>>> print(round(ome, 5))
113.49736
>>> print(round(arg, 6))
-20.068943
"""
return orbital_elements(epoch, ORBITAL_ELEM, ORBITAL_ELEM_J2000)
@staticmethod
def geocentric_position(epoch):
"""This method computes the geocentric position of Saturn (right
ascension and declination) for the given epoch, as well as the
elongation angle.
:param epoch: Epoch to compute geocentric position, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple containing the right ascension, the declination and
the elongation angle as Angle objects
:rtype: tuple
:raises: TypeError if input value is of wrong type.
>>> epoch = Epoch(1992, 12, 20.0)
>>> ra, dec, elon = Saturn.geocentric_position(epoch)
>>> print(ra.ra_str(n_dec=1))
21h 11' 41.8''
>>> print(dec.dms_str(n_dec=1))
-17d 15' 40.8''
>>> print(elon.dms_str(n_dec=1))
46d 51' 47.7''
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Compute the heliocentric position of Saturn
l, b, r = Saturn.geometric_heliocentric_position(epoch, tofk5=False)
# Compute the heliocentric position of the Earth
l0, b0, r0 = Earth.geometric_heliocentric_position(epoch, tofk5=False)
# Convert to radians
lr = l.rad()
br = b.rad()
l0r = l0.rad()
b0r = b0.rad()
# Compute first iteration
x = r * cos(br) * cos(lr) - r0 * cos(b0r) * cos(l0r)
y = r * cos(br) * sin(lr) - r0 * cos(b0r) * sin(l0r)
z = r * sin(br) - r0 * sin(b0r)
delta = sqrt(x * x + y * y + z * z)
tau = 0.0057755183 * delta
# Adjust the epoch for light-time
epoch -= tau
# Compute again Saturn coordinates with this correction
l, b, r = Saturn.geometric_heliocentric_position(epoch, tofk5=False)
# Compute second iteration
lr = l.rad()
br = b.rad()
x = r * cos(br) * cos(lr) - r0 * cos(b0r) * cos(l0r)
y = r * cos(br) * sin(lr) - r0 * cos(b0r) * sin(l0r)
z = r * sin(br) - r0 * sin(b0r)
# Compute longitude and latitude
lamb = atan2(y, x)
beta = atan2(z, sqrt(x * x + y * y))
# Now, let's compute the aberration effect
t = (epoch - JDE2000) / 36525
e = 0.016708634 + t * (-0.000042037 - t * 0.0000001267)
pie = 102.93735 + t * (1.71946 + t * 0.00046)
pie = radians(pie)
lon = l0 + 180.0
lon = lon.rad()
k = 20.49552 # The constant of aberration
deltal1 = k * (-cos(lon - lamb) + e * cos(pie - lamb)) / cos(beta)
deltab1 = -k * sin(beta) * (sin(lon - lamb) - e * sin(pie - lamb))
deltal1 = Angle(0, 0, deltal1)
deltab1 = Angle(0, 0, deltab1)
# Correction to FK5 system
lamb = Angle(lamb, radians=True)
lamb = lamb.to_positive()
beta = Angle(beta, radians=True)
l_prime = lamb - t * (1.397 + t * 0.00031)
deltal2 = Angle(0, 0, -0.09033)
a = 0.03916 * (cos(l_prime.rad()) + sin(l_prime.rad()))
a = a * tan(b.rad())
deltal2 += Angle(0, 0, a)
deltab2 = 0.03916 * (cos(l_prime.rad()) - sin(l_prime.rad()))
deltab2 = Angle(0, 0, deltab2)
# Apply the corrections
lamb = lamb + deltal1 + deltal2
beta = beta + deltab1 + deltab2
# Correction for nutation
dpsi = nutation_longitude(epoch)
lamb += dpsi
e = true_obliquity(epoch)
ra, dec = ecliptical2equatorial(lamb, beta, e)
# Let's compute the elongation angle
lons, lats, rs = Sun.apparent_geocentric_position(epoch)
lambr = lamb.rad()
lsr = lons.rad()
betar = beta.rad()
elon = acos(cos(betar) * cos(lambr - lsr))
elon = Angle(elon, radians=True)
return ra, dec, elon
@staticmethod
def conjunction(epoch):
"""This method computes the time of the conjunction closest to the
given epoch.
:param epoch: Epoch close to the desired conjunction
:type epoch: :py:class:`Epoch`
:returns: The time when the conjunction happens, as an Epoch
:rtype: :py:class:`Epoch`
:raises: TypeError if input value is of wrong type.
:raises: ValueError if input epoch outside the -2000/4000 range.
>>> epoch = Epoch(2125, 6, 1.0)
>>> conj = Saturn.conjunction(epoch)
>>> y, m, d = conj.get_date()
>>> print(y)
2125
>>> print(m)
8
>>> print(round(d, 4))
26.4035
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Check that the input epoch is within valid range
y = epoch.year()
if y < -2000.0 or y > 4000.0:
raise ValueError("Epoch outside the -2000/4000 range")
# Set some specific constants for Saturn's conjunction
a = 2451681.124
b = 378.091904
m0 = 131.6934
m1 = 12.647487
k = round((365.2425 * y + 1721060.0 - a) / b)
jde0 = a + k * b
m = m0 + k * m1
m = Angle(m).to_positive()
m = m.rad()
t = (jde0 - 2451545.0) / 36525.0
# Compute auxiliary angles
aa = 82.74 + 40.76 * t
bb = 29.86 + 1181.36 * t
cc = 14.13 + 590.68 * t
dd = 220.02 + 1262.87 * t
# Convert to radians
aa = Angle(aa).rad()
bb = Angle(bb).rad()
cc = Angle(cc).rad()
dd = Angle(dd).rad()
corr = (0.0172 + t * (-0.0006 + t * 0.00023) +
sin(m) * (-8.5885 + t * (0.0411 + t * 0.0002)) +
cos(m) * (-1.147 + t * (0.0352 - t * 0.00011)) +
sin(2.0 * m) * (0.3331 + t * (-0.0034 - t * 0.00001)) +
cos(2.0 * m) * (0.1145 + t * (-0.0045 + t * 0.00002)) +
sin(3.0 * m) * (-0.0169 + t * 0.0002) +
cos(3.0 * m) * (-0.0109 + t * 0.0004) +
sin(aa) * (0.0 + t * (-0.0337 + t * 0.00018)) +
cos(aa) * (-0.851 + t * (0.0044 + t * 0.00068)) +
sin(bb) * (0.0 + t * (-0.0064 + t * 0.00004)) +
cos(bb) * (0.2397 + t * (-0.0012 - t * 0.00008)) +
sin(cc) * (0.0 - t * 0.001) +
cos(cc) * (0.1245 + t * 0.0006) +
sin(dd) * (0.0 + t * (0.0024 - t * 0.00003)) +
cos(dd) * (0.0477 + t * (-0.0005 - t * 0.00006)))
to_return = jde0 + corr
return Epoch(to_return)
@staticmethod
def opposition(epoch):
"""This method computes the time of the opposition closest to the given
epoch.
:param epoch: Epoch close to the desired opposition
:type epoch: :py:class:`Epoch`
:returns: The time when the opposition happens, as an Epoch
:rtype: :py:class:`Epoch`
:raises: TypeError if input value is of wrong type.
:raises: ValueError if input epoch outside the -2000/4000 range.
>>> epoch = Epoch(-6, 9, 1.0)
>>> oppo = Saturn.opposition(epoch)
>>> y, m, d = oppo.get_date()
>>> print(y)
-6
>>> print(m)
9
>>> print(round(d, 4))
14.3709
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Check that the input epoch is within valid range
y = epoch.year()
if y < -2000.0 or y > 4000.0:
raise ValueError("Epoch outside the -2000/4000 range")
# Set some specific constants for Saturn's opposition
a = 2451870.17
b = 378.091904
m0 = 318.0172
m1 = 12.647487
k = round((365.2425 * y + 1721060.0 - a) / b)
jde0 = a + k * b
m = m0 + k * m1
m = Angle(m).to_positive()
m = m.rad()
t = (jde0 - 2451545.0) / 36525.0
# Compute an auxiliary angle
aa = 82.74 + 40.76 * t
bb = 29.86 + 1181.36 * t
cc = 14.13 + 590.68 * t
dd = 220.02 + 1262.87 * t
# Convert to radians
aa = Angle(aa).rad()
bb = Angle(bb).rad()
cc = Angle(cc).rad()
dd = Angle(dd).rad()
corr = (-0.0209 + t * (0.0006 + t * 0.00023) +
sin(m) * (4.5795 + t * (-0.0312 - t * 0.00017)) +
cos(m) * (1.1462 + t * (-0.0351 + t * 0.00011)) +
sin(2.0 * m) * (0.0985 - t * 0.0015) +
cos(2.0 * m) * (0.0733 + t * (-0.0031 + t * 0.00001)) +
sin(3.0 * m) * (0.0025 - t * 0.0001) +
cos(3.0 * m) * (0.005 - t * 0.0002) +
sin(aa) * (0.0 + t * (-0.0337 + t * 0.00018)) +
cos(aa) * (-0.851 + t * (0.0044 + t * 0.00068)) +
sin(bb) * (0.0 + t * (-0.0064 + t * 0.00004)) +
cos(bb) * (0.2397 + t * (-0.0012 - t * 0.00008)) +
sin(cc) * (0.0 - t * 0.001) +
cos(cc) * (0.1245 + t * 0.0006) +
sin(dd) * (0.0 + t * (0.0024 - t * 0.00003)) +
cos(dd) * (0.0477 + t * (-0.0005 - t * 0.00006)))
to_return = jde0 + corr
return Epoch(to_return)
@staticmethod
def station_longitude_1(epoch):
"""This method computes the time of the 1st station in longitude
(i.e. when the planet is stationary and begins to move westward -
retrograde - among the starts) closest to the given epoch.
:param epoch: Epoch close to the desired opposition
:type epoch: :py:class:`Epoch`
:returns: Time when the 1st station in longitude happens, as an Epoch
:rtype: :py:class:`Epoch`
:raises: TypeError if input value is of wrong type.
:raises: ValueError if input epoch outside the -2000/4000 range.
>>> epoch = Epoch(2018, 11, 1.0)
>>> sta1 = Saturn.station_longitude_1(epoch)
>>> y, m, d = sta1.get_date()
>>> print(y)
2018
>>> print(m)
4
>>> print(round(d, 4))
17.9433
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Check that the input epoch is within valid range
y = epoch.year()
if y < -2000.0 or y > 4000.0:
raise ValueError("Epoch outside the -2000/4000 range")
# Set some specific constants for Saturn's opposition
a = 2451870.17
b = 378.091904
m0 = 318.0172
m1 = 12.647487
k = round((365.2425 * y + 1721060.0 - a) / b)
jde0 = a + k * b
m = m0 + k * m1
m = Angle(m).to_positive()
m = m.rad()
t = (jde0 - 2451545.0) / 36525.0
# Compute an auxiliary angle
aa = 82.74 + 40.76 * t
bb = 29.86 + 1181.36 * t
cc = 14.13 + 590.68 * t
dd = 220.02 + 1262.87 * t
# Convert to radians
aa = Angle(aa).rad()
bb = Angle(bb).rad()
cc = Angle(cc).rad()
dd = Angle(dd).rad()
corr = (-68.884 + t * (0.0009 + t * 0.00023) +
sin(m) * (5.5452 + t * (-0.0279 - t * 0.0002)) +
cos(m) * (3.0727 + t * (-0.043 + t * 0.00007)) +
sin(2.0 * m) * (0.1101 + t * (-0.0006 - t * 0.00001)) +
cos(2.0 * m) * (0.1654 + t * (-0.0043 + t * 0.00001)) +
sin(3.0 * m) * (0.001 + t * 0.0001) +
cos(3.0 * m) * (0.0095 - t * 0.0003) +
sin(aa) * (0.0 + t * (-0.0337 + t * 0.00018)) +
cos(aa) * (-0.851 + t * (0.0044 + t * 0.00068)) +
sin(bb) * (0.0 + t * (-0.0064 + t * 0.00004)) +
cos(bb) * (0.2397 + t * (-0.0012 - t * 0.00008)) +
sin(cc) * (0.0 - t * 0.001) +
cos(cc) * (0.1245 + t * 0.0006) +
sin(dd) * (0.0 + t * (0.0024 - t * 0.00003)) +
cos(dd) * (0.0477 + t * (-0.0005 - t * 0.00006)))
to_return = jde0 + corr
return Epoch(to_return)
@staticmethod
def station_longitude_2(epoch):
"""This method computes the time of the 2nd station in longitude
(i.e. when the planet is stationary and begins to move eastward -
prograde - among the starts) closest to the given epoch.
:param epoch: Epoch close to the desired opposition
:type epoch: :py:class:`Epoch`
:returns: Time when the 2nd station in longitude happens, as an Epoch
:rtype: :py:class:`Epoch`
:raises: TypeError if input value is of wrong type.
:raises: ValueError if input epoch outside the -2000/4000 range.
>>> epoch = Epoch(2018, 11, 1.0)
>>> sta2 = Saturn.station_longitude_2(epoch)
>>> y, m, d = sta2.get_date()
>>> print(y)
2018
>>> print(m)
9
>>> print(round(d, 4))
6.4175
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Check that the input epoch is within valid range
y = epoch.year()
if y < -2000.0 or y > 4000.0:
raise ValueError("Epoch outside the -2000/4000 range")
# Set some specific constants for Saturn's opposition
a = 2451870.17
b = 378.091904
m0 = 318.0172
m1 = 12.647487
k = round((365.2425 * y + 1721060.0 - a) / b)
jde0 = a + k * b
m = m0 + k * m1
m = Angle(m).to_positive()
m = m.rad()
t = (jde0 - 2451545.0) / 36525.0
# Compute an auxiliary angle
aa = 82.74 + 40.76 * t
bb = 29.86 + 1181.36 * t
cc = 14.13 + 590.68 * t
dd = 220.02 + 1262.87 * t
# Convert to radians
aa = Angle(aa).rad()
bb = Angle(bb).rad()
cc = Angle(cc).rad()
dd = Angle(dd).rad()
corr = (68.872 + t * (-0.0007 + t * 0.00023) +
sin(m) * (5.9399 + t * (-0.04 - t * 0.00015)) +
cos(m) * (-0.7998 + t * (-0.0266 + t * 0.00014)) +
sin(2.0 * m) * (0.1738 - t * 0.0032) +
cos(2.0 * m) * (-0.0039 + t * (-0.0024 + t * 0.00001)) +
sin(3.0 * m) * (0.0073 - t * 0.0002) +
cos(3.0 * m) * (0.002 - t * 0.0002) +
sin(aa) * (0.0 + t * (-0.0337 + t * 0.00018)) +
cos(aa) * (-0.851 + t * (0.0044 + t * 0.00068)) +
sin(bb) * (0.0 + t * (-0.0064 + t * 0.00004)) +
cos(bb) * (0.2397 + t * (-0.0012 - t * 0.00008)) +
sin(cc) * (0.0 - t * 0.001) +
cos(cc) * (0.1245 + t * 0.0006) +
sin(dd) * (0.0 + t * (0.0024 - t * 0.00003)) +
cos(dd) * (0.0477 + t * (-0.0005 - t * 0.00006)))
to_return = jde0 + corr
return Epoch(to_return)
@staticmethod
def perihelion_aphelion(epoch, perihelion=True):
"""This method computes the time of Perihelion (or Aphelion) closer to
a given epoch.
:param epoch: Epoch close to the desired Perihelion (or Aphelion)
:type epoch: :py:class:`Epoch`
:param peihelion: If True, the epoch of the closest Perihelion is
computed, if False, the epoch of the closest Aphelion is found.
:type bool:
:returns: The epoch of the desired Perihelion (or Aphelion)
:rtype: :py:class:`Epoch`
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(1944, 1, 1.0)
>>> e = Saturn.perihelion_aphelion(epoch)
>>> y, m, d, h, mi, s = e.get_full_date()
>>> print(y)
1944
>>> print(m)
9
>>> print(d)
8
>>> print(h)
1
>>> epoch = Epoch(2047, 1, 1.0)
>>> e = Saturn.perihelion_aphelion(epoch, perihelion=False)
>>> y, m, d, h, mi, s = e.get_full_date()
>>> print(y)
2047
>>> print(m)
7
>>> print(d)
15
>>> print(h)
0
"""
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input value")
# First approximation
k = 0.03393 * (epoch.year() - 2003.52)
if perihelion:
k = round(k)
else:
k = round(k + 0.5) - 0.5
jde = 2452830.12 + k * (10764.21676 - k * 0.000827)
# Compute the epochs three months before and after
jde_before = jde - 90.0
jde_after = jde + 90.0
# Compute the Sun-Saturn distance for each epoch
l, b, r_b = Saturn.geometric_heliocentric_position(Epoch(jde_before))
l, b, r = Saturn.geometric_heliocentric_position(Epoch(jde))
l, b, r_a = Saturn.geometric_heliocentric_position(Epoch(jde_after))
# Call an interpolation object
m = Interpolation([jde_before, jde, jde_after], [r_b, r, r_a])
sol = m.minmax()
return Epoch(sol)
@staticmethod
def passage_nodes(epoch, ascending=True):
"""This function computes the time of passage by the nodes (ascending
or descending) of Saturn, nearest to the given epoch.
:param epoch: Epoch closest to the node passage
:type epoch: :py:class:`Epoch`
:param ascending: Whether the time of passage by the ascending (True)
or descending (False) node will be computed
:type ascending: bool
:returns: Tuple containing:
- Time of passage through the node (:py:class:`Epoch`)
- Radius vector when passing through the node (in AU, float)
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(2019, 1, 1)
>>> time, r = Saturn.passage_nodes(epoch)
>>> year, month, day = time.get_date()
>>> print(year)
2034
>>> print(month)
5
>>> print(round(day, 1))
30.2
>>> print(round(r, 4))
9.0546
"""
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input types")
# Get the orbital parameters
l, a, e, i, ome, arg = Saturn.orbital_elements_mean_equinox(epoch)
# Compute the time of passage through perihelion
t = Saturn.perihelion_aphelion(epoch)
# Get the time of passage through the node
time, r = passage_nodes_elliptic(arg, e, a, t, ascending)
return time, r
@staticmethod
def magnitude(sun_dist, earth_dist, delta_u, b):
"""This function computes the approximate magnitude of Saturn.
:param sun_dist: Distance from Saturn to the Sun, in Astronomical Units
:type sun_dist: float
:param earth_dist: Distance from Saturn to Earth, in Astronomical Units
:type earth_dist: float
:param delta_u: Difference between the Saturnicentric longitudes of the
Sun and the Earth, measured in the plane of the ring
:type delta_u: float, :py:class:`Angle`
:param b: Saturnicentric latitude of the Earth refered to the plane of
the ring, positive towards the north
:type b: float, :py:class:`Angle`
:returns: Saturn's magnitude
:rtype: float
:raises: TypeError if input values are of wrong type.
>>> sun_dist = 9.867882
>>> earth_dist = 10.464606
>>> delta_u = Angle(16.442)
>>> b = Angle(4.198)
>>> m = Saturn.magnitude(sun_dist, earth_dist, delta_u, b)
>>> print(m)
1.9
"""
# WARNING: According to Example 41.d in page 286 of Meeus book, the
# result for the example above is 0.9 (instead of 1.9). However, after
# carefully checking the formula implemented here, I'm sure that the
# book has an error
if not (isinstance(sun_dist, float) and isinstance(earth_dist, float)
and isinstance(delta_u, (float, Angle))
and isinstance(b, (float, Angle))):
raise TypeError("Invalid input types")
delta_u = float(delta_u)
b = Angle(b).rad()
m = (-8.68 + 5.0 * log10(sun_dist * earth_dist) + 0.044 * abs(delta_u)
- 2.6 * sin(abs(b)) + 1.25 * sin(b) * sin(b))
return round(m, 1)
def main():
# Let's define a small helper function
def print_me(msg, val):
print("{}: {}".format(msg, val))
# Let's show some uses of Saturn class
print("\n" + 35 * "*")
print("*** Use of Saturn class")
print(35 * "*" + "\n")
# Let's now compute the heliocentric position for a given epoch
epoch = Epoch(2018, 10, 27.0)
lon, lat, r = Saturn.geometric_heliocentric_position(epoch)
print_me("Geometric Heliocentric Longitude", lon.to_positive())
print_me("Geometric Heliocentric Latitude", lat)
print_me("Radius vector", r)
print("")
# Compute the geocentric position for 1992/12/20:
epoch = Epoch(1992, 12, 20.0)
ra, dec, elon = Saturn.geocentric_position(epoch)
print_me("Right ascension", ra.ra_str(n_dec=1))
print_me("Declination", dec.dms_str(n_dec=1))
print_me("Elongation", elon.dms_str(n_dec=1))
print("")
# Print mean orbital elements for Saturn at 2065.6.24
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Saturn.orbital_elements_mean_equinox(epoch)
print_me("Mean longitude of the planet", round(l, 6)) # 131.196871
print_me("Semimajor axis of the orbit (UA)", round(a, 8)) # 9.55490779
print_me("Eccentricity of the orbit", round(e, 7)) # 0.0553209
print_me("Inclination on plane of the ecliptic", round(i, 6)) # 2.486426
print_me("Longitude of the ascending node", round(ome, 5)) # 114.23974
print_me("Argument of the perihelion", round(arg, 6)) # -19.896331
print("")
# Compute the time of the conjunction close to 2125/6/1
epoch = Epoch(2125, 6, 1.0)
conj = Saturn.conjunction(epoch)
y, m, d = conj.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Conjunction date", date)
# Compute the time of the opposition close to -6/9/1
epoch = Epoch(-6, 9, 1.0)
oppo = Saturn.opposition(epoch)
y, m, d = oppo.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Opposition date", date)
print("")
# Compute the time of the station in longitude #1 close to 2018/11/1
epoch = Epoch(2018, 11, 1.0)
sta1 = Saturn.station_longitude_1(epoch)
y, m, d = sta1.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Date of station in longitude #1", date)
# Compute the time of the station in longitude #2 close to 2018/11/1
epoch = Epoch(2018, 11, 1.0)
sta2 = Saturn.station_longitude_2(epoch)
y, m, d = sta2.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Date of station in longitude #2", date)
print("")
# Find the epoch of the Perihelion closer to 2000/1/1
epoch = Epoch(2000, 1, 1.0)
e = Saturn.perihelion_aphelion(epoch)
y, m, d, h, mi, s = e.get_full_date()
peri = str(y) + '/' + str(m) + '/' + str(d) + ' at ' + str(h) + ' hours'
print_me("The Perihelion closest to 2000/1/1 happened on", peri)
print("")
# Compute the time of passage through an ascending node
epoch = Epoch(2019, 1, 1)
time, r = Saturn.passage_nodes(epoch)
y, m, d = time.get_date()
d = round(d, 1)
print("Time of passage through ascending node: {}/{}/{}".format(y, m, d))
# 2034/5/30.2
print("Radius vector at ascending node: {}".format(round(r, 4))) # 9.0546
if __name__ == "__main__":
main()
pymeeus-0.3.6/pymeeus/Sun.py 0000664 0000000 0000000 00000077316 13555455377 0016056 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from math import sin, cos, tan, atan, atan2, asin
from pymeeus.Angle import Angle
from pymeeus.Epoch import Epoch, JDE2000
from pymeeus.Coordinates import (
mean_obliquity,
true_obliquity,
nutation_longitude,
ecliptical2equatorial,
)
from pymeeus.Earth import Earth
"""
.. module:: Sun
:synopsis: Module including functions regarding Sun position
:license: GNU Lesser General Public License v3 (LGPLv3)
.. moduleauthor:: Dagoberto Salazar
"""
class Sun(object):
"""
Class Sun handles the parameters related to the Sun.
"""
def __init__(self):
"""Sun constructor.
:returns: Sun object.
:rtype: :py:class:`Sun`
"""
@staticmethod
def true_longitude_coarse(epoch):
"""This method provides the Sun's true longitude with a relatively low
accuracy of about 0.01 degree.
:param epoch: Epoch to compute the position of the Sun
:type epoch: :py:class:`Epoch`
:returns: A tuple containing the true (ecliptical) longitude (as an
Angle object) and the radius vector in astronomical units.
:rtype: tuple
:raises: TypeError if input value is of wrong type.
>>> epoch = Epoch(1992, 10, 13)
>>> true_lon, r = Sun.true_longitude_coarse(epoch)
>>> print(true_lon.dms_str(n_dec=0))
199d 54' 36.0''
>>> print(round(r, 5))
0.99766
"""
# First check that input values are of correct types
if not (isinstance(epoch, Epoch)):
raise TypeError("Invalid input type")
# Compute the time in Julian centuries
t = (epoch - JDE2000) / 36525.0
# Compute the geometric mean longitude of the Sun
l0 = 280.46646 + t * (36000.76983 + t * 0.0003032)
l0 = Angle(l0)
l0.to_positive()
# Now, compute the mean anomaly of the Sun
m = 357.52911 + t * (35999.05029 - t * 0.0001537)
m = Angle(m)
mrad = m.rad()
# The eccentricity of the Earth's orbit
e = 0.016708634 - t * (0.000042037 + t * 0.0000001267)
# Equation of the center
c = (
(1.914602 - t * (0.004817 + t * 0.000014)) * sin(mrad)
+ (0.019993 - t * 0.000101) * sin(2.0 * mrad)
+ 0.000289 * sin(3.0 * mrad)
)
c = Angle(c)
true_lon = l0 + c
true_anom = m + c
# Sun's radius vector
r = (1.000001018 * (1.0 - e * e)) / (1.0 + e * cos(true_anom.rad()))
return (true_lon, r)
@staticmethod
def apparent_longitude_coarse(epoch):
"""This method provides the Sun's apparent longitude with a relatively
low accuracy of about 0.01 degree.
:param epoch: Epoch to compute the position of the Sun
:type epoch: :py:class:`Epoch`
:returns: A tuple containing the sun_apparent (ecliptical) longitude
(as an Angle object) and the radius vector in astronomical units.
:rtype: tuple
:raises: TypeError if input value is of wrong type.
>>> epoch = Epoch(1992, 10, 13)
>>> app_lon, r = Sun.apparent_longitude_coarse(epoch)
>>> print(app_lon.dms_str(n_dec=0))
199d 54' 32.0''
>>> print(round(r, 5))
0.99766
"""
# First check that input values are of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# First find the true longitude
sun = Sun()
true_lon, r = sun.true_longitude_coarse(epoch)
# Compute the time in Julian centuries
t = (epoch - JDE2000) / 36525.0
# Then correct for nutation and aberration
omega = 125.04 - 1934.136 * t
omega = Angle(omega)
lambd = true_lon - 0.00569 - 0.00478 * sin(omega.rad())
return (lambd, r)
@staticmethod
def apparent_rightascension_declination_coarse(epoch):
"""This method provides the Sun's apparent right ascension and
declination with a relatively low accuracy of about 0.01 degree.
:param epoch: Epoch to compute the position of the Sun
:type epoch: :py:class:`Epoch`
:returns: A tuple containing the right ascension and the declination
(as Angle objects) and the radius vector in astronomical units.
:rtype: tuple
:raises: TypeError if input value is of wrong type.
>>> epo = Epoch(1992, 10, 13)
>>> ra, delta, r = Sun.apparent_rightascension_declination_coarse(epo)
>>> print(ra.ra_str(n_dec=1))
13h 13' 31.4''
>>> print(delta.dms_str(n_dec=0))
-7d 47' 6.0''
>>> print(round(r, 5))
0.99766
"""
# First check that input values are of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Second, find the apparent longitude
sun = Sun()
app_lon, r = sun.apparent_longitude_coarse(epoch)
# Compute the obliquity of the ecliptic
e0 = mean_obliquity(epoch)
# Compute the time in Julian centuries
t = (epoch - JDE2000) / 36525.0
# Then correct for nutation and aberration
omega = 125.04 - 1934.136 * t
omega = Angle(omega)
# Correct the obliquity
e = e0 + 0.00256 * cos(omega.rad())
alpha = atan2(cos(e.rad()) * sin(app_lon.rad()), cos(app_lon.rad()))
alpha = Angle(alpha, radians=True)
alpha.to_positive()
delta = asin(sin(e.rad()) * sin(app_lon.rad()))
delta = Angle(delta, radians=True)
return (alpha, delta, r)
@staticmethod
def geometric_geocentric_position(epoch, tofk5=True):
"""This method computes the geometric geocentric position of the Sun
for a given epoch, using the VSOP87 theory.
:param epoch: Epoch to compute Sun position, as an Epoch object
:type epoch: :py:class:`Epoch`
:param tofk5: Whether or not the small correction to convert to the FK5
system will be applied or not
:type tofk5: bool
:returns: A tuple with the geocentric longitude and latitude (as
:py:class:`Angle` objects), and the radius vector (as a float,
in astronomical units), in that order
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(1992, 10, 13.0)
>>> l, b, r = Sun.geometric_geocentric_position(epoch, tofk5=False)
>>> print(round(l.to_positive(), 6))
199.907297
>>> print(b.dms_str(n_dec=3))
0.744''
>>> print(round(r, 8))
0.99760852
"""
# NOTE: In page 169, Meeus gives a different value for the LONGITUDE
# (199.907372 degrees) as the one presented above (199.907297 degrees).
# After many checks and tests, I came to the conclusion that the result
# above is the right one, and Meeus' result is wrong.
# On the other hand, the difference in LATITUDE may be due to the fact
# that this software uses the complete set of VSOP87C terms, instead of
# the abridged version in Meeus' book.
# First check that input values are of correct types
if not isinstance(epoch, Epoch) and not isinstance(tofk5, bool):
raise TypeError("Invalid input types")
# Use Earth heliocentric position to compute Sun's geocentric position
lon, lat, r = Earth.geometric_heliocentric_position(epoch, tofk5)
lon = lon.to_positive() + 180.0
lat = -lat
return lon, lat, r
@staticmethod
def apparent_geocentric_position(epoch, nutation=True):
"""This method computes the apparent geocentric position of the Sun
for a given epoch, using the VSOP87 theory.
:param epoch: Epoch to compute Sun position, as an Epoch object
:type epoch: :py:class:`Epoch`
:param nutation: Whether the nutation correction will be applied
:type epoch: bool
:returns: A tuple with the heliocentric longitude and latitude (as
:py:class:`Angle` objects), and the radius vector (as a float,
in astronomical units), in that order
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(1992, 10, 13.0)
>>> lon, lat, r = Sun.apparent_geocentric_position(epoch)
>>> print(lon.to_positive().dms_str(n_dec=3))
199d 54' 21.548''
>>> print(lat.dms_str(n_dec=3))
0.721''
>>> print(round(r, 8))
0.99760852
"""
# NOTE: In page 169, Meeus gives a different value for the LONGITUDE
# (199d 54' 21.818'') as the one presented above (199d 54' 21.548'').
# After many checks and tests, I came to the conclusion that the result
# above is the right one, and Meeus' result is wrong.
# On the other hand, the difference in LATITUDE may be due to the fact
# that this software uses the complete set of VSOP87C terms, instead of
# the abridged version in Meeus' book.
# First check that input values are of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Use Earth heliocentric position to compute Sun's geocentric position
lon, lat, r = Earth.apparent_heliocentric_position(epoch, nutation)
lon = lon.to_positive() + 180.0
lat = -lat
return lon, lat, r
@staticmethod
def rectangular_coordinates_mean_equinox(epoch):
"""This method computes the rectangular geocentric equatorial
coordinates (X, Y, Z) of the Sun, referred to the mean equinox of the
date. The X axis is directed towards the vernal equinox (longitude 0),
the Y axis lies in the plane of the equator and is directed towards
longitude 90, and the Z axis is directed towards the north celestial
pole.
:param epoch: Epoch to compute Sun position, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple with the X, Y, Z values in astronomical units
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(1992, 10, 13.0)
>>> x, y, z = Sun.rectangular_coordinates_mean_equinox(epoch)
>>> print(round(x, 7))
-0.9379963
>>> print(round(y, 6))
-0.311654
>>> print(round(z, 7))
-0.1351207
"""
# NOTE: In page 172, Meeus gives slightly different values for x, y, z
# as the ones internally computed in the example above. After many
# checks and tests, I came to the conclusion that the results above are
# the right ones, and Meeus' results are wrong.
# First check that input values are of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Get Sun's geocentric position with reduction to FK5 system
lon, lat, r = Sun.geometric_geocentric_position(epoch)
# Get the mean obliquity
epsilon0 = mean_obliquity(epoch)
# Change to radians
ll = lon.rad()
b = lat.rad()
e = epsilon0.rad()
# Compute the results
x = r * cos(ll)
y = r * (sin(ll) * cos(e) - sin(b) * sin(e))
z = r * (sin(ll) * sin(e) + sin(b) * cos(e))
return x, y, z
@staticmethod
def rectangular_coordinates_j2000(epoch):
"""This method computes the rectangular geocentric equatorial
coordinates (X, Y, Z) of the Sun, referred to the standard equinox of
J2000.0. The X axis is directed towards the vernal equinox (longitude
0), the Y axis lies in the plane of the equator and is directed towards
longitude 90, and the Z axis is directed towards the north celestial
pole.
:param epoch: Epoch to compute Sun position, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple with the X, Y, Z values in astronomical units
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(1992, 10, 13.0)
>>> x, y, z = Sun.rectangular_coordinates_j2000(epoch)
>>> print(round(x, 8))
-0.93740485
>>> print(round(y, 8))
-0.3131474
>>> print(round(z, 8))
-0.13577045
"""
# First check that input values are of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Second, compute Earth heliocentric position referred to J2000.0
lon, lat, r = Earth.geometric_heliocentric_position_j2000(epoch)
# Third, convert from Earth's heliocentric to Sun's geocentric
lon = lon.to_positive() + 180.0
lat = -lat
x = r * cos(lat.rad()) * cos(lon.rad())
y = r * cos(lat.rad()) * sin(lon.rad())
z = r * sin(lat.rad())
x0 = x + 0.00000044036 * y - 0.000000190919 * z
y0 = -0.000000479966 * x + 0.917482137087 * y - 0.397776982902 * z
z0 = 0.397776982902 * y + 0.917482137087 * z
return x0, y0, z0
@staticmethod
def rectangular_coordinates_b1950(epoch):
"""This method computes the rectangular geocentric equatorial
coordinates (X, Y, Z) of the Sun, referred to the mean equinox of
B1950.0. The X axis is directed towards the vernal equinox (longitude
0), the Y axis lies in the plane of the equator and is directed towards
longitude 90, and the Z axis is directed towards the north celestial
pole.
:param epoch: Epoch to compute Sun position, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple with the X, Y, Z values in astronomical units
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(1992, 10, 13.0)
>>> x, y, z = Sun.rectangular_coordinates_b1950(epoch)
>>> print(round(x, 8))
-0.94149557
>>> print(round(y, 8))
-0.30259922
>>> print(round(z, 8))
-0.11578695
"""
# First check that input values are of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Second, compute Earth heliocentric position referred to J2000.0
lon, lat, r = Earth.geometric_heliocentric_position_j2000(epoch)
# Third, convert from Earth's heliocentric to Sun's geocentric
lon = lon.to_positive() + 180.0
lat = -lat
x = r * cos(lat.rad()) * cos(lon.rad())
y = r * cos(lat.rad()) * sin(lon.rad())
z = r * sin(lat.rad())
x = 0.999925702634 * x + 0.012189716217 * y + 0.000011134016 * z
y = -0.011179418036 * x + 0.917413998946 * y - 0.397777041885 * z
z = -0.004859003787 * x + 0.397747363646 * y + 0.917482111428 * z
return x, y, z
@staticmethod
def rectangular_coordinates_equinox(epoch, equinox_epoch):
"""This method computes the rectangular geocentric equatorial
coordinates (X, Y, Z) of the Sun, referred to an arbitrary mean
equinox. The X axis is directed towards the vernal equinox (longitude
0), the Y axis lies in the plane of the equator and is directed towards
longitude 90, and the Z axis is directed towards the north celestial
pole.
:param epoch: Epoch to compute Sun position, as an Epoch object
:type epoch: :py:class:`Epoch`
:param equinox_epoch: Epoch corresponding to the mean equinox
:type equinox_epoch: :py:class:`Epoch`
:returns: A tuple with the X, Y, Z values in astronomical units
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(1992, 10, 13.0)
>>> e_equinox = Epoch(2467616.0)
>>> x, y, z = Sun.rectangular_coordinates_equinox(epoch, e_equinox)
>>> print(round(x, 8))
-0.93368986
>>> print(round(y, 8))
-0.32235085
>>> print(round(z, 8))
-0.13977098
"""
# First check that input values are of correct types
if (not isinstance(epoch, Epoch) and
not isinstance(equinox_epoch, Epoch)):
raise TypeError("Invalid input types")
# Second, compute Sun's rectangular coordinates w.r.t. J2000.0
x0, y0, z0 = Sun.rectangular_coordinates_j2000(epoch)
# Third, computed auxiliary angles
t = (equinox_epoch - JDE2000) / 36525.0
tt = (epoch - equinox_epoch) / 36525.0
# Compute the conversion parameters
zeta = t * (
(2306.2181 + tt * (1.39656 - 0.000139 * tt))
+ t * ((0.30188 - 0.000344 * tt) + 0.017998 * t)
)
z = t * (
(2306.2181 + tt * (1.39656 - 0.000139 * tt))
+ t * ((1.09468 + 0.000066 * tt) + 0.018203 * t)
)
theta = t * (
2004.3109
+ tt * (-0.85330 - 0.000217 * tt)
+ t * (-(0.42665 + 0.000217 * tt) - 0.041833 * t)
)
# Redefine the former values as Angles, and compute them in radians
zeta = Angle(0, 0, zeta)
zetar = zeta.rad()
z = Angle(0, 0, z)
zr = z.rad()
theta = Angle(0, 0, theta)
thetar = theta.rad()
xx = cos(zetar) * cos(zr) * cos(thetar) - sin(zetar) * sin(zr)
xy = sin(zetar) * cos(zr) + cos(zetar) * sin(zr) * cos(thetar)
xz = cos(zetar) * sin(thetar)
yx = -cos(zetar) * sin(zr) - sin(zetar) * cos(zr) * cos(thetar)
yy = cos(zetar) * cos(zr) - sin(zetar) * sin(zr) * cos(thetar)
yz = -sin(zetar) * sin(thetar)
zx = -cos(zr) * sin(thetar)
zy = -sin(zr) * sin(thetar)
zz = cos(thetar)
xp = xx * x0 + yx * y0 + zx * z0
yp = xy * x0 + yy * y0 + zy * z0
zp = xz * x0 + yz * y0 + zz * z0
return xp, yp, zp
@staticmethod
def get_equinox_solstice(year, target="spring"):
"""This method computes the times of the equinoxes or the solstices.
:param year: Year we want to compute the equinox or solstice for
:type year: int
:param target: Corresponding equinox or solstice. It can be "spring",
"summer", "autumn", "winter"
:type target: str
:returns: The instant of time when the equinox or solstice happens
:rtype: :py:class:`Epoch`
:raises: TypeError if input values are of wrong type.
:raises: ValueError if 'target' value is invalid.
>>> epoch = Sun.get_equinox_solstice(1962, target="summer")
>>> y, m, d, h, mi, s = epoch.get_full_date()
>>> print("{}/{}/{} {}:{}:{}".format(y, m, d, h, mi, round(s, 0)))
1962/6/21 21:24:42.0
"""
# NOTE: The results from the previous example are computed using the
# complete VSOP87 theory. The results provided by Meeus in exercises
# 27.a and 27.b are computed with lower accuracy
# First check that input values are of correct types
if not (isinstance(year, int) and isinstance(target, str)):
raise TypeError("Invalid input types")
# Second, check that the target is correct
if (
(target != "spring")
and (target != "summer")
and (target != "autumn")
and (target != "winter")
):
raise ValueError("'target' value is invalid")
# Now we can start computing an approximate value (Tables 27.A, 27.B)
if (year >= -1000) and (year < 1000):
y = year / 1000.0
if target == "spring":
jde0 = 1721139.29189 + y * (
365242.1374 + y * (0.06134 + y * (0.00111 - y * 0.00071))
)
elif target == "summer":
jde0 = 1721233.25401 + y * (
365241.72562 + y * (-0.05323 + y * (0.00907 + y * 0.00025))
)
elif target == "autumn":
jde0 = (1721325.70455 +
y * (365242.49558 +
y * (-0.11677 + y * (-0.00297 + y * 0.00074))))
elif target == "winter":
jde0 = (1721414.39987 +
y * (363242.88257 + y * (-0.00769 +
y * (-0.00933 -
y * 0.00006))))
elif (year >= 1000) and (year <= 3000):
y = (year - 2000.0) / 1000.0
if target == "spring":
jde0 = 2451623.80984 + y * (
365242.37404 + y * (0.05169 + y * (-0.00411 - y * 0.00057))
)
elif target == "summer":
jde0 = 2451716.56767 + y * (
365241.62603 + y * (0.00325 + y * (0.00888 - y * 0.0003))
)
elif target == "autumn":
jde0 = 2451810.21715 + y * (
365242.01767 + y * (-0.11575 + y * (0.00337 + y * 0.00078))
)
elif target == "winter":
jde0 = (2451900.05952 +
y * (365242.74049 +
y * (-0.06223 + y * (-0.00823 + y * 0.00032))))
else:
raise ValueError("'year' value out of range")
k = ["spring", "summer", "autumn", "winter"].index(target)
epoch = Epoch(jde0)
corr = 1.0
while abs(corr) > 0.0000025:
lon, lat, r = Sun.apparent_geocentric_position(epoch)
arg = k * 90.0 - lon.to_positive()
arg = Angle(arg)
corr = 58.0 * sin(arg.rad())
epoch += corr
epoch -= corr
return epoch
@staticmethod
def equation_of_time(epoch):
"""This method computes the equation of time for a given epoch,
understood as the difference between apparent and mean time, or the
difference between the hour angle of the true Sun and the mean Sun.
:param epoch: Epoch to compute the equation of time, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: Difference between apparent and mean time, as a tuple, in
minutes and seconds of time
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(1992, 10, 13.0)
>>> m, s = Sun.equation_of_time(epoch)
>>> print(m)
13
>>> print(round(s, 1))
42.6
"""
# First check that input values are of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Compute time in Julian millenia from J2000.0
t = (epoch - JDE2000) / 365250
l0 = (280.4664567 +
t * (360007.6982779 +
t * (0.03032028 +
t * (1.0 / 49931.0 +
t * (-1.0 / 15300.0 - t * 1.0 / 2000000.0)))))
l0 = Angle(l0)
l0 = l0.to_positive()
# Compute the apparent position of the Sun
lon, lat, r = Sun.apparent_geocentric_position(epoch)
# Now, get the true obliquity
epsilon = true_obliquity(epoch)
# Transform from eclliptical to equatorial coordinates
alpha, dec = ecliptical2equatorial(lon, lat, epsilon)
alpha = alpha.to_positive()
# Now we need the nutation in longitude
deltapsi = nutation_longitude(epoch)
e = l0() - 0.0057183 - alpha + deltapsi * cos(epsilon.rad())
e *= 4.0
# Extract seconds
s = (abs(e) % 1) * 60.0
m = int(e)
return m, s
@staticmethod
def ephemeris_physical_observations(epoch):
"""This method uses Carrington's formulas to compute the following
quantities:
- P : position angle of the northern extremity of the axis of rotation
- B0 : heliographic latitude of the center of the solar disk
- L0 : heliographic longitude of the center of the solar disk
:param epoch: Epoch to compute the parameters
:type epoch: :py:class:`Epoch`
:returns: Parameters P, B0 and L0, in a tuple
:rtype: tuple
:raises: TypeError if input value is of wrong type.
>>> epoch = Epoch(1992, 10, 13)
>>> p, b0, l0 = Sun.ephemeris_physical_observations(epoch)
>>> print(round(p, 2))
26.27
>>> print(round(b0, 2))
5.99
>>> print(round(l0, 2))
238.63
"""
# First check that input values are of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Compute the auxiliary parameters
epoch += 0.00068
theta = (epoch() - 2398220.0) * 360.0 / 25.38
theta = Angle(theta)
i = Angle(7.25)
k = 73.6667 + 1.3958333 * (epoch() - 2396758.0) / 36525.0
k = Angle(k)
lon, lat, r = Sun.apparent_geocentric_position(epoch, nutation=False)
eps = true_obliquity(epoch)
dpsi = nutation_longitude(epoch)
lonp = lon + dpsi
x = atan(-cos(lonp.rad()) * tan(eps.rad()))
x = Angle(x, radians=True)
delta = lon - k
y = atan(-cos(delta.rad()) * tan(i.rad()))
y = Angle(y, radians=True)
p = x + y
b0 = asin(sin(delta.rad()) * sin(i.rad()))
b0 = Angle(b0, radians=True)
eta = atan(tan(delta.rad()) * cos(i.rad()))
eta = Angle(eta, radians=True)
l0 = eta - theta
return p, b0, l0.to_positive()
@staticmethod
def beginning_synodic_rotation(number):
"""This method calculates the epoch when the Carrington's synodic
rotation No. 'number' starts.
:param number: Number of Carrington's synodic rotation
:type number: int
:returns: Epoch when the provided rotation starts
:rtype: :py:class:`Epoch`
:raises: TypeError if input value is of wrong type.
>>> epoch = Sun.beginning_synodic_rotation(1699)
>>> print(round(epoch(), 3))
2444480.723
"""
# First check that input values are of correct types
if not isinstance(number, int):
raise TypeError("Invalid input type")
# Apply formula (29.1)
jde = 2398140.227 + 27.2752316*number
# Now, find the correction using formula (29.2)
m = 281.96 + 26.882476*number
m = Angle(m)
m = m.rad()
delta = 0.1454 * sin(m) - 0.0085 * sin(2.0 * m) - 0.0141 * cos(2.0 * m)
# Apply the correction
jde += delta
return Epoch(jde)
def main():
# Let's define a small helper function
def print_me(msg, val):
print("{}: {}".format(msg, val))
# Let's show some uses of Sun functions
print("\n" + 35 * "*")
print("*** Use of Sun class")
print(35 * "*" + "\n")
# Compute an approximation of the Sun's true longitude
epoch = Epoch(1992, 10, 13)
true_lon, r = Sun.true_longitude_coarse(epoch)
print_me("Sun's approximate true longitude", true_lon.dms_str(n_dec=0))
# 199d 54' 36.0''
print_me("Sun's radius vector", round(r, 5)) # 0.99766
print("")
# Now let's compute the Sun's approximate apparent longitude
app_lon, r = Sun.apparent_longitude_coarse(epoch)
print_me("Sun's approximate apparent longitude", app_lon.dms_str(n_dec=0))
# 199d 54' 32.0''
print("")
# And now is the turn for the apparent right ascension and declination
ra, delta, r = Sun.apparent_rightascension_declination_coarse(epoch)
print_me("Sun's apparent right ascension", ra.ra_str(n_dec=1))
# 13h 13' 31.4''
print_me("Sun's apparent declination", delta.dms_str(n_dec=0))
# -7d 47' 6.0''
print("")
# Let's compute Sun's postion, but more accurately
epoch = Epoch(1992, 10, 13.0)
l, b, r = Sun.geometric_geocentric_position(epoch, tofk5=False)
print_me("Geometric Geocentric Longitude", round(l.to_positive(), 6))
# 199.906016
print_me("Geometric Geocentric Latitude", b.dms_str(n_dec=3))
# 0.644''
print_me("Radius vector", round(r, 8))
# 0.99760775
print("")
# Compute Sun's apparent postion
l, b, r = Sun.apparent_geocentric_position(epoch)
print_me("Apparent Geocentric Longitude", l.to_positive().dms_str(n_dec=3))
# 199d 54' 16.937''
print_me("Apparent Geocentric Latitude", b.dms_str(n_dec=3))
# 0.621''
print_me("Radius vector", round(r, 8))
# 0.99760775
print("")
# We can compute rectangular coordinates referred to mean equinox of date
x, y, z = Sun.rectangular_coordinates_mean_equinox(epoch)
print("Rectangular coordinates referred to mean equinox of date:")
print_me("X", round(x, 7)) # -0.9379963
print_me("Y", round(y, 6)) # -0.311654
print_me("Z", round(z, 7)) # -0.1351207
print("")
# Now, compute rectangular coordinates w.r.t. standard equinox J2000.0
x, y, z = Sun.rectangular_coordinates_j2000(epoch)
print("Rectangular coordinates w.r.t. standard equinox J2000.0:")
print_me("X", round(x, 8)) # -0.93740485
print_me("Y", round(y, 8)) # -0.3131474
print_me("Z", round(z, 8)) # -0.12456646
print("")
# Compute rectangular coordinates w.r.t. mean equinox of B1950.0
x, y, z = Sun.rectangular_coordinates_b1950(epoch)
print("Rectangular coordinates w.r.t. mean equinox of B1950.0:")
print_me("X", round(x, 8)) # -0.94149557
print_me("Y", round(y, 8)) # -0.30259922
print_me("Z", round(z, 8)) # -0.11578695
print("")
# Compute rectangular coordinates w.r.t. an arbitrary mean equinox
e_equinox = Epoch(2467616.0)
x, y, z = Sun.rectangular_coordinates_equinox(epoch, e_equinox)
print("Rectangular coordinates w.r.t. an arbitrary mean equinox:")
print_me("X", round(x, 8)) # -0.93373777
print_me("Y", round(y, 8)) # -0.32235109
print_me("Z", round(z, 8)) # -0.12856709
print("")
# We can compute the date of equinoxes and solstices
epoch = Sun.get_equinox_solstice(1962, target="summer")
y, m, d, h, mi, s = epoch.get_full_date()
print("The summer solstice of 1962:")
print("{}/{}/{} {}:{}:{}".format(y, m, d, h, mi, round(s, 0)))
# 1962/6/21 21:24:42.0
epoch = Sun.get_equinox_solstice(2018, target="autumn")
y, m, d, h, mi, s = epoch.get_full_date()
print("The autumn equinox of 2018:")
print("{}/{}/{} {}:{}:{}".format(y, m, d, h, mi, round(s, 0)))
# 2018/9/23 1:55:14.0
print("")
# The equation of time, i.e., the difference between apparent and mean
# time, can be easily computed
epoch = Epoch(1992, 10, 13.0)
m, s = Sun.equation_of_time(epoch)
print("Equation of time difference: {} min {} secs".format(m, round(s, 1)))
# 13m 42.6s
print("")
# Compute the ephemeris of physical observations of the Sun using
# Carrington's formulas
epoch = Epoch(1992, 10, 13)
p, b0, l0 = Sun.ephemeris_physical_observations(epoch)
print("Ephemeris of physical observations of the Sun:")
print_me("P ", round(p, 2)) # 26.27
print_me("B0", round(b0, 2)) # 5.99
print_me("L0", round(l0, 2)) # 238.63
print("")
# Get the epoch when the Carrington's synodic rotation No. 'number' starts
epoch = Sun.beginning_synodic_rotation(1699)
print_me("Epoch for Carrington's synodic rotation No. 1699",
round(epoch(), 3)) # 2444480.723
if __name__ == "__main__":
main()
pymeeus-0.3.6/pymeeus/Uranus.py 0000664 0000000 0000000 00000654133 13555455377 0016564 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from math import sin, cos, tan, acos, atan2, sqrt, radians, log10
from pymeeus.Angle import Angle
from pymeeus.Epoch import Epoch, JDE2000
from pymeeus.Interpolation import Interpolation
from pymeeus.Coordinates import (
geometric_vsop_pos, apparent_vsop_pos, orbital_elements,
nutation_longitude, true_obliquity, ecliptical2equatorial,
passage_nodes_elliptic
)
from pymeeus.Earth import Earth
from pymeeus.Sun import Sun
"""
.. module:: Uranus
:synopsis: Class to model Uranus planet
:license: GNU Lesser General Public License v3 (LGPLv3)
.. moduleauthor:: Dagoberto Salazar
"""
VSOP87_L = [
# L0
[
[548129294.299, 0.00000000000, 0.00000000000],
[9260408.252, 0.89106421530, 74.78159856730],
[1504247.826, 3.62719262195, 1.48447270830],
[365981.718, 1.89962189068, 73.29712585900],
[272328.132, 3.35823710524, 149.56319713460],
[70328.499, 5.39254431993, 63.73589830340],
[68892.609, 6.09292489045, 76.26607127560],
[61998.592, 2.26952040469, 2.96894541660],
[61950.714, 2.85098907565, 11.04570026390],
[26468.869, 3.14152087888, 71.81265315070],
[25710.505, 6.11379842935, 454.90936652730],
[21078.897, 4.36059465144, 148.07872442630],
[17818.665, 1.74436982544, 36.64856292950],
[14613.471, 4.73732047977, 3.93215326310],
[11162.535, 5.82681993692, 224.34479570190],
[10997.934, 0.48865493179, 138.51749687070],
[9527.487, 2.95516893093, 35.16409022120],
[7545.543, 5.23626440666, 109.94568878850],
[4220.170, 3.23328535514, 70.84944530420],
[4051.850, 2.27754158724, 151.04766984290],
[3354.607, 1.06549008887, 4.45341812490],
[2926.671, 4.62903695486, 9.56122755560],
[3490.352, 5.48305567292, 146.59425171800],
[3144.093, 4.75199307603, 77.75054398390],
[2922.410, 5.35236743380, 85.82729883120],
[2272.790, 4.36600802756, 70.32818044240],
[2051.209, 1.51773563459, 0.11187458460],
[2148.599, 0.60745800902, 38.13303563780],
[1991.726, 4.92437290826, 277.03499374140],
[1376.208, 2.04281409054, 65.22037101170],
[1666.910, 3.62744580852, 380.12776796000],
[1284.183, 3.11346336879, 202.25339517410],
[1150.416, 0.93344454002, 3.18139373770],
[1533.223, 2.58593414266, 52.69019803950],
[1281.641, 0.54269869505, 222.86032299360],
[1372.100, 4.19641615561, 111.43016149680],
[1220.998, 0.19901396193, 108.46121608020],
[946.195, 1.19249463066, 127.47179660680],
[1150.993, 4.17898207045, 33.67961751290],
[1244.342, 0.91612680579, 2.44768055480],
[1072.008, 0.23564502877, 62.25142559510],
[1090.461, 1.77501638912, 12.53017297220],
[707.875, 5.18285226584, 213.29909543800],
[653.401, 0.96586909116, 78.71375183040],
[627.562, 0.18210181975, 984.60033162190],
[524.495, 2.01276706996, 299.12639426920],
[559.370, 3.35776737704, 0.52126486180],
[606.827, 5.43209728952, 529.69096509460],
[404.891, 5.98689011389, 8.07675484730],
[467.211, 0.41484068933, 145.10977900970],
[471.288, 1.40664336447, 184.72728735580],
[483.219, 2.10553990154, 0.96320784650],
[395.614, 5.87039580949, 351.81659230870],
[433.532, 5.52142978255, 183.24281464750],
[309.885, 5.83301304674, 145.63104387150],
[378.609, 2.34975805006, 56.62235130260],
[398.996, 0.33810765436, 415.55249061210],
[300.379, 5.64353974146, 22.09140052780],
[249.229, 4.74617120584, 225.82926841020],
[239.334, 2.35045874708, 137.03302416240],
[294.172, 5.83916826225, 39.61750834610],
[216.480, 4.77847481363, 340.77089204480],
[251.792, 1.63696775578, 221.37585028530],
[219.621, 1.92212987979, 67.66805156650],
[201.963, 1.29693040865, 0.04818410980],
[224.097, 0.51574863468, 84.34282612290],
[216.549, 6.14211862702, 5.93789083320],
[222.588, 2.84309380331, 0.26063243090],
[207.828, 5.58020570040, 68.84370773410],
[187.474, 1.31924326253, 0.16005869440],
[158.028, 0.73811997211, 54.17467074780],
[199.146, 0.95634155010, 152.53214255120],
[168.648, 5.87874000882, 18.15924726470],
[170.300, 3.67717520688, 5.41662597140],
[193.652, 1.88800122606, 456.39383923560],
[192.998, 0.91616058506, 453.42489381900],
[181.934, 3.53624029238, 79.23501669220],
[173.145, 1.53860728054, 160.60889739850],
[164.588, 1.42379714838, 106.97674337190],
[171.968, 5.67952685533, 219.89137757700],
[162.792, 3.05029377666, 112.91463420510],
[146.653, 1.26300172265, 59.80374504030],
[139.453, 5.38597723400, 32.19514480460],
[138.585, 4.25994786673, 909.81873305460],
[143.058, 1.29995487555, 35.42472265210],
[123.840, 1.37359990336, 7.11354700080],
[104.414, 5.02820888813, 0.75075952540],
[103.277, 0.68095301267, 14.97785352700],
[94.741, 0.90674090409, 74.66972398270],
[82.978, 2.92828718445, 265.98929347750],
[110.163, 2.02685778976, 554.06998748280],
[94.226, 3.94266328260, 74.89347315190],
[79.858, 1.01446829180, 6.59228213900],
[109.376, 5.70581833286, 77.96299230500],
[85.876, 1.70649435603, 82.85835341460],
[103.562, 1.45770270246, 24.37902238820],
[74.667, 4.63177552576, 69.36497259590],
[79.919, 3.00974084247, 297.64192156090],
[84.502, 0.36887189574, 186.21176006410],
[88.810, 0.52481330563, 181.75834193920],
[70.303, 1.18986880009, 66.70484372000],
[69.965, 0.87476081875, 305.34616939270],
[69.927, 3.76102749315, 131.40394986990],
[84.604, 5.88725183325, 256.53994050650],
[74.341, 6.24271323846, 447.79581952650],
[62.310, 0.16901376623, 479.28838891550],
[72.726, 2.84892775693, 462.02291352810],
[69.060, 4.43934854374, 39.35687591520],
[76.568, 4.58721110340, 6.21977512350],
[73.387, 4.27603448634, 87.31177153950],
[55.307, 1.49636544147, 71.60020482960],
[57.291, 1.63015165542, 143.62530630140],
[61.661, 3.18604743524, 77.22927912210],
[57.634, 3.67180685401, 51.20572533120],
[50.289, 1.12279384633, 20.60692781950],
[53.744, 5.51890986247, 128.95626931510],
[57.894, 2.66877593418, 381.61224066830],
[58.112, 1.58629352171, 60.76695288680],
[45.382, 0.48053933052, 14.01464568050],
[37.581, 6.06822931932, 211.81462272970],
[38.640, 3.43597050177, 153.49535039770],
[46.087, 4.36201639577, 75.74480641380],
[40.088, 4.57333927519, 46.20979048510],
[34.229, 2.93967782207, 140.00196957900],
[38.669, 5.58941074168, 99.16062095550],
[34.827, 1.02792863024, 203.73786788240],
[40.024, 0.69889667397, 218.40690486870],
[32.538, 4.21625657443, 200.76892246580],
[31.865, 5.50961503408, 72.33391801250],
[41.695, 3.82438031124, 81.00137369080],
[34.795, 0.39363490236, 1.37259812370],
[39.775, 6.05600836903, 293.18850343600],
[27.577, 2.18261286374, 125.98732389850],
[36.279, 1.66586085405, 258.02441321480],
[35.442, 1.96652806541, 835.03713448730],
[35.361, 3.72258690030, 692.58748435350],
[27.323, 2.10164372072, 209.36694217490],
[26.530, 4.48265986115, 373.90799283650],
[34.472, 1.07907945481, 191.20769491020],
[29.915, 3.87358632506, 259.50888592310],
[26.233, 3.63172504384, 490.33408917940],
[25.848, 0.54461409359, 41.64449777560],
[26.989, 6.27711247734, 28.57180808220],
[26.391, 5.81110061049, 75.30286342910],
[34.227, 6.05617272657, 275.55052103310],
[24.279, 3.18776564878, 81.37388070630],
[29.937, 1.88789751816, 269.92144674060],
[26.235, 6.20105251336, 134.58534360760],
[22.754, 0.92919725789, 288.08069400530],
[25.180, 5.42547381962, 116.42609634290],
[22.715, 0.53098783687, 1514.29129671650],
[26.485, 4.77176167929, 284.14854074220],
[27.008, 4.75281624832, 41.10198105440],
[21.972, 4.58613057386, 404.50679034820],
[22.012, 1.84389287183, 617.80588578620],
[24.694, 4.70875195490, 378.64329525170],
[28.949, 0.17127584792, 528.20649238630],
[20.492, 0.10285646641, 195.13984817330],
[20.696, 5.62143477633, 55.65914345610],
[25.843, 0.74627159338, 278.51946644970],
[22.990, 3.58378694661, 1.59634729290],
[21.843, 0.05733533568, 173.94221952280],
[19.050, 2.30351091243, 5.10780943070],
[20.675, 2.64113858585, 105.49227066360],
[21.856, 5.87352402691, 45.57665103870],
[21.120, 1.98081790016, 114.39910691340],
[19.279, 2.84304025179, 159.12442469020],
[19.061, 0.50598371738, 67.35923502580],
[20.434, 3.77601951414, 135.54855145410],
[17.326, 4.47793157645, 120.35824960600],
[20.547, 0.88695598555, 255.05546779820],
[19.320, 1.48569290504, 0.89377187730],
[21.331, 2.74470023060, 28.31117565130],
[17.582, 4.09139636700, 296.15744885260],
[15.918, 3.94525074972, 17.52610781830],
[15.562, 0.92748407689, 300.61086697750],
[16.439, 0.30868798605, 30.71067209630],
[15.237, 4.93048601827, 7.42236354150],
[19.284, 6.21950083268, 329.83706636550],
[13.860, 0.56255266406, 144.14657116320],
[16.206, 2.30292598693, 344.70304530790],
[16.041, 0.19723295436, 103.09277421860],
[14.414, 2.57606243208, 230.56457082540],
[16.789, 4.93540052916, 565.11568774670],
[17.052, 1.81844925116, 294.67297614430],
[16.766, 0.27542186330, 73.81839072080],
[15.428, 1.91577056305, 96.87299909510],
[15.718, 3.87095025861, 98.89998852460],
[11.923, 6.17545505441, 44.72531777680],
[12.407, 6.22419970167, 80.19822453870],
[13.040, 1.99652993223, 27.08733537390],
[13.229, 3.43782440072, 227.31374111850],
[11.669, 4.31526860843, 426.59819087600],
[14.378, 5.78353646474, 1059.38193018920],
[15.879, 0.98454960055, 6208.29425142410],
[11.158, 1.74417430690, 220.41264243880],
[11.989, 5.84388657950, 13.33332212430],
[11.386, 2.55925734515, 19.12245511120],
[13.281, 5.39472153462, 391.17346822390],
[12.295, 4.57340278496, 23.57587323610],
[12.827, 1.77410269070, 180.27386923090],
[11.651, 4.29138607818, 142.44965013380],
[12.248, 2.44241346243, 100.38446123290],
[12.421, 2.32591770919, 80.71948940050],
[9.774, 0.39898140151, 7.86430652620],
[13.172, 2.74099358938, 177.87437278590],
[12.262, 5.42795591646, 831.10498122420],
[10.272, 5.90194483926, 74.52096613640],
[9.317, 3.75869700774, 74.82978267710],
[10.701, 4.00709797731, 235.39049596580],
[9.243, 5.38492199672, 20.44686912510],
[9.461, 2.60126707172, 92.30770638560],
[12.066, 5.52163100220, 74.26033370550],
[10.836, 1.88393779293, 241.61027108930],
[9.317, 1.16483658310, 74.73341445750],
[10.718, 5.50310449842, 187.69623277240],
[12.057, 6.02120050390, 154.01661525950],
[9.124, 1.15458738606, 0.63313944640],
[11.526, 6.26425302826, 155.78297225810],
[12.200, 5.79400179483, 1364.72809958190],
[10.979, 5.76614513865, 628.85158605010],
[8.532, 5.18016456150, 1.64453140270],
[8.660, 3.78133822411, 74.94165726170],
[11.227, 1.30788626675, 604.47256366190],
[10.531, 1.05867421534, 291.70403072770],
[8.446, 3.52020067595, 756.32338265690],
[10.291, 5.30493908317, 75.04223099820],
[8.015, 6.24347048958, 543.02428721890],
[7.796, 5.23497582886, 58.10682401090],
[9.310, 1.65210713729, 24.11838995730],
[8.642, 1.14285691458, 74.62153987290],
[7.797, 4.00208030502, 31.49256938900],
[8.915, 3.63129389881, 408.43894361130],
[7.191, 4.24536221306, 110.20632121940],
[9.764, 0.10205649809, 366.48562929500],
[8.710, 2.25910759480, 451.94042111070],
[9.430, 2.00492467431, 331.32153907380],
[9.008, 1.63146330622, 443.86366626340],
[7.247, 4.35313018726, 88.11492069160],
[7.659, 0.61918159043, 50.40257617910],
[6.836, 5.12190844483, 0.80314915210],
[9.367, 1.42664537007, 414.06801790380],
[8.136, 0.45279998999, 25.60286266560],
[9.199, 2.41000352664, 10138.50394764370],
[6.896, 5.85017813531, 339.28641933650],
[6.487, 6.03397141885, 1.22384027740],
[7.186, 4.00480285222, 157.63995198190],
[8.130, 0.21907525983, 422.66603761290],
[8.022, 2.09953974305, 92.94084583200],
[6.371, 4.47820781123, 79.88940799800],
[7.957, 5.86499639179, 760.25553592000],
[8.383, 2.33782809093, 417.03696332040],
[7.931, 3.41952210669, 7.70424783180],
[6.613, 1.39197711439, 16.67477455640],
[7.142, 5.57864813931, 4.73530241520],
[7.441, 0.48121969777, 68.18931642830],
[7.187, 0.50441238918, 457.87831194390],
[6.613, 2.84628770892, 142.14083359310],
[6.399, 3.88681409308, 74.03083904190],
[6.140, 1.65776909220, 350.33211960040],
[7.053, 0.13890020306, 306.83064210100],
[6.010, 5.46434004640, 48.75804477640],
[6.810, 6.15448079403, 67.88049988760],
[5.982, 2.36098472874, 2.00573757010],
[5.709, 1.49928444044, 206.18554843720],
[6.843, 1.08172913275, 465.95506679120],
[6.408, 5.07331258075, 4.66586644600],
[7.805, 3.98866710061, 3.62333672240],
[5.527, 5.57881556653, 2.92076130680],
[5.521, 3.38225987040, 149.45132255000],
[6.107, 1.95504762856, 216.92243216040],
[5.692, 2.83076925167, 260.99335863140],
[6.586, 2.71085048651, 329.72519178090],
[5.826, 3.98800970226, 347.88443904560],
[5.745, 0.49160564101, 0.37250701550],
[5.473, 5.69158856279, 1.69692102940],
[4.982, 2.40870746521, 342.25536475310],
[6.040, 4.78944090986, 558.00214074590],
[5.317, 2.78403764459, 13.49338081870],
[5.090, 5.47747622578, 372.42352012820],
[4.894, 1.77082918618, 333.65734504400],
[5.389, 2.94076732149, 9.40116886120],
[4.757, 5.37129102802, 61.28821774860],
[5.000, 3.43988321744, 518.64526483070],
[5.664, 3.30309284254, 0.65439130580],
[5.530, 0.45092393824, 162.09337010680],
[5.746, 3.45964923866, 55.13787859430],
[5.666, 1.23578675332, 328.35259365720],
[5.071, 5.42033080481, 977.48678462110],
[5.719, 0.66718965817, 92.04707395470],
[4.994, 1.29267872727, 983.11585891360],
[5.570, 2.36255927193, 6.90109867970],
[5.189, 2.40682220291, 58.31927233200],
[5.502, 0.13301359232, 149.67507171920],
[4.706, 1.85473330365, 119.50691634410],
[4.305, 4.18171934306, 90.82323367730],
[5.953, 1.73036741041, 152.74459087230],
[5.607, 5.53187692339, 1087.69310584050],
[5.591, 5.75072223569, 358.93013930950],
[4.441, 0.97726075887, 4.19278569400],
[4.608, 3.31800103668, 89.75945209430],
[4.677, 5.01422713233, 43.12897048390],
[4.034, 1.08242564328, 75.53235809270],
[5.626, 1.10270225604, 66.91729204110],
[4.058, 1.94012136050, 17.26547538740],
[4.770, 2.24207019076, 986.08480433020],
[5.207, 1.36600428910, 767.36908292080],
[4.940, 0.13733547633, 0.85133326190],
[4.339, 5.33814728291, 152.01087768940],
[3.917, 3.85320550575, 2.28762186040],
[3.903, 5.87573410158, 16.46232623530],
[4.655, 0.93665017107, 267.47376618580],
[4.638, 5.42566923517, 16.04163511000],
[5.177, 3.40845690805, 1289.94650101460],
[3.825, 0.59888105730, 210.33015002140],
[5.048, 2.16732539242, 367.97010200330],
[3.819, 1.70901925915, 5.62907429250],
[5.004, 0.26759264038, 403.13419222450],
[4.202, 5.12029089394, 19.01058052660],
[4.472, 2.88978371811, 59.28248017850],
[4.700, 4.17709035394, 130.44074202340],
[4.487, 0.85521839581, 969.62247809490],
[3.802, 4.59721371468, 25.86349509650],
[4.024, 4.98868930941, 30.05628079050],
[4.722, 6.16359211847, 173.68158709190],
[4.732, 3.76697693308, 373.01422095920],
[3.542, 0.76768843819, 114.13847448250],
[3.370, 2.00021522907, 286.59622129700],
[3.626, 3.20240733896, 991.71387862270],
[4.028, 0.46802022168, 387.24131496080],
[3.442, 5.20959733350, 894.84087952760],
[3.273, 5.46374958434, 192.69216761850],
[3.291, 3.97847646998, 264.50482076920],
[3.291, 1.62538722379, 681.54178408960],
[3.198, 3.96580804800, 146.38180339690],
[4.016, 1.40657464840, 383.09671337660],
[3.844, 3.60271287642, 0.59070083100],
[3.123, 4.50215520755, 1439.50969814920],
[3.434, 5.18704419009, 97.41551581630],
[3.123, 4.14198630214, 76.47851959670],
[3.259, 1.65410614252, 214.78356814630],
[3.557, 4.15769848885, 68.56182344380],
[2.934, 2.95575531139, 120.99138905240],
[2.914, 3.69930995976, 874.39401040250],
[3.301, 2.14570582133, 253.57099508990],
[3.362, 4.82277888708, 19.64371997300],
[3.218, 2.56428709831, 60.55450456570],
[3.059, 3.57539890234, 117.91056905120],
[3.073, 3.54739757836, 95.38852638680],
[2.789, 0.65190913388, 42.53826965290],
[3.235, 5.31608088666, 546.95644048200],
[3.657, 5.89905956226, 16.15350969460],
[3.549, 2.76314903735, 82.48584639910],
[3.627, 4.68663059919, 593.42686339800],
[3.306, 1.57486085317, 312.45971639350],
[3.602, 2.51921910142, 22.89454967990],
[3.431, 4.95532928836, 49.72125262290],
[2.675, 2.41314606353, 29.20494752860],
[3.101, 1.42849885249, 17.63798240290],
[3.399, 3.02815712113, 88.79624424780],
[3.379, 2.65894323745, 771.30123618390],
[2.547, 6.10642153361, 455.87257437380],
[2.967, 0.31461418738, 150.52640498110],
[2.681, 1.16839594153, 477.80391620720],
[3.343, 3.09880618811, 552.58551477450],
[2.678, 1.42841144096, 1.11196569280],
[2.540, 1.94053883528, 6.48040755440],
[2.491, 2.97226347939, 453.94615868080],
[2.744, 1.93313970916, 73.18525127440],
[2.935, 4.59394106280, 167.08930495290],
[3.007, 1.38745560615, 365.00115658670],
[3.053, 1.91792962252, 561.18353448360],
[2.496, 5.45540866674, 66.18357885820],
[2.622, 1.46324659292, 33.13710079170],
[3.203, 4.01683757076, 555.55446019110],
[2.317, 1.13727677715, 43.24084506850],
[2.341, 5.87635018071, 228.27694896500],
[2.841, 3.60234459541, 42.58645376270],
[2.858, 1.53714262537, 353.30106501700],
[2.484, 3.85791009894, 104.00779795530],
[2.903, 5.21967656512, 73.40900044360],
[2.760, 1.21343315367, 32.24332891440],
[2.269, 3.31411391807, 4.14460158420],
[2.241, 2.65636547591, 70.11573212130],
[2.246, 4.08175081363, 123.53964334370],
[2.583, 2.38305971478, 100.64509366380],
[2.761, 5.71758409791, 43.28902917830],
[2.827, 6.16734582851, 101.86893394120],
[2.838, 0.54888495490, 20.49505323490],
[2.145, 4.04195315408, 47.06112374700],
[2.810, 1.90169260186, 273.10284047830],
[2.922, 2.79808700183, 418.26080359780],
[2.070, 5.50402718290, 47.69426319340],
[2.071, 2.01973573060, 316.39186965660],
[2.520, 3.12740527423, 905.88657979150],
[2.170, 4.46196560050, 2.70831298570],
[2.399, 3.78849518316, 75.58474771940],
[2.746, 4.82558024832, 6.85291456990],
[2.717, 2.33108458294, 404.61866493280],
[2.416, 4.11932546205, 332.80601178210],
[1.974, 5.79881978458, 11.15757484850],
[1.967, 5.43918682709, 199.28444975750],
[2.282, 2.79530897096, 22.63391724900],
[1.910, 0.27727117649, 69.15252427480],
[2.471, 3.51033894778, 8.59801970910],
[1.904, 3.45282024423, 472.17484191470],
[2.606, 0.43601023323, 439.78275515400],
[2.663, 5.43112910549, 3265.83082813250],
[2.058, 1.69362390174, 65.87476231750],
[2.258, 5.32927779367, 908.33426034630],
[1.873, 5.55399805910, 175.16605980020],
[2.222, 0.96973865202, 39.09624348430],
[2.121, 2.00302088316, 106.01353552540],
[2.010, 1.49945418027, 29.22619938800],
[2.222, 4.36573603431, 468.24268865160],
[2.055, 0.05798973044, 205.22234059070],
[2.086, 0.44287700052, 10.29494073850],
[1.770, 4.32048805830, 0.45757438700],
[2.112, 5.78682409103, 486.40193591630],
[1.909, 0.82888506421, 254.94359321360],
[1.973, 6.05826379648, 78.40493528970],
[1.908, 5.55892482384, 15.49911838880],
[1.888, 6.20874408008, 198.32124191100],
[2.092, 2.55561831566, 49.50880430180],
[1.775, 6.17741514589, 258.87574647670],
[2.146, 1.40508118810, 526.72201967800],
[1.800, 0.04238718337, 334.29048449040],
[1.738, 1.99152421966, 77.06922042770],
[1.641, 3.36410541913, 118.02244363580],
[2.084, 5.21275540105, 134.06407874580],
[1.861, 2.97480744198, 178.78939652260],
[1.750, 2.01731567093, 142.66209845490],
[1.600, 1.60963172329, 40.16002506730],
[1.668, 1.53361997245, 0.83008140250],
[1.769, 4.72689497119, 32.71640966640],
[1.782, 2.60469159465, 166.82867252200],
[1.765, 5.57583636983, 522.57741809380],
[1.877, 1.09044005603, 274.06604832480],
[1.544, 1.91798419140, 303.86169668440],
[1.532, 3.44973397383, 124.50285119020],
[1.658, 5.23946791059, 233.90602325750],
[1.743, 2.32369273283, 290.21955801940],
[1.528, 0.62020771152, 1033.35837639830],
[1.522, 6.11272567668, 165.60483224460],
[1.496, 2.02190170195, 150.08446199640],
[1.490, 3.30997217921, 820.05928096030],
[1.398, 3.41567259878, 4.99593484610],
[1.886, 6.25585539882, 162.89651925890],
[1.388, 0.62745508416, 448.68959140380],
[1.918, 0.91483173263, 1819.63746610920],
[1.682, 2.11545135265, 189.72322220190],
[1.711, 2.55731536599, 1108.13997496560],
[1.598, 0.89607036108, 115.88357962170],
[1.477, 0.22838214106, 370.93904741990],
[1.727, 1.54005322759, 401.64971951620],
[1.432, 3.73381952953, 8.90683624980],
[1.338, 0.19338311739, 81.89514556810],
[1.618, 6.02595306259, 31.23193695810],
[1.452, 0.11827434627, 72.77586099720],
[1.626, 4.26332651029, 369.45457471160],
[1.284, 3.18389639039, 362.86229257260],
[1.755, 5.57436830525, 344.96367773880],
[1.451, 4.42615381750, 189.18070548070],
[1.294, 2.77775613125, 63.62402371880],
[1.712, 2.16785817753, 536.80451209540],
[1.266, 2.78408709208, 55.77101804070],
[1.700, 2.49908604932, 441.26722786230],
[1.645, 2.41257585783, 10.08249241740],
[1.666, 5.00664377609, 79.51690098250],
[1.674, 0.00394784675, 491.55792945680],
[1.334, 5.62972572008, 129.91947716160],
[1.328, 0.25606135840, 114.94162363460],
[1.176, 1.63208422172, 84.18276742850],
[1.177, 4.10449248614, 103.35340664950],
[1.384, 5.73004529870, 89.33876096900],
[1.287, 0.99537181009, 14.66903698630],
[1.171, 5.98078310685, 57.14361616440],
[1.126, 3.39586759408, 375.39246554480],
[1.406, 5.18477940039, 113.87784205160],
[1.397, 1.49751443233, 14.22709400160],
[1.206, 3.60301196272, 480.77286162380],
[1.113, 4.80418427391, 9.44935297100],
[1.434, 1.57158177893, 419.74527630610],
[1.473, 1.03881736383, 1215.16490244730],
[1.311, 2.99704179684, 458.84151979040],
[1.453, 6.10676427884, 64.69910614990],
[1.070, 3.16542344402, 54.33472944220],
[1.389, 2.78512263875, 26.02355379090],
[1.203, 0.20627563214, 0.56944897160],
[1.343, 5.58004577468, 95.22846769240],
[1.062, 2.40616687148, 154.97982310600],
[1.399, 1.66776602336, 240.38643081190],
[1.036, 5.53891715915, 403.02231763990],
[1.269, 2.37684527290, 37.87240320690],
[1.197, 4.87553746725, 1044.40407666220],
[1.009, 2.74619462960, 80.41067285980],
[1.330, 0.99603813295, 483.22054217860],
[1.348, 0.58829539202, 476.43131808350],
[0.989, 3.31666847329, 18.91000679010],
[1.054, 2.85972567059, 616.32141307790],
[1.276, 4.72938141859, 691.10301164520],
[1.219, 3.62909689220, 106.27416795630],
[1.269, 1.53301050628, 280.96714700450],
[0.968, 2.73688433893, 218.92816973050],
[1.330, 5.69234088687, 694.07195706180],
[1.121, 2.80542439790, 148.59998928810],
[0.980, 6.04026702553, 5.46901559810],
[1.235, 0.61136787453, 237.67811782620],
[1.161, 5.32209024820, 369.08206769610],
[0.944, 1.14261861393, 384.05992122310],
[1.017, 2.49896409345, 147.11551657980],
[1.082, 2.46236323548, 326.86812094890],
[1.037, 5.92126063748, 4.82592514040],
[1.232, 5.83725190224, 63.84777288800],
[0.914, 0.36627060914, 10.93382567930],
[1.165, 5.32140830393, 308.31511480930],
[0.952, 4.78982033367, 93.90405367850],
[0.993, 3.39918521663, 10.78506783300],
[1.206, 3.64530500530, 699.70103135430],
[0.893, 2.97140509591, 248.46318565920],
[0.883, 2.85605198817, 15.19030184810],
[0.875, 3.43925709280, 3.08082000120],
[1.103, 4.80576195766, 6133.51265285680],
[1.178, 6.01576659565, 377.15882254340],
[0.974, 2.51206761828, 121.84272231430],
[0.865, 5.68958102479, 141.69889060840],
[0.974, 3.15729174941, 215.43795945210],
[0.847, 0.84854843713, 2043.98226181110],
[0.961, 0.22181374419, 0.91502373670],
[1.167, 2.37544946421, 33.94024994380],
[1.013, 3.43778868786, 36.90919536040],
[0.838, 1.63355479706, 2.33580597020],
[1.113, 2.50989694970, 405.99126305650],
[0.987, 1.14030030863, 82.20396210880],
[1.060, 1.70915765427, 438.29828244570],
[0.829, 2.97491446672, 62.77269045690],
[0.991, 4.44869793177, 406.10313764110],
[0.952, 6.13897716036, 184.98791978670],
[1.033, 4.19932839584, 141.48644228730],
[1.029, 5.13205530996, 157.26744496640],
[0.805, 3.11000318272, 93.79217909390],
[0.865, 4.44578048207, 295.19424100610],
[0.921, 4.88190545687, 12.00890811040],
[0.949, 5.99910796869, 606.76018552230],
[0.991, 1.68012021428, 40.58071619260],
[0.854, 0.37823682862, 217.23124870110],
[0.883, 2.36224385140, 3.77209456870],
[1.016, 3.90745585959, 194.28851491140],
[0.807, 5.93051451738, 302.09533968580],
[0.879, 0.52695940866, 1057.89745748090],
[1.009, 1.19621149495, 490.07345674850],
[0.801, 4.96724351781, 661.09491496450],
[0.843, 0.97496000705, 73.88782669000],
[1.028, 2.65189503651, 477.91579079180],
[0.846, 3.36343733960, 40.84134862350],
[0.772, 4.93551925711, 425.11371816770],
[0.781, 0.59382881638, 97.67614824720],
[0.770, 4.25621058806, 488.84961647110],
[0.935, 1.24971148781, 624.91943278700],
[0.984, 4.44298060183, 171.65459766240],
[0.806, 0.09410536829, 440.68227252570],
[0.769, 4.09296452529, 140.65636088480],
[0.802, 0.78515729603, 11.84884941600],
[1.007, 4.06909438635, 76.15419669100],
[0.935, 0.03808890956, 156.15547927360],
[0.712, 5.35549696452, 610.69233878540],
[0.911, 4.70177653335, 81.68269724700],
[0.926, 3.09765550633, 833.55266177900],
[0.812, 3.54377377085, 149.40313844020],
[0.801, 5.48034970408, 21.97952594320],
[0.900, 4.21739347020, 778.41478318470],
[0.689, 2.56862945159, 109.31254934210],
[0.685, 3.19965828980, 31.65262808340],
[0.952, 4.82579978820, 1744.85586754190],
[0.724, 2.16878848875, 1171.87587326900],
[0.897, 3.94746491183, 75.67537044460],
[0.739, 5.45802693622, 252.65597135320],
[0.821, 4.26046087515, 1246.65747183630],
[0.663, 5.83767831921, 86.63044798330],
[0.664, 1.72432848951, 216.48048917570],
[0.721, 3.98089320988, 902.70518605380],
[0.663, 4.98388191647, 958.57677783100],
[0.750, 2.66119349235, 363.51668387840],
[0.828, 3.62849315181, 14.81779483260],
[0.663, 3.23521229496, 207.88246946660],
[0.681, 3.29667467046, 25.06034594440],
[0.887, 4.81199147907, 155.50108796780],
[0.646, 2.65129054432, 685.47393735270],
[0.808, 5.68764955594, 280.00393915800],
[0.619, 1.32296886424, 193.65537546500],
[0.621, 2.57837200005, 703.63318461740],
[0.854, 3.63173686962, 411.62033734900],
[0.728, 1.05845783695, 916.93228005540],
[0.733, 0.75817076935, 44.09217833040],
[0.629, 1.52747752455, 397.39324334740],
[0.599, 5.30671888409, 180.16199464630],
[0.615, 5.68908944293, 25.27279426550],
[0.709, 0.64922689354, 14.55716240170],
[0.729, 4.79389069212, 479.40026350010],
[0.667, 1.98320895029, 37.61177077600],
[0.586, 1.51157853976, 668.20846196530],
[0.639, 1.69085181319, 262.47783133970],
[0.616, 4.62035066985, 12.26954054130],
[0.687, 2.24368916079, 228.79821382680],
[0.599, 2.08317681783, 149.30256470370],
[0.597, 3.14660293947, 137.55428902420],
[0.581, 2.69049614736, 823.99143422340],
[0.709, 4.38514100216, 184.09414790940],
[0.671, 3.46925958949, 105.38039607900],
[0.619, 2.91325544152, 236.87496867410],
[0.558, 2.96177194880, 34.20088237470],
[0.648, 5.56457931302, 140.96517742550],
[0.581, 0.55427680962, 331.20966448920],
[0.585, 0.15548306049, 232.42155054920],
[0.548, 3.57525860446, 497.44763618020],
[0.574, 5.60908001848, 118.87377689770],
[0.702, 1.74156189506, 149.04193227280],
[0.543, 0.49890445043, 133.10087089930],
[0.716, 3.04149734724, 131.92521473170],
[0.544, 6.22369103738, 149.61138124440],
[0.539, 0.74276113752, 911.30320576290],
[0.614, 5.83710659138, 181.05576652360],
[0.601, 0.30768922616, 407.58761034940],
[0.635, 4.03476459045, 136.06981631590],
[0.526, 5.42874995984, 450.97721326420],
[0.547, 3.07676037032, 204.70107572890],
[0.622, 3.08666523105, 268.43697403230],
[0.537, 4.25467814241, 217.44369702220],
[0.566, 4.84686444604, 842.15068148810],
[0.636, 2.57425168783, 621.73803904930],
[0.623, 5.84341335807, 52.80207262410],
[0.544, 3.62983006500, 149.51501302480],
[0.578, 0.34796271917, 139.48070471720],
[0.537, 5.99181083831, 246.97871295090],
[0.674, 2.57972741298, 602.98809095360],
[0.539, 6.19662961610, 696.51963761660],
[0.516, 2.19916575703, 458.09076026500],
[0.632, 5.26658553640, 67.07735073550],
[0.581, 0.05320320337, 95.93104310800],
[0.504, 6.24600928623, 149.72325582900],
[0.638, 6.23121553223, 10063.72234907640],
[0.528, 0.20662780149, 310.17209453310],
[0.537, 2.96207822442, 73.13706716460],
[0.508, 5.29969144068, 335.77495719870],
[0.487, 2.83772541949, 143.93412284210],
[0.537, 3.36808372143, 252.08652238160],
[0.632, 5.88494938125, 920.86443331850],
[0.523, 6.13183488285, 1589.07289528380],
[0.579, 0.04597861846, 563.63121503840],
[0.613, 0.34938781762, 343.47920503050],
[0.495, 2.89212499810, 61.44827644300],
[0.623, 0.71740350315, 513.07988101300],
[0.498, 2.53375871592, 41.75637236020],
[0.564, 2.01612524784, 449.28029223480],
[0.480, 0.10535023009, 69.67378913660],
[0.494, 3.25187012728, 428.08266358430],
[0.536, 5.81149025999, 282.66406803390],
[0.468, 0.89483830828, 541.53981451060],
[0.533, 2.44239677121, 393.46109008430],
[0.589, 6.24067076234, 29.79564835960],
[0.465, 0.25006743710, 57.25549074900],
[0.622, 3.89339038121, 416.77633088950],
[0.519, 2.72375973888, 469.13646052890],
[0.498, 1.76422801185, 380.38840039090],
[0.596, 0.83642843095, 98.35747180340],
[0.459, 0.39052216206, 197.79997704920],
[0.574, 2.86366933069, 170.76082578510],
[0.518, 3.38058345605, 535.91074021810],
[0.564, 1.20395155832, 832.58945393250],
[0.556, 4.39974034374, 196.62432088160],
[0.537, 3.93637064940, 460.53844081980],
[0.482, 2.41562148830, 827.92358748650],
[0.578, 2.39644032176, 1670.07426897460],
[0.475, 4.19223519775, 271.40591944890],
[0.452, 3.99146251480, 135.33610313300],
[0.514, 6.11377193423, 1894.41906467650],
[0.531, 3.45607724228, 450.45594840240],
[0.492, 5.87591888758, 170.17012495410],
[0.588, 2.66953705406, 310.97524368520],
[0.564, 1.04491117370, 446.31134681820],
[0.440, 5.85084571537, 224.23292111730],
[0.441, 2.19799439287, 119.39504175950],
[0.549, 6.05651523611, 76.37794586020],
[0.573, 2.29898526750, 122.47586176070],
[0.473, 4.61187869812, 291.26208774300],
[0.553, 4.90464199013, 463.50738623640],
[0.599, 1.48666209087, 149.82382956550],
[0.499, 3.72896978991, 853.19638175200],
[0.440, 5.05024690419, 79.44746501330],
[0.558, 0.42332722744, 283.62727588040],
[0.458, 4.49655973916, 754.83890994860],
[0.449, 1.32861330901, 308.68762182480],
[0.565, 0.45628024105, 241.87090352020],
[0.510, 3.70202346104, 452.46168597250],
[0.404, 0.12335821240, 1097.09427470170],
[0.409, 4.02092464698, 735.87651353180],
[0.464, 3.82915608692, 1094.54602041040],
[0.439, 2.72266354653, 376.19561469690],
[0.478, 0.23380952322, 1182.92157353290],
[0.412, 1.21971515436, 419.48464387520],
[0.546, 0.22296640745, 829.62050851590],
[0.510, 2.69499052512, 412.58354519550],
[0.409, 2.51935747849, 409.07208305770],
[0.451, 0.56137272347, 758.77106321170],
[0.399, 0.86037315330, 337.80194662820],
[0.393, 0.40202463200, 107.49800823370],
[0.494, 5.02745190154, 619.29035849450],
[0.404, 0.08539758465, 18.96239641680],
[0.504, 4.18251931021, 449.49274055590],
[0.406, 3.80082989682, 34.53095077480],
[0.545, 2.80919248176, 514.56435372130],
[0.390, 1.65941826256, 447.20511869550],
[0.448, 2.81540452771, 400.16524680790],
[0.405, 4.86073222353, 1404.08497549710],
[0.476, 1.61050626902, 54.28654533240],
[0.406, 1.29798079034, 226.79247625670],
[0.526, 5.35780726572, 838.21852822500],
[0.403, 2.75405589772, 285.11174858870],
[0.381, 4.97702366598, 309.27832265580],
[0.448, 1.37926537411, 745.27768239300],
[0.419, 0.90546724862, 451.72797278960],
[0.450, 1.92391706975, 474.94684537520],
[0.474, 5.54351717465, 494.26624244250],
[0.460, 5.09575399931, 289.56516671360],
[0.455, 3.14755087330, 168.57377766120],
[0.372, 4.87645271422, 116.53797092750],
[0.479, 1.08512503555, 154.29849954980],
[0.374, 0.16389070181, 1190.78588005910],
[0.422, 3.51871257208, 706.81457835510],
[0.354, 4.06405413226, 124.29040286910],
[0.494, 4.57924296149, 167.72244439930],
[0.357, 5.78050145791, 1265.56747862640],
[0.402, 2.67652703260, 464.47059408290],
[0.370, 2.21677703856, 232.04904353370],
[0.462, 4.10424305270, 27.72047482030],
[0.364, 3.07518732480, 442.63982598600],
[0.403, 1.69214233165, 90.28071695610],
[0.348, 1.16647947937, 357.44566660120],
[0.443, 1.32306861852, 298.23262239190],
[0.386, 4.34980428548, 227.52618943960],
[0.337, 5.92030047826, 445.34813897170],
[0.356, 2.38824200660, 511.59540830470],
[0.357, 3.19265737844, 21.19762865050],
[0.406, 3.72223708907, 3116.26763099790],
[0.341, 3.05116722794, 15.78100267910],
[0.379, 4.72472516443, 30.59879751170],
[0.400, 0.71868453904, 836.52160719560],
[0.370, 0.17259001853, 6531.66165626500],
[0.456, 0.83408547295, 674.80074410430],
[0.376, 5.91068811321, 1617.38407093510],
[0.392, 1.90856045571, 25863.55834587229],
[0.333, 4.77074940789, 76.78733613740],
[0.332, 0.85699402720, 749.20983565610],
[0.321, 3.88221470645, 38.60611638980],
[0.321, 2.59404134515, 1300.99220127850],
[0.438, 2.60178805278, 224.45667028650],
[0.371, 3.73501205989, 328.24071907260],
[0.357, 0.03656571669, 148.81243760920],
[0.389, 3.06990362181, 1012.91150727320],
[0.392, 3.14428599675, 125.18417474640],
[0.326, 2.23565995627, 89.59939339990],
[0.314, 4.56810921721, 1681.11996923850],
[0.333, 4.37613329736, 147.96684984170],
[0.326, 4.15448016748, 21.14944454070],
[0.371, 4.09066371754, 239.16259053450],
[0.372, 1.12230345314, 321.76031151820],
[0.305, 6.12924444546, 19.97378837310],
[0.407, 3.65906570714, 679.25416222920],
[0.406, 3.58469900333, 26013.12154300690],
[0.310, 3.92339533494, 229.08009811710],
[0.321, 1.35118535306, 172.45774681450],
[0.332, 3.54513021513, 288.73508531110],
[0.312, 2.87878773413, 806.72595883600],
[0.372, 1.99953045718, 192.80404220310],
[0.302, 0.01867543539, 501.37978944330],
[0.299, 3.96468960950, 20277.00789528740],
[0.308, 2.66235795286, 248.72381809010],
[0.298, 3.52867456736, 21.45826108140],
[0.370, 3.51061046963, 91.45637312370],
[0.297, 0.79872983355, 742.99006053260],
[0.414, 4.81163687199, 589.49471013490],
[0.302, 5.26079338050, 27.56041612590],
[0.314, 3.14643487607, 361.37781986430],
[0.356, 4.63707521448, 442.75170057060],
[0.357, 3.44793069844, 44.61344319220],
[0.370, 4.25032151516, 304.23420369990],
[0.366, 5.43115395433, 625.99451521810],
[0.365, 0.30454498410, 6283.07584999140],
[0.322, 2.32892248876, 229.45260513260],
[0.369, 3.28573365074, 104.52906281710],
[0.327, 2.98588869318, 348.84764689210],
[0.315, 3.66842071994, 230.93707784090],
[0.356, 0.90433599977, 29.74746424980],
[0.384, 0.91820739126, 549.72844394250],
[0.317, 3.86462587284, 639.89728631400],
[0.333, 4.95319798125, 881.50755740330],
[0.285, 4.09883967296, 904.18965876210],
[0.338, 5.65177488491, 195.77298761970],
[0.365, 0.57418860616, 285.63301345050],
[0.363, 0.98999016221, 839.70300093330],
[0.330, 2.26308969695, 49.17873590170],
[0.335, 2.25619157817, 272.58157561650],
[0.376, 5.87496858487, 268.95823889410],
[0.362, 4.94491380965, 572.22923474750],
[0.320, 5.58342880588, 459.36278465220],
[0.299, 2.86286938521, 883.79517926370],
[0.286, 2.49409963193, 156.04360468900],
[0.272, 3.62976505444, 754.03576079650],
[0.349, 2.34615857088, 6069.77675455340],
[0.279, 4.04872155075, 180.79513409270],
[0.328, 1.21350330743, 148.19059901090],
[0.315, 0.74270298817, 320.27583880990],
[0.324, 5.54296698387, 1507.17774971570],
[0.266, 4.36134021576, 1310.39337013970],
[0.262, 5.84934968714, 450.17406411210],
[0.280, 5.05848320657, 102.52332524700],
[0.347, 4.70068639620, 282.14280317210],
[0.342, 5.47365149093, 163.57784281510],
[0.364, 3.29301824378, 378.90392768260],
[0.330, 4.63426494882, 341.99473232220],
[0.259, 2.43682741156, 170.01006625970],
[0.336, 3.79029047358, 9999.98645077300],
[0.284, 2.52583672467, 266.10116806210],
[0.281, 3.93593342516, 194.17664032680],
[0.297, 0.18595848541, 491.81856188770],
[0.290, 4.49575150721, 151.85081899500],
[0.284, 1.59495665161, 336.83873878170],
[0.255, 5.85817353877, 229.34073054800],
[0.260, 5.92834225312, 455.06942522170],
[0.274, 0.53977064975, 380.23964254460],
[0.259, 3.15728797958, 454.74930783290],
[0.303, 0.17851964142, 384.58118608490],
[0.285, 1.29732672572, 25.12978191360],
[0.273, 4.18776699292, 177.30492381430],
[0.326, 1.68159391466, 161.72086309130],
[0.321, 2.36931686576, 2274.54683263650],
[0.241, 3.57660492473, 150.31395666000],
[0.273, 3.78780099400, 380.01589337540],
[0.265, 3.02540120552, 454.79749194270],
[0.265, 6.06087280189, 455.02124111190],
[0.279, 3.82392760479, 31.54075349880],
[0.273, 2.64820862667, 838.00607990390],
[0.238, 5.17487170793, 263.02034806090],
[0.299, 3.94906046599, 531.97858695500],
[0.317, 2.28289083599, 44.07092647100],
[0.250, 1.35950829789, 304.12232911530],
[0.312, 2.73327875294, 442.37919355510],
[0.314, 3.86400459047, 734.45573129830],
[0.251, 0.15148137746, 221.16340196420],
[0.272, 5.71864670101, 164.54105066160],
[0.305, 4.96642198943, 1140.38330388000],
[0.282, 5.46073788901, 550.13783421970],
[0.273, 5.68721459468, 92.41958097020],
[0.256, 0.88787970870, 418.52143602870],
[0.229, 5.02021405557, 144.89733068860],
[0.231, 5.70236752870, 132.88842257820],
[0.218, 2.05623736180, 303.05854753230],
[0.300, 1.76109447754, 371.52974825090],
[0.216, 2.97122807313, 176.65053250850],
[0.224, 3.12798198868, 188.92007304980],
[0.212, 1.30757526083, 74.14845912090],
[0.238, 4.65119406609, 385.75684225250],
[0.216, 0.07086910120, 893.35640681930],
[0.262, 5.78959872639, 635.96513305090],
[0.250, 4.47327859711, 551.10104206620],
[0.222, 1.64692618955, 76.42612997000],
[0.254, 2.61838408005, 525.23754696970],
[0.284, 4.13290731223, 544.50875992720],
[0.262, 2.82476092056, 971.10695080320],
[0.266, 4.12467258610, 375.67434983510],
[0.212, 3.61675003296, 75.41473801370],
[0.253, 3.14224867483, 270.18207917150],
[0.250, 4.32883971376, 346.44815044710],
[0.273, 1.95676918609, 402.21916848780],
[0.259, 1.96371242284, 968.13800538660],
[0.238, 1.29663338057, 421.18156490460],
[0.243, 5.94961177434, 117.36805233000],
[0.241, 4.70849619029, 406.95447090300],
[0.216, 3.31232425021, 190.66517818900],
[0.201, 1.23733749784, 799.61241183520],
[0.223, 0.98087204684, 627.36711334180],
[0.226, 1.66139333004, 1366.21257229020],
[0.205, 0.33839683950, 143.34342201110],
[0.240, 0.71559872262, 525.75881183150],
[0.223, 2.57722930616, 981.63138620530],
[0.193, 4.48974066435, 172.19711438360],
[0.221, 2.88670838151, 238.90195810360],
[0.177, 3.87122035013, 389.68899551560],
[0.175, 5.85737374379, 170.71264167530],
[0.233, 0.63169996424, 980.66817835880],
[0.225, 4.81504648561, 88.27497938600],
[0.210, 2.49819501106, 128.43500445330],
[0.172, 0.91255921858, 210.85141488320],
[0.176, 3.85133296117, 605.95703637020],
[0.211, 1.72999855867, 10213.28554621100],
[0.170, 1.61405340100, 1512.80682400820],
[0.216, 1.54874566441, 1060.86640289750],
[0.194, 6.07381783144, 520.12973753900],
[0.170, 2.58526747515, 1515.77576942480],
[0.172, 1.45073604378, 995.64603188580],
[0.160, 4.20015913513, 433.71173787680],
[0.219, 1.63985385568, 630.33605875840],
[0.219, 1.96273394194, 313.68355667090],
[0.159, 3.62343846627, 73.97844941520],
[0.206, 0.83764718449, 104.83787935780],
[0.203, 0.68701289007, 1363.24362687360],
[0.158, 0.81666479221, 987.56927703850],
[0.172, 2.97938676702, 327.43756992050],
[0.147, 2.15517092627, 73.24894174920],
[0.156, 1.29643469200, 216.26804085460],
[0.153, 3.77492020946, 768.85355562910],
[0.147, 4.74903152642, 73.34530996880],
[0.198, 2.80749830888, 225.30800354840],
[0.179, 0.35410767087, 421.22974901440],
[0.204, 3.47423038287, 564.85505531580],
[0.172, 2.88420642820, 233.53351624200],
[0.195, 3.09114364733, 294.30046912880],
[0.181, 4.75684139861, 71.15826184490],
[0.160, 3.16134209902, 70.04629615210],
[0.155, 2.07144269719, 91.24392480260],
[0.154, 3.37462128317, 138.40562228610],
[0.192, 6.19629054455, 312.19908396260],
[0.162, 0.60896273267, 73.03649342810],
[0.172, 2.01712700688, 973.55463135800],
[0.145, 1.72582731815, 302.37722397610],
[0.170, 2.97437423989, 3191.04922956520],
[0.153, 0.11158566352, 138.62937145530],
[0.164, 5.37129563471, 457.35704708210],
[0.132, 3.15466226029, 523.47118997110],
[0.137, 2.88313323946, 765.88461021250],
[0.128, 1.75773421717, 77.70235987410],
[0.173, 5.03552846066, 415.29185818120],
[0.137, 4.77137510538, 73.45718455340],
[0.163, 0.99316178485, 94.42531854030],
[0.138, 4.68330115148, 517.16079212240],
[0.133, 2.95376828791, 75.15410558280],
[0.134, 1.35779558361, 249.94765836750],
[0.168, 4.73164542970, 108.72184851110],
[0.119, 1.48229220689, 237.41748539530],
[0.134, 1.52277177920, 154.67100656530],
[0.117, 5.48642273610, 437.64389113990],
[0.131, 5.76525548944, 75.43598987310],
[0.127, 2.38309227230, 208.84567731310],
[0.115, 4.38951350436, 343.21857259960],
[0.114, 4.48142283161, 224.86606056370],
[0.117, 5.37802827323, 293.70976829780],
[0.136, 2.80772094137, 374.49869366750],
],
# L1
[
[7502543121.646, 0.00000000000, 0.00000000000],
[154458.244, 5.24201658072, 74.78159856730],
[24456.413, 1.71255705309, 1.48447270830],
[9257.828, 0.42844639064, 11.04570026390],
[8265.977, 1.50220035110, 63.73589830340],
[7841.715, 1.31983607251, 149.56319713460],
[3899.105, 0.46483574024, 3.93215326310],
[2283.777, 4.17367533997, 76.26607127560],
[1926.600, 0.53013080152, 2.96894541660],
[1232.727, 1.58634458237, 70.84944530420],
[791.206, 5.43641224143, 3.18139373770],
[766.954, 1.99555409575, 73.29712585900],
[481.671, 2.98401996914, 85.82729883120],
[449.798, 4.13826237508, 138.51749687070],
[445.600, 3.72300400331, 224.34479570190],
[426.554, 4.73126059388, 71.81265315070],
[347.735, 2.45372261286, 9.56122755560],
[353.752, 2.58324496886, 148.07872442630],
[317.084, 5.57855232072, 52.69019803950],
[179.920, 5.68367730922, 12.53017297220],
[171.084, 3.00060075287, 78.71375183040],
[205.585, 2.36263144251, 2.44768055480],
[158.029, 2.90931969498, 0.96320784650],
[189.068, 4.20242881378, 56.62235130260],
[154.670, 5.59083925605, 4.45341812490],
[183.762, 0.28371004654, 151.04766984290],
[143.464, 2.59049246726, 62.25142559510],
[151.984, 2.94217326890, 77.75054398390],
[153.515, 4.65186885939, 35.16409022120],
[121.452, 4.14839204920, 127.47179660680],
[115.546, 3.73224603791, 65.22037101170],
[102.022, 4.18754517993, 145.63104387150],
[101.718, 6.03385875009, 0.11187458460],
[88.202, 3.99035787994, 18.15924726470],
[87.549, 6.15520787584, 202.25339517410],
[80.530, 2.64124743934, 22.09140052780],
[72.047, 6.04545933578, 70.32818044240],
[68.570, 4.05071895264, 77.96299230500],
[59.173, 3.70413919082, 67.66805156650],
[47.267, 3.54312460519, 351.81659230870],
[42.534, 5.72357370899, 5.41662597140],
[44.339, 5.90865821911, 7.11354700080],
[35.605, 3.29197259183, 8.07675484730],
[35.524, 3.32784616138, 71.60020482960],
[36.116, 5.89964278801, 33.67961751290],
[30.608, 5.46414592601, 160.60889739850],
[31.454, 5.62015632303, 984.60033162190],
[38.544, 4.91519003848, 222.86032299360],
[34.996, 5.08034112149, 38.13303563780],
[30.811, 5.49591403863, 59.80374504030],
[28.947, 4.51867390414, 84.34282612290],
[26.627, 5.54127301037, 131.40394986990],
[29.866, 1.65980844667, 447.79581952650],
[29.206, 1.14722640419, 462.02291352810],
[25.753, 4.99362028417, 137.03302416240],
[25.373, 5.73584678604, 380.12776796000],
[21.672, 2.80556379586, 69.36497259590],
[26.605, 6.14640604128, 299.12639426920],
[22.995, 2.24925345862, 111.43016149680],
[19.246, 3.55645739672, 54.17467074780],
[21.780, 0.93285892393, 213.29909543800],
[19.338, 1.86249384092, 108.46121608020],
[16.153, 3.10208165842, 14.97785352700],
[13.126, 1.95385539499, 87.31177153950],
[13.907, 1.54149045800, 340.77089204480],
[13.549, 4.38455126720, 5.93789083320],
[13.102, 5.88301410143, 6.21977512350],
[11.810, 0.32615567587, 35.42472265210],
[10.980, 1.69230280951, 45.57665103870],
[12.351, 0.32823896833, 51.20572533120],
[10.906, 5.97068444790, 265.98929347750],
[11.446, 3.37831545858, 72.33391801250],
[12.013, 3.60395709253, 269.92144674060],
[11.662, 1.74504271366, 79.23501669220],
[13.777, 2.69028726334, 225.82926841020],
[12.006, 5.34430562395, 152.53214255120],
[9.866, 5.50316093605, 153.49535039770],
[10.436, 4.16875643286, 24.37902238820],
[10.632, 3.06875158069, 284.14854074220],
[9.613, 0.49590148788, 209.36694217490],
[9.283, 3.54479191952, 41.64449777560],
[9.536, 5.60054956443, 82.85835341460],
[9.740, 1.01087744586, 68.84370773410],
[9.187, 4.49472579228, 20.60692781950],
[10.159, 3.51765739489, 529.69096509460],
[8.612, 3.88869873588, 60.76695288680],
[10.030, 4.64790204580, 77.22927912210],
[8.689, 1.96813580258, 195.13984817330],
[8.370, 4.40914764204, 134.58534360760],
[9.273, 3.93291227900, 39.61750834610],
[7.784, 5.35626068469, 75.74480641380],
[7.724, 5.77176047568, 73.81839072080],
[7.683, 4.44252070929, 14.01464568050],
[8.355, 2.44425910430, 146.59425171800],
[7.954, 5.73093878181, 184.72728735580],
[7.465, 2.18972405572, 145.10977900970],
[6.430, 0.84582374839, 32.19514480460],
[6.257, 2.17085130003, 74.89347315190],
[7.911, 0.17275924476, 120.35824960600],
[7.036, 4.12047266896, 191.20769491020],
[6.860, 2.13462553365, 116.42609634290],
[5.191, 3.11155355454, 106.97674337190],
[4.798, 2.25093144226, 46.20979048510],
[4.566, 3.45427648666, 0.75075952540],
[4.401, 3.94058045671, 6.59228213900],
[4.214, 5.17805765625, 144.14657116320],
[4.409, 0.24427052932, 92.94084583200],
[4.866, 1.15344187054, 112.91463420510],
[4.744, 5.18229292013, 81.00137369080],
[4.332, 2.52429167546, 99.16062095550],
[3.876, 2.78430217652, 565.11568774670],
[3.801, 0.75133837939, 58.10682401090],
[4.146, 5.84943984597, 221.37585028530],
[3.885, 4.95626104286, 125.98732389850],
[3.815, 3.23004401930, 479.28838891550],
[3.679, 5.28098232097, 66.91729204110],
[3.479, 2.95514470947, 74.66972398270],
[3.514, 4.90090391308, 28.31117565130],
[4.515, 4.15474629145, 344.70304530790],
[4.036, 2.28903172191, 109.94568878850],
[4.266, 2.68534591099, 7.86430652620],
[3.428, 0.02846652682, 140.00196957900],
[3.644, 5.32002093810, 408.43894361130],
[3.252, 1.44975192429, 128.95626931510],
[4.143, 1.89070487241, 277.03499374140],
[3.177, 0.04197149544, 220.41264243880],
[3.901, 6.25926496244, 0.89377187730],
[3.787, 0.02516903921, 152.74459087230],
[3.200, 0.52009458683, 2.28762186040],
[2.995, 1.94615440691, 80.19822453870],
[4.029, 5.24603808726, 96.87299909510],
[3.302, 4.81033551060, 422.66603761290],
[3.189, 6.26156603400, 456.39383923560],
[2.804, 1.35626949052, 404.50679034820],
[2.970, 0.54327361056, 159.12442469020],
[3.465, 5.88337990735, 16.67477455640],
[3.518, 4.99649404130, 36.64856292950],
[3.081, 2.82772472086, 453.42489381900],
[3.320, 1.56223495893, 23.57587323610],
[2.573, 6.19617997586, 135.54855145410],
[2.547, 5.19937103778, 173.94221952280],
[2.534, 1.85452635674, 490.33408917940],
[3.106, 6.07067928601, 142.44965013380],
[3.302, 1.02846689671, 297.64192156090],
[2.429, 1.33640100979, 211.81462272970],
[2.792, 3.89897022917, 358.93013930950],
[2.947, 5.31528985588, 55.13787859430],
[2.449, 3.44007536754, 206.18554843720],
[2.407, 4.38551271701, 60.55450456570],
[2.425, 2.22643225523, 66.70484372000],
[2.295, 2.31690029267, 31.49256938900],
[2.225, 0.41365126245, 81.37388070630],
[2.196, 0.76281798713, 17.52610781830],
[2.301, 3.60815987923, 288.08069400530],
[2.557, 0.73679737974, 200.76892246580],
[2.158, 2.61924330277, 13.33332212430],
[2.048, 6.27204714771, 98.89998852460],
[2.054, 3.61072687338, 333.65734504400],
[2.190, 2.49696729700, 76.47851959670],
[2.092, 1.66496421654, 235.39049596580],
[2.206, 2.35938756479, 347.88443904560],
[2.469, 4.70656858928, 186.21176006410],
[2.226, 5.97327738150, 1514.29129671650],
[1.851, 2.19455296942, 203.73786788240],
[1.865, 4.98207204280, 5.10780943070],
[2.171, 5.49034081907, 373.01422095920],
[1.999, 5.80509154216, 146.38180339690],
[1.903, 4.32950489567, 49.50880430180],
[1.732, 3.94794012202, 24.11838995730],
[1.747, 2.46883637489, 55.65914345610],
[1.833, 3.35110048460, 143.62530630140],
[1.686, 1.28621563322, 103.09277421860],
[1.720, 2.35857527806, 1.64453140270],
[1.641, 2.99507314472, 391.17346822390],
[1.610, 0.97420709262, 977.48678462110],
[1.696, 4.98332661473, 387.24131496080],
[1.527, 3.15107379811, 7.42236354150],
[1.570, 1.61119571428, 991.71387862270],
[1.497, 2.89637638984, 19.64371997300],
[1.507, 3.32822127349, 909.81873305460],
[1.375, 5.75263837916, 19.12245511120],
[1.407, 2.20244941425, 67.35923502580],
[1.364, 4.40006421418, 27.08733537390],
[1.357, 4.33780029649, 70.11573212130],
[1.311, 4.62202930578, 81.89514556810],
[1.307, 2.79964247834, 25.60286266560],
[1.312, 3.73623252660, 628.85158605010],
[1.286, 3.96557527092, 61.28821774860],
[1.723, 4.56068809303, 305.34616939270],
[1.313, 4.90611014973, 617.80588578620],
[1.508, 6.25017976193, 604.47256366190],
[1.235, 5.93779486368, 415.55249061210],
[1.278, 3.21119872139, 92.04707395470],
[1.357, 0.72647086107, 546.95644048200],
[1.552, 5.05296247763, 10.29494073850],
[1.230, 1.52077038294, 157.63995198190],
[1.210, 2.63049415027, 426.59819087600],
[1.206, 4.83219370572, 100.38446123290],
[1.234, 4.46203104116, 162.09337010680],
[1.174, 5.32356191090, 17.26547538740],
[1.431, 6.18138614295, 14.22709400160],
[1.244, 0.16929250603, 29.20494752860],
[1.180, 4.09719023908, 443.86366626340],
[1.180, 3.31438239649, 44.72531777680],
[1.259, 1.88793196065, 0.65439130580],
[1.263, 3.49967730885, 230.56457082540],
[1.168, 2.04071854201, 30.71067209630],
[1.523, 2.28101186489, 373.90799283650],
[1.429, 2.05075136274, 181.75834193920],
[1.065, 2.95960854361, 241.61027108930],
[1.253, 0.23639539817, 561.18353448360],
[1.255, 1.25819925760, 155.78297225810],
[1.044, 2.89293032709, 543.02428721890],
[1.062, 3.26314901318, 28.57180808220],
[1.124, 1.06535506684, 88.11492069160],
[1.186, 5.73445278027, 329.72519178090],
[1.190, 2.82438170535, 41.10198105440],
[1.067, 0.27101806190, 58.31927233200],
[1.017, 4.30527610005, 67.88049988760],
[0.959, 5.20504598622, 42.53826965290],
[0.984, 4.90934403664, 465.95506679120],
[0.944, 0.66925769374, 88.79624424780],
[1.017, 4.37095088461, 13.49338081870],
[1.222, 5.13450955699, 300.61086697750],
[0.989, 0.53937909300, 80.71948940050],
[0.890, 3.09802121989, 110.20632121940],
[1.095, 1.70637576740, 43.12897048390],
[0.992, 4.17968869928, 154.01661525950],
[0.950, 0.09841899432, 273.10284047830],
[0.870, 4.77500238443, 33.13710079170],
[0.867, 4.22078052532, 20.44686912510],
[0.830, 5.23785245773, 472.17484191470],
[0.884, 4.34377463442, 105.49227066360],
[0.812, 3.53258780148, 39.35687591520],
[1.055, 1.52219418153, 227.31374111850],
[0.963, 1.87806076896, 259.50888592310],
[0.859, 0.57844232244, 152.01087768940],
[0.861, 4.69213709412, 1059.38193018920],
[1.084, 2.79612346618, 48.75804477640],
[0.994, 2.87052008214, 454.90936652730],
[0.831, 1.62068330602, 554.06998748280],
[0.891, 2.85026036860, 32.24332891440],
[0.876, 0.83921717739, 4.73530241520],
[0.707, 6.16918394997, 3.62333672240],
[0.787, 1.95585343912, 16.46232623530],
[0.702, 5.49557046240, 558.00214074590],
[0.817, 0.38724470336, 378.64329525170],
[0.804, 2.25693582099, 16.04163511000],
[0.866, 1.80814575866, 258.87574647670],
[0.651, 3.72120167607, 286.59622129700],
[0.672, 1.00052727778, 522.57741809380],
[0.631, 4.14839739363, 141.69889060840],
[0.748, 4.19441869839, 486.40193591630],
[0.668, 0.77754011576, 120.99138905240],
[0.619, 4.31040053492, 455.87257437380],
[0.619, 4.77556598202, 453.94615868080],
[0.647, 5.74952736928, 119.50691634410],
[0.609, 0.24149609998, 117.91056905120],
[0.630, 1.79018649942, 440.68227252570],
[0.601, 1.41196883461, 218.92816973050],
[0.719, 4.27398947015, 50.40257617910],
[0.594, 3.92150462249, 25.27279426550],
[0.710, 0.45768559438, 536.80451209540],
[0.706, 6.15599144951, 258.02441321480],
[0.617, 2.80636989892, 68.56182344380],
[0.587, 5.47247350993, 767.36908292080],
[0.690, 3.48978614301, 835.03713448730],
[0.537, 4.06668446648, 450.97721326420],
[0.511, 0.60155300709, 264.50482076920],
[0.694, 1.18127476921, 129.91947716160],
[0.584, 1.94104733057, 106.27416795630],
[0.522, 5.95180617510, 518.64526483070],
[0.507, 4.39658523394, 121.84272231430],
[0.627, 2.24582628581, 218.40690486870],
[0.485, 0.02058107411, 106.01353552540],
[0.592, 2.06072766194, 296.15744885260],
[0.587, 0.18557470860, 458.09076026500],
[0.483, 1.50333774574, 150.52640498110],
[0.474, 4.99848521665, 458.84151979040],
[0.566, 1.94435189030, 699.70103135430],
[0.472, 1.86519720200, 180.16199464630],
[0.472, 0.07145793467, 216.48048917570],
[0.571, 6.01195273302, 47.06112374700],
[0.460, 3.76890954025, 342.25536475310],
[0.489, 2.96084966272, 385.75684225250],
[0.458, 1.99730631732, 275.55052103310],
[0.460, 5.75982407113, 89.75945209430],
[0.549, 1.43219978325, 171.65459766240],
[0.544, 0.04821904056, 114.39910691340],
[0.450, 1.94933296558, 148.59998928810],
[0.444, 2.94093732205, 692.58748435350],
[0.442, 2.15938034999, 173.68158709190],
[0.543, 2.61197342701, 451.72797278960],
[0.465, 0.31777753866, 756.32338265690],
[0.441, 2.82271922049, 32.71640966640],
[0.538, 2.39420182072, 339.28641933650],
[0.569, 0.84686482736, 260.99335863140],
[0.572, 5.40379754526, 278.51946644970],
[0.422, 4.61520857062, 40.16002506730],
[0.451, 4.50911201020, 142.14083359310],
[0.501, 0.18290112601, 331.32153907380],
[0.468, 0.97688759019, 760.25553592000],
[0.443, 4.58896013561, 149.67507171920],
[0.428, 1.02564850231, 469.13646052890],
[0.500, 4.34235307579, 166.82867252200],
[0.412, 5.69502940499, 92.30770638560],
[0.404, 5.18855270166, 22.63391724900],
[0.396, 3.98515136901, 31.23193695810],
[0.421, 5.47567810199, 104.00779795530],
[0.425, 3.50702044406, 180.27386923090],
[0.415, 1.52291071520, 497.44763618020],
[0.430, 2.39159932023, 39.09624348430],
[0.401, 0.55271143649, 95.38852638680],
[0.384, 2.48712922138, 210.33015002140],
[0.422, 1.02056886848, 468.24268865160],
[0.465, 5.72323435231, 183.24281464750],
[0.383, 2.63486938783, 685.47393735270],
[0.367, 5.39331524988, 874.39401040250],
[0.461, 3.57961254790, 187.69623277240],
[0.409, 4.21780704807, 181.05576652360],
[0.440, 0.36380766054, 367.97010200330],
[0.392, 5.44355925956, 26.02355379090],
[0.431, 3.83885208954, 254.94359321360],
[0.366, 2.92275490656, 291.26208774300],
[0.416, 2.54190330826, 255.05546779820],
[0.348, 0.35176743482, 46.47042291600],
[0.413, 2.41518097006, 483.22054217860],
[0.386, 4.76483292968, 268.43697403230],
[0.344, 0.20350283971, 184.09414790940],
[0.350, 1.24205287122, 97.41551581630],
[0.361, 5.68393391400, 353.30106501700],
[0.359, 2.62171903648, 162.89651925890],
[0.381, 3.38777292581, 114.94162363460],
[0.352, 2.76374792259, 295.19424100610],
[0.340, 1.34666360560, 34.20088237470],
[0.433, 1.90504858871, 123.53964334370],
[0.389, 2.41268196916, 381.61224066830],
[0.383, 3.20416581825, 79.44746501330],
[0.369, 2.15185889720, 555.55446019110],
[0.370, 2.19402183275, 562.66800719190],
[0.327, 3.40081544565, 309.27832265580],
[0.378, 5.75737470182, 916.93228005540],
[0.318, 4.53066393124, 350.33211960040],
[0.376, 1.74845257914, 545.47196777370],
[0.346, 4.15815107375, 282.66406803390],
[0.319, 4.38123849114, 154.97982310600],
[0.320, 0.81846631878, 610.69233878540],
[0.327, 5.07873875355, 189.72322220190],
[0.306, 1.71903179875, 394.35486196160],
[0.329, 1.82999432252, 706.81457835510],
[0.335, 4.78622577105, 109.31254934210],
[0.310, 5.08120849869, 376.19561469690],
[0.327, 1.87637598331, 207.88246946660],
[0.323, 1.88845451800, 192.69216761850],
[0.284, 2.88222063053, 384.05992122310],
[0.283, 4.63187254084, 332.17287233570],
[0.294, 2.84554743359, 267.47376618580],
[0.285, 0.97965330777, 113.87784205160],
[0.319, 5.09582764612, 285.63301345050],
[0.280, 0.67871105907, 312.45971639350],
[0.300, 5.93285242876, 124.29040286910],
[0.320, 4.86151247369, 448.68959140380],
[0.310, 3.75000484412, 253.57099508990],
[0.311, 5.59686590720, 271.40591944890],
[0.316, 1.89686876211, 228.27694896500],
[0.269, 0.14585942744, 142.66209845490],
[0.270, 2.12904548682, 778.41478318470],
[0.267, 0.96560769114, 90.82323367730],
[0.308, 1.38454900684, 375.39246554480],
[0.298, 3.99595366039, 451.94042111070],
[0.278, 3.38339026214, 346.39996633730],
[0.287, 1.01918432834, 905.88657979150],
[0.263, 0.16921968622, 124.50285119020],
[0.283, 5.95865378023, 362.86229257260],
[0.266, 3.07331582044, 193.65537546500],
[0.264, 5.47114459575, 133.10087089930],
[0.288, 2.78232740152, 1812.52391910840],
[0.361, 4.30140629884, 198.32124191100],
[0.257, 1.60206491208, 369.08206769610],
[0.274, 2.88347680082, 233.90602325750],
[0.267, 4.90554019072, 681.54178408960],
[0.305, 1.55983861329, 49.72125262290],
[0.253, 0.50457429429, 316.39186965660],
[0.258, 5.81453094409, 630.33605875840],
[0.280, 1.15452517706, 986.08480433020],
[0.265, 4.93584097286, 831.10498122420],
[0.246, 1.25186233620, 134.06407874580],
[0.298, 5.75927878031, 902.70518605380],
[0.240, 2.84888261768, 44.09217833040],
[0.261, 2.20643594285, 73.08467753790],
[0.321, 3.46864827820, 372.42352012820],
[0.234, 6.06783988023, 147.11551657980],
[0.262, 2.69623862046, 167.72244439930],
[0.267, 4.05985113852, 75.30286342910],
[0.240, 0.48471871511, 172.19711438360],
[0.261, 4.64354183979, 535.32003938710],
[0.244, 5.85987959874, 507.59956456680],
[0.237, 4.79666486485, 377.15882254340],
[0.224, 1.94589447357, 593.42686339800],
[0.226, 3.71637531808, 449.28029223480],
[0.233, 5.98739382153, 219.89137757700],
[0.240, 2.71609791875, 227.52618943960],
[0.221, 2.23218400256, 460.53844081980],
[0.226, 2.74516124394, 446.31134681820],
[0.221, 3.20339807670, 463.50738623640],
[0.203, 5.04975483055, 457.87831194390],
[0.191, 4.24841510229, 4.66586644600],
[0.169, 0.59358171769, 983.11585891360],
[0.179, 4.12060524413, 310.17209453310],
[0.187, 6.22165475247, 294.67297614430],
[0.162, 1.30776665222, 248.72381809010],
[0.219, 4.17413407057, 303.86169668440],
[0.193, 1.64715944768, 91.45637312370],
[0.170, 2.18067759964, 66.18357885820],
[0.156, 4.92094728667, 68.18931642830],
[0.145, 5.51404722738, 280.96714700450],
[0.144, 5.81835834612, 75.53235809270],
[0.153, 0.48549989656, 144.89733068860],
[0.168, 5.81402201452, 149.45132255000],
[0.150, 4.66632209585, 306.83064210100],
[0.131, 1.01359934164, 175.16605980020],
[0.174, 3.03279013213, 298.23262239190],
[0.163, 1.97665571311, 221.16340196420],
[0.144, 2.59058085010, 217.23124870110],
[0.167, 2.74604167580, 69.15252427480],
[0.129, 2.87574897902, 156.15547927360],
],
# L2
[
[53033.277, 0.00000000000, 0.00000000000],
[2357.636, 2.26014661705, 74.78159856730],
[769.129, 4.52561041823, 11.04570026390],
[551.533, 3.25814281023, 63.73589830340],
[541.532, 2.27573907424, 3.93215326310],
[529.473, 4.92348433826, 1.48447270830],
[257.521, 3.69059216858, 3.18139373770],
[238.835, 5.85806638405, 149.56319713460],
[181.904, 6.21763603405, 70.84944530420],
[49.401, 6.03101301723, 56.62235130260],
[53.504, 1.44225240953, 76.26607127560],
[38.222, 1.78467827781, 52.69019803950],
[44.753, 3.90904910523, 2.44768055480],
[44.530, 0.81152639478, 85.82729883120],
[37.403, 4.46228598032, 2.96894541660],
[33.029, 0.86388149962, 9.56122755560],
[24.292, 2.10702559049, 18.15924726470],
[29.423, 5.09818697708, 73.29712585900],
[22.135, 4.81730808582, 78.71375183040],
[22.491, 5.99320728691, 138.51749687070],
[17.226, 2.53537183199, 145.63104387150],
[21.392, 2.39880709309, 77.96299230500],
[20.578, 2.16918786539, 224.34479570190],
[16.777, 3.46631344086, 12.53017297220],
[12.012, 0.01941361902, 22.09140052780],
[10.466, 4.45556032593, 62.25142559510],
[11.010, 0.08496274370, 127.47179660680],
[8.668, 4.25550086984, 7.11354700080],
[10.476, 5.16453084068, 71.60020482960],
[7.160, 1.24903906391, 5.41662597140],
[8.387, 5.50115930045, 67.66805156650],
[6.087, 5.44611674384, 65.22037101170],
[6.013, 4.51836836347, 151.04766984290],
[5.718, 1.82933915340, 202.25339517410],
[6.109, 3.36320161279, 447.79581952650],
[6.003, 5.72500086735, 462.02291352810],
[5.111, 3.52374555791, 59.80374504030],
[5.155, 1.05810305746, 131.40394986990],
[5.969, 5.61147374852, 148.07872442630],
[5.065, 3.36477113418, 4.45341812490],
[4.845, 1.20298837109, 71.81265315070],
[3.979, 0.67629577193, 77.75054398390],
[3.673, 1.76315074166, 351.81659230870],
[3.149, 3.83590892865, 45.57665103870],
[3.036, 3.32062892682, 160.60889739850],
[3.033, 6.14532331482, 77.22927912210],
[3.596, 4.57256025582, 454.90936652730],
[2.664, 5.36121614612, 269.92144674060],
[2.498, 1.04819496324, 69.36497259590],
[2.307, 2.69282373897, 84.34282612290],
[2.249, 5.07693376112, 14.97785352700],
[2.228, 1.38937510191, 284.14854074220],
[2.064, 4.34647674542, 984.60033162190],
[2.105, 2.32047802326, 120.35824960600],
[1.864, 5.70354779393, 54.17467074780],
[2.005, 3.87177765185, 195.13984817330],
[1.622, 5.07964536529, 209.36694217490],
[1.597, 0.48807990368, 137.03302416240],
[1.583, 2.90536212187, 51.20572533120],
[1.725, 6.25703202673, 41.64449777560],
[2.073, 1.24032244487, 35.16409022120],
[1.543, 2.15414338268, 70.32818044240],
[1.671, 6.28283232471, 277.03499374140],
[1.494, 6.04572758571, 87.31177153950],
[1.418, 1.15843502159, 213.29909543800],
[1.239, 4.63223076077, 92.94084583200],
[1.238, 2.65969680342, 134.58534360760],
[1.273, 5.87964059822, 60.55450456570],
[1.160, 1.03320781667, 153.49535039770],
[1.430, 4.68022239016, 299.12639426920],
[1.117, 2.62506108047, 72.33391801250],
[1.142, 4.64615099782, 152.74459087230],
[0.974, 2.85233132493, 222.86032299360],
[1.046, 4.81299135934, 116.42609634290],
[0.872, 3.49659835508, 340.77089204480],
[0.952, 2.10837480840, 20.60692781950],
[0.964, 2.46471453524, 380.12776796000],
[0.843, 6.12869288891, 49.50880430180],
[0.821, 0.27134156683, 191.20769491020],
[0.813, 4.08930465981, 14.22709400160],
[0.796, 6.17066846300, 344.70304530790],
[0.924, 2.11096444289, 14.01464568050],
[0.791, 2.38927423348, 58.10682401090],
[0.781, 0.74223115950, 408.43894361130],
[0.759, 3.77564054479, 80.19822453870],
[0.884, 1.99930014838, 265.98929347750],
[0.722, 3.10001033669, 422.66603761290],
[0.750, 2.33167721991, 358.93013930950],
[0.687, 2.02866342040, 33.67961751290],
[0.603, 1.10391172652, 55.13787859430],
[0.655, 3.85415269764, 16.67477455640],
[0.606, 0.15052747979, 28.31117565130],
[0.639, 5.16714934188, 23.57587323610],
[0.658, 0.75636229109, 76.47851959670],
[0.590, 1.73778850095, 8.07675484730],
[0.565, 4.92645232089, 35.42472265210],
[0.656, 2.34273264083, 38.13303563780],
[0.542, 5.97968975563, 146.59425171800],
[0.518, 3.19086220901, 152.53214255120],
[0.536, 4.52808465499, 220.41264243880],
[0.489, 4.80633294199, 159.12442469020],
[0.491, 0.85765309118, 565.11568774670],
[0.483, 3.52583593251, 144.14657116320],
[0.521, 5.21561656321, 206.18554843720],
[0.477, 4.25420753202, 365.90067395840],
[0.466, 5.13219663072, 297.64192156090],
[0.557, 0.98387565952, 225.82926841020],
[0.531, 4.22534657450, 29.20494752860],
[0.500, 3.49663062387, 128.95626931510],
[0.445, 2.60797570173, 96.87299909510],
[0.466, 6.05585106742, 70.11573212130],
[0.425, 1.04692398351, 19.64371997300],
[0.491, 2.26123398680, 152.01087768940],
[0.455, 5.45520675000, 333.65734504400],
[0.458, 0.91654899383, 373.01422095920],
[0.520, 5.72828536642, 111.43016149680],
[0.432, 1.04604024916, 125.98732389850],
[0.387, 2.82547341355, 200.76892246580],
[0.383, 1.91679738697, 5.62907429250],
[0.504, 1.95816731769, 415.55249061210],
[0.370, 3.21958844151, 387.24131496080],
[0.379, 2.75940848661, 81.89514556810],
[0.345, 2.98021540638, 429.77958461370],
[0.368, 6.20331898497, 456.39383923560],
[0.335, 5.29062985955, 13.33332212430],
[0.320, 0.74685222907, 347.88443904560],
[0.307, 1.65925943351, 99.16062095550],
[0.284, 2.09437476480, 129.91947716160],
[0.275, 0.62680026669, 31.49256938900],
[0.339, 1.65968150805, 142.44965013380],
[0.270, 2.79378345550, 977.48678462110],
[0.284, 2.42261530322, 546.95644048200],
[0.271, 0.59225635449, 1894.41906467650],
[0.263, 3.49309481771, 440.68227252570],
[0.295, 0.43376026627, 373.90799283650],
[0.271, 4.82853730065, 561.18353448360],
[0.248, 5.72379940676, 79.23501669220],
[0.252, 5.76728095309, 235.39049596580],
[0.261, 0.09830739366, 991.71387862270],
[0.238, 1.14634663242, 288.08069400530],
[0.220, 5.12386263728, 479.28838891550],
[0.263, 1.52366362053, 146.38180339690],
[0.230, 0.35983101967, 109.94568878850],
[0.214, 2.94388765580, 184.72728735580],
[0.198, 5.72107161521, 453.42489381900],
[0.185, 4.71600176780, 108.46121608020],
[0.139, 2.99832472431, 211.81462272970],
[0.167, 1.19643522280, 39.61750834610],
[0.180, 0.80198096578, 183.24281464750],
[0.131, 2.73236351123, 522.57741809380],
[0.142, 5.03489222377, 536.80451209540],
],
# L3
[
[120.936, 0.02418789918, 74.78159856730],
[68.064, 4.12084267733, 3.93215326310],
[52.828, 2.38964061260, 11.04570026390],
[43.754, 2.95965039734, 1.48447270830],
[45.300, 2.04423798410, 3.18139373770],
[45.806, 0.00000000000, 0.00000000000],
[24.969, 4.88741307918, 63.73589830340],
[21.061, 4.54511486862, 70.84944530420],
[19.897, 2.31320314136, 149.56319713460],
[8.901, 1.57548871761, 56.62235130260],
[4.271, 0.22777319552, 18.15924726470],
[3.613, 5.39244611308, 76.26607127560],
[3.488, 4.97622811775, 85.82729883120],
[3.479, 4.12969359977, 52.69019803950],
[3.572, 0.95052448578, 77.96299230500],
[2.328, 0.85770961794, 145.63104387150],
[2.696, 0.37287796344, 78.71375183040],
[1.946, 2.67997393431, 7.11354700080],
[2.156, 5.65647821519, 9.56122755560],
[1.363, 4.86983744746, 224.34479570190],
[1.333, 1.25032115614, 12.53017297220],
[1.613, 0.48764377311, 71.60020482960],
[1.475, 5.19957293069, 73.29712585900],
[1.225, 3.93406822032, 22.09140052780],
[0.911, 2.18921999026, 127.47179660680],
[0.811, 3.98323855938, 462.02291352810],
[0.808, 5.06374463008, 447.79581952650],
[0.718, 0.34600103024, 5.62907429250],
[0.722, 1.05856935832, 138.51749687070],
[0.687, 2.93752748595, 131.40394986990],
[0.463, 1.58927254512, 151.04766984290],
[0.414, 4.32904287620, 120.35824960600],
[0.372, 0.73596518002, 269.92144674060],
[0.345, 3.05968942771, 561.18353448360],
[0.338, 5.94221536204, 284.14854074220],
[0.343, 4.01891371998, 546.95644048200],
[0.382, 5.93515231196, 45.57665103870],
[0.276, 3.44212110991, 202.25339517410],
[0.300, 1.13119175675, 160.60889739850],
[0.268, 3.24615387968, 536.80451209540],
[0.358, 1.10916640253, 333.65734504400],
[0.236, 4.65292396535, 387.24131496080],
[0.204, 5.81663798296, 373.01422095920],
[0.145, 2.75632381347, 92.94084583200],
[0.149, 0.13764106563, 71.81265315070],
[0.156, 2.90936922804, 153.49535039770],
],
# L4
[
[113.855, 3.14159265359, 0.00000000000],
[5.599, 4.57882424417, 74.78159856730],
[3.203, 0.34623003207, 11.04570026390],
[1.217, 3.42199121826, 56.62235130260],
[0.634, 4.65759668097, 18.15924726470],
[0.171, 3.80393539303, 149.56319713460],
[0.133, 4.35519131657, 63.73589830340],
],
# L5
[
[0.873, 3.14159265359, 0.00000000000]
],
]
"""This table contains Uranus' periodic terms (all of them) from the planetary
theory VSOP87 for the heliocentric longitude at the equinox of date (taken from
the 'D' solution). In Meeus' book a shortened version can be found in pages
445-448."""
VSOP87_B = [
# B0
[
[1346277.639, 2.61877810545, 74.78159856730],
[62341.405, 5.08111175856, 149.56319713460],
[61601.203, 3.14159265359, 0.00000000000],
[9963.744, 1.61603876357, 76.26607127560],
[9926.151, 0.57630387917, 73.29712585900],
[3259.455, 1.26119385960, 224.34479570190],
[2972.318, 2.24367035538, 1.48447270830],
[2010.257, 6.05550401088, 148.07872442630],
[1522.172, 0.27960386377, 63.73589830340],
[924.055, 4.03822927853, 151.04766984290],
[760.624, 6.14000431923, 71.81265315070],
[420.265, 5.21279984788, 11.04570026390],
[430.668, 3.55445034854, 213.29909543800],
[436.843, 3.38082524317, 529.69096509460],
[522.309, 3.32085194770, 138.51749687070],
[434.625, 0.34065281858, 77.75054398390],
[462.630, 0.74256727574, 85.82729883120],
[232.649, 2.25716421383, 222.86032299360],
[215.838, 1.59121704940, 38.13303563780],
[244.698, 0.78795150326, 2.96894541660],
[179.935, 3.72487952673, 299.12639426920],
[174.895, 1.23550262213, 146.59425171800],
[173.667, 1.93654269131, 380.12776796000],
[160.368, 5.33635436463, 111.43016149680],
[144.064, 5.96239326415, 35.16409022120],
[102.049, 2.61876256513, 78.71375183040],
[116.363, 5.73877190007, 70.84944530420],
[106.441, 0.94103112994, 70.32818044240],
[86.163, 0.70262506622, 39.61750834610],
[72.617, 0.20564696113, 225.82926841020],
[71.172, 0.83343269975, 109.94568878850],
[57.502, 2.67039425415, 108.46121608020],
[54.255, 3.35166579613, 184.72728735580],
[44.470, 2.74408231138, 152.53214255120],
[38.591, 5.17394663303, 202.25339517410],
[39.157, 2.17108251341, 351.81659230870],
[41.346, 3.22134319551, 160.60889739850],
[35.140, 4.00111634363, 112.91463420510],
[33.073, 3.61378095742, 221.37585028530],
[31.315, 2.71969470781, 145.10977900970],
[37.336, 4.02053241202, 52.69019803950],
[32.028, 1.29160071142, 145.63104387150],
[27.574, 3.70064266960, 36.64856292950],
[24.277, 2.84989187496, 127.47179660680],
[24.635, 1.11645461259, 3.93215326310],
[24.315, 5.48987913644, 79.23501669220],
[21.418, 0.63722900407, 277.03499374140],
[19.826, 2.59334182230, 84.34282612290],
[22.373, 5.73687615457, 4.45341812490],
[19.137, 1.30214105578, 62.25142559510],
[19.789, 4.72260849557, 297.64192156090],
[20.299, 1.06070151806, 454.90936652730],
[19.768, 5.77906142568, 305.34616939270],
[21.348, 1.01350946382, 33.67961751290],
[15.142, 2.91786832554, 426.59819087600],
[16.000, 1.95535748902, 186.21176006410],
[13.819, 2.67163927171, 74.66972398270],
[11.463, 5.73391138419, 41.10198105440],
[10.741, 3.73401569675, 1059.38193018920],
[11.450, 3.98177764866, 106.97674337190],
[10.360, 4.75567608732, 183.24281464750],
[10.232, 6.18772866993, 373.90799283650],
[13.803, 5.70712120608, 74.89347315190],
[10.553, 3.78602881738, 490.33408917940],
[11.838, 5.96756415681, 87.31177153950],
[10.030, 1.74828757238, 22.09140052780],
[10.107, 0.92911975959, 65.22037101170],
[9.127, 5.11093790809, 153.49535039770],
[12.093, 2.53736362742, 9.56122755560],
[8.646, 4.18351923569, 12.53017297220],
[9.978, 5.83600622359, 604.47256366190],
[11.352, 2.12645777694, 68.84370773410],
[8.472, 3.36885457285, 72.33391801250],
[7.797, 5.11771906359, 77.96299230500],
[8.302, 5.19247905162, 77.22927912210],
[7.696, 3.25189037096, 71.60020482960],
[7.513, 2.98265970100, 114.39910691340],
[6.947, 3.31871016057, 56.62235130260],
[6.490, 0.88434578474, 288.08069400530],
[6.394, 3.51142812432, 220.41264243880],
[6.211, 0.58222518453, 340.77089204480],
[6.772, 4.09374798222, 137.03302416240],
[5.595, 5.68643434536, 259.50888592310],
[5.309, 2.65421183211, 300.61086697750],
[4.950, 4.99672086239, 219.89137757700],
[6.419, 0.44895727879, 140.00196957900],
[4.975, 4.06722486039, 143.62530630140],
[5.692, 3.76563463180, 67.66805156650],
[4.853, 2.03383592524, 415.55249061210],
[3.796, 1.26231186682, 75.30286342910],
[3.807, 2.24787582155, 909.81873305460],
[3.812, 3.10475682509, 181.75834193920],
[3.764, 5.20052090560, 227.31374111850],
[3.445, 5.91769433069, 296.15744885260],
[3.517, 5.44397685665, 628.85158605010],
[3.943, 4.95136058926, 265.98929347750],
[3.472, 0.34737998380, 131.40394986990],
[3.390, 0.53497504164, 206.18554843720],
[3.038, 4.68314286209, 159.12442469020],
[3.190, 5.68929316349, 235.39049596580],
[3.303, 2.09359507373, 73.81839072080],
[3.069, 4.49065085092, 66.70484372000],
[3.285, 0.00780313833, 75.74480641380],
[2.917, 4.21615078632, 258.02441321480],
[3.747, 0.82999983666, 74.26033370550],
[2.814, 3.96708337625, 82.85835341460],
[2.474, 3.81319259323, 7.11354700080],
[2.394, 2.21483198491, 54.17467074780],
[2.555, 2.97023907145, 378.64329525170],
[2.631, 1.55153254691, 154.01661525950],
[2.633, 2.28385552693, 32.19514480460],
[2.643, 3.96832729680, 381.61224066830],
[2.206, 3.06995275892, 59.80374504030],
[2.635, 0.53987945692, 211.81462272970],
[2.071, 1.97429082033, 18.15924726470],
[2.485, 3.55433846990, 96.87299909510],
[2.061, 4.50102695788, 5.93789083320],
[1.916, 1.60538526374, 80.19822453870],
[2.480, 0.63321072542, 187.69623277240],
[2.039, 2.97351088965, 191.20769491020],
[1.833, 1.95824865568, 81.89514556810],
[1.719, 2.22526635038, 479.28838891550],
[1.745, 3.22821992592, 218.40690486870],
[1.857, 1.66304484985, 984.60033162190],
[1.766, 5.24239122261, 105.49227066360],
[1.524, 6.05374020264, 99.16062095550],
[1.519, 0.94716867229, 372.42352012820],
[1.614, 3.39986066169, 230.56457082540],
[1.711, 3.44237080993, 522.57741809380],
[1.504, 1.34653259405, 74.52096613640],
[1.577, 4.38020936720, 80.71948940050],
[1.360, 5.48691240270, 74.82978267710],
[1.364, 4.56045715617, 42.58645376270],
[1.398, 0.33827838973, 142.44965013380],
[1.709, 3.63188407264, 554.06998748280],
[1.360, 2.89305157919, 74.73341445750],
[1.260, 5.50922979275, 74.94165726170],
[1.374, 4.39897993200, 260.99335863140],
[1.366, 2.15288773765, 162.09337010680],
[1.244, 4.97789913094, 149.45132255000],
[1.269, 0.84167691738, 767.36908292080],
[1.278, 4.53585702916, 294.67297614430],
[1.342, 5.11117141196, 51.20572533120],
[1.180, 0.79882196802, 116.42609634290],
[1.495, 0.74986873597, 75.04223099820],
[1.207, 3.67288675913, 20.60692781950],
[1.181, 4.39598416757, 180.27386923090],
[1.248, 3.13312504066, 67.35923502580],
[1.263, 2.87116663203, 74.62153987290],
[1.380, 3.76141611602, 92.94084583200],
[1.113, 3.87133607367, 39.35687591520],
[1.018, 6.20393099094, 835.03713448730],
[0.962, 3.30343472839, 255.05546779820],
[1.238, 1.73023505315, 149.67507171920],
[0.970, 1.71236273285, 115.88357962170],
[1.001, 5.49914631698, 256.53994050650],
[0.921, 3.07729879788, 8.07675484730],
[0.914, 0.00764291274, 536.80451209540],
[0.911, 6.23753038018, 200.76892246580],
[0.956, 5.76811833839, 128.95626931510],
[0.999, 0.33400530567, 404.50679034820],
[0.952, 3.00456073496, 14.97785352700],
[0.765, 3.45454533660, 214.78356814630],
[0.800, 3.20912932090, 28.31117565130],
[0.799, 4.11425365829, 125.98732389850],
[1.021, 1.79905869707, 3.18139373770],
[0.706, 5.80210566917, 157.63995198190],
[0.715, 5.56313177065, 146.38180339690],
[0.689, 1.84748347121, 41.64449777560],
[0.682, 5.16479782395, 74.03083904190],
[0.673, 2.65544175682, 75.53235809270],
[0.723, 4.75905991606, 331.32153907380],
[0.730, 2.25510749124, 453.42489381900],
[0.691, 3.58561635364, 362.86229257260],
[0.641, 5.77408891198, 110.20632121940],
[0.671, 5.96862039131, 135.54855145410],
[0.631, 1.97807297205, 639.89728631400],
[0.774, 0.42035450706, 565.11568774670],
[0.705, 2.94649553712, 60.76695288680],
[0.663, 5.32574112049, 142.14083359310],
[0.612, 2.01741578932, 195.13984817330],
[0.749, 5.56828487823, 2.44768055480],
[0.798, 0.90969731665, 152.01087768940],
[0.747, 5.07639466593, 89.75945209430],
[0.650, 4.56215718085, 216.92243216040],
[0.651, 2.80626026285, 50.40257617910],
[0.593, 1.89556258897, 203.73786788240],
[0.550, 2.90625551534, 68.18931642830],
[0.548, 3.75628845322, 617.80588578620],
[0.554, 2.78135114877, 14.01464568050],
[0.530, 3.51385025328, 291.70403072770],
[0.506, 4.94619342366, 81.37388070630],
[0.649, 5.74895589744, 141.48644228730],
[0.593, 5.40734033998, 692.58748435350],
[0.544, 2.99910512780, 152.74459087230],
[0.485, 2.36317665443, 448.68959140380],
[0.481, 5.81647231299, 134.58534360760],
[0.517, 4.97759795528, 387.24131496080],
[0.573, 2.46311368783, 81.00137369080],
[0.470, 1.30184316812, 228.27694896500],
[0.475, 0.53480492526, 303.86169668440],
[0.485, 6.21247575899, 5.41662597140],
[0.468, 0.55881267334, 23.57587323610],
[0.585, 4.67924542643, 88.79624424780],
[0.512, 5.86200059955, 293.18850343600],
[0.445, 2.50076311432, 905.88657979150],
[0.501, 4.79997295899, 306.83064210100],
[0.418, 5.21379084769, 35.42472265210],
[0.408, 5.69107313998, 284.14854074220],
[0.474, 3.03149617428, 286.59622129700],
[0.432, 4.20907682097, 278.51946644970],
[0.506, 2.05348204197, 373.01422095920],
[0.410, 5.30637634877, 95.38852638680],
[0.478, 2.41106642594, 358.93013930950],
[0.536, 1.82614772260, 114.13847448250],
[0.383, 5.54541241459, 419.48464387520],
[0.413, 0.03813081773, 103.09277421860],
[0.368, 4.08526832792, 1589.07289528380],
[0.369, 1.82533858431, 334.29048449040],
[0.491, 5.58913582973, 68.56182344380],
[0.387, 0.56619310480, 602.98809095360],
[0.427, 5.08349119654, 367.97010200330],
[0.475, 0.17507881032, 120.35824960600],
[0.342, 5.27187859255, 28.57180808220],
[0.407, 2.00853504718, 679.25416222920],
[0.381, 4.61366060949, 329.72519178090],
[0.388, 0.88856038803, 483.22054217860],
[0.376, 1.28856348513, 155.78297225810],
[0.326, 6.09140263554, 456.39383923560],
[0.318, 0.09996195379, 69.36497259590],
[0.292, 5.11578046796, 375.39246554480],
[0.299, 6.04121646505, 332.80601178210],
[0.328, 3.47252263966, 73.40900044360],
[0.283, 1.81773059325, 647.01083331480],
[0.308, 3.50154864071, 30.71067209630],
[0.283, 1.88910019831, 24.37902238820],
[0.278, 3.85507901929, 760.25553592000],
[0.273, 4.22941219477, 391.17346822390],
[0.293, 5.44464406156, 477.91579079180],
[0.289, 3.85492516765, 209.36694217490],
[0.309, 1.97045147502, 543.02428721890],
[0.324, 5.57191515554, 501.37978944330],
[0.248, 2.17741598681, 611.58611066270],
[0.245, 1.04008534095, 1332.48477066750],
[0.248, 6.19516038159, 1134.16352875650],
[0.242, 1.37720813333, 121.25202148330],
[0.233, 0.50933224249, 462.02291352810],
[0.319, 4.24219881040, 328.35259365720],
[0.244, 6.00644853640, 295.19424100610],
[0.228, 0.72608678727, 233.90602325750],
[0.223, 5.35785607671, 983.11585891360],
[0.304, 5.68101077712, 189.18070548070],
[0.223, 2.04168197187, 370.93904741990],
[0.245, 4.69742022955, 316.39186965660],
[0.217, 4.33845164683, 269.92144674060],
[0.267, 0.15744446718, 10213.28554621100],
[0.210, 5.84975171904, 147.11551657980],
[0.224, 3.04829549918, 1439.50969814920],
[0.226, 0.72248476212, 45.57665103870],
[0.202, 1.37341689387, 302.09533968580],
[0.207, 6.13936312021, 344.70304530790],
[0.228, 2.33602531859, 150.52640498110],
[0.203, 2.38070591912, 275.55052103310],
[0.194, 5.11344829813, 1215.16490244730],
[0.259, 2.78974616768, 144.14657116320],
[0.199, 3.21010368905, 7.42236354150],
[0.246, 6.15106498377, 6.21977512350],
[0.180, 4.70377036870, 518.64526483070],
[0.186, 3.85070006482, 46.20979048510],
[0.175, 3.72163733058, 150.08446199640],
[0.165, 1.87245210311, 310.17209453310],
[0.166, 3.24028819042, 173.94221952280],
[0.181, 0.39521867351, 0.96320784650],
[0.144, 1.78180338482, 531.17543780290],
[0.137, 6.20635855175, 369.45457471160],
[0.136, 4.00164375048, 526.72201967800],
[0.141, 4.02238453909, 350.33211960040],
[0.125, 5.28865037145, 329.83706636550],
[0.134, 3.97421067761, 228.79821382680],
[0.132, 4.52023845365, 148.59998928810],
[0.125, 4.24724390191, 248.72381809010],
[0.120, 4.08565783859, 154.97982310600],
[0.133, 3.16576403244, 262.47783133970],
],
# B1
[
[206366.162, 4.12394311407, 74.78159856730],
[8563.230, 0.33819986165, 149.56319713460],
[1725.703, 2.12193159895, 73.29712585900],
[1368.860, 3.06861722047, 76.26607127560],
[1374.449, 0.00000000000, 0.00000000000],
[399.847, 2.84767037795, 224.34479570190],
[450.639, 3.77656180977, 1.48447270830],
[307.214, 1.25456766737, 148.07872442630],
[154.336, 3.78575467747, 63.73589830340],
[110.888, 5.32888676461, 138.51749687070],
[112.432, 5.57299891505, 151.04766984290],
[83.493, 3.59152795558, 71.81265315070],
[55.573, 3.40135416354, 85.82729883120],
[41.377, 4.45476669141, 78.71375183040],
[53.690, 1.70455769943, 77.75054398390],
[41.912, 1.21476607434, 11.04570026390],
[31.959, 3.77446207748, 222.86032299360],
[30.297, 2.56371683644, 2.96894541660],
[26.977, 5.33695500294, 213.29909543800],
[26.222, 0.41620628369, 380.12776796000],
[20.094, 5.93085633510, 529.69096509460],
[22.992, 2.48887389394, 146.59425171800],
[19.590, 5.37213500014, 299.12639426920],
[20.408, 3.70179681605, 70.84944530420],
[19.102, 1.09213276596, 111.43016149680],
[19.411, 3.83015453768, 38.13303563780],
[10.847, 2.66326308043, 3.93215326310],
[10.249, 2.31278807720, 109.94568878850],
[9.405, 2.76950513184, 39.61750834610],
[7.660, 1.81108462850, 225.82926841020],
[8.082, 4.69064168719, 184.72728735580],
[6.584, 5.50417589189, 35.16409022120],
[7.410, 1.17879753422, 65.22037101170],
[6.451, 4.98294064391, 71.60020482960],
[6.089, 1.31830108565, 52.69019803950],
[4.768, 5.90574941745, 145.63104387150],
[4.840, 4.86390682412, 221.37585028530],
[4.192, 3.29643787103, 77.96299230500],
[4.711, 4.24289069791, 152.53214255120],
[4.894, 6.01164167429, 160.60889739850],
[3.738, 4.75287390209, 70.32818044240],
[3.481, 0.64108927026, 153.49535039770],
[3.758, 3.94715595219, 351.81659230870],
[3.114, 0.10537144899, 112.91463420510],
[2.788, 4.24118032837, 74.66972398270],
[2.505, 0.04576283378, 297.64192156090],
[2.563, 4.15665405963, 305.34616939270],
[2.544, 5.25903565788, 56.62235130260],
[2.247, 4.24726481845, 36.64856292950],
[2.541, 0.40106060407, 77.22927912210],
[2.212, 2.88960413468, 277.03499374140],
[2.299, 3.57748029365, 186.21176006410],
[2.661, 0.53230319176, 79.23501669220],
[2.157, 2.10150995852, 127.47179660680],
[2.265, 1.41055702214, 4.45341812490],
[2.103, 4.27438518414, 22.09140052780],
[1.861, 3.75619999278, 145.10977900970],
[1.759, 2.10240976488, 131.40394986990],
[1.661, 4.84483054269, 62.25142559510],
[1.496, 1.72084298116, 220.41264243880],
[1.659, 5.86539712478, 454.90936652730],
[1.428, 0.31508367934, 137.03302416240],
[1.522, 1.00801468633, 75.74480641380],
[1.459, 6.17427145114, 426.59819087600],
[1.463, 5.14953143442, 84.34282612290],
[1.453, 2.22988903923, 206.18554843720],
[1.358, 5.85111427068, 183.24281464750],
[1.405, 2.43582184515, 87.31177153950],
[1.495, 5.55621838458, 67.66805156650],
[1.317, 1.91178535183, 140.00196957900],
[1.068, 1.51430678116, 373.90799283650],
[1.439, 0.99170994448, 74.89347315190],
[1.065, 4.15616015505, 288.08069400530],
[1.096, 1.63909426062, 41.10198105440],
[1.189, 0.90595784409, 33.67961751290],
[0.961, 5.48175535705, 490.33408917940],
[0.851, 0.95029849401, 909.81873305460],
[0.820, 0.78610123063, 259.50888592310],
[0.881, 4.31294603221, 9.56122755560],
[0.708, 0.00007309836, 81.89514556810],
[0.709, 3.18853632737, 80.19822453870],
[0.786, 5.18884635415, 114.39910691340],
[0.822, 0.01949759759, 18.15924726470],
[0.656, 6.16899483115, 96.87299909510],
[0.879, 1.82006610038, 73.81839072080],
[0.872, 0.30134022304, 12.53017297220],
[0.860, 0.21225398802, 3.18139373770],
[0.637, 2.64378420008, 75.30286342910],
[0.727, 0.02846968582, 66.70484372000],
[0.600, 4.42462853209, 415.55249061210],
[0.590, 4.17885957237, 300.61086697750],
[0.610, 6.07202921132, 219.89137757700],
[0.611, 0.97629869063, 296.15744885260],
[0.635, 2.21125075603, 74.26033370550],
[0.529, 2.35940463062, 7.11354700080],
[0.622, 2.21801944850, 211.81462272970],
[0.519, 2.01872911223, 142.44965013380],
[0.489, 1.83419944488, 92.94084583200],
[0.445, 2.51784247184, 604.47256366190],
[0.413, 5.36482818305, 82.85835341460],
[0.445, 0.33164113115, 227.31374111850],
[0.456, 2.44190834824, 381.61224066830],
[0.378, 1.91873737843, 202.25339517410],
[0.509, 5.83556856314, 191.20769491020],
[0.455, 5.15414537021, 522.57741809380],
[0.419, 2.80644155875, 72.33391801250],
[0.333, 0.32014837950, 2.44768055480],
[0.360, 1.47248643716, 378.64329525170],
[0.306, 0.15517399606, 159.12442469020],
[0.301, 4.46417652272, 536.80451209540],
[0.353, 0.48749845867, 128.95626931510],
[0.351, 6.24769322491, 5.93789083320],
[0.298, 1.71815652029, 235.39049596580],
[0.315, 2.44922921309, 187.69623277240],
[0.318, 0.70176359510, 181.75834193920],
[0.314, 4.68400251693, 14.97785352700],
[0.282, 3.70093718573, 108.46121608020],
[0.272, 3.91340553608, 617.80588578620],
[0.273, 3.29483889428, 387.24131496080],
[0.323, 4.90410549341, 258.02441321480],
[0.288, 4.42249612833, 195.13984817330],
[0.250, 1.23231297183, 703.63318461740],
[0.338, 2.84645768890, 154.01661525950],
[0.297, 1.16538119842, 146.38180339690],
[0.248, 4.90614051989, 41.64449777560],
[0.275, 5.35665949805, 80.71948940050],
[0.257, 1.82441994046, 230.56457082540],
[0.234, 0.27679874465, 33.13710079170],
[0.280, 1.73679618032, 265.98929347750],
[0.229, 0.49529839431, 74.82978267710],
[0.229, 4.18462288684, 74.73341445750],
[0.253, 2.63817804331, 74.52096613640],
[0.252, 2.04143912495, 75.04223099820],
[0.213, 4.16218259902, 74.62153987290],
[0.212, 0.51761494342, 74.94165726170],
[0.201, 4.54140547837, 20.60692781950],
[0.194, 4.17282454759, 116.42609634290],
[0.213, 2.29528235429, 32.19514480460],
[0.174, 3.15418942153, 228.27694896500],
[0.194, 0.06960211137, 42.58645376270],
[0.173, 5.59700344643, 68.84370773410],
[0.159, 4.91721631097, 143.62530630140],
[0.150, 0.92771324396, 404.50679034820],
[0.136, 2.51083022906, 372.42352012820],
[0.134, 3.22507836958, 479.28838891550],
[0.124, 0.42063711585, 149.45132255000],
[0.122, 1.20639876458, 5.41662597140],
[0.119, 0.45375065997, 74.03083904190],
[0.146, 5.08207330360, 294.67297614430],
[0.118, 4.22640788890, 75.53235809270],
[0.118, 1.50613822829, 344.70304530790],
[0.121, 2.13544759505, 209.36694217490],
[0.121, 6.08239076370, 260.99335863140],
[0.154, 4.18369977366, 39.35687591520],
],
# B2
[
[9211.656, 5.80044305785, 74.78159856730],
[556.926, 0.00000000000, 0.00000000000],
[286.265, 2.17729776353, 149.56319713460],
[94.969, 3.84237569809, 73.29712585900],
[45.419, 4.87822046064, 76.26607127560],
[20.107, 5.46264485369, 1.48447270830],
[14.793, 0.87983715652, 138.51749687070],
[13.963, 5.07234043994, 63.73589830340],
[14.261, 2.84517742687, 148.07872442630],
[10.122, 5.00290894862, 224.34479570190],
[8.299, 6.26655615197, 78.71375183040],
[4.729, 5.16274174929, 71.81265315070],
[3.816, 6.28224514574, 85.82729883120],
[3.488, 3.53472172445, 11.04570026390],
[2.555, 1.44444215715, 151.04766984290],
[2.353, 4.23069776466, 3.93215326310],
[2.585, 0.41383633246, 71.60020482960],
[1.394, 4.13126838571, 146.59425171800],
[1.183, 3.68471361409, 77.75054398390],
[1.103, 5.54212014132, 222.86032299360],
[1.205, 5.05109252937, 380.12776796000],
[1.146, 1.95280464754, 529.69096509460],
[0.977, 1.52652616357, 77.96299230500],
[1.025, 4.33698643491, 2.96894541660],
[0.858, 2.78728745263, 111.43016149680],
[0.868, 5.55175791193, 38.13303563780],
[0.633, 0.41074353315, 213.29909543800],
[0.596, 5.39265533517, 127.47179660680],
[0.586, 4.00404667232, 109.94568878850],
[0.543, 2.40369406419, 153.49535039770],
[0.486, 2.05237757516, 299.12639426920],
[0.557, 3.13408880388, 65.22037101170],
[0.457, 3.96543219832, 454.90936652730],
[0.481, 2.81511187371, 160.60889739850],
[0.421, 2.16819778071, 56.62235130260],
[0.326, 4.52920012430, 39.61750834610],
[0.308, 6.26508780547, 70.32818044240],
[0.338, 5.14594268587, 3.18139373770],
[0.288, 0.47061435406, 22.09140052780],
[0.336, 4.23512034174, 35.16409022120],
[0.316, 3.93430525759, 52.69019803950],
[0.306, 1.10359318443, 70.84944530420],
[0.250, 3.58780257084, 202.25339517410],
[0.239, 4.77679306080, 87.31177153950],
[0.227, 2.74138067839, 12.53017297220],
[0.263, 1.59203582407, 84.34282612290],
[0.215, 3.88195737361, 131.40394986990],
[0.216, 5.80700510713, 74.66972398270],
[0.264, 1.82574036051, 77.22927912210],
[0.222, 0.04111883550, 184.72728735580],
[0.197, 1.56602555362, 9.56122755560],
[0.193, 2.26416938160, 75.74480641380],
[0.179, 2.69065316892, 145.63104387150],
[0.170, 2.75844544119, 73.81839072080],
[0.155, 3.55393249110, 18.15924726470],
[0.174, 4.76111441901, 277.03499374140],
[0.140, 0.28714762870, 221.37585028530],
[0.134, 1.29065526326, 206.18554843720],
[0.127, 6.17908901556, 62.25142559510],
[0.116, 6.26646620658, 220.41264243880],
],
# B3
[
[267.832, 1.25097888291, 74.78159856730],
[11.048, 3.14159265359, 0.00000000000],
[6.154, 4.00663614486, 149.56319713460],
[3.361, 5.77804694935, 73.29712585900],
[1.602, 1.05657834344, 63.73589830340],
[1.265, 1.66795295537, 78.71375183040],
[1.183, 2.58856450374, 138.51749687070],
[1.087, 0.28687213135, 76.26607127560],
[0.640, 1.87238784591, 71.60020482960],
[0.590, 0.80206040001, 1.48447270830],
[0.467, 4.42872012006, 148.07872442630],
[0.272, 4.00684090176, 85.82729883120],
[0.203, 0.60406901282, 71.81265315070],
[0.180, 5.55657564049, 3.93215326310],
[0.168, 4.67745630044, 70.84944530420],
[0.170, 2.93672195979, 11.04570026390],
],
# B4
[
[5.719, 2.85499529315, 74.78159856730],
[0.300, 3.14159265359, 0.00000000000]
],
]
"""This table contains Uranus' periodic terms (all of them) from the planetary
theory VSOP87 for the heliocentric latitude at the equinox of date (taken from
the 'D' solution). In Meeus' book a shortened version can be found in pages
448-449."""
VSOP87_R = [
# R0
[
[1921264847.881, 0.00000000000, 0.00000000000],
[88784984.055, 5.60377526994, 74.78159856730],
[3440835.545, 0.32836098991, 73.29712585900],
[2055653.495, 1.78295170028, 149.56319713460],
[649321.851, 4.52247298119, 76.26607127560],
[602248.144, 3.86003820462, 63.73589830340],
[496404.171, 1.40139934716, 454.90936652730],
[338525.522, 1.58002682946, 138.51749687070],
[243508.222, 1.57086595074, 71.81265315070],
[190521.915, 1.99809364502, 1.48447270830],
[161858.251, 2.79137863469, 148.07872442630],
[143705.902, 1.38368574483, 11.04570026390],
[93192.359, 0.17437193645, 36.64856292950],
[71424.265, 4.24509327405, 224.34479570190],
[89805.842, 3.66105366329, 109.94568878850],
[39009.624, 1.66971128869, 70.84944530420],
[46677.322, 1.39976563936, 35.16409022120],
[39025.681, 3.36234710692, 277.03499374140],
[36755.160, 3.88648934736, 146.59425171800],
[30348.875, 0.70100446346, 151.04766984290],
[29156.264, 3.18056174556, 77.75054398390],
[20471.584, 1.55588961500, 202.25339517410],
[25620.360, 5.25656292802, 380.12776796000],
[25785.805, 3.78537741503, 85.82729883120],
[22637.152, 0.72519137745, 529.69096509460],
[20473.163, 2.79639811626, 70.32818044240],
[17900.561, 0.55455488605, 2.96894541660],
[12328.151, 5.96039150918, 127.47179660680],
[14701.566, 4.90434406648, 108.46121608020],
[11494.701, 0.43774027872, 65.22037101170],
[15502.809, 5.35405037603, 38.13303563780],
[10792.699, 1.42104858472, 213.29909543800],
[11696.085, 3.29825599114, 3.93215326310],
[11959.355, 1.75044072173, 984.60033162190],
[12896.507, 2.62154018241, 111.43016149680],
[11852.996, 0.99342814582, 52.69019803950],
[9111.446, 4.99638600045, 62.25142559510],
[8420.550, 5.25350716616, 222.86032299360],
[7449.125, 0.79491905956, 351.81659230870],
[8402.147, 5.03877516489, 415.55249061210],
[6046.370, 5.67960948357, 78.71375183040],
[5524.133, 3.11499484161, 9.56122755560],
[7329.454, 3.97277527840, 183.24281464750],
[5444.878, 5.10575635361, 145.10977900970],
[5238.103, 2.62960141797, 33.67961751290],
[4079.167, 3.22064788674, 340.77089204480],
[3801.606, 6.10985558505, 184.72728735580],
[3919.476, 4.25015288873, 39.61750834610],
[2940.492, 2.14637460319, 137.03302416240],
[3781.219, 3.45840272873, 456.39383923560],
[2942.239, 0.42393808854, 299.12639426920],
[3686.787, 2.48718116535, 453.42489381900],
[3101.743, 4.14031063896, 219.89137757700],
[2962.641, 0.82977991995, 56.62235130260],
[2937.799, 3.67657450930, 140.00196957900],
[2865.128, 0.30996903761, 12.53017297220],
[2538.032, 4.85457831993, 131.40394986990],
[1962.510, 5.24342224065, 84.34282612290],
[2363.550, 0.44253328372, 554.06998748280],
[1979.394, 6.12836181686, 106.97674337190],
[2182.572, 2.94040431638, 305.34616939270],
[1962.974, 0.04114739120, 221.37585028530],
[1829.560, 4.01105771632, 68.84370773410],
[1642.920, 0.35564102554, 67.66805156650],
[1584.850, 3.16267171762, 225.82926841020],
[1848.655, 2.91111759376, 909.81873305460],
[1632.430, 4.23061792837, 22.09140052780],
[1401.390, 1.39084023521, 265.98929347750],
[1403.717, 5.63563637532, 4.45341812490],
[1655.866, 1.96431297431, 79.23501669220],
[1248.978, 5.44027380866, 54.17467074780],
[1563.447, 1.47917835549, 112.91463420510],
[1248.054, 4.88984353601, 479.28838891550],
[1197.439, 2.52185744943, 145.63104387150],
[1506.952, 5.24186185583, 181.75834193920],
[1481.746, 5.66203046912, 152.53214255120],
[1438.838, 1.53046287618, 447.79581952650],
[1408.514, 4.41921749601, 462.02291352810],
[1477.112, 4.32214690647, 256.53994050650],
[1228.314, 5.97703331040, 59.80374504030],
[1249.958, 6.24484546141, 160.60889739850],
[906.468, 5.62025869483, 74.66972398270],
[1090.681, 4.15393813845, 77.96299230500],
[844.931, 0.12943398585, 82.85835341460],
[900.363, 2.37315925843, 74.89347315190],
[1071.957, 1.74286714339, 528.20649238630],
[689.708, 3.08097059985, 69.36497259590],
[593.798, 4.50074517056, 8.07675484730],
[718.559, 4.00047509264, 128.95626931510],
[699.574, 0.03987168068, 143.62530630140],
[575.656, 5.89552672641, 66.70484372000],
[759.004, 2.13700057433, 692.58748435350],
[710.449, 5.41605755095, 218.40690486870],
[548.672, 5.62811496970, 3.18139373770],
[651.632, 4.42340061551, 18.15924726470],
[539.825, 6.20788667166, 71.60020482960],
[544.539, 5.69375108253, 203.73786788240],
[710.276, 4.21967260022, 381.61224066830],
[593.819, 3.83805798523, 32.19514480460],
[710.134, 4.48972171999, 293.18850343600],
[705.482, 0.45521177725, 835.03713448730],
[588.000, 5.08252923316, 186.21176006410],
[598.231, 0.35815291076, 269.92144674060],
[641.914, 2.71127457036, 87.31177153950],
[495.621, 2.65094755989, 200.76892246580],
[630.252, 4.46146214548, 275.55052103310],
[575.195, 5.57862480486, 2.44768055480],
[569.870, 1.63930932740, 77.22927912210],
[556.672, 1.07231961344, 1059.38193018920],
[449.439, 0.27981733949, 617.80588578620],
[463.608, 1.43448297993, 297.64192156090],
[436.547, 0.52802035072, 209.36694217490],
[463.938, 2.35443114417, 211.81462272970],
[435.943, 2.10077211065, 1514.29129671650],
[515.534, 3.23274579379, 284.14854074220],
[454.879, 4.08364210459, 99.16062095550],
[477.430, 2.89397217998, 39.35687591520],
[542.331, 5.39481705077, 278.51946644970],
[410.087, 3.04968860441, 404.50679034820],
[367.848, 0.71159607058, 125.98732389850],
[503.096, 5.83931251717, 191.20769491020],
[487.532, 0.06402454583, 60.76695288680],
[455.043, 2.59321186669, 490.33408917940],
[436.291, 2.08183813746, 51.20572533120],
[435.803, 2.79445203085, 75.74480641380],
[323.546, 4.82899980859, 195.13984817330],
[359.363, 0.00868012078, 35.42472265210],
[429.314, 3.08031550488, 41.10198105440],
[320.021, 5.48625497747, 14.97785352700],
[414.331, 0.09012800478, 258.02441321480],
[379.715, 0.05832815311, 378.64329525170],
[420.062, 2.25393983318, 81.00137369080],
[357.721, 4.71414305625, 173.94221952280],
[358.922, 0.35213227553, 426.59819087600],
[405.410, 6.12263257999, 24.37902238820],
[365.158, 5.59483211224, 255.05546779820],
[308.102, 3.92355394354, 116.42609634290],
[325.660, 4.71996698332, 134.58534360760],
[292.781, 3.99521194830, 72.33391801250],
[386.543, 0.68619006966, 230.56457082540],
[305.686, 3.76108783519, 344.70304530790],
[286.972, 1.84990335310, 153.49535039770],
[353.640, 4.65717995107, 329.83706636550],
[302.051, 0.13190003806, 565.11568774670],
[241.128, 1.60454142389, 81.37388070630],
[249.829, 4.24205256241, 75.30286342910],
[245.063, 5.94905404273, 20.60692781950],
[248.277, 1.06282887181, 105.49227066360],
[305.353, 2.55534744586, 6208.29425142410],
[296.328, 4.21100245276, 1364.72809958190],
[219.938, 2.96119055727, 120.35824960600],
[233.564, 2.97074409938, 46.20979048510],
[262.422, 3.83652250971, 831.10498122420],
[233.546, 4.48117006140, 628.85158605010],
[187.432, 3.03529190348, 135.54855145410],
[216.776, 3.42907414802, 241.61027108930],
[255.760, 1.16707893460, 177.87437278590],
[220.458, 0.19633492290, 180.27386923090],
[224.519, 0.40677777819, 114.39910691340],
[205.398, 2.30380942634, 259.50888592310],
[211.106, 4.93079982424, 103.09277421860],
[175.758, 5.50822822216, 7.11354700080],
[188.512, 2.23588941288, 5.41662597140],
[171.718, 5.21730232334, 41.64449777560],
[176.136, 1.95958319897, 756.32338265690],
[170.447, 4.94978757413, 206.18554843720],
[169.454, 4.04319823722, 55.65914345610],
[219.015, 0.24790282027, 294.67297614430],
[187.768, 2.04538775456, 408.43894361130],
[182.258, 0.70728384467, 391.17346822390],
[192.095, 5.76718231319, 291.70403072770],
[153.684, 4.70659406659, 543.02428721890],
[170.043, 4.50995820508, 288.08069400530],
[164.097, 5.22527540372, 67.35923502580],
[194.341, 6.11690364710, 414.06801790380],
[168.027, 5.25810639105, 518.64526483070],
[156.641, 0.66304836778, 220.41264243880],
[182.330, 0.78383856974, 417.03696332040],
[167.462, 4.92241597775, 422.66603761290],
[170.770, 2.30927162659, 98.89998852460],
[161.678, 3.27259601116, 443.86366626340],
[132.763, 2.88875442023, 373.90799283650],
[161.140, 3.82341391177, 451.94042111070],
[179.292, 4.82405681293, 366.48562929500],
[178.153, 3.98026039043, 10138.50394764370],
[141.929, 1.26972581554, 159.12442469020],
[153.750, 4.27847681414, 45.57665103870],
[161.513, 4.99545008738, 73.81839072080],
[146.315, 2.65664902119, 465.95506679120],
[124.875, 4.30470898895, 339.28641933650],
[154.620, 4.32046228120, 760.25553592000],
[142.894, 2.07773752143, 457.87831194390],
[152.408, 4.64742446768, 155.78297225810],
[116.389, 4.43513730944, 5.93789083320],
[113.444, 4.65351596266, 80.19822453870],
[107.611, 3.77290419929, 142.44965013380],
[133.740, 5.30894739047, 14.01464568050],
[116.104, 2.51182725670, 296.15744885260],
[129.106, 0.36277717661, 96.87299909510],
[122.766, 2.38341351026, 141.48644228730],
[101.368, 1.05739625315, 92.30770638560],
[114.669, 6.24863527978, 767.36908292080],
[113.283, 0.83051319425, 100.38446123290],
[107.199, 2.39365512354, 347.88443904560],
[95.443, 0.80094579583, 342.25536475310],
[110.789, 0.38651051525, 216.92243216040],
[126.978, 0.42359358250, 331.32153907380],
[112.635, 0.08107814739, 558.00214074590],
[103.166, 0.69792283389, 358.93013930950],
[111.474, 0.75023459027, 80.71948940050],
[90.902, 5.16530481614, 144.14657116320],
[90.677, 0.22036476597, 333.65734504400],
[98.568, 4.33164222339, 74.52096613640],
[89.306, 2.18851161761, 74.82978267710],
[117.216, 3.94965784596, 74.26033370550],
[89.088, 5.87783179087, 74.73341445750],
[97.316, 0.69429695020, 977.48678462110],
[116.587, 1.83677031994, 1289.94650101460],
[85.449, 5.80255966149, 6.59228213900],
[86.823, 5.61973473261, 300.61086697750],
[105.226, 5.94513614941, 328.35259365720],
[112.117, 1.21168089807, 329.72519178090],
[82.982, 2.20797412496, 74.94165726170],
[94.345, 4.53937998713, 28.57180808220],
[106.847, 1.82071328579, 306.83064210100],
[103.572, 2.99368274596, 6.21977512350],
[106.357, 0.81583874750, 1087.69310584050],
[77.728, 2.73390123734, 110.20632121940],
[98.405, 3.73478182667, 75.04223099820],
[86.231, 2.83316881064, 983.11585891360],
[89.023, 4.73754458960, 604.47256366190],
[83.013, 1.88273535999, 387.24131496080],
[90.227, 3.80367274711, 986.08480433020],
[84.598, 1.25774132938, 142.14083359310],
[74.690, 1.35097482767, 350.33211960040],
[95.770, 5.54845504768, 969.62247809490],
[90.277, 0.36773710508, 0.96320784650],
[82.748, 5.85590525764, 74.62153987290],
[75.828, 2.78019216029, 88.11492069160],
[83.850, 1.84386358668, 227.31374111850],
[70.705, 4.65567024014, 44.72531777680],
[71.322, 3.64963906751, 894.84087952760],
[94.141, 4.98819201726, 403.13419222450],
[88.966, 4.43895583278, 154.01661525950],
[79.436, 5.66662613679, 267.47376618580],
[75.615, 5.40971072536, 50.40257617910],
[68.583, 4.76679841388, 991.71387862270],
[65.256, 0.69286370395, 152.74459087230],
[63.031, 2.89946567712, 79.88940799800],
[63.878, 0.09820555288, 681.54178408960],
[80.101, 2.97520561915, 526.72201967800],
[69.693, 3.95281159807, 187.69623277240],
[59.492, 3.59642351692, 58.10682401090],
[59.273, 0.50930692071, 28.31117565130],
[68.590, 2.41880311530, 235.39049596580],
[66.007, 5.04558399435, 30.71067209630],
[70.223, 3.73647415486, 546.95644048200],
[66.836, 0.85506033017, 522.57741809380],
[63.027, 0.29269109052, 119.50691634410],
[62.023, 2.31557510311, 74.03083904190],
[71.379, 3.16967571102, 23.57587323610],
[74.827, 5.36812537961, 373.01422095920],
[64.204, 2.36817149460, 157.63995198190],
[70.712, 0.55830476304, 92.94084583200],
[55.762, 5.27011035858, 874.39401040250],
[75.638, 4.66344127677, 101.86893394120],
[73.727, 6.20581665991, 312.45971639350],
[72.940, 0.58406607757, 367.97010200330],
[53.230, 2.24728742995, 17.52610781830],
[63.139, 4.59563922296, 67.88049988760],
[60.550, 0.57591315857, 253.57099508990],
[52.946, 2.45947017614, 264.50482076920],
[70.236, 1.51860943454, 552.58551477450],
[68.624, 2.44507780453, 555.55446019110],
[62.796, 0.33786296181, 561.18353448360],
[49.009, 1.09233728279, 19.12245511120],
[64.636, 5.27469970900, 68.18931642830],
[62.957, 5.35891188483, 92.04707395470],
[47.664, 3.90924952181, 192.69216761850],
[65.279, 4.23629510074, 771.30123618390],
[65.190, 3.73942854797, 536.80451209540],
[59.452, 6.10554259948, 365.00115658670],
[52.153, 1.71734604937, 905.88657979150],
[46.035, 3.87093684776, 210.33015002140],
[46.429, 5.97423131576, 477.80391620720],
[62.115, 2.67544358037, 130.44074202340],
[46.038, 3.89378239085, 48.75804477640],
[42.663, 3.81519760715, 61.28821774860],
[53.909, 2.86457147106, 353.30106501700],
[46.936, 1.00011046774, 166.82867252200],
[42.217, 2.61748790314, 90.82323367730],
[43.324, 4.15777895713, 173.68158709190],
[41.296, 1.79930408254, 149.45132255000],
[44.960, 1.76623306927, 0.52126486180],
[51.904, 2.97773319756, 383.09671337660],
[42.931, 1.57416456203, 120.99138905240],
[49.611, 4.03427920470, 303.86169668440],
[45.263, 3.58382163089, 97.41551581630],
[38.695, 2.39404211169, 31.49256938900],
[38.072, 5.79473670350, 75.53235809270],
[50.126, 4.76412907201, 911.30320576290],
[50.884, 5.15513957132, 439.78275515400],
[43.148, 0.84999004804, 58.31927233200],
[42.732, 5.17318058934, 162.09337010680],
[50.298, 5.81603435915, 66.91729204110],
[35.639, 1.87447823723, 472.17484191470],
[49.963, 1.88943490790, 42.58645376270],
[39.974, 1.74262050679, 89.75945209430],
[45.252, 1.92511912328, 55.13787859430],
[44.896, 1.48355901890, 450.97721326420],
[34.297, 5.20257496546, 316.39186965660],
[46.355, 0.33942039181, 273.10284047830],
[37.152, 2.03757941865, 117.91056905120],
[46.106, 5.62315633955, 1819.63746610920],
[39.368, 4.19402806344, 486.40193591630],
[41.039, 4.82994471947, 149.67507171920],
[44.959, 0.72694662195, 3265.83082813250],
[43.617, 0.75332422672, 404.61866493280],
[31.823, 3.84768075667, 20.44686912510],
[44.196, 4.36769721266, 418.26080359780],
[37.900, 3.02928044053, 167.08930495290],
[43.684, 1.57328182739, 491.55792945680],
[34.004, 1.26257052908, 260.99335863140],
[31.276, 4.16123711648, 13.33332212430],
[39.984, 2.86626125620, 468.24268865160],
[36.490, 2.58804294589, 68.56182344380],
[32.364, 3.11577354875, 103.35340664950],
[33.857, 0.15592410716, 24.11838995730],
[35.933, 1.36784550071, 59.28248017850],
[33.633, 0.75501177400, 290.21955801940],
[29.751, 5.33178627038, 1033.35837639830],
[32.036, 4.67549858000, 205.22234059070],
[30.991, 4.62823866461, 258.87574647670],
[35.268, 1.00718464327, 1108.13997496560],
[33.366, 3.40738625377, 43.12897048390],
[32.638, 5.25485850258, 114.13847448250],
[29.825, 5.64157476876, 254.94359321360],
[31.613, 3.78231393110, 152.01087768940],
[30.980, 2.26660677937, 104.00779795530],
[34.591, 5.17326577255, 25.60286266560],
[28.398, 1.76872790446, 820.05928096030],
[27.991, 3.92486885309, 199.28444975750],
[28.986, 2.58171811759, 76.47851959670],
[33.772, 5.79359878723, 274.06604832480],
[29.401, 5.93638676504, 280.96714700450],
[31.094, 1.39352495971, 178.78939652260],
[30.118, 0.44367887423, 27.08733537390],
[33.820, 6.26168443513, 401.64971951620],
[27.513, 2.15194454461, 480.77286162380],
[26.880, 2.51300272780, 123.53964334370],
[26.139, 0.21985367371, 286.59622129700],
[26.455, 3.88229792258, 372.42352012820],
[33.974, 1.44637843871, 88.79624424780],
[30.107, 0.82723915882, 100.64509366380],
[27.715, 4.64827434185, 198.32124191100],
[33.687, 1.14348201049, 82.48584639910],
[26.493, 1.97889544238, 95.38852638680],
[24.355, 2.37839176150, 146.38180339690],
[26.590, 0.39881920389, 106.01353552540],
[27.006, 2.10206230691, 1057.89745748090],
[23.976, 6.21233637686, 16.67477455640],
[30.970, 5.34005431547, 476.43131808350],
[24.073, 3.42953641968, 1044.40407666220],
[27.023, 0.71284764471, 248.72381809010],
[29.098, 3.99184722502, 908.33426034630],
[22.862, 2.26978781393, 175.16605980020],
[24.026, 0.36584131268, 73.18525127440],
[28.024, 3.46485782266, 1439.50969814920],
[22.034, 0.05163807300, 33.13710079170],
[22.185, 5.32252126255, 483.22054217860],
[21.027, 0.37224660652, 214.78356814630],
[20.548, 1.80004483299, 118.02244363580],
[27.835, 4.12412553530, 694.07195706180],
[25.500, 5.49632191634, 115.88357962170],
[21.377, 3.89179204956, 66.18357885820],
[27.201, 5.76148797900, 1215.16490244730],
[24.984, 0.65339418015, 132.88842257820],
[23.976, 4.56161326826, 458.84151979040],
[21.116, 1.13610706250, 60.55450456570],
[26.263, 2.77532723118, 490.07345674850],
[26.369, 3.37120039300, 49.72125262290],
[22.870, 4.53135637620, 78.40493528970],
[26.872, 3.26037129303, 691.10301164520],
[25.004, 3.65018677651, 73.40900044360],
[20.874, 3.92589972978, 134.06407874580],
[20.915, 5.53955400138, 129.91947716160],
[23.067, 2.56806856688, 332.80601178210],
[22.630, 5.02721554401, 150.52640498110],
[19.123, 1.92386327535, 124.50285119020],
[20.678, 0.98302410602, 29.20494752860],
[18.755, 1.07911898422, 70.11573212130],
[19.458, 1.33847349577, 616.32141307790],
[23.071, 3.93152899657, 43.28902917830],
[23.313, 0.61185525008, 189.72322220190],
[19.660, 1.40884902649, 1589.07289528380],
[24.990, 0.91842956919, 441.26722786230],
[23.555, 0.02127675886, 593.42686339800],
[18.288, 4.55111843462, 165.60483224460],
[20.980, 0.88504201898, 326.86812094890],
[24.940, 4.63470443286, 162.89651925890],
[18.941, 5.10763304564, 81.89514556810],
[18.911, 1.23351635328, 13.49338081870],
[17.358, 4.05768226252, 403.02231763990],
[17.362, 5.28607227640, 7.86430652620],
[22.513, 3.15059891398, 419.74527630610],
[21.237, 2.14856256664, 75.58474771940],
[17.845, 2.54349200329, 47.06112374700],
[16.995, 2.48647736969, 2043.98226181110],
[23.676, 5.80355919955, 232.04904353370],
[22.639, 2.07623129509, 699.70103135430],
[19.261, 1.56494156016, 425.11371816770],
[21.067, 5.30844438236, 237.67811782620],
[22.733, 0.28303126440, 0.11187458460],
[16.372, 3.45984005656, 0.75075952540],
[21.213, 0.95828006612, 405.99126305650],
[18.033, 1.60723214246, 215.43795945210],
[16.267, 4.89002016360, 69.15252427480],
[21.738, 3.24738839789, 1744.85586754190],
[16.149, 0.35803995032, 77.06922042770],
[21.710, 0.88800040769, 344.96367773880],
[17.204, 6.04366142241, 32.24332891440],
[17.883, 4.01076173641, 280.00393915800],
[15.918, 2.96623390816, 25.86349509650],
[14.769, 3.73887340623, 610.69233878540],
[15.033, 4.24825484707, 228.27694896500],
[15.586, 5.07987082740, 114.94162363460],
[15.392, 0.22971106129, 17.26547538740],
[15.354, 0.25482391126, 661.09491496450],
[14.617, 1.13349626273, 823.99143422340],
[16.232, 3.43499743810, 147.11551657980],
[14.654, 1.68288566884, 207.88246946660],
[17.682, 5.94376629143, 624.91943278700],
[18.837, 1.38335408070, 377.15882254340],
[15.425, 1.66489033237, 440.68227252570],
[14.764, 4.41710614445, 16.46232623530],
[14.402, 0.41359448817, 142.66209845490],
[16.992, 0.16042368544, 438.29828244570],
[13.268, 3.04634728126, 668.20846196530],
[16.460, 0.92068542861, 369.08206769610],
[17.239, 4.51659246818, 606.76018552230],
[13.238, 0.13650358961, 216.48048917570],
[15.832, 4.94315562971, 124.29040286910],
[14.374, 2.93700606008, 419.48464387520],
[12.927, 1.65950183061, 54.33472944220],
[14.224, 4.42286781619, 47.69426319340],
[12.753, 0.03020931725, 217.23124870110],
[14.792, 1.08447500622, 49.50880430180],
[14.031, 3.68785757687, 16.04163511000],
[13.709, 4.78890618802, 72.77586099720],
[13.073, 1.54064778942, 218.92816973050],
[17.474, 5.05621281434, 564.85505531580],
[12.686, 3.44640888880, 958.57677783100],
[13.035, 0.56445754615, 1171.87587326900],
[12.458, 3.29187197133, 902.70518605380],
[11.893, 1.41294011193, 55.77101804070],
[15.018, 3.43209569509, 19.01058052660],
[16.470, 2.04067754807, 411.62033734900],
[15.619, 1.53464600544, 833.55266177900],
[15.678, 5.92839374034, 778.41478318470],
[12.039, 5.17748353434, 135.33610313300],
[15.523, 3.54656631824, 113.87784205160],
[14.364, 4.19825110964, 89.33876096900],
[15.424, 2.12697366269, 106.27416795630],
[11.957, 1.43314130608, 455.87257437380],
[15.938, 5.49575810978, 513.07988101300],
[13.532, 4.11463529983, 95.22846769240],
[15.105, 1.86350524526, 7.70424783180],
[15.832, 3.42498484109, 79.51690098250],
[11.492, 4.65187455620, 149.61138124440],
[11.406, 1.31085455047, 63.62402371880],
[14.469, 3.35284802718, 19.64371997300],
[11.953, 0.20979051344, 65.87476231750],
[12.039, 0.01423238410, 397.39324334740],
[14.157, 1.87440535404, 6283.07584999140],
[11.357, 0.19079103112, 5.62907429250],
[14.109, 0.09348109701, 6133.51265285680],
[15.322, 3.54468546172, 252.65597135320],
[11.681, 0.85100356112, 5.10780943070],
[14.134, 5.66340426198, 639.89728631400],
[11.052, 0.47607339302, 150.08446199640],
[11.507, 5.19480309409, 1182.92157353290],
[11.492, 2.05801478181, 149.51501302480],
[11.571, 4.78210724970, 334.29048449040],
[10.671, 4.67373109923, 149.72325582900],
[11.651, 3.13272450186, 93.90405367850],
[14.316, 0.08421279341, 240.38643081190],
[10.855, 4.52379396618, 453.94615868080],
[11.900, 1.41784572428, 26.02355379090],
[10.851, 4.40625021974, 57.14361616440],
[13.385, 0.76174742916, 37.87240320690],
[10.664, 5.81644528276, 193.65537546500],
[10.700, 5.34595506070, 331.20966448920],
[10.465, 3.82648204886, 180.16199464630],
[13.350, 0.86920479636, 22.89454967990],
[10.324, 2.99969783109, 525.75881183150],
[14.293, 1.06904465002, 477.91579079180],
[12.341, 4.62813430535, 1894.41906467650],
[12.539, 3.70404881494, 67.07735073550],
[11.771, 1.07971321862, 363.51668387840],
[11.466, 0.93528386040, 121.84272231430],
[12.839, 0.31988787839, 474.94684537520],
[10.194, 6.23976471898, 84.18276742850],
[12.300, 2.85238700423, 184.09414790940],
[13.861, 3.48367688770, 157.26744496640],
[11.395, 4.25533440680, 181.05576652360],
[10.146, 6.01371693363, 43.24084506850],
[9.889, 0.01753733887, 40.16002506730],
[10.798, 2.46364243940, 140.65636088480],
[9.893, 2.72219544398, 384.05992122310],
[11.012, 3.77284307154, 494.26624244250],
[10.226, 1.49169427598, 80.41067285980],
[11.981, 2.69741212203, 369.45457471160],
[10.658, 1.78702880970, 252.08652238160],
[12.506, 4.66852994807, 64.69910614990],
[11.640, 5.70405852396, 39.09624348430],
[12.305, 1.73322306013, 229.08009811710],
[9.954, 3.72074935511, 233.90602325750],
[11.004, 3.58723041577, 449.28029223480],
[10.581, 2.79550711884, 1246.65747183630],
[10.411, 2.86727145530, 189.18070548070],
[9.259, 5.19834823120, 749.20983565610],
[12.468, 0.76477162698, 122.47586176070],
[10.099, 6.06894682979, 156.15547927360],
[12.671, 6.19797171716, 149.82382956550],
[9.053, 0.99447742265, 109.31254934210],
[9.595, 1.00827882958, 393.46109008430],
[10.455, 1.23531019351, 148.59998928810],
[10.645, 5.50399216121, 460.53844081980],
[12.433, 5.29843661600, 20.49505323490],
[9.002, 5.51216892840, 133.10087089930],
[9.882, 5.68987366321, 42.53826965290],
[12.110, 3.14577799081, 30.05628079050],
[10.380, 3.54528360301, 619.29035849450],
[10.139, 1.90528799801, 25.06034594440],
[11.206, 5.87823238990, 832.58945393250],
[9.283, 3.00514787072, 754.83890994860],
[10.994, 0.05721003392, 54.28654533240],
[8.981, 5.82462023723, 248.46318565920],
[8.634, 5.49123270314, 448.68959140380],
[9.390, 1.32674472283, 9.40116886120],
[9.621, 5.69090299390, 73.88782669000],
[10.843, 1.42812648220, 268.43697403230],
[10.874, 2.61361741990, 446.31134681820],
[9.681, 4.27051176079, 282.66406803390],
[10.770, 0.19304986906, 463.50738623640],
[8.223, 3.30114329151, 172.19711438360],
[10.216, 5.04428111805, 241.87090352020],
[8.890, 2.53320903906, 271.40591944890],
[10.621, 4.39013117792, 63.84777288800],
[9.085, 0.99085954236, 6.90109867970],
[10.414, 4.96367476854, 97.67614824720],
[8.382, 5.03764591595, 370.93904741990],
[8.791, 3.05426995163, 291.26208774300],
[8.629, 0.14674938050, 262.47783133970],
[9.673, 4.25597330570, 602.98809095360],
[7.939, 5.71230451368, 541.53981451060],
[7.981, 2.35900017752, 196.62432088160],
[7.941, 0.88239951788, 154.97982310600],
[8.212, 0.00845991197, 76.42612997000],
[10.135, 1.90258069764, 91.45637312370],
[8.948, 4.31891786278, 469.13646052890],
[9.906, 0.61122653279, 308.31511480930],
[8.257, 4.61012292958, 69.67378913660],
[10.291, 3.58217488981, 842.15068148810],
[10.672, 2.28920805112, 194.28851491140],
[9.024, 0.70282370018, 685.47393735270],
[7.552, 4.86800510978, 1097.09427470170],
[9.496, 1.06662350720, 93.79217909390],
[8.413, 3.15290837718, 32.71640966640],
[8.914, 5.03579282562, 450.45594840240],
[8.008, 4.33420849497, 302.09533968580],
[10.397, 4.90564475822, 829.62050851590],
[7.401, 5.67595616187, 337.80194662820],
[7.419, 3.04672439120, 7.42236354150],
[7.936, 4.37116642726, 464.47059408290],
[9.731, 5.70393303400, 98.35747180340],
[9.287, 4.16913084905, 15.49911838880],
[10.072, 1.18963356664, 621.73803904930],
[9.867, 1.34469368253, 142.97091499560],
[8.913, 1.33679256423, 0.26063243090],
[8.734, 2.03651443558, 149.40313844020],
[7.745, 0.14834225031, 1404.08497549710],
[9.037, 3.53203542312, 636.66770846650],
[7.707, 1.87083579542, 31.65262808340],
[8.566, 2.48280357910, 497.44763618020],
[10.074, 2.59066128203, 711.44930703380],
[8.726, 5.88905195509, 82.20396210880],
[9.218, 1.10861658464, 412.58354519550],
[9.483, 6.02304095716, 916.93228005540],
[7.012, 6.27635752748, 376.19561469690],
[9.867, 1.93140204720, 62.77269045690],
[7.121, 1.54192963162, 679.25416222920],
[8.440, 5.06400284478, 1.37259812370],
[8.915, 2.39052372377, 76.15419669100],
[9.637, 3.78128664809, 838.21852822500],
[7.059, 5.91499106809, 74.14845912090],
[9.570, 1.97721363991, 703.63318461740],
[7.516, 4.87738017916, 310.17209453310],
[7.059, 1.94098053303, 75.41473801370],
[8.552, 6.14581140636, 17.63798240290],
[6.859, 5.11679089849, 107.49800823370],
[7.148, 1.73466140387, 1190.78588005910],
[9.112, 0.88368663290, 362.86229257260],
[9.300, 1.44257902224, 763.43692965770],
[9.073, 4.31998777457, 16.15350969460],
[9.126, 3.74417347717, 4.66586644600],
[7.869, 4.65596954763, 232.42155054920],
[9.168, 3.25096522859, 155.50108796780],
[7.624, 0.88232424215, 459.36278465220],
[8.200, 1.51866334747, 10063.72234907640],
[8.579, 2.37726234500, 75.67537044460],
[7.595, 2.63499505823, 657.16276170140],
[8.131, 6.15861249482, 745.27768239300],
[6.398, 0.61376490225, 73.24894174920],
[7.710, 4.02552779925, 4.73530241520],
[6.380, 3.20688120531, 73.34530996880],
[7.505, 0.67397826037, 228.79821382680],
[7.129, 1.33525552417, 236.87496867410],
[7.444, 3.05581518163, 171.65459766240],
[6.361, 6.05108999867, 95.97922721780],
[7.086, 4.88497877319, 6531.66165626500],
[6.527, 4.01380149030, 118.87377689770],
[7.984, 1.70695215254, 104.52906281710],
[6.239, 1.08160874504, 143.93412284210],
[7.200, 1.19830150903, 1617.38407093510],
[6.390, 4.83649966441, 1072.71525231350],
[7.857, 3.06062400692, 341.99473232220],
[6.158, 0.04340975323, 627.36711334180],
[8.664, 5.60425824325, 2810.92146160520],
[6.147, 4.16482048084, 1300.99220127850],
[8.148, 3.11700641910, 10213.28554621100],
[8.603, 3.80404544682, 25558.21217647960],
[7.586, 2.86885781812, 406.10313764110],
[7.925, 3.11650504000, 81.68269724700],
[7.063, 5.35078594952, 73.03649342810],
[6.265, 3.27996815317, 116.53797092750],
[7.345, 0.45699353973, 192.80404220310],
[6.878, 1.29690429239, 22.63391724900],
[6.102, 2.06174377751, 73.97844941520],
[7.867, 1.45455437627, 131.92521473170],
[6.837, 0.07237438837, 90.28071695610],
[7.740, 2.87078307084, 79.44746501330],
[6.744, 0.01897075429, 572.22923474750],
[6.034, 0.96635268225, 476.31944349890],
[8.276, 2.40596529645, 674.80074410430],
[6.002, 3.24986200464, 76.78733613740],
[6.863, 1.24850658686, 400.16524680790],
[6.375, 1.37050567525, 75.15410558280],
[7.445, 5.47946546419, 50.66320861000],
[5.889, 5.83364715391, 164.12035953630],
[7.190, 3.21396813566, 71.15826184490],
[6.305, 1.65443603478, 70.04629615210],
[6.628, 1.99043744200, 1.59634729290],
[6.081, 1.26599890530, 61.44827644300],
[7.795, 0.70956881527, 44.07092647100],
[7.784, 5.47416712189, 416.77633088950],
[5.727, 2.39389303582, 20277.00789528740],
[6.363, 1.96472326808, 288.73508531110],
[5.724, 4.30532783970, 86.63044798330],
[7.348, 5.28008775997, 285.63301345050],
[5.693, 1.13590287643, 445.34813897170],
[5.799, 2.43420435064, 180.79513409270],
[6.927, 4.19297070447, 525.23754696970],
[6.143, 2.23902465258, 1310.39337013970],
[6.680, 5.36285833774, 452.46168597250],
[5.709, 3.65303501856, 442.37919355510],
[6.238, 4.60538870228, 137.55428902420],
[5.932, 3.22993254909, 73.45718455340],
[7.734, 5.72805659987, 154.29849954980],
[5.782, 2.17577477697, 2.28762186040],
[6.016, 3.46585546590, 346.39996633730],
[7.517, 5.63641104589, 549.72844394250],
[6.685, 4.84971092735, 148.81243760920],
[5.797, 0.51568102762, 149.30256470370],
[7.739, 3.23104533276, 589.49471013490],
[7.590, 2.49504939023, 321.76031151820],
[6.706, 5.23367324742, 769.81676347560],
[7.210, 2.56243122515, 375.67434983510],
[5.491, 1.84139760824, 375.39246554480],
[6.592, 3.39703193659, 389.68899551560],
[6.414, 3.56513278405, 488.84961647110],
[6.376, 0.24081237769, 881.50755740330],
[5.785, 3.49508162978, 102.52332524700],
[6.079, 0.84517404881, 89.59939339990],
[5.799, 2.19388408812, 8.90683624980],
[5.305, 1.97785611200, 150.31395666000],
[5.422, 1.21990761182, 332.17287233570],
[7.235, 2.78896876234, 748.09786996330],
[6.360, 0.36304095923, 74.40909155180],
[5.285, 4.41108441808, 12.00890811040],
[6.602, 3.01699401726, 442.75170057060],
[6.509, 0.49819168917, 1147.49685088080],
[5.585, 6.04761249158, 172.45774681450],
[6.673, 0.77536194908, 6069.77675455340],
[7.125, 0.34356180793, 511.59540830470],
[5.288, 4.27462942653, 11.15757484850],
[6.767, 2.00969662613, 105.38039607900],
[5.611, 2.40776057824, 1286.01434775150],
[6.456, 4.48699081452, 31.23193695810],
[5.898, 5.26174074234, 757.80785536520],
[5.153, 2.41386832919, 742.99006053260],
[5.087, 6.03592089039, 980.66817835880],
[6.198, 0.83056505252, 1507.17774971570],
[5.425, 1.93107713343, 40.84134862350],
[6.091, 5.18564204379, 487.10451133190],
[5.715, 1.96802719384, 394.35486196160],
[5.509, 1.31275092080, 883.79517926370],
[5.320, 4.22718652038, 65.38042970610],
[5.357, 1.80483136985, 139.48070471720],
[5.204, 3.39869589191, 1400.15282223400],
[6.537, 2.31923989568, 328.24071907260],
[5.041, 2.94673346440, 361.37781986430],
[4.969, 6.27367198215, 0.16005869440],
[5.334, 2.78985718428, 217.44369702220],
[5.654, 0.51056760715, 285.11174858870],
[6.432, 2.21948959433, 9999.98645077300],
[5.768, 5.10735836078, 216.26804085460],
[4.977, 2.62435916254, 194.17664032680],
[6.932, 1.71722863424, 378.90392768260],
[5.187, 3.04429850681, 1083.76095257740],
[5.791, 3.94061476250, 550.13783421970],
[5.816, 2.24843661305, 230.93707784090],
[5.319, 0.06998825350, 336.83873878170],
[5.427, 0.30577275388, 40.58071619260],
[6.469, 3.02579309025, 298.23262239190],
[4.974, 1.21594265105, 455.06942522170],
[4.960, 4.72806210230, 454.74930783290],
[5.619, 2.27500303004, 227.52618943960],
[6.328, 0.97544932086, 249.94765836750],
[5.319, 4.59867974067, 454.79749194270],
[4.791, 4.40360629153, 853.19638175200],
[6.519, 3.03043401282, 167.72244439930],
[5.450, 6.00971547441, 25.12978191360],
[5.094, 3.96693309189, 1066.49547719000],
[5.779, 0.65954416303, 272.58157561650],
[6.491, 4.68529651540, 312.19908396260],
[5.234, 4.34712255335, 233.53351624200],
[5.396, 5.62885554221, 418.52143602870],
[5.048, 2.46802064424, 987.56927703850],
[6.152, 0.79853332272, 2274.54683263650],
[6.506, 1.72915575120, 125.18417474640],
[4.993, 3.75975860404, 57.25549074900],
[6.295, 0.84778953014, 10.08249241740],
[6.251, 4.78782138567, 270.18207917150],
[5.785, 4.31237764709, 374.49869366750],
[5.406, 5.49902863401, 632.78373931320],
[6.224, 0.12733845417, 149.04193227280],
[4.921, 1.43037646364, 73.13706716460],
[5.076, 1.34845106372, 455.02124111190],
[5.730, 3.30386575867, 88.27497938600],
[4.618, 0.64720625124, 119.39504175950],
[6.213, 2.58827934841, 544.50875992720],
[4.825, 6.08615765986, 304.12232911530],
[4.825, 6.00483903794, 226.79247625670],
[5.528, 5.69752791882, 548.44091319030],
[5.108, 2.74489127167, 423.62924545940],
[5.426, 2.44835106987, 531.97858695500],
[4.573, 1.61098293427, 357.44566660120],
[4.487, 6.09067660554, 204.70107572890],
[5.866, 6.20513223441, 772.78570889220],
[5.334, 2.49860553733, 1131.19458333990],
[5.656, 4.75744184558, 491.81856188770],
[4.441, 0.23590452375, 35.68535508300],
[4.370, 3.81136490830, 1329.30337692980],
[4.406, 3.42865095493, 144.89733068860],
[5.251, 4.72114047741, 535.32003938710],
[5.174, 1.37807596858, 520.12973753900],
[4.331, 2.64717426456, 1517.26024213310],
[4.802, 2.60569463520, 177.30492381430],
[4.368, 3.36272561974, 1503.24559645260],
[4.335, 2.73379207096, 289.56516671360],
[5.198, 0.97116582962, 128.43500445330],
[4.437, 0.56678131875, 253.45912050530],
[5.386, 5.84886051674, 268.69760646320],
[5.376, 1.30096148962, 436.81380973740],
[5.797, 4.33049740199, 208.84567731310],
[4.353, 1.66111524192, 1261.63532536330],
[4.812, 4.95769337401, 545.47196777370],
[5.897, 2.04201205180, 8.59801970910],
[5.032, 2.80550759770, 360.41461201780],
[4.921, 2.55658380096, 260.36021918500],
[4.413, 3.23825819993, 973.55463135800],
[4.506, 0.17509624151, 380.38840039090],
[4.947, 5.50324549675, 365.90067395840],
[4.174, 2.99974290843, 136.06981631590],
[4.553, 2.77416673233, 147.96684984170],
[5.344, 1.81213470593, 521.09294538550],
[5.155, 0.78324341489, 1670.07426897460],
[5.133, 1.37435234967, 271.61836777000],
[5.708, 2.52872222038, 501.37978944330],
[4.933, 1.36454104948, 238.90195810360],
[4.973, 1.92960964594, 535.91074021810],
[4.935, 5.04375067678, 697.80716836880],
[4.129, 1.50064332826, 71.86083726050],
[5.207, 4.01877367340, 92.41958097020],
[4.587, 4.78553156868, 95.93104310800],
[5.050, 5.41251268131, 758.77106321170],
[5.012, 4.50266403888, 635.96513305090],
[4.248, 0.65406962267, 920.86443331850],
[5.150, 1.13490701556, 310.97524368520],
[4.146, 5.54040372231, 1048.33622992530],
[4.256, 4.20942901957, 25.27279426550],
[4.569, 5.19758291396, 10.29494073850],
[4.259, 5.53202386861, 184.98791978670],
[4.315, 2.80569687202, 213.95348674380],
[4.604, 2.51643176466, 962.50893109410],
[5.105, 1.26007002216, 971.10695080320],
[4.500, 6.15796742231, 1052.26838318840],
[4.095, 0.63467124507, 1321.43907040360],
[3.968, 0.07377679014, 77.70235987410],
[4.617, 2.77367751889, 406.95447090300],
[4.899, 4.65767840428, 305.60680182360],
[3.900, 1.66467970991, 945.24345570670],
[4.133, 3.76396043787, 263.02034806090],
[3.899, 4.28677450975, 224.23292111730],
[5.030, 6.24112139981, 1162.47470440780],
[5.024, 0.39738855487, 968.13800538660],
[4.894, 2.50422546622, 355.74874557180],
[4.283, 3.15267059582, 846.08283475120],
[3.941, 0.04342429962, 1235.61177157240],
[4.077, 5.68854469970, 695.55642977010],
[3.842, 0.37429373422, 774.48262992160],
[4.674, 0.08112657673, 1366.21257229020],
[4.671, 4.38923533828, 117.36805233000],
[5.313, 4.38472090135, 689.61853893690],
[3.787, 1.41443617212, 48.91810347080],
[4.236, 1.60316940746, 367.59759498780],
[4.569, 2.88138923862, 551.10104206620],
[4.636, 5.93442268083, 148.19059901090],
[5.128, 0.17600225009, 433.71173787680],
[4.264, 2.08657038625, 325.38364824060],
[3.885, 5.85359840623, 450.71658083330],
[4.753, 2.58442943928, 358.40887444770],
[4.226, 6.24596640453, 448.97147569410],
[3.776, 1.78756451192, 71.70077856610],
[4.912, 4.45665056284, 51.88704888740],
[3.854, 2.72138633161, 151.85081899500],
[4.561, 0.07201979569, 2349.32843120380],
[4.291, 5.39929339966, 523.75307426140],
[4.143, 0.17158866270, 735.87651353180],
[3.806, 1.44358694049, 138.62937145530],
[3.654, 2.41520715554, 348.84764689210],
[3.728, 1.69745141654, 984.71220620650],
[4.176, 4.01139155515, 195.77298761970],
[4.986, 1.03562905920, 224.45667028650],
[4.031, 0.92145122185, 76.00543884470],
[4.098, 3.51214223942, 72.49397670690],
[3.812, 4.41246815759, 1511.32235129990],
[4.098, 2.39702785276, 239.16259053450],
[4.894, 5.26621064696, 601.50361824530],
[4.459, 5.76440378473, 836.52160719560],
[4.373, 4.08948598951, 75.43598987310],
[4.363, 6.01127167247, 421.18156490460],
[4.414, 0.35830661600, 168.31314523030],
[3.700, 2.04103813925, 63.21463344160],
[4.648, 2.07482117651, 1106.65550225730],
[4.304, 3.03122452327, 1109.62444767390],
[3.618, 4.84400847177, 893.35640681930],
[4.023, 0.59685650686, 91.24392480260],
[4.937, 5.49417275871, 976.73602509570],
[4.373, 3.76648561161, 74.12720726150],
[4.310, 3.72983787822, 673.31627139600],
[4.680, 3.89631254150, 163.57784281510],
[4.172, 0.75349427039, 1500.06420271490],
[4.492, 1.87283145714, 141.17762574660],
[4.174, 5.82910805335, 346.44815044710],
[3.775, 0.83052387256, 827.92358748650],
[3.481, 2.70828672792, 818.57480825200],
[4.853, 0.95917381603, 58.17051448570],
[4.021, 3.11274455034, 377.41945497430],
[4.409, 0.16607520728, 630.33605875840],
[3.597, 1.02560564654, 515.46387109300],
[3.444, 1.38488805947, 117.31986822020],
[4.021, 5.68447974866, 3.49021027840],
[4.244, 3.75845344717, 733.42883297700],
[3.933, 4.55157642432, 240.12579838100],
[4.421, 1.51263319894, 1610.27052393430],
[3.390, 4.00215380112, 74.99404688840],
[4.556, 3.41531360529, 1140.38330388000],
[4.171, 0.76417016678, 623.43496007870],
[3.441, 2.56450835637, 14.81779483260],
[3.587, 4.10186965494, 343.21857259960],
[3.997, 5.74857613262, 6212.22640468720],
[4.215, 0.84469743228, 176.65053250850],
[4.098, 1.41920746453, 559.69906177530],
[4.553, 1.09016692751, 561.88610989920],
[3.493, 0.11837510368, 1031.87390369000],
[3.596, 5.33968666729, 394.94556279260],
[3.501, 5.53309359866, 594.91133610630],
[3.564, 1.57868308864, 354.99798604640],
[4.279, 2.35436288262, 562.66800719190],
[3.398, 1.62086348540, 941.31130244360],
[3.803, 1.78948693511, 251.17149864490],
[3.299, 5.13631478768, 477.00076705510],
[3.422, 3.55674695079, 256.42806592190],
[3.802, 4.09287840097, 268.95823889410],
[3.818, 4.64162443046, 71.92452773530],
[4.623, 2.72836206211, 6244.94281435360],
[3.466, 1.91387688001, 58.73996345730],
[3.435, 2.96178782926, 995.64603188580],
[3.626, 5.35614681493, 57.51612317990],
[4.512, 1.18350543284, 170.76082578510],
[4.378, 0.27346037700, 469.72716135990],
[3.323, 4.51516827363, 454.86118241750],
[3.320, 1.42938752044, 454.95755063710],
[4.578, 4.74980514730, 731.94436026870],
[3.249, 0.67719975914, 74.04788538440],
[4.145, 5.58064267022, 57.79800747020],
[3.512, 6.09122971288, 70.58881287330],
[3.814, 2.49565462974, 6204.36209816100],
[3.828, 4.39751907192, 586.31331639720],
[3.639, 4.85097208169, 138.40562228610],
[3.518, 0.52105043625, 262.80789973980],
[3.671, 1.99667387765, 511.53171782990],
[3.215, 0.64628330219, 887.72733252680],
[3.718, 3.27473813045, 454.64873409640],
[3.638, 2.63250736806, 455.16999895820],
[3.772, 0.88810300052, 10142.43610090680],
[3.190, 4.87960158471, 455.66012605270],
[3.669, 4.11456655271, 409.92341631960],
[3.166, 1.24948126394, 82.64590509350],
[3.530, 4.02075420346, 388.20452280730],
[3.163, 1.65294183878, 765.88461021250],
[3.568, 5.95965909592, 460.84725736050],
[3.450, 0.08821515281, 49.17873590170],
[3.270, 1.81146731641, 34.20088237470],
[3.188, 1.74587038709, 18.91000679010],
[3.305, 5.77382040863, 10.52443540210],
[3.345, 4.15802505352, 1515.77576942480],
[3.160, 1.06549289762, 454.15860700190],
[3.525, 2.56091667232, 78114.14622758799],
[4.124, 1.06751791085, 388.46515523820],
[4.016, 2.48751669586, 531.17543780290],
[3.147, 5.05814757549, 1521.40484371730],
[4.180, 1.16833674781, 514.56435372130],
[3.212, 3.18682610058, 1512.80682400820],
[3.486, 0.22630227172, 36.53668834490],
[4.211, 3.21876950029, 761.74000862830],
[3.485, 3.26177495276, 36.76043751410],
[3.506, 6.26633354904, 545.27502581760],
[3.733, 2.55776517455, 279.48267429620],
[4.227, 1.41381723926, 41.75637236020],
[3.187, 1.62296832026, 138.46931276090],
[3.934, 2.86731965547, 832.06818907070],
[3.684, 3.94174060300, 179.31066138440],
[3.115, 5.67364420834, 73.55775828990],
[3.663, 1.80556740809, 31.54075349880],
[3.171, 4.85529878165, 138.56568098050],
[3.777, 5.94890597104, 873.17017012510],
[4.357, 4.15105623366, 10175.15251057320],
[3.951, 1.60185888278, 576.16138801060],
[3.525, 4.80316435970, 429.77958461370],
[3.330, 5.62171319933, 1116.00428149180],
[3.943, 4.62641543020, 898.77303279070],
[3.382, 1.45717307307, 5983.94945572220],
[3.215, 3.73878297941, 335.77495719870],
[3.423, 5.07987216951, 143.34342201110],
[4.161, 5.39091883238, 1363.24362687360],
[3.457, 3.94796907904, 444.82687410990],
[3.593, 3.91831549069, 10134.57179438060],
[3.666, 4.22620338990, 36.17548217750],
[3.580, 3.43130119859, 912.78767847120],
[3.700, 0.67445695843, 73.93026530540],
[3.679, 1.10949079061, 686.95841006100],
[3.547, 5.63096398237, 440.89472084680],
[3.622, 1.10742531477, 2250.16781024830],
[3.562, 3.80604468765, 1525.33699698040],
[3.330, 1.76480149289, 78.97438426130],
[3.738, 1.76754910180, 384.58118608490],
[3.986, 1.06842874470, 743.79320968470],
[3.032, 5.77852412826, 612.17681149370],
[3.008, 0.64086342534, 210.85141488320],
[3.334, 4.81681647959, 597.35901666110],
[3.141, 3.11768616608, 6607.92772754060],
[3.022, 2.08709314702, 34.53095077480],
[3.226, 3.19780030434, 377.68008740520],
[4.065, 3.53637930424, 402.21916848780],
[4.138, 0.28927701421, 517.16079212240],
[3.697, 0.89932694516, 75.63293182920],
[3.918, 5.73859894835, 94.42531854030],
[3.374, 0.40974405580, 677.76968952090],
[3.194, 4.56998602897, 1385.17496870700],
[3.180, 1.03370427552, 885.43971066640],
[3.235, 5.09681747179, 464.99185894470],
[3.798, 5.76464888795, 586.37700687200],
[3.173, 5.68964342749, 4.19278569400],
[3.181, 2.87968862974, 9914.15915194180],
[3.355, 5.45857968674, 73.08467753790],
[2.899, 5.12928266291, 448.31708438830],
[3.706, 2.47342147635, 64.25716316520],
[3.796, 4.29502458131, 164.54105066160],
[3.534, 4.42464754991, 46.47042291600],
[3.488, 5.62713714766, 3189.56475685690],
[2.940, 4.33606107945, 78263.70942472259],
[3.309, 3.10770680369, 519.60847267720],
[4.030, 4.41794838679, 772.58876693610],
[2.867, 5.17129632099, 346.18751801620],
[3.842, 1.87994191354, 299.71709510020],
[3.846, 5.38315286213, 980.14691349700],
[3.724, 4.94511644698, 984.48845703730],
[2.814, 2.17260061398, 191.31956949480],
[3.392, 3.08552116090, 245.49424024260],
[2.923, 0.37358823115, 6.48040755440],
[3.025, 1.19297242418, 104.83787935780],
[3.470, 1.89084704021, 44.61344319220],
[2.931, 0.78809830626, 540.05534180230],
[3.707, 4.14868763219, 6136.48159827340],
[3.931, 5.52289695589, 6171.64568849460],
[3.056, 2.97000936733, 250.60204967330],
[3.117, 0.76332399369, 229.45260513260],
[3.091, 4.91941279780, 221.16340196420],
[3.378, 3.82658652472, 25936.85547173129],
[3.041, 2.14503983522, 6604.95878212400],
[2.865, 0.53734608663, 273.85360000370],
[2.845, 0.34922064899, 85.93917341580],
[3.657, 6.02755271763, 340.88276662940],
[2.818, 4.44508352472, 369.34270012700],
[2.861, 2.19284349075, 295.19424100610],
[2.865, 3.21935127992, 3.82027867850],
[2.797, 5.97725967979, 2014.02655475710],
[3.280, 0.74832416123, 422.71422172270],
[3.509, 1.92501559437, 343.47920503050],
[2.962, 2.29867992492, 661.15860543930],
[3.485, 4.53205302380, 676.28521681260],
[2.836, 1.20779683660, 1119.18567522950],
[3.603, 2.72183511139, 508.62646288810],
[3.620, 5.57691156197, 10066.69129449300],
[2.731, 0.96663411770, 582.38116313410],
[3.306, 6.20620840278, 11.56696512570],
[3.279, 6.13563821647, 276.07178589490],
[2.747, 4.57476263020, 226.63241756230],
[2.825, 1.24120423378, 989.05374974680],
[2.707, 0.46257342768, 1458.47209456600],
[2.755, 5.43548338507, 246.97871295090],
[3.338, 3.98641322371, 488.58898404020],
[2.960, 5.31788128818, 1467.07011427510],
[3.062, 1.93542241882, 987.78172535960],
[3.504, 4.10521239427, 6280.10690457480],
[3.584, 3.12196206517, 108.72184851110],
[2.975, 0.13746189123, 9987.45627780080],
[2.634, 5.61201014857, 412.37109687440],
[3.702, 0.66231252049, 10101.85538471420],
[3.261, 4.39228048501, 75.37229939830],
[2.939, 3.26319979850, 130.55261660800],
[2.742, 6.24317126103, 447.20511869550],
[3.008, 4.24451493185, 170.17012495410],
[3.001, 2.45489658954, 230.82520325630],
[2.722, 4.98348297926, 754.03576079650],
[2.928, 5.73784691627, 14.66903698630],
[2.699, 2.98043546816, 27.72047482030],
[3.678, 3.46436124301, 26468.03090953420],
[3.500, 4.41810854452, 322.61164478010],
[2.943, 3.58544468129, 12489.88562870720],
[2.894, 2.26999120840, 1615.89959822680],
[2.679, 1.32002304425, 236.19364511790],
[2.711, 1.25250599577, 52250.58788171570],
[2.573, 4.41371056719, 262.05714021440],
[3.483, 1.97113718781, 655.93892142400],
[2.600, 3.80107226970, 70.63699698310],
[3.280, 1.75059058234, 683.98946464440],
[3.260, 3.46047977615, 74.19089773630],
[3.097, 5.47452034532, 302.37722397610],
[2.565, 3.47443238116, 2042.49778910280],
[3.158, 4.58160924364, 12492.85457412380],
[3.373, 5.52806001629, 10210.31660079440],
[2.619, 4.43681016753, 949.17560896980],
[3.290, 1.35055242247, 515.67631941410],
[3.180, 4.49938964982, 694.83822295220],
[2.558, 5.07921716363, 197.79997704920],
[2.902, 2.61388996483, 115.36231475990],
[2.586, 4.09771865336, 1448.91086701040],
[3.160, 4.82168102018, 714.67888488130],
[3.016, 3.16691101108, 385.75684225250],
[3.001, 3.24181300229, 1618.86854364340],
[3.319, 5.98200177347, 533.83556667880],
[3.307, 3.31452419197, 732.97125859000],
[2.530, 0.13809025963, 591.94239068970],
[2.975, 5.72770980032, 1011.42703456490],
[2.857, 4.11031053901, 2267.43328563570],
[3.091, 4.87979664891, 582.64179556500],
[3.422, 6.18592254593, 281.48841186630],
[2.501, 0.50645055144, 29.22619938800],
[3.502, 0.17203520151, 371.52974825090],
[2.607, 3.51828908958, 112.39336934330],
[2.547, 4.45612695304, 901.22071334550],
[2.778, 4.97805873371, 132.57960603750],
[2.476, 1.55163657371, 1234.12729886410],
[2.929, 2.34725672182, 273.15102458810],
[2.724, 5.73177362443, 688.65533109040],
[2.667, 6.13733078138, 161.41204655060],
[2.877, 5.47506403197, 1436.54075273260],
[2.779, 1.54196175338, 680.05731138130],
[2.427, 4.64913431310, 392.65794093220],
[3.223, 2.57976952494, 267.58564077040],
[2.750, 1.29662662582, 108.98248094200],
[3.220, 1.06290187940, 388.72578766910],
[3.236, 3.47802643973, 283.62727588040],
[3.027, 5.38233284458, 44.09217833040],
[2.830, 5.70274947128, 327.43756992050],
[2.768, 5.42256168790, 482.25733433210],
[3.230, 5.65661970187, 134.37289528650],
[2.685, 5.03687735302, 763.22448133660],
[2.441, 5.19830386978, 380.23964254460],
[2.608, 3.11386505876, 578.44900987100],
[2.465, 1.49242672830, 141.69889060840],
[2.332, 3.19371804203, 683.02625679790],
[2.307, 4.07685834192, 78.92620015150],
[2.280, 2.52476606956, 156.67674413540],
[2.260, 6.23958645351, 400.57463708510],
[2.301, 2.47762267951, 107.91869935900],
[3.089, 5.69639540598, 537.39521292640],
[3.074, 1.16740737548, 58.62808887270],
[2.846, 0.02430566936, 563.37058260750],
[2.423, 4.24559706691, 27.74172667970],
[2.670, 3.48404619442, 123.01837848190],
[2.228, 3.33159258912, 1257.70317210020],
[2.445, 2.29979337782, 280.21638747910],
[2.260, 3.85026258012, 753.14198891920],
[2.195, 4.94038065567, 1222.27844944810],
[2.579, 1.76841912074, 710.74673161820],
[2.402, 4.47942458428, 569.04784100980],
[2.181, 5.39048760967, 318.67949151700],
[2.317, 6.27946729049, 493.04240216510],
[2.420, 3.66436222896, 3.62333672240],
],
# R1
[
[1479896.370, 3.67205705317, 74.78159856730],
[71212.085, 6.22601006675, 63.73589830340],
[68626.972, 6.13411265052, 149.56319713460],
[20857.262, 5.24625494219, 11.04570026390],
[21468.152, 2.60176704270, 76.26607127560],
[24059.649, 3.14159265359, 0.00000000000],
[11405.346, 0.01848461561, 70.84944530420],
[7496.775, 0.42360033283, 73.29712585900],
[4243.800, 1.41692350371, 85.82729883120],
[3505.936, 2.58354048851, 138.51749687070],
[3228.835, 5.25499602896, 3.93215326310],
[3926.694, 3.15513991323, 71.81265315070],
[3060.010, 0.15321893225, 1.48447270830],
[3578.446, 2.31160668309, 224.34479570190],
[2564.251, 0.98076846352, 148.07872442630],
[2429.445, 3.99440122468, 52.69019803950],
[1644.719, 2.65349313124, 127.47179660680],
[1583.766, 1.43045619196, 78.71375183040],
[1413.112, 4.57461892062, 202.25339517410],
[1489.525, 2.67559167316, 56.62235130260],
[1403.237, 1.36985349744, 77.75054398390],
[1228.220, 1.04703640149, 62.25142559510],
[1508.028, 5.05996325425, 151.04766984290],
[992.085, 2.17168865909, 65.22037101170],
[1032.731, 0.26459059027, 131.40394986990],
[861.867, 5.05530802218, 351.81659230870],
[744.445, 3.07640148939, 35.16409022120],
[604.362, 0.90717667985, 984.60033162190],
[646.851, 4.47290422910, 70.32818044240],
[574.710, 3.23070708457, 447.79581952650],
[687.470, 2.49912565674, 77.96299230500],
[623.602, 0.86253073820, 9.56122755560],
[527.794, 5.15136007084, 2.96894541660],
[561.839, 2.71778158980, 462.02291352810],
[530.364, 5.91655309045, 213.29909543800],
[460.080, 4.22302465979, 12.53017297220],
[494.280, 0.46291078127, 145.63104387150],
[487.336, 0.70614146398, 380.12776796000],
[380.908, 3.85089591694, 3.18139373770],
[444.352, 2.15558291251, 67.66805156650],
[338.800, 2.53820897704, 18.15924726470],
[372.947, 5.05141251694, 529.69096509460],
[348.345, 1.74874852104, 71.60020482960],
[405.881, 1.22961727600, 22.09140052780],
[268.913, 6.24069521597, 340.77089204480],
[255.585, 2.95695013627, 84.34282612290],
[259.465, 3.92053708924, 59.80374504030],
[224.731, 3.90961468562, 160.60889739850],
[221.710, 3.64727173951, 137.03302416240],
[254.591, 3.50411592815, 38.13303563780],
[238.290, 2.04879982674, 269.92144674060],
[272.355, 3.38363105223, 222.86032299360],
[200.648, 1.24861003313, 69.36497259590],
[234.153, 0.27825220612, 108.46121608020],
[188.515, 4.41307507326, 265.98929347750],
[211.691, 0.68027381802, 111.43016149680],
[205.946, 1.53379817229, 284.14854074220],
[196.179, 4.77152996605, 299.12639426920],
[153.102, 5.21761881347, 209.36694217490],
[162.563, 4.34054353610, 33.67961751290],
[150.563, 1.98966326297, 54.17467074780],
[137.012, 0.40323866041, 195.13984817330],
[117.171, 0.39649791652, 87.31177153950],
[127.913, 2.40333045173, 39.61750834610],
[104.218, 2.92152185788, 134.58534360760],
[103.862, 1.81622936156, 72.33391801250],
[105.741, 0.17067407327, 79.23501669220],
[106.419, 0.69799543514, 2.44768055480],
[95.326, 4.02880266738, 82.85835341460],
[104.772, 4.43616414428, 305.34616939270],
[93.825, 5.01823592717, 51.20572533120],
[103.739, 2.57553519741, 191.20769491020],
[106.679, 1.22996874093, 225.82926841020],
[93.452, 3.09274255916, 77.22927912210],
[97.398, 3.81380841075, 152.53214255120],
[84.583, 5.72473747348, 68.84370773410],
[77.395, 0.08281157747, 45.57665103870],
[76.207, 4.20384370842, 73.81839072080],
[86.249, 0.53131085736, 145.10977900970],
[75.795, 3.78559826812, 75.74480641380],
[77.592, 1.63628139623, 479.28838891550],
[84.612, 0.61662456010, 116.42609634290],
[100.209, 4.94084867643, 120.35824960600],
[72.142, 4.30505812564, 565.11568774670],
[70.733, 2.38450718488, 60.76695288680],
[71.585, 3.93906647867, 153.49535039770],
[84.566, 5.56037336584, 344.70304530790],
[63.556, 1.93742986679, 41.64449777560],
[71.619, 3.71213491656, 408.43894361130],
[61.594, 3.90006698249, 4.45341812490],
[64.973, 1.55845503407, 106.97674337190],
[59.913, 0.60110866128, 74.89347315190],
[62.000, 4.39369268007, 453.42489381900],
[63.361, 4.19159979468, 184.72728735580],
[62.301, 3.23773103318, 422.66603761290],
[54.427, 3.72545550857, 7.11354700080],
[52.474, 6.08562717749, 404.50679034820],
[59.073, 1.55568469603, 456.39383923560],
[52.597, 3.50492233970, 125.98732389850],
[52.835, 5.20100035142, 358.93013930950],
[58.123, 5.33480562448, 220.41264243880],
[52.909, 4.44819701196, 426.59819087600],
[50.934, 0.52638534200, 490.33408917940],
[54.968, 1.60146090981, 14.97785352700],
[49.491, 4.25534603275, 5.41662597140],
[51.303, 0.36772379136, 206.18554843720],
[51.821, 1.75832999538, 8.07675484730],
[56.964, 0.84114552694, 146.59425171800],
[49.109, 0.94061875871, 99.16062095550],
[46.361, 5.35115472594, 152.74459087230],
[48.023, 1.97249712347, 288.08069400530],
[43.772, 3.03713403879, 20.60692781950],
[49.493, 5.84619560979, 112.91463420510],
[41.987, 0.04620500196, 128.95626931510],
[48.628, 3.62817742782, 81.00137369080],
[41.472, 2.33730376429, 277.03499374140],
[39.983, 5.09525356576, 35.42472265210],
[41.948, 2.51050760642, 24.37902238820],
[38.325, 3.61946898382, 173.94221952280],
[38.385, 2.06003220130, 333.65734504400],
[42.597, 1.26088737300, 1514.29129671650],
[38.855, 0.74239364306, 347.88443904560],
[38.535, 4.95064283065, 92.94084583200],
[33.234, 1.38358507432, 74.66972398270],
[33.788, 3.68407945156, 66.91729204110],
[38.953, 5.49236040328, 200.76892246580],
[31.850, 0.53990592534, 203.73786788240],
[33.320, 6.26012644668, 1059.38193018920],
[30.806, 2.53797566903, 977.48678462110],
[29.198, 5.43116906000, 58.10682401090],
[30.059, 0.19481555617, 387.24131496080],
[28.997, 3.10546504714, 991.71387862270],
[35.640, 3.72863820177, 96.87299909510],
[27.607, 0.37142052647, 80.19822453870],
[32.492, 4.38403518987, 221.37585028530],
[27.029, 1.35552416596, 0.96320784650],
[31.276, 0.79566430555, 373.01422095920],
[31.122, 2.05381353845, 230.56457082540],
[25.883, 3.46808071409, 144.14657116320],
[30.201, 0.71392007232, 109.94568878850],
[24.688, 3.04162764358, 14.01464568050],
[27.882, 4.76559523368, 415.55249061210],
[25.110, 5.12405829717, 81.37388070630],
[25.582, 2.56904073164, 522.57741809380],
[24.351, 2.20289059750, 628.85158605010],
[25.479, 1.79521877300, 143.62530630140],
[24.182, 5.67160913092, 443.86366626340],
[25.679, 5.43185950751, 546.95644048200],
[24.177, 5.59982039849, 32.19514480460],
[24.428, 3.30271734903, 617.80588578620],
[23.535, 0.65842590604, 46.20979048510],
[22.371, 4.82094751058, 135.54855145410],
[27.179, 2.02720001624, 536.80451209540],
[22.213, 4.61664624220, 391.17346822390],
[21.973, 4.59216260632, 241.61027108930],
[20.813, 0.24392941148, 465.95506679120],
[27.264, 2.15210992383, 140.00196957900],
[21.356, 5.27168432406, 159.12442469020],
[23.632, 4.94972840898, 561.18353448360],
[24.921, 0.54550733267, 181.75834193920],
[23.027, 3.80632203913, 55.13787859430],
[19.799, 1.30259938601, 518.64526483070],
[19.252, 1.31448491434, 543.02428721890],
[19.704, 4.90869636976, 909.81873305460],
[20.801, 0.91178207093, 76.47851959670],
[19.876, 0.66494008343, 66.70484372000],
[18.957, 4.67998817036, 98.89998852460],
[25.913, 4.52903186569, 454.90936652730],
[21.888, 1.23372931740, 41.10198105440],
[18.703, 6.09640927844, 103.09277421860],
[18.207, 0.97283864525, 55.65914345610],
[21.247, 4.19373732137, 329.72519178090],
[19.408, 4.31468230800, 6.21977512350],
[18.497, 5.78624335074, 142.44965013380],
[22.588, 5.84591645052, 297.64192156090],
[16.770, 6.09084656811, 211.81462272970],
[16.432, 2.50008469020, 61.28821774860],
[20.361, 3.16137245375, 186.21176006410],
[15.955, 2.98317221345, 81.89514556810],
[18.953, 6.01226591746, 155.78297225810],
[17.686, 4.82613965176, 273.10284047830],
[15.141, 3.65588411561, 472.17484191470],
[18.440, 3.47582817224, 36.64856292950],
[16.303, 0.13086415177, 554.06998748280],
[18.633, 0.23932740251, 23.57587323610],
[14.352, 2.69389896537, 70.11573212130],
[15.190, 2.43789398875, 486.40193591630],
[14.002, 5.12389205028, 29.20494752860],
[15.758, 4.24947053051, 146.38180339690],
[14.125, 1.55719788547, 110.20632121940],
[17.477, 1.94549668506, 835.03713448730],
[13.691, 1.63831110442, 92.04707395470],
[13.801, 0.13721153975, 235.39049596580],
[13.573, 2.85427895075, 49.50880430180],
[12.563, 3.20921738646, 100.38446123290],
[12.390, 2.88595800082, 60.55450456570],
[14.986, 0.32593957273, 259.50888592310],
[12.922, 2.77565630582, 105.49227066360],
[12.323, 3.36427641421, 440.68227252570],
[15.233, 0.25589845180, 258.87574647670],
[12.106, 0.10857558014, 157.63995198190],
[12.883, 0.30655541587, 124.29040286910],
[10.900, 3.42905554547, 33.13710079170],
[11.206, 4.98840478043, 604.47256366190],
[10.812, 3.86253020441, 767.36908292080],
[11.561, 2.60450144944, 166.82867252200],
[10.200, 5.27810824796, 264.50482076920],
[10.926, 0.64149188846, 558.00214074590],
[12.315, 4.33998516461, 16.67477455640],
[9.946, 0.67298666287, 31.49256938900],
[12.641, 4.83194943583, 114.39910691340],
[10.479, 0.20404797652, 275.55052103310],
[11.291, 0.96120625051, 373.90799283650],
[12.144, 1.91712815063, 378.64329525170],
[12.229, 0.70465454670, 218.40690486870],
[10.753, 5.74480767273, 88.11492069160],
[9.481, 0.65566927406, 353.30106501700],
[11.006, 2.62953946665, 154.01661525950],
[9.113, 2.99457723478, 681.54178408960],
[10.429, 2.33056994007, 132.88842257820],
[9.169, 4.79284571455, 216.48048917570],
[9.341, 0.75923548315, 129.91947716160],
[8.917, 0.78008399009, 67.35923502580],
[8.757, 6.12717748848, 150.52640498110],
[9.637, 2.88664912193, 67.88049988760],
[10.465, 0.36943456465, 699.70103135430],
[9.301, 1.49620591593, 19.64371997300],
[9.367, 5.26481516822, 80.71948940050],
[10.076, 3.56540311122, 278.51946644970],
[9.455, 3.06088968751, 149.67507171920],
[9.168, 3.02528121597, 162.09337010680],
[8.395, 2.18455001650, 342.25536475310],
[9.233, 5.32613442062, 152.01087768940],
[9.786, 2.43713607191, 75.30286342910],
[10.029, 0.81917102953, 339.28641933650],
[9.429, 1.93671715384, 147.11551657980],
[7.861, 4.71717822837, 106.01353552540],
[8.813, 0.01616162513, 42.58645376270],
[7.808, 0.61104170424, 135.33610313300],
[8.193, 2.59644466423, 469.13646052890],
[10.084, 2.58619215129, 50.40257617910],
[8.574, 5.69115937472, 760.25553592000],
[7.525, 2.64764195045, 5.93789083320],
[8.699, 0.54050826161, 66.18357885820],
[8.027, 1.94079002321, 180.27386923090],
[7.547, 5.94593031762, 97.41551581630],
[7.597, 5.80197738402, 450.97721326420],
[8.666, 3.69933873164, 300.61086697750],
[7.685, 1.47377256329, 32.24332891440],
[8.195, 2.30769657654, 254.94359321360],
[8.473, 1.27680705911, 39.35687591520],
[7.026, 0.68091865104, 874.39401040250],
[8.898, 0.16273040357, 43.12897048390],
[7.205, 4.98177531040, 117.91056905120],
[7.389, 4.09295183164, 92.30770638560],
[7.314, 5.04313738379, 756.32338265690],
[8.454, 1.22026161161, 79.44746501330],
[6.925, 6.04100189247, 350.33211960040],
[8.793, 1.33398658801, 48.75804477640],
[7.270, 3.32609286227, 68.18931642830],
[6.825, 4.77832275072, 142.66209845490],
[6.816, 3.90452052962, 480.77286162380],
[7.062, 1.27536949417, 68.56182344380],
[7.947, 4.29940380231, 624.91943278700],
[6.741, 5.43264472273, 610.69233878540],
[6.529, 5.43599941795, 88.79624424780],
[7.635, 4.81180007736, 312.45971639350],
[7.235, 3.18370421558, 268.43697403230],
[8.133, 1.98936178361, 692.58748435350],
[6.477, 1.05238958778, 685.47393735270],
[6.630, 1.37656948077, 291.26208774300],
[6.878, 2.59188446778, 282.66406803390],
[7.123, 5.79744758808, 468.24268865160],
[6.320, 2.58497126634, 458.09076026500],
[6.222, 5.68982546821, 113.87784205160],
[7.635, 0.49482302003, 296.15744885260],
[8.521, 0.00576688485, 227.31374111850],
[6.520, 3.99093726386, 42.53826965290],
[6.435, 1.03721543102, 365.90067395840],
[6.107, 0.35071886662, 148.59998928810],
[8.199, 1.13448902886, 69.15252427480],
[6.102, 0.94101111641, 13.33332212430],
[5.989, 4.98445156102, 184.09414790940],
[6.355, 0.16346166674, 228.27694896500],
[7.955, 4.03567630186, 183.24281464750],
[5.884, 4.40842406038, 19.12245511120],
[5.938, 5.40863870407, 17.52610781830],
[5.869, 5.39494525133, 95.38852638680],
[5.775, 2.81250784939, 121.84272231430],
[6.070, 4.23605170027, 119.50691634410],
[6.349, 3.52304701692, 285.63301345050],
[5.780, 0.17831551537, 458.84151979040],
[5.674, 4.16711163603, 89.75945209430],
[5.534, 4.24741728108, 75.53235809270],
[5.648, 2.81224199321, 154.97982310600],
[6.939, 3.31979953743, 306.83064210100],
[5.682, 4.79764449768, 248.72381809010],
[6.087, 4.04640130992, 271.40591944890],
[6.869, 1.34392408836, 7.86430652620],
[5.611, 5.32955957046, 920.86443331850],
[6.495, 0.45735814276, 106.27416795630],
[5.353, 2.49825965802, 24.11838995730],
[6.612, 5.24626646696, 58.31927233200],
[5.552, 0.24515487696, 173.68158709190],
[5.209, 6.07866998675, 134.06407874580],
[5.176, 3.69984512887, 778.41478318470],
[5.949, 3.63204266272, 189.72322220190],
[6.360, 0.35370738262, 411.62033734900],
[5.147, 1.55440402971, 193.65537546500],
[6.436, 5.18759014405, 120.99138905240],
[6.994, 4.85978914075, 419.48464387520],
[5.323, 0.50787742639, 16.46232623530],
[5.085, 1.28917723765, 267.47376618580],
[5.993, 4.70505267412, 298.23262239190],
[5.507, 2.72405080404, 986.08480433020],
[6.163, 1.87793216012, 397.39324334740],
[4.846, 5.66714115710, 90.82323367730],
[4.875, 1.24385851949, 25.60286266560],
[5.374, 0.31175745933, 192.69216761850],
[5.262, 1.85699096844, 114.94162363460],
[5.373, 6.22242588334, 91.45637312370],
[5.050, 3.39322756907, 831.10498122420],
[4.637, 0.84958882655, 403.02231763990],
[6.382, 2.77560901069, 198.32124191100],
[4.685, 4.94029403928, 902.70518605380],
[5.005, 1.40309022449, 6.15033915430],
[5.014, 5.57665259095, 451.94042111070],
[4.580, 2.47734499363, 31.23193695810],
[5.129, 3.23528704150, 109.31254934210],
[4.459, 6.22635092697, 207.88246946660],
[5.734, 0.96616252776, 483.22054217860],
[4.425, 2.74721673213, 823.99143422340],
[4.575, 1.87994871749, 44.72531777680],
[4.748, 0.34902594832, 457.87831194390],
[4.268, 4.89983575247, 124.50285119020],
[4.709, 5.28612293112, 449.28029223480],
[5.761, 2.09247769051, 187.69623277240],
[4.284, 0.66132439268, 210.33015002140],
[4.318, 1.68857333749, 309.27832265580],
[4.332, 1.41872733238, 25.12978191360],
[4.305, 1.05990546337, 606.76018552230],
[4.519, 5.84384426255, 905.88657979150],
[3.934, 0.41768897300, 180.16199464630],
[3.973, 3.22666150606, 639.89728631400],
[4.871, 4.61331971606, 258.02441321480],
[4.604, 4.77631056831, 463.50738623640],
[3.943, 3.31312639875, 107.49800823370],
[4.217, 0.73383451512, 497.44763618020],
[4.057, 1.67333716577, 7.42236354150],
[3.854, 6.13547145503, 34.20088237470],
[4.617, 5.89829880253, 303.86169668440],
[5.086, 2.85235518740, 28.31117565130],
[5.337, 2.36556705745, 477.80391620720],
[4.456, 1.74674336635, 95.97922721780],
[4.138, 3.80344455465, 460.53844081980],
[3.812, 2.48508006441, 25.27279426550],
[4.732, 0.87519409311, 255.05546779820],
[3.843, 4.02615028031, 104.00779795530],
[3.776, 2.89171052095, 27.08733537390],
[4.932, 0.36238909407, 123.53964334370],
[4.371, 3.74322467592, 376.19561469690],
[3.747, 3.04126115463, 142.14083359310],
[4.232, 4.31629167726, 446.31134681820],
[3.685, 3.26448469664, 170.76082578510],
[3.575, 4.31199276037, 572.22923474750],
[3.567, 4.08542270507, 433.71173787680],
[4.496, 2.10358455875, 838.21852822500],
[3.505, 3.53902384390, 520.12973753900],
[3.524, 3.75716903766, 473.06861379200],
[3.962, 5.33706246667, 43.28902917830],
[3.597, 3.65066955203, 976.00231191280],
[3.487, 2.12239114397, 316.39186965660],
[3.475, 4.44351326599, 384.05992122310],
[3.628, 2.11511417759, 73.18525127440],
[3.702, 3.86923731076, 981.63138620530],
[3.687, 5.18698183343, 993.19835133100],
[3.599, 2.07986409347, 47.69426319340],
[3.807, 4.21821126511, 196.62432088160],
[4.707, 4.56309173897, 47.06112374700],
[4.312, 0.38740046308, 988.53248488500],
[3.867, 2.08559458308, 457.35704708210],
[4.723, 4.16947683948, 219.89137757700],
[3.527, 0.20371576470, 394.35486196160],
[3.644, 5.82023483708, 586.31331639720],
[3.328, 2.93840719007, 535.91074021810],
[3.321, 4.19289134366, 114.13847448250],
[4.128, 3.06165703109, 377.15882254340],
[3.545, 4.41886084391, 1293.87865427770],
[3.295, 2.97049569593, 15.19030184810],
[3.337, 6.23473900765, 9947.05568153210],
[3.253, 5.22412177835, 425.11371816770],
[3.677, 5.31389484415, 141.69889060840],
[3.242, 4.68868636498, 978.97125732940],
[3.266, 3.57072306171, 17.26547538740],
[3.435, 0.52794358986, 141.48644228730],
[3.242, 2.62760698007, 6.59228213900],
[3.613, 1.94737668557, 661.09491496450],
[3.182, 0.36603315110, 449.49274055590],
[3.311, 1.25616383318, 233.90602325750],
[3.403, 6.03792583170, 199.28444975750],
[4.196, 4.26442082589, 381.61224066830],
[3.961, 4.53281422377, 916.93228005540],
[3.846, 3.76849990033, 8.59801970910],
[3.350, 5.63661413371, 444.82687410990],
[3.780, 5.35722293289, 328.24071907260],
[3.166, 2.16351748263, 983.11585891360],
[3.538, 1.89746744103, 280.96714700450],
[3.930, 2.09444900058, 653.98136796370],
[3.282, 1.91872815218, 2349.32843120380],
[3.269, 0.52855777633, 450.45594840240],
[3.582, 1.60170266832, 1587.58842257550],
[3.522, 2.51782036180, 237.67811782620],
[3.024, 3.54567524563, 94.42531854030],
[3.528, 4.79818282081, 406.95447090300],
[2.996, 2.59155293620, 6133.51265285680],
[3.146, 2.18094827839, 216.92243216040],
[3.610, 6.15486273902, 171.65459766240],
[2.977, 0.69478628170, 294.30046912880],
[3.377, 1.21382647091, 162.89651925890],
[3.347, 4.14981703949, 214.78356814630],
[2.953, 2.18721777019, 597.35901666110],
[4.049, 3.15153850922, 833.55266177900],
[3.725, 5.84743216544, 6058.73105428950],
[3.390, 1.18412112871, 167.72244439930],
[3.142, 2.26934209337, 517.16079212240],
[4.077, 0.07273073033, 1190.03512053370],
[3.020, 2.64998251178, 20.44686912510],
[3.926, 1.41612569694, 346.18751801620],
[3.110, 1.11431255827, 1044.40407666220],
[2.836, 0.62522723719, 749.20983565610],
[2.831, 4.78996738581, 820.05928096030],
[2.824, 0.87232289414, 30.71067209630],
[3.114, 1.79734939525, 414.06801790380],
[2.801, 3.99301180541, 10063.72234907640],
[3.489, 1.86982946081, 371.52974825090],
[3.725, 1.68366366742, 683.98946464440],
[3.763, 3.28247771799, 432.81796599950],
[3.493, 0.98765698465, 9988.94075050910],
[3.523, 5.12512607932, 105.38039607900],
[2.839, 4.22662576295, 990.22940591440],
[3.432, 2.80483162230, 764.18768918310],
[2.733, 0.42373696972, 354.99798604640],
[3.146, 5.19208910201, 417.03696332040],
[3.041, 5.75641149588, 409.92341631960],
[3.379, 5.47448876584, 1396.22066897090],
[3.102, 0.41684444780, 521.09294538550],
[2.863, 0.41519700992, 894.84087952760],
[2.707, 3.60084311477, 621.73803904930],
[3.128, 5.23384180625, 424.15051032120],
[3.107, 2.44919355737, 4.66586644600],
[2.683, 3.88682711832, 133.10087089930],
[2.660, 4.78670985324, 362.86229257260],
[3.200, 1.88004939357, 331.20966448920],
[2.730, 4.12217979791, 600.54041039880],
[3.414, 4.93712749827, 1140.38330388000],
[2.653, 5.10283251074, 118.02244363580],
[3.222, 4.76521772319, 294.67297614430],
[3.289, 4.26401031509, 544.50875992720],
[3.100, 5.47928527930, 701.18550406260],
[2.785, 5.19343849039, 144.89733068860],
[2.607, 4.72531286187, 122.47586176070],
[2.581, 6.27329466695, 908.33426034630],
[3.285, 1.95972622670, 372.42352012820],
[2.897, 0.37378090180, 582.38116313410],
[2.615, 2.25516923974, 74.99404688840],
[3.582, 1.27992264402, 987.56927703850],
[3.115, 5.10929689813, 459.05396811150],
[2.857, 5.90256930211, 525.23754696970],
[2.589, 1.83177157032, 657.16276170140],
[2.539, 4.14968938109, 74.73341445750],
[2.797, 2.82242772664, 2036.86871481030],
[2.688, 2.16500211397, 262.80789973980],
[2.744, 1.54445470732, 28.57180808220],
[2.539, 0.46036497385, 74.82978267710],
[3.322, 3.50108539407, 82.64590509350],
[2.810, 6.06709915335, 374.49869366750],
[2.504, 3.52394801700, 1183.67233305830],
[2.565, 1.64023845161, 73.40900044360],
[2.531, 3.50486296784, 293.18850343600],
[2.663, 4.23321349902, 421.18156490460],
[2.793, 2.00644423849, 75.04223099820],
[2.430, 1.56119387576, 136.06981631590],
[2.553, 1.25909246207, 670.49608382570],
[2.604, 3.87350462519, 74.03083904190],
[2.510, 3.35948960782, 464.99185894470],
[3.005, 0.81031349171, 73.88782669000],
[3.110, 6.14956891318, 118.87377689770],
[3.234, 2.45751141361, 98.35747180340],
[2.774, 6.26134027482, 1022.31267613440],
[2.402, 4.38353347008, 1303.27982313890],
[3.296, 3.84350963765, 511.53171782990],
[2.800, 2.60339313269, 74.52096613640],
[3.005, 0.76247280223, 75.67537044460],
[2.434, 4.94784679430, 969.62247809490],
[2.632, 0.63557110200, 227.52618943960],
[2.669, 0.73340228210, 73.08467753790],
[2.465, 1.30648773380, 77.06922042770],
[3.237, 3.19110274211, 1887.30551767570],
[2.395, 2.76580569447, 768.85355562910],
[3.230, 0.01981320255, 881.50755740330],
[2.747, 5.59085990261, 388.72578766910],
[3.008, 5.65955463660, 1969.20066324380],
[3.008, 0.91409756228, 2118.76386037840],
[2.465, 0.26629856014, 72.49397670690],
[2.629, 4.00618677646, 26.02355379090],
[2.272, 2.77069357315, 515.46387109300],
[2.360, 4.12736987374, 74.62153987290],
[2.255, 3.36574443950, 286.59622129700],
[2.211, 5.18239546182, 59.28248017850],
[2.994, 2.83179016989, 184.98791978670],
[2.492, 1.19872353228, 383.09671337660],
[2.355, 0.48259604722, 74.94165726170],
[2.185, 6.07997119980, 63.62402371880],
[2.228, 1.42452148910, 6219.33995168800],
],
# R2
[
[22439.904, 0.69953118760, 74.78159856730],
[4727.037, 1.69901641488, 63.73589830340],
[1681.903, 4.64833551727, 70.84944530420],
[1433.755, 3.52119917947, 149.56319713460],
[1649.559, 3.09660078980, 11.04570026390],
[770.188, 0.00000000000, 0.00000000000],
[461.009, 0.76676632849, 3.93215326310],
[500.429, 6.17229032223, 76.26607127560],
[390.371, 4.49605283502, 56.62235130260],
[389.945, 5.52673426377, 85.82729883120],
[292.097, 0.20389012095, 52.69019803950],
[272.898, 3.84707823651, 138.51749687070],
[286.579, 3.53357683270, 73.29712585900],
[205.449, 3.24758017121, 78.71375183040],
[219.674, 1.96418942891, 131.40394986990],
[215.788, 0.84812474187, 77.96299230500],
[128.834, 2.08146849515, 3.18139373770],
[148.554, 4.89840863841, 127.47179660680],
[117.452, 4.93414907433, 447.79581952650],
[112.690, 1.01361852218, 462.02291352810],
[98.875, 6.15817742611, 224.34479570190],
[91.379, 0.67973399531, 18.15924726470],
[89.217, 0.23425778826, 202.25339517410],
[88.206, 2.93094837724, 62.25142559510],
[114.066, 4.78741873960, 145.63104387150],
[103.858, 3.58561789629, 71.60020482960],
[61.819, 3.29964272893, 351.81659230870],
[57.782, 4.90737420887, 22.09140052780],
[64.369, 3.39006689398, 1.48447270830],
[71.110, 6.10490061068, 454.90936652730],
[50.990, 3.86691997779, 65.22037101170],
[63.537, 3.96202309168, 67.66805156650],
[58.957, 5.55530463687, 9.56122755560],
[48.700, 3.74709235789, 269.92144674060],
[43.584, 1.92568752002, 59.80374504030],
[42.170, 2.61650997054, 151.04766984290],
[42.420, 6.13634453301, 284.14854074220],
[44.340, 5.89997845114, 71.81265315070],
[37.328, 5.91300114911, 984.60033162190],
[36.201, 5.40315761474, 77.75054398390],
[41.989, 2.09071623849, 12.53017297220],
[31.411, 4.59200004835, 148.07872442630],
[31.289, 2.26696307388, 195.13984817330],
[27.150, 3.53242984046, 209.36694217490],
[28.152, 4.57845964163, 77.22927912210],
[26.097, 0.65978256272, 120.35824960600],
[24.372, 5.86680440531, 69.36497259590],
[23.037, 1.03776963677, 84.34282612290],
[22.679, 1.71434243970, 160.60889739850],
[27.650, 4.91488946525, 277.03499374140],
[20.816, 2.19643268155, 45.57665103870],
[19.961, 2.32077356180, 2.44768055480],
[16.584, 4.77529536873, 213.29909543800],
[16.578, 1.85615182154, 340.77089204480],
[17.196, 4.36852462522, 54.17467074780],
[16.053, 3.64619586667, 152.74459087230],
[14.806, 5.43824503068, 408.43894361130],
[13.872, 3.38531100784, 358.93013930950],
[13.328, 5.25179190495, 137.03302416240],
[13.286, 1.26285812368, 134.58534360760],
[12.890, 3.03270380745, 92.94084583200],
[12.467, 1.33213558369, 51.20572533120],
[13.450, 1.53176996919, 422.66603761290],
[16.442, 0.40190549188, 265.98929347750],
[11.996, 5.10426418352, 191.20769491020],
[12.898, 4.43242192513, 87.31177153950],
[11.449, 2.02645622099, 7.11354700080],
[11.826, 4.65645290272, 41.64449777560],
[12.045, 3.23910807852, 116.42609634290],
[11.680, 3.73278249629, 220.41264243880],
[11.573, 4.16500659139, 60.55450456570],
[10.175, 0.32936886913, 70.32818044240],
[11.332, 1.07613885149, 72.33391801250],
[9.655, 3.05950236129, 2.96894541660],
[9.279, 2.43997351068, 565.11568774670],
[8.986, 5.18839740735, 225.82926841020],
[10.284, 1.18602582060, 344.70304530790],
[8.844, 6.00894470528, 5.41662597140],
[8.508, 5.24741470216, 347.88443904560],
[8.319, 3.71723808749, 14.97785352700],
[8.276, 2.27408171672, 299.12639426920],
[8.064, 5.71681525179, 55.13787859430],
[7.830, 0.90313686798, 222.86032299360],
[8.335, 4.48600419464, 70.11573212130],
[8.763, 5.81519440120, 153.49535039770],
[8.472, 3.91387041805, 333.65734504400],
[9.874, 5.96526143660, 35.16409022120],
[9.647, 0.38872626737, 415.55249061210],
[7.106, 1.50598488470, 991.71387862270],
[6.596, 1.18068235818, 96.87299909510],
[8.065, 2.25930653257, 206.18554843720],
[6.479, 2.99461362786, 380.12776796000],
[9.012, 6.05343622530, 146.38180339690],
[6.131, 0.05596259493, 99.16062095550],
[5.799, 0.82465326137, 142.44965013380],
[5.816, 4.63029217647, 49.50880430180],
[5.608, 0.66268449799, 58.10682401090],
[5.966, 2.48916255408, 373.01422095920],
[5.710, 2.23566160404, 80.19822453870],
[5.272, 5.06746739956, 440.68227252570],
[5.162, 4.36457872885, 977.48678462110],
[5.428, 0.85181859845, 546.95644048200],
[5.766, 0.34229025692, 536.80451209540],
[5.924, 5.48443563529, 76.47851959670],
[5.340, 3.73073116400, 23.57587323610],
[5.174, 4.13873402677, 132.88842257820],
[5.310, 6.14059082194, 39.61750834610],
[5.790, 3.39593613152, 458.09076026500],
[5.007, 4.25821412289, 522.57741809380],
[4.967, 4.79184817938, 387.24131496080],
[5.183, 3.25775152471, 561.18353448360],
[4.602, 1.69262282455, 152.53214255120],
[5.302, 1.83522660093, 124.29040286910],
[5.005, 0.36630565950, 60.76695288680],
[4.454, 2.30288945184, 312.45971639350],
[4.457, 0.45775730382, 33.13710079170],
[5.722, 0.89523844278, 81.89514556810],
[5.842, 0.92039543147, 20.60692781950],
[5.743, 0.66226484448, 38.13303563780],
[4.255, 3.55373860346, 479.28838891550],
[4.190, 4.37674804409, 79.23501669220],
[4.194, 1.64986267170, 128.95626931510],
[5.125, 1.40553011416, 144.14657116320],
[4.045, 6.07362424798, 19.64371997300],
[3.984, 5.77178406410, 288.08069400530],
[5.017, 2.99521887648, 29.20494752860],
[3.842, 2.60024827897, 426.59819087600],
[3.861, 3.19886211335, 159.12442469020],
[3.870, 4.43713601497, 141.69889060840],
[5.316, 4.07970979457, 111.43016149680],
[4.553, 0.01384318412, 298.23262239190],
[3.737, 5.28319518103, 353.30106501700],
[3.939, 5.27301148162, 521.09294538550],
[3.710, 5.15385470848, 490.33408917940],
[4.039, 0.60924359087, 152.01087768940],
[3.861, 1.34394383700, 535.32003938710],
[4.385, 0.62057680100, 827.17282796110],
[3.567, 4.71986443303, 6.90109867970],
[3.576, 3.24526237368, 230.56457082540],
[3.469, 0.79054323335, 983.11585891360],
[4.524, 2.86819565712, 129.91947716160],
[3.648, 5.59395544992, 774.48262992160],
[3.513, 4.49630054276, 376.19561469690],
[3.432, 2.55614913808, 258.87574647670],
[4.352, 2.09804374929, 404.50679034820],
[3.336, 0.89628904042, 469.13646052890],
[3.274, 3.86236880159, 42.53826965290],
[3.201, 2.76459652868, 248.72381809010],
[3.184, 0.07709843451, 1514.29129671650],
[3.783, 5.29835962126, 369.08206769610],
[3.266, 2.24754480216, 73.81839072080],
[3.055, 2.60120354415, 433.71173787680],
[3.051, 4.54953369151, 980.66817835880],
[3.062, 1.27089879603, 200.76892246580],
[3.055, 1.70878161343, 639.89728631400],
[3.110, 3.63187411723, 16.67477455640],
[3.472, 4.93521260607, 411.62033734900],
[3.531, 4.49372794858, 881.50755740330],
[3.284, 5.59170577331, 472.17484191470],
[3.015, 6.02967446446, 291.26208774300],
[3.467, 2.17484439267, 554.06998748280],
[3.138, 0.52367930477, 1094.80665284130],
[3.257, 2.49339546514, 451.72797278960],
[2.881, 0.50481204892, 305.34616939270],
[3.082, 4.20145474081, 146.59425171800],
[2.883, 2.44983947531, 135.33610313300],
[2.965, 0.39294995530, 25.27279426550],
[2.831, 2.52728803131, 867.28046340170],
[2.728, 5.29491477549, 125.98732389850],
[2.857, 4.71106805785, 218.92816973050],
[2.763, 4.27510031656, 350.33211960040],
[2.730, 1.98552777251, 82.85835341460],
[2.857, 3.08706426922, 216.48048917570],
[3.365, 3.67691210011, 661.09491496450],
[2.925, 1.43646759644, 381.61224066830],
[2.753, 0.39468041761, 33.67961751290],
[2.756, 4.62672498840, 1357.61455258110],
[3.450, 2.12911756067, 685.47393735270],
[2.571, 5.92862393284, 89.75945209430],
[2.677, 0.76342313946, 486.40193591630],
[2.689, 4.16436463826, 235.39049596580],
[2.646, 3.81808560938, 550.88859374510],
[3.369, 3.17071565345, 108.46121608020],
[2.613, 5.68333838067, 24.37902238820],
[2.736, 1.87107584495, 529.69096509460],
[2.606, 4.36605237304, 1080.57955883970],
[2.407, 3.07343136742, 391.17346822390],
[2.446, 5.73846381540, 535.91074021810],
[2.334, 5.18878243102, 1059.38193018920],
[2.568, 1.09886876369, 913.00012679230],
[2.236, 6.10115874045, 140.00196957900],
[3.053, 5.35047433775, 681.54178408960],
],
# R3
[
[1164.382, 4.73453291602, 74.78159856730],
[212.367, 3.34255734999, 63.73589830340],
[196.408, 2.98004616318, 70.84944530420],
[104.527, 0.95807937648, 11.04570026390],
[71.681, 0.02528455665, 56.62235130260],
[72.540, 0.99701907912, 149.56319713460],
[54.875, 2.59436811267, 3.93215326310],
[34.029, 3.81553325635, 76.26607127560],
[32.081, 3.59825177840, 131.40394986990],
[29.641, 3.44111535957, 85.82729883120],
[36.377, 5.65035573017, 77.96299230500],
[27.663, 0.42836001470, 3.18139373770],
[27.464, 2.55126467481, 52.69019803950],
[24.569, 5.14034173566, 78.71375183040],
[19.390, 5.13477648625, 18.15924726470],
[15.767, 0.37116951743, 447.79581952650],
[15.441, 5.57271837433, 462.02291352810],
[15.232, 3.85998573509, 73.29712585900],
[15.475, 2.97496547327, 145.63104387150],
[17.951, 0.00000000000, 0.00000000000],
[15.958, 5.19915553904, 71.60020482960],
[11.056, 6.03152659562, 138.51749687070],
[10.529, 3.58261852497, 224.34479570190],
[7.606, 1.44542030704, 1.48447270830],
[8.121, 2.61579604319, 22.09140052780],
[7.107, 5.43946774526, 269.92144674060],
[6.459, 4.37142319461, 284.14854074220],
[6.818, 0.01396812984, 151.04766984290],
[8.101, 0.29563819537, 127.47179660680],
[5.768, 4.22672716593, 373.01422095920],
[5.022, 1.84154937974, 202.25339517410],
[4.692, 2.78404575440, 120.35824960600],
[5.087, 0.77745294804, 62.25142559510],
[4.160, 1.83820502779, 72.33391801250],
[3.922, 1.88900691473, 209.36694217490],
[5.201, 4.15791319343, 195.13984817330],
[3.636, 1.99709010456, 65.22037101170],
[3.582, 3.92592140377, 124.29040286910],
[3.808, 1.04818660873, 92.94084583200],
[4.241, 3.95755998904, 9.56122755560],
[3.497, 1.54139696251, 148.07872442630],
[3.195, 2.98608971329, 387.24131496080],
[3.950, 1.85721204932, 152.74459087230],
[3.277, 1.40881404192, 351.81659230870],
[3.605, 1.17366167402, 153.49535039770],
[2.940, 6.03594958459, 12.53017297220],
[2.744, 5.64674283515, 134.58534360760],
[2.800, 0.79480255927, 572.22923474750],
[3.054, 5.84310939105, 160.60889739850],
[2.662, 1.98593312104, 450.97721326420],
[2.700, 2.77036653988, 213.29909543800],
[2.323, 1.67918985468, 358.93013930950],
[2.254, 5.77129530133, 84.34282612290],
[2.291, 4.81424601600, 536.80451209540],
[2.213, 2.20360299816, 465.95506679120],
],
# R4
[
[52.996, 3.00838033088, 74.78159856730],
[9.887, 1.91399083603, 56.62235130260],
[7.008, 5.08677527404, 11.04570026390],
[6.728, 5.42924958121, 149.56319713460],
[3.703, 5.22728581851, 131.40394986990],
[3.361, 1.29695290266, 85.82729883120],
[2.664, 0.44064577837, 63.73589830340],
[2.309, 0.92380720934, 145.63104387150],
[2.383, 6.21390585593, 358.93013930950],
[2.288, 2.23425399117, 440.68227252570],
[3.093, 3.14159265359, 0.00000000000],
],
]
"""This table contains Uranus' periodic terms (all of them) from the planetary
theory VSOP87 for the radius vector at the equinox of date (taken from the 'D'
solution). In Meeus' book a shortened version can be found in pages 449-451."""
ORBITAL_ELEM = [
[314.055005, 429.8640561, 0.0003039, 0.000000026], # L
[19.218446062, -0.0000000372, 0.00000000098, 0.0], # a
[0.04638122, -0.000027293, 0.0000000789, 0.00000000024], # e
[0.773197, 0.0007744, 0.00003749, -0.000000092], # i
[74.005957, 0.5211278, 0.00133947, 0.000018484], # Omega
[173.005291, 1.486379, 0.00021406, 0.000000434] # pie
]
"""This table contains the parameters to compute Uranus's orbital elements for
the mean equinox of date. Based in Table 31.A, page 213"""
ORBITAL_ELEM_J2000 = [
[314.055005, 428.4669983, -0.00000486, 0.000000006], # L
[0.773197, -0.0016869, 0.00000349, 0.000000016], # i
[74.005957, 0.0741431, 0.00040539, 0.000000119], # Omega
[173.005291, 0.0893212, -0.0000947, 0.000000414] # pie
]
"""This table contains the parameters to compute Uranus's orbital elements for
the standard equinox J2000.0. Based on Table 31.B, page 215"""
class Uranus(object):
"""
Class Uranus models that planet.
"""
@staticmethod
def geometric_heliocentric_position(epoch, tofk5=True):
"""This method computes the geometric heliocentric position of planet
Uranus for a given epoch, using the VSOP87 theory.
:param epoch: Epoch to compute Uranus position, as an Epoch object
:type epoch: :py:class:`Epoch`
:param tofk5: Whether or not the small correction to convert to the FK5
system will be applied or not
:type tofk5: bool
:returns: A tuple with the heliocentric longitude and latitude (as
:py:class:`Angle` objects), and the radius vector (as a float,
in astronomical units), in that order
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(2018, 10, 27.0)
>>> l, b, r = Uranus.geometric_heliocentric_position(epoch)
>>> print(round(l.to_positive(), 4))
30.5888
>>> print(round(b, 4))
-0.5315
>>> print(round(r, 5))
19.86964
"""
return geometric_vsop_pos(epoch, VSOP87_L, VSOP87_B, VSOP87_R, tofk5)
@staticmethod
def apparent_heliocentric_position(epoch):
"""This method computes the apparent heliocentric position of planet
Uranus for a given epoch, using the VSOP87 theory.
:param epoch: Epoch to compute Uranus position, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple with the heliocentric longitude and latitude (as
:py:class:`Angle` objects), and the radius vector (as a float,
in astronomical units), in that order
:rtype: tuple
:raises: TypeError if input values are of wrong type.
"""
return apparent_vsop_pos(epoch, VSOP87_L, VSOP87_B, VSOP87_R)
@staticmethod
def orbital_elements_mean_equinox(epoch):
"""This method computes the orbital elements of Uranus for the mean
equinox of the date for a given epoch.
:param epoch: Epoch to compute orbital elements, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple containing the following six orbital elements:
- Mean longitude of the planet (Angle)
- Semimajor axis of the orbit (float, astronomical units)
- eccentricity of the orbit (float)
- inclination on the plane of the ecliptic (Angle)
- longitude of the ascending node (Angle)
- argument of the perihelion (Angle)
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(2065, 6, 24.0)
>>> l, a, e, i, ome, arg = Uranus.orbital_elements_mean_equinox(epoch)
>>> print(round(l, 6))
235.517526
>>> print(round(a, 8))
19.21844604
>>> print(round(e, 7))
0.0463634
>>> print(round(i, 6))
0.77372
>>> print(round(ome, 5))
74.34776
>>> print(round(arg, 6))
99.630865
"""
return orbital_elements(epoch, ORBITAL_ELEM, ORBITAL_ELEM)
@staticmethod
def orbital_elements_j2000(epoch):
"""This method computes the orbital elements of Uranus for the
standard equinox J2000.0 for a given epoch.
:param epoch: Epoch to compute orbital elements, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple containing the following six orbital elements:
- Mean longitude of the planet (Angle)
- Semimajor axis of the orbit (float, astronomical units)
- eccentricity of the orbit (float)
- inclination on the plane of the ecliptic (Angle)
- longitude of the ascending node (Angle)
- argument of the perihelion (Angle)
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(2065, 6, 24.0)
>>> l, a, e, i, ome, arg = Uranus.orbital_elements_j2000(epoch)
>>> print(round(l, 6))
234.602641
>>> print(round(a, 8))
19.21844604
>>> print(round(e, 7))
0.0463634
>>> print(round(i, 6))
0.772094
>>> print(round(ome, 5))
74.05468
>>> print(round(arg, 6))
99.009058
"""
return orbital_elements(epoch, ORBITAL_ELEM, ORBITAL_ELEM_J2000)
@staticmethod
def geocentric_position(epoch):
"""This method computes the geocentric position of Uranus (right
ascension and declination) for the given epoch, as well as the
elongation angle.
:param epoch: Epoch to compute geocentric position, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple containing the right ascension, the declination and
the elongation angle as Angle objects
:rtype: tuple
:raises: TypeError if input value is of wrong type.
>>> epoch = Epoch(1992, 12, 20.0)
>>> ra, dec, elon = Uranus.geocentric_position(epoch)
>>> print(ra.ra_str(n_dec=1))
19h 13' 48.7''
>>> print(dec.dms_str(n_dec=1))
-22d 46' 13.0''
>>> print(elon.dms_str(n_dec=1))
18d 44' 18.7''
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Compute the heliocentric position of Uranus
l, b, r = Uranus.geometric_heliocentric_position(epoch, tofk5=False)
# Compute the heliocentric position of the Earth
l0, b0, r0 = Earth.geometric_heliocentric_position(epoch, tofk5=False)
# Convert to radians
lr = l.rad()
br = b.rad()
l0r = l0.rad()
b0r = b0.rad()
# Compute first iteration
x = r * cos(br) * cos(lr) - r0 * cos(b0r) * cos(l0r)
y = r * cos(br) * sin(lr) - r0 * cos(b0r) * sin(l0r)
z = r * sin(br) - r0 * sin(b0r)
delta = sqrt(x * x + y * y + z * z)
tau = 0.0057755183 * delta
# Adjust the epoch for light-time
epoch -= tau
# Compute again Uranus coordinates with this correction
l, b, r = Uranus.geometric_heliocentric_position(epoch, tofk5=False)
# Compute second iteration
lr = l.rad()
br = b.rad()
x = r * cos(br) * cos(lr) - r0 * cos(b0r) * cos(l0r)
y = r * cos(br) * sin(lr) - r0 * cos(b0r) * sin(l0r)
z = r * sin(br) - r0 * sin(b0r)
# Compute longitude and latitude
lamb = atan2(y, x)
beta = atan2(z, sqrt(x * x + y * y))
# Now, let's compute the aberration effect
t = (epoch - JDE2000) / 36525
e = 0.016708634 + t * (-0.000042037 - t * 0.0000001267)
pie = 102.93735 + t * (1.71946 + t * 0.00046)
pie = radians(pie)
lon = l0 + 180.0
lon = lon.rad()
k = 20.49552 # The constant of aberration
deltal1 = k * (-cos(lon - lamb) + e * cos(pie - lamb)) / cos(beta)
deltab1 = -k * sin(beta) * (sin(lon - lamb) - e * sin(pie - lamb))
deltal1 = Angle(0, 0, deltal1)
deltab1 = Angle(0, 0, deltab1)
# Correction to FK5 system
lamb = Angle(lamb, radians=True)
lamb = lamb.to_positive()
beta = Angle(beta, radians=True)
l_prime = lamb - t * (1.397 + t * 0.00031)
deltal2 = Angle(0, 0, -0.09033)
a = 0.03916 * (cos(l_prime.rad()) + sin(l_prime.rad()))
a = a * tan(b.rad())
deltal2 += Angle(0, 0, a)
deltab2 = 0.03916 * (cos(l_prime.rad()) - sin(l_prime.rad()))
deltab2 = Angle(0, 0, deltab2)
# Apply the corrections
lamb = lamb + deltal1 + deltal2
beta = beta + deltab1 + deltab2
# Correction for nutation
dpsi = nutation_longitude(epoch)
lamb += dpsi
e = true_obliquity(epoch)
ra, dec = ecliptical2equatorial(lamb, beta, e)
# Let's compute the elongation angle
lons, lats, rs = Sun.apparent_geocentric_position(epoch)
lambr = lamb.rad()
lsr = lons.rad()
betar = beta.rad()
elon = acos(cos(betar) * cos(lambr - lsr))
elon = Angle(elon, radians=True)
return ra, dec, elon
@staticmethod
def conjunction(epoch):
"""This method computes the time of the conjunction closest to the
given epoch.
:param epoch: Epoch close to the desired conjunction
:type epoch: :py:class:`Epoch`
:returns: The time when the conjunction happens, as an Epoch
:rtype: :py:class:`Epoch`
:raises: TypeError if input value is of wrong type.
:raises: ValueError if input epoch outside the -2000/4000 range.
>>> epoch = Epoch(1993, 10, 1.0)
>>> conj = Uranus.conjunction(epoch)
>>> y, m, d = conj.get_date()
>>> print(y)
1994
>>> print(m)
1
>>> print(round(d, 4))
12.7365
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Check that the input epoch is within valid range
y = epoch.year()
if y < -2000.0 or y > 4000.0:
raise ValueError("Epoch outside the -2000/4000 range")
# Set some specific constants for Uranus' conjunction
a = 2451579.489
b = 369.656035
m0 = 31.5219
m1 = 4.333093
k = round((365.2425 * y + 1721060.0 - a) / b)
jde0 = a + k * b
m = m0 + k * m1
m = Angle(m).to_positive()
m = m.rad()
t = (jde0 - 2451545.0) / 36525.0
# Compute a couple auxiliary angles
ee = 207.83 + 8.51 * t
ff = 108.84 + 419.96 * t
# Convert to radians
ee = Angle(ee).rad()
ff = Angle(ff).rad()
corr = (-0.0859 + t * 0.0003 +
sin(m) * (-3.8179 + t * (-0.0148 + t * 0.00003)) +
cos(m) * (5.1228 + t * (-0.0105 - t * 0.00002)) +
sin(2.0 * m) * (-0.0803 + t * 0.0011) +
cos(2.0 * m) * (-0.1905 - t * 0.0006) +
sin(3.0 * m) * (0.0088 + t * 0.0001) +
cos(ee) * (0.885) +
cos(ff) * (0.2153))
to_return = jde0 + corr
return Epoch(to_return)
@staticmethod
def opposition(epoch):
"""This method computes the time of the opposition closest to the given
epoch.
:param epoch: Epoch close to the desired opposition
:type epoch: :py:class:`Epoch`
:returns: The time when the opposition happens, as an Epoch
:rtype: :py:class:`Epoch`
:raises: TypeError if input value is of wrong type.
:raises: ValueError if input epoch outside the -2000/4000 range.
>>> epoch = Epoch(1780, 12, 1.0)
>>> oppo = Uranus.opposition(epoch)
>>> y, m, d = oppo.get_date()
>>> print(y)
1780
>>> print(m)
12
>>> print(round(d, 4))
17.5998
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Check that the input epoch is within valid range
y = epoch.year()
if y < -2000.0 or y > 4000.0:
raise ValueError("Epoch outside the -2000/4000 range")
# Set some specific constants for Uranus' opposition
a = 2451764.317
b = 369.656035
m0 = 213.6884
m1 = 4.333093
k = round((365.2425 * y + 1721060.0 - a) / b)
jde0 = a + k * b
m = m0 + k * m1
m = Angle(m).to_positive()
m = m.rad()
t = (jde0 - 2451545.0) / 36525.0
# Compute a couple auxiliary angles
ee = 207.83 + 8.51 * t
ff = 108.84 + 419.96 * t
# Convert to radians
ee = Angle(ee).rad()
ff = Angle(ff).rad()
corr = (0.0844 - t * 0.0006 +
sin(m) * (-0.1048 + t * 0.0246) +
cos(m) * (-5.1221 + t * (0.0104 + t * 0.00003)) +
sin(2.0 * m) * (-0.1428 + t * 0.0005) +
cos(2.0 * m) * (-0.0148 - t * 0.0013) +
cos(3.0 * m) * (0.0055) +
cos(ee) * (0.885) +
cos(ff) * (0.2153))
to_return = jde0 + corr
return Epoch(to_return)
@staticmethod
def perihelion_aphelion(epoch, perihelion=True):
"""This method computes the time of Perihelion (or Aphelion) closer to
a given epoch.
:param epoch: Epoch close to the desired Perihelion (or Aphelion)
:type epoch: :py:class:`Epoch`
:param peihelion: If True, the epoch of the closest Perihelion is
computed, if False, the epoch of the closest Aphelion is found.
:type bool:
:returns: The epoch of the desired Perihelion (or Aphelion)
:rtype: :py:class:`Epoch`
:raises: TypeError if input values are of wrong type.
.. note:: The solution provided by this method may have several days of
error.
>>> epoch = Epoch(1880, 1, 1.0)
>>> e = Uranus.perihelion_aphelion(epoch)
>>> y, m, d = e.get_date()
>>> print(y)
1882
>>> print(m)
3
>>> print(int(d))
18
>>> epoch = Epoch(2090, 1, 1.0)
>>> e = Uranus.perihelion_aphelion(epoch, perihelion=False)
>>> y, m, d = e.get_date()
>>> print(y)
2092
>>> print(m)
11
>>> print(int(d))
22
"""
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input value")
# First approximation
k = 0.0119 * (epoch.year() - 2051.1)
if perihelion:
k = round(k)
else:
k = round(k + 0.5) - 0.5
jde = 2470213.5 + k * (30694.8767 - k * 0.00541)
# Compute the epochs 1 year before and after
jde_before = jde - 360.0
jde_after = jde + 360.0
# Compute the Sun-Uranus distance for each epoch
l, b, r_b = Uranus.geometric_heliocentric_position(Epoch(jde_before))
l, b, r = Uranus.geometric_heliocentric_position(Epoch(jde))
l, b, r_a = Uranus.geometric_heliocentric_position(Epoch(jde_after))
# Call an interpolation object
m = Interpolation([jde_before, jde, jde_after], [r_b, r, r_a])
sol = m.minmax()
return Epoch(sol)
@staticmethod
def passage_nodes(epoch, ascending=True):
"""This function computes the time of passage by the nodes (ascending
or descending) of Uranus, nearest to the given epoch.
:param epoch: Epoch closest to the node passage
:type epoch: :py:class:`Epoch`
:param ascending: Whether the time of passage by the ascending (True)
or descending (False) node will be computed
:type ascending: bool
:returns: Tuple containing:
- Time of passage through the node (:py:class:`Epoch`)
- Radius vector when passing through the node (in AU, float)
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(2019, 1, 1)
>>> time, r = Uranus.passage_nodes(epoch)
>>> year, month, day = time.get_date()
>>> print(year)
2028
>>> print(month)
8
>>> print(round(day, 1))
23.2
>>> print(round(r, 4))
19.3201
"""
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input types")
# Get the orbital parameters
l, a, e, i, ome, arg = Uranus.orbital_elements_mean_equinox(epoch)
# Compute the time of passage through perihelion
t = Uranus.perihelion_aphelion(epoch)
# Get the time of passage through the node
time, r = passage_nodes_elliptic(arg, e, a, t, ascending)
return time, r
@staticmethod
def magnitude(sun_dist, earth_dist):
"""This function computes the approximate magnitude of Uranus.
:param sun_dist: Distance from Uranus to Sun, in Astronomical Units
:type sun_dist: float
:param earth_dist: Distance from Uranus to Earth, in Astronomical Units
:type earth_dist: float
:returns: Uranus's magnitude
:rtype: float
:raises: TypeError if input values are of wrong type.
"""
if not (isinstance(sun_dist, float) and isinstance(earth_dist, float)):
raise TypeError("Invalid input types")
m = -6.85 + 5.0 * log10(sun_dist * earth_dist)
return round(m, 1)
def main():
# Let's define a small helper function
def print_me(msg, val):
print("{}: {}".format(msg, val))
# Let's show some uses of Uranus class
print("\n" + 35 * "*")
print("*** Use of Uranus class")
print(35 * "*" + "\n")
# Let's now compute the heliocentric position for a given epoch
epoch = Epoch(2018, 10, 27.0)
lon, lat, r = Uranus.geometric_heliocentric_position(epoch)
print_me("Geometric Heliocentric Longitude", lon.to_positive())
print_me("Geometric Heliocentric Latitude", lat)
print_me("Radius vector", r)
print("")
# Compute the geocentric position for 1992/12/20:
epoch = Epoch(1992, 12, 20.0)
ra, dec, elon = Uranus.geocentric_position(epoch)
print_me("Right ascension", ra.ra_str(n_dec=1))
print_me("Declination", dec.dms_str(n_dec=1))
print_me("Elongation", elon.dms_str(n_dec=1))
print("")
# Print mean orbital elements for Uranus at 2065.6.24
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Uranus.orbital_elements_mean_equinox(epoch)
print_me("Mean longitude of the planet", round(l, 6)) # 235.517526
print_me("Semimajor axis of the orbit (UA)", round(a, 8)) # 19.21844604
print_me("Eccentricity of the orbit", round(e, 7)) # 0.0463634
print_me("Inclination on plane of the ecliptic", round(i, 6)) # 0.77372
print_me("Longitude of the ascending node", round(ome, 5)) # 74.34776
print_me("Argument of the perihelion", round(arg, 6)) # 99.630865
print("")
# Compute the time of the conjunction close to 1993/10/1
epoch = Epoch(1993, 10, 1.0)
conj = Uranus.conjunction(epoch)
y, m, d = conj.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Conjunction date", date)
# Compute the time of the opposition close to 1780/12/1
epoch = Epoch(1780, 12, 1.0)
oppo = Uranus.opposition(epoch)
y, m, d = oppo.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Opposition date", date)
print("")
# Find the epoch of the Perihelion closer to 1780/1/1
epoch = Epoch(1780, 1, 1.0)
e = Uranus.perihelion_aphelion(epoch)
y, m, d = e.get_date()
peri = str(y) + '/' + str(m) + '/' + str(int(d))
print_me("The Perihelion closest to 1780/1/1 happened on", peri)
print("")
# Compute the time of passage through an ascending node
epoch = Epoch(2019, 1, 1)
time, r = Uranus.passage_nodes(epoch)
y, m, d = time.get_date()
d = round(d, 1)
print("Time of passage through ascending node: {}/{}/{}".format(y, m, d))
# 2028/8/23.2
print("Radius vector at ascending node: {}".format(round(r, 4))) # 19.3201
if __name__ == "__main__":
main()
pymeeus-0.3.6/pymeeus/Venus.py 0000664 0000000 0000000 00000353465 13555455377 0016413 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from math import sin, cos, tan, acos, atan2, sqrt, radians, log10
from pymeeus.Angle import Angle
from pymeeus.Epoch import Epoch, JDE2000
from pymeeus.Interpolation import Interpolation
from pymeeus.Coordinates import (
geometric_vsop_pos, apparent_vsop_pos, orbital_elements,
nutation_longitude, true_obliquity, ecliptical2equatorial,
passage_nodes_elliptic
)
from pymeeus.Earth import Earth
from pymeeus.Sun import Sun
"""
.. module:: Venus
:synopsis: Class to model Venus planet
:license: GNU Lesser General Public License v3 (LGPLv3)
.. moduleauthor:: Dagoberto Salazar
"""
VSOP87_L = [
# L0
[
[317614666.774, 0.00000000000, 0.00000000000],
[1353968.419, 5.59313319619, 10213.28554621100],
[89891.645, 5.30650048468, 20426.57109242200],
[5477.201, 4.41630652531, 7860.41939243920],
[3455.732, 2.69964470778, 11790.62908865880],
[2372.061, 2.99377539568, 3930.20969621960],
[1317.108, 5.18668219093, 26.29831979980],
[1664.069, 4.25018935030, 1577.34354244780],
[1438.322, 4.15745043958, 9683.59458111640],
[1200.521, 6.15357115319, 30639.85663863300],
[761.380, 1.95014702120, 529.69096509460],
[707.676, 1.06466707214, 775.52261132400],
[584.836, 3.99839884762, 191.44826611160],
[769.314, 0.81629615911, 9437.76293488700],
[499.915, 4.12340210074, 15720.83878487840],
[326.221, 4.59056473097, 10404.73381232260],
[429.498, 3.58642859752, 19367.18916223280],
[326.967, 5.67736583705, 5507.55323866740],
[231.937, 3.16251057072, 9153.90361602180],
[179.695, 4.65337915578, 1109.37855209340],
[128.263, 4.22604493736, 20.77539549240],
[155.464, 5.57043888948, 19651.04848109800],
[127.907, 0.96209822685, 5661.33204915220],
[105.547, 1.53721191253, 801.82093112380],
[85.722, 0.35589249966, 3154.68708489560],
[99.121, 0.83288185132, 213.29909543800],
[98.804, 5.39389655503, 13367.97263110660],
[82.094, 3.21596990826, 18837.49819713819],
[88.031, 3.88868860307, 9999.98645077300],
[71.577, 0.11145739345, 11015.10647733480],
[56.122, 4.24039855475, 7.11354700080],
[70.239, 0.67458813282, 23581.25817731760],
[50.796, 0.24531603049, 11322.66409830440],
[46.111, 5.31576465717, 18073.70493865020],
[44.574, 6.06282201966, 40853.14218484400],
[42.594, 5.32873337210, 2352.86615377180],
[42.635, 1.79955421680, 7084.89678111520],
[41.177, 0.36240972161, 382.89653222320],
[35.749, 2.70448479296, 10206.17199921020],
[33.893, 2.02347322198, 6283.07584999140],
[29.138, 3.59230925768, 22003.91463486980],
[28.479, 2.22375414002, 1059.38193018920],
[29.850, 4.02176977477, 10239.58386601080],
[33.252, 2.10025596509, 27511.46787353720],
[30.172, 4.94191919890, 13745.34623902240],
[29.252, 3.51392387787, 283.85931886520],
[24.424, 2.70177493852, 8624.21265092720],
[20.274, 3.79493637509, 14143.49524243060],
[24.322, 4.27814493315, 5.52292430740],
[26.260, 0.54067587552, 17298.18232732620],
[20.492, 0.58547075036, 38.02767263580],
[18.988, 4.13811500642, 4551.95349705880],
[23.739, 4.82870797552, 6872.67311951120],
[15.885, 1.50067222283, 8635.94200376320],
[19.069, 6.12025580313, 29050.78374334920],
[18.269, 3.04740408477, 19999.97290154599],
[13.656, 4.41336292334, 3532.06069281140],
[17.094, 3.52161526430, 31441.67756975680],
[10.955, 2.84562790076, 18307.80723204360],
[11.048, 2.58361219075, 9786.68735533500],
[9.904, 1.08737710389, 7064.12138562280],
[10.576, 0.85419784436, 10596.18207843420],
[9.231, 5.52471655579, 12566.15169998280],
[11.599, 5.81007422699, 19896.88012732740],
[11.807, 1.91250672543, 21228.39202354580],
[10.105, 2.34270786693, 10742.97651130560],
[8.154, 1.92331359797, 15.25247118500],
[8.893, 1.97291388515, 10186.98722641120],
[9.352, 4.94508904764, 35371.88726597640],
[6.821, 4.39733188968, 8662.24032356300],
[6.688, 1.55310437864, 14945.31617355440],
[6.413, 2.17677652923, 10988.80815753500],
[5.802, 1.93462125906, 3340.61242669980],
[5.950, 2.96578175391, 4732.03062734340],
[5.275, 5.01877102496, 28286.99048486120],
[7.047, 1.00111452053, 632.78373931320],
[5.048, 4.27886209626, 29580.47470844380],
[6.305, 0.35506331180, 103.09277421860],
[5.959, 5.04792949464, 245.83164622940],
[4.651, 0.85218058876, 6770.71060124560],
[5.580, 0.48723384809, 522.57741809380],
[5.327, 3.03115417024, 10021.83728009940],
[5.010, 5.77375166500, 28521.09277825460],
[4.608, 1.93302108394, 4705.73230754360],
[5.526, 3.36797048901, 25158.60171976540],
[3.863, 4.89351531412, 25934.12433108940],
[5.303, 0.08161426841, 39302.09696219600],
[4.254, 5.36046113295, 21535.94964451540],
[3.763, 1.05304597315, 19.66976089979],
[4.407, 4.02575374517, 74.78159856730],
[4.145, 1.14356412295, 9676.48103411560],
[4.318, 4.38289970585, 316.39186965660],
[3.642, 6.11733529325, 3128.38876509580],
[3.238, 5.39551036769, 419.48464387520],
[3.909, 4.05263635330, 9690.70812811720],
[3.152, 0.72553551731, 16496.36139620240],
[3.496, 0.72414615705, 3723.50895892300],
[3.755, 3.80208713127, 19786.67380610799],
[2.891, 3.33782737770, 32217.20018108080],
[3.016, 1.57249112496, 17277.40693183380],
[3.825, 0.19612312903, 426.59819087600],
[3.798, 0.45524571743, 10316.37832042960],
[2.570, 1.20813474107, 13936.79450513400],
[2.796, 3.65128969074, 206.18554843720],
[2.466, 3.61988676373, 1551.04522264800],
[3.108, 1.50325806664, 43232.30665841560],
[2.976, 4.79415001304, 29088.81141598500],
[2.217, 3.59623681714, 24356.78078864160],
[2.227, 4.96059221940, 536.80451209540],
[2.397, 3.45249688427, 19374.30270923360],
[2.462, 0.53295178258, 19360.07561523199],
[2.205, 2.70399309963, 12592.45001978260],
[2.230, 3.01413465913, 18875.52586977400],
[1.858, 4.06129152783, 2379.16447357160],
[1.807, 3.15086214479, 9573.38825989700],
[2.238, 5.52216925076, 10138.50394764370],
[2.195, 2.32046770554, 8094.52168583260],
[2.101, 2.90421302975, 9967.45389998160],
[1.916, 4.56513949099, 2218.75710418680],
[1.467, 2.42640162465, 10234.06094170340],
[1.726, 5.59790693845, 20452.86941222180],
[1.455, 2.44757248737, 1589.07289528380],
[1.991, 4.04623390359, 31749.23519072640],
[1.406, 2.71736996917, 16983.99614745660],
[1.658, 0.11252373292, 153.77881048480],
[1.851, 2.92898027939, 47162.51635463520],
[1.492, 1.07513892753, 9103.90699411760],
[1.247, 2.48433565896, 17778.11626694899],
[1.549, 4.20553654300, 3442.57494496540],
[1.243, 3.95452438599, 170.67287061920],
[1.694, 6.20694480406, 33019.02111220460],
[1.221, 4.77931820602, 30110.16567353840],
[1.206, 0.30531303095, 29864.33402730900],
[1.238, 5.05581820608, 20213.27199698400],
[1.152, 3.26229919481, 11.72935283600],
[1.179, 1.69491074791, 20400.27277262220],
[1.165, 2.88995128147, 574.34479833480],
[1.306, 0.14519588607, 9146.79006902100],
[1.113, 1.52598846804, 10426.58464164900],
[1.104, 2.58791423813, 18849.22754997420],
[1.045, 0.57539216420, 15874.61759536320],
[1.360, 2.41976595457, 38734.37832446560],
[0.981, 4.37930727798, 110.20632121940],
[1.095, 0.49492867814, 51066.42773105500],
[1.146, 4.54241454215, 10220.39909321180],
[0.981, 1.65915064733, 10103.07922499160],
[1.270, 4.69374306132, 9050.81084180320],
[1.065, 4.41645258887, 22805.73556599360],
[0.854, 2.34437926957, 6681.22485339960],
[1.104, 0.49781459714, 1.48447270830],
[1.075, 1.09857593161, 377.37360791580],
[1.114, 4.35024775806, 51092.72605085480],
[0.829, 5.41196274578, 27991.40181316000],
[0.900, 2.74195379617, 41962.52073693740],
[1.010, 2.96092073452, 135.62532501000],
[0.768, 3.98260860494, 18844.61174413899],
[1.018, 1.36891050752, 36949.23080842420],
[0.726, 1.67728773965, 21202.09370374600],
[0.727, 0.89048212541, 467.96499035440],
[0.869, 2.93767679827, 10192.51015071860],
[0.696, 5.35698039414, 10063.72234907640],
[0.920, 4.17128923588, 18734.40542291960],
[0.691, 1.50594097883, 27197.28169366760],
[0.835, 0.48050621092, 20618.01935853360],
[0.711, 0.19750098222, 18830.38465013739],
[0.811, 0.16685071959, 12432.04265039780],
[0.756, 3.79022623226, 9161.01716302260],
[0.622, 5.33659507738, 9411.46461508720],
[0.862, 5.72705356405, 10175.15251057320],
[0.853, 0.10404188453, 2107.03450754240],
[0.742, 3.96365892051, 813.55028395980],
[0.705, 0.71229660616, 220.41264243880],
[0.584, 1.71900692700, 36.02786667740],
[0.612, 0.36418385449, 949.17560896980],
[0.587, 1.58648949290, 6.62855890001],
[0.581, 5.49288908804, 6309.37416979120],
[0.581, 4.80353237853, 24150.08005134500],
[0.516, 6.07328802561, 38.13303563780],
[0.627, 5.47281424954, 9580.50180689780],
[0.601, 1.40500080774, 1162.47470440780],
[0.620, 4.00681042667, 9992.87290377220],
[0.611, 3.62010998629, 7255.56965173440],
[0.697, 2.22359630727, 348.92442044800],
[0.693, 5.77432072851, 55022.93574707440],
[0.494, 0.29761886866, 7058.59846131540],
[0.563, 0.24172140474, 37410.56723987860],
[0.487, 5.86917216517, 10137.01947493540],
[0.493, 2.04534833854, 735.87651353180],
[0.636, 2.79707392326, 40879.44050464380],
[0.519, 4.13945657630, 16522.65971600220],
[0.535, 4.60569597820, 19573.37471066999],
[0.555, 5.88120421263, 26735.94526221320],
[0.440, 5.61490649795, 23958.63178523340],
[0.541, 0.62494922735, 10007.09999777380],
[0.427, 4.02335620501, 14.22709400160],
[0.434, 0.29028429049, 9264.10993724120],
[0.451, 1.66320363626, 26087.90314157420],
[0.422, 3.38413582674, 10787.63034454580],
[0.569, 5.14001758731, 27490.69247804480],
[0.421, 4.23407313457, 39793.76025465480],
[0.458, 5.28786368820, 49.75702547180],
[0.418, 5.69097790790, 14765.23904326980],
[0.475, 0.97544690438, 1052.26838318840],
[0.387, 4.41665162999, 21.85082932640],
[0.523, 2.90512426870, 20235.12282631040],
[0.506, 5.26999314618, 29999.95935231900],
[0.438, 2.49457071132, 20956.26205751660],
[0.530, 0.71368442157, 33794.54372352860],
[0.382, 1.92119365480, 3.93215326310],
[0.365, 3.81715328784, 20419.45754542119],
[0.426, 2.06384083608, 38204.68735937100],
[0.496, 0.44077356179, 9835.91193829520],
[0.410, 4.93346326003, 19264.09638801420],
[0.380, 3.79573358631, 8521.11987670860],
[0.334, 5.51158557799, 10251.31321884680],
[0.412, 2.56129670728, 77.67377042800],
[0.418, 2.37865963521, 32.53255079140],
[0.325, 6.03020523465, 18947.70451835760],
[0.400, 0.91999360201, 227.47613278900],
[0.437, 0.91420135162, 58953.14544329400],
[0.360, 0.82477639126, 22.77520145080],
[0.413, 4.22381905655, 44809.65020086340],
[0.375, 3.15657291896, 19992.85935454519],
[0.371, 6.05370874275, 20007.08644854680],
[0.361, 5.44371227904, 19470.28193645139],
[0.386, 5.28120540405, 47623.85278608960],
[0.389, 0.73216672240, 19050.79729257620],
[0.320, 2.84811591194, 10199.05845220940],
[0.386, 3.88754165531, 1975.49254585600],
[0.276, 4.33979180814, 20809.46762464520],
[0.276, 0.50647429773, 9830.38901398780],
[0.309, 3.79299100668, 18204.71445782499],
[0.377, 0.73768791281, 11506.76976979360],
[0.322, 0.96138442100, 30666.15495843280],
[0.363, 1.30472406690, 9367.20271145980],
[0.366, 2.79972786028, 11272.66747640020],
[0.271, 4.66141338193, 846.08283475120],
[0.259, 0.42031175750, 39264.06928956020],
[0.285, 0.40546033634, 30.91412563500],
[0.247, 4.80676426942, 36147.40987730040],
[0.264, 2.71608177583, 11.04570026390],
[0.233, 2.76423842887, 187.92514776260],
[0.248, 1.60765612338, 10497.14486507620],
[0.271, 0.82348919630, 19793.78735310880],
[0.225, 3.80080957016, 8631.32619792800],
[0.263, 1.92311689852, 37724.75341974820],
[0.214, 5.01663795092, 639.89728631400],
[0.289, 0.12342601246, 20277.00789528740],
[0.210, 0.12771800254, 29.82143814880],
[0.227, 4.18036609801, 17468.85519794540],
[0.274, 2.34929343000, 62883.35513951360],
[0.260, 5.65254501655, 48739.85989708300],
[0.271, 4.95325404028, 4214.06901508480],
[0.219, 2.08775228014, 194.97138446060],
[0.191, 2.49267248333, 568.82187402740],
[0.250, 1.52909737354, 6037.24420376200],
[0.231, 5.23674429498, 491.66329245880],
[0.182, 4.98046042571, 18418.01355326299],
[0.188, 2.82273639603, 1385.89527633620],
[0.204, 4.09939796199, 14919.01785375460],
[0.176, 3.82400982460, 9360.08916445900],
[0.198, 2.76491873243, 10217.21769947410],
[0.168, 5.19268384202, 1066.49547719000],
[0.199, 1.95301487982, 7564.83072073800],
[0.171, 2.59623459612, 20405.79569692960],
[0.172, 5.29332132623, 11764.33076885900],
[0.165, 2.88557908025, 10207.76262190360],
[0.164, 3.25435371801, 3914.95722503460],
[0.200, 3.82443218090, 18314.92077904440],
[0.169, 1.78341902878, 31022.75317085620],
[0.179, 0.90840065587, 7880.08915333899],
[0.163, 2.79665037814, 41.55079098480],
[0.154, 3.90796293476, 30213.25844775700],
[0.153, 0.07463240782, 28528.20632525540],
[0.194, 5.95838706838, 8617.09910392640],
[0.171, 4.58206324409, 20447.34648791440],
[0.150, 2.11647586229, 17248.42530185440],
[0.149, 2.17259986320, 9929.42622734580],
[0.191, 0.82310353823, 52670.06959330260],
[0.148, 2.94315921485, 41654.96311596780],
[0.149, 4.49798039726, 30831.30490474460],
[0.184, 2.46923348701, 34596.36465465240],
[0.146, 2.69452930300, 43071.89928903080],
[0.159, 2.11137713570, 19317.19254032860],
[0.154, 2.76536164654, 28513.97923125379],
[0.140, 4.94595038686, 9256.99639024040],
[0.141, 2.57248458154, 13553.89797291080],
[0.137, 1.66482327575, 2636.72547263700],
[0.140, 5.23039605990, 22645.32819660879],
[0.132, 5.35690599728, 19624.75016129820],
[0.140, 2.90637712614, 48947.66387067660],
[0.129, 3.95303623681, 32858.61374281979],
[0.156, 6.01143316387, 29057.89729034999],
[0.134, 5.75241675118, 68050.42387851159],
[0.154, 3.66827363753, 276.74577186440],
[0.176, 3.77298381177, 66813.56483573320],
[0.126, 5.00217740223, 27461.71084806540],
[0.135, 1.34807013920, 53285.18483524180],
[0.150, 0.25029475344, 290.97286586600],
[0.152, 3.13035670092, 29043.67019634839],
[0.169, 5.04348109430, 73.29712585900],
[0.166, 5.39219948035, 41236.03871706720],
[0.163, 5.59796070987, 7576.56007357400],
[0.126, 0.77391784606, 49.99662190420],
[0.163, 0.44241846674, 20350.30502114640],
[0.136, 3.09066368912, 418.92439890060],
[0.154, 0.47086190960, 28418.00000403600],
[0.120, 0.88536981986, 29573.36116144300],
[0.132, 1.48009769040, 17085.95866572220],
[0.126, 1.39497760964, 966.97087743560],
[0.143, 3.84026797958, 14128.24277124560],
[0.147, 2.11627427804, 34363.36559755600],
[0.106, 2.04696932293, 37674.99639427640],
[0.106, 1.43873202489, 27682.14074415640],
[0.149, 0.09286508794, 8144.27871130440],
[0.103, 0.01992041470, 18300.69368504279],
[0.121, 3.57602835443, 45.14121963660],
[0.125, 0.11630302078, 149.56319713460],
[0.102, 4.17947097730, 2333.19639287200],
[0.099, 1.51324741657, 10419.47109464820],
[0.133, 3.02183293676, 76251.32777062019],
[0.136, 4.17517197268, 3646.35037735440],
[0.123, 0.44045588682, 515.46387109300],
[0.113, 5.69261397718, 10110.19277199240],
[0.098, 6.23797900467, 202.25339517410],
[0.099, 3.75627530197, 59728.66805461800],
[0.101, 4.62832557536, 65236.22129328540],
[0.111, 1.25947267588, 10846.06928552420],
[0.110, 5.87455577536, 38500.27603107220],
[0.128, 6.01024562160, 90394.82301305079],
[0.091, 1.77665981007, 1539.31586981200],
[0.092, 0.99804571578, 95.97922721780],
[0.120, 3.93060866244, 38526.57435087200],
[0.117, 2.24143299549, 56600.27928952220],
[0.118, 6.09121325940, 29786.66025688100],
[0.098, 4.60938156207, 11787.10597030980],
[0.097, 3.92727733144, 11794.15220700780],
[0.093, 5.23395435043, 14169.79356223040],
[0.096, 5.27525709038, 8734.41897214660],
[0.094, 0.18166654805, 67589.08744705719],
[0.110, 4.96279287076, 48417.97290558199],
[0.086, 0.39533409505, 3956.50801601940],
[0.085, 5.69642646462, 37703.97802425580],
[0.114, 5.19676285428, 70743.77453195279],
[0.081, 5.51324815184, 412.37109687440],
[0.089, 2.13409771828, 44768.09940987860],
[0.084, 6.02475904578, 10632.77019008620],
[0.085, 4.60912614442, 45585.17281218740],
[0.078, 4.47358603432, 114.43928868521],
[0.097, 4.02223363535, 10218.80847051840],
[0.081, 1.03870237004, 9793.80090233580],
[0.092, 0.80301220092, 24383.07910844140],
[0.087, 2.15124790938, 28313.28880466100],
[0.075, 5.17868679355, 63658.87775083760],
[0.078, 5.81927313665, 567.71863773040],
[0.075, 1.72618192481, 19580.48825767080],
[0.071, 0.10259261764, 90695.75207512038],
[0.077, 6.16012067704, 1573.82042409880],
[0.076, 5.12884307551, 49515.38250840700],
[0.069, 0.29569499484, 10175.25787357520],
[0.061, 4.80385549281, 19889.76658032659],
[0.060, 4.56685040226, 30426.55754319500],
[0.062, 4.16222812699, 42430.48572729180],
[0.050, 6.17899839001, 22779.43724619380],
[0.048, 1.52546758016, 20639.87018786000],
[0.046, 4.41738494249, 34570.06633485260],
[0.037, 4.69675087759, 44007.82926973960],
],
# L1
[
[1021352943052.898, 0.00000000000, 0.00000000000],
[95707.712, 2.46424448979, 10213.28554621100],
[14444.977, 0.51624564679, 20426.57109242200],
[213.374, 1.79547929368, 30639.85663863300],
[151.669, 6.10635282369, 1577.34354244780],
[173.904, 2.65535879443, 26.29831979980],
[82.233, 5.70234133730, 191.44826611160],
[69.734, 2.68136034979, 9437.76293488700],
[52.408, 3.60013087656, 775.52261132400],
[38.318, 1.03379038025, 529.69096509460],
[29.633, 1.25056322354, 5507.55323866740],
[25.056, 6.10664792855, 10404.73381232260],
[17.772, 6.19369798901, 1109.37855209340],
[16.510, 2.64330452640, 7.11354700080],
[14.230, 5.45138233941, 9153.90361602180],
[12.607, 1.24464400689, 40853.14218484400],
[11.627, 4.97604495371, 213.29909543800],
[12.563, 1.88122199199, 382.89653222320],
[8.869, 0.95282732248, 13367.97263110660],
[7.374, 4.39476760580, 10206.17199921020],
[6.552, 2.28168808058, 2352.86615377180],
[6.255, 4.08056644034, 3154.68708489560],
[6.697, 5.05673427795, 801.82093112380],
[4.084, 4.12103826030, 18837.49819713819],
[4.882, 3.44515199115, 11015.10647733480],
[3.549, 6.19934345402, 5.52292430740],
[3.448, 1.77405651704, 11322.66409830440],
[4.290, 0.08154809210, 6283.07584999140],
[3.694, 2.48453945256, 5661.33204915220],
[3.555, 1.48036949420, 1059.38193018920],
[3.023, 2.24092938317, 18073.70493865020],
[3.000, 0.39169917698, 15.25247118500],
[2.563, 0.35147506973, 22003.91463486980],
[2.774, 1.45683830639, 10239.58386601080],
[2.951, 5.34618097429, 7084.89678111520],
[2.344, 2.36652432105, 17298.18232732620],
[2.405, 2.36085282088, 10596.18207843420],
[1.720, 4.72129626061, 10186.98722641120],
[2.209, 2.07730338665, 8635.94200376320],
[2.122, 4.47091605309, 8624.21265092720],
[1.527, 0.67146857292, 14143.49524243060],
[1.473, 2.59350470099, 7064.12138562280],
[1.311, 0.90408820221, 12566.15169998280],
[1.474, 5.92236241437, 9786.68735533500],
[1.237, 2.59740787132, 4551.95349705880],
[1.219, 2.83617320088, 9676.48103411560],
[1.116, 3.83715584719, 21228.39202354580],
[1.006, 4.26200749078, 426.59819087600],
[1.150, 2.35531987378, 9690.70812811720],
[1.219, 2.27324315182, 522.57741809380],
[1.150, 0.81088598778, 10742.97651130560],
[1.101, 3.74248783564, 18307.80723204360],
[1.031, 2.03889374176, 38.02767263580],
[0.971, 6.10590045414, 3532.06069281140],
[0.844, 4.75124127613, 10988.80815753500],
[0.908, 1.06613723738, 10021.83728009940],
[0.824, 0.23090829723, 28286.99048486120],
[0.821, 2.60456032773, 19.66976089979],
[0.728, 0.10716917942, 4705.73230754360],
[0.744, 3.33129778857, 536.80451209540],
[0.816, 1.27303930175, 19896.88012732740],
[0.929, 1.08024621325, 11790.62908865880],
[0.797, 2.23891816523, 3723.50895892300],
[0.704, 5.95307260017, 20.77539549240],
[0.665, 0.21346689192, 7860.41939243920],
[0.733, 2.22147883292, 19360.07561523199],
[0.702, 1.76206343944, 19374.30270923360],
[0.575, 2.38792087791, 6770.71060124560],
[0.538, 1.52023264138, 25934.12433108940],
[0.690, 4.01873754171, 19651.04848109800],
[0.532, 4.41576130890, 574.34479833480],
[0.540, 2.15936134728, 16496.36139620240],
[0.576, 5.41170044566, 206.18554843720],
[0.482, 0.40815793538, 3340.61242669980],
[0.501, 3.08578363577, 245.83164622940],
[0.488, 5.22311611589, 25158.60171976540],
[0.450, 0.21279844600, 11.72935283600],
[0.432, 1.32004964493, 103.09277421860],
[0.434, 5.91094755233, 19786.67380610799],
[0.564, 0.38776462529, 19367.18916223280],
[0.421, 2.71057839701, 13936.79450513400],
[0.549, 6.08792865644, 3930.20969621960],
[0.478, 4.70234715828, 14945.31617355440],
[0.408, 4.80890663927, 32217.20018108080],
[0.404, 2.85003595942, 29864.33402730900],
[0.407, 2.94002049006, 10220.39909321180],
[0.359, 0.72354778897, 419.48464387520],
[0.449, 1.44520508753, 8662.24032356300],
[0.353, 2.22195492336, 51066.42773105500],
[0.324, 1.40308439067, 29580.47470844380],
[0.443, 1.93864353398, 9146.79006902100],
[0.314, 0.96837035284, 20618.01935853360],
[0.324, 5.10759068171, 24356.78078864160],
[0.324, 1.80146948625, 18830.38465013739],
[0.370, 6.16895004656, 2218.75710418680],
[0.278, 2.20429108375, 18844.61174413899],
[0.286, 3.08459438435, 17277.40693183380],
[0.383, 0.13890934755, 4732.03062734340],
[0.292, 0.43528982259, 29088.81141598500],
[0.273, 5.84415407168, 9573.38825989700],
[0.324, 2.14144542781, 9999.98645077300],
[0.264, 5.20407029554, 220.41264243880],
[0.254, 0.34411959301, 28521.09277825460],
[0.300, 3.76014360906, 8094.52168583260],
[0.301, 3.64457981649, 20400.27277262220],
[0.287, 1.84003536598, 1589.07289528380],
[0.206, 0.97167234723, 10234.06094170340],
[0.212, 0.24173677600, 36.02786667740],
[0.216, 5.88618923030, 18875.52586977400],
[0.198, 1.89506914939, 20452.86941222180],
[0.258, 6.27611355094, 1551.04522264800],
[0.197, 2.09222675324, 9683.59458111640],
[0.217, 5.79472589364, 9103.90699411760],
[0.188, 0.39123199129, 19573.37471066999],
[0.195, 6.23142464829, 30110.16567353840],
[0.187, 5.49670351645, 170.67287061920],
[0.178, 4.90042854659, 10787.63034454580],
[0.188, 1.62614804098, 9161.01716302260],
[0.211, 2.71884568392, 15720.83878487840],
[0.177, 1.88170417337, 33019.02111220460],
[0.209, 2.66033422116, 3442.57494496540],
[0.164, 4.92240093026, 10426.58464164900],
[0.186, 5.13678812068, 7255.56965173440],
[0.177, 5.70206821967, 9992.87290377220],
[0.214, 2.70027196648, 3128.38876509580],
[0.208, 3.38876526854, 17778.11626694899],
[0.147, 4.25008782855, 16983.99614745660],
[0.148, 3.46404418130, 21202.09370374600],
[0.189, 1.43553862242, 2379.16447357160],
[0.139, 2.99154379541, 110.20632121940],
[0.159, 5.23851679605, 10007.09999777380],
[0.136, 0.88942869764, 22805.73556599360],
[0.155, 5.90500835975, 12592.45001978260],
[0.151, 0.03422618975, 27991.40181316000],
[0.153, 4.01743770323, 33794.54372352860],
[0.121, 0.51392111799, 21535.94964451540],
[0.109, 2.25388616761, 26735.94526221320],
[0.109, 0.78612823474, 6681.22485339960],
[0.122, 4.84805105466, 19992.85935454519],
[0.112, 3.31796669604, 36949.23080842420],
[0.106, 3.34507236765, 10103.07922499160],
[0.114, 4.36384000196, 20007.08644854680],
[0.098, 5.07711736751, 135.62532501000],
[0.120, 5.41870615047, 37724.75341974820],
[0.103, 2.62610244425, 20213.27199698400],
[0.085, 5.04808202087, 9830.38901398780],
[0.103, 2.01549383816, 45585.17281218740],
[0.088, 2.62613816931, 21.85082932640],
[0.084, 3.50355880173, 639.89728631400],
[0.099, 0.61079620895, 41654.96311596780],
[0.088, 3.63836700262, 49515.38250840700],
[0.098, 2.42401801881, 23581.25817731760],
[0.081, 0.46468679835, 77.67377042800],
[0.092, 4.82530051729, 29043.67019634839],
[0.102, 4.27051236894, 15874.61759536320],
[0.090, 4.34075776744, 29057.89729034999],
[0.081, 0.01896422336, 24150.08005134500],
[0.093, 1.79250830018, 12432.04265039780],
[0.087, 5.25157021446, 14128.24277124560],
[0.089, 5.65756996753, 377.37360791580],
[0.097, 5.67942873241, 227.47613278900],
[0.076, 2.93363913259, 38204.68735937100],
[0.091, 2.60544242067, 1052.26838318840],
[0.087, 3.82284200928, 27511.46787353720],
[0.073, 4.75280755154, 40879.44050464380],
[0.067, 3.54815262526, 30666.15495843280],
[0.067, 5.81350818057, 20809.46762464520],
[0.064, 4.24772678145, 153.77881048480],
[0.064, 2.99454749109, 27197.28169366760],
[0.070, 4.03868009742, 56600.27928952220],
[0.071, 4.33628806850, 39264.06928956020],
[0.069, 1.73648747605, 37410.56723987860],
[0.065, 1.08206062736, 68050.42387851159],
[0.062, 4.77698454650, 3914.95722503460],
[0.061, 4.96121014691, 34596.36465465240],
[0.063, 5.04865067599, 53445.59220462660],
[0.058, 3.74010494151, 1066.49547719000],
[0.057, 5.39355890141, 20419.45754542119],
[0.057, 3.59399518494, 735.87651353180],
[0.065, 2.10322000074, 74.78159856730],
[0.073, 1.31083648835, 11272.66747640020],
[0.055, 1.33161298098, 18300.69368504279],
[0.065, 4.21150522641, 49.75702547180],
[0.061, 5.66161679402, 17468.85519794540],
[0.053, 4.30231233835, 18849.22754997420],
[0.055, 2.63906959481, 52670.06959330260],
[0.050, 5.69803054279, 39793.76025465480],
[0.049, 0.77345264124, 35371.88726597640],
[0.048, 6.00565977593, 283.85931886520],
[0.047, 2.63299859494, 51868.24866217880],
[0.046, 0.05105081843, 38526.57435087200],
[0.050, 4.37549274002, 28513.97923125379],
[0.046, 2.93422086586, 27682.14074415640],
[0.051, 5.45979584751, 60530.48898574180],
[0.045, 5.59492908223, 467.96499035440],
[0.045, 2.34680401001, 9411.46461508720],
[0.045, 0.02999265111, 44809.65020086340],
[0.043, 5.62725673544, 14.22709400160],
[0.047, 3.73567275749, 64460.69868196140],
[0.046, 0.12586526756, 57375.80190084620],
[0.044, 2.03114426076, 18314.92077904440],
[0.039, 0.99375127466, 94138.32702008578],
[0.053, 0.41974404621, 30831.30490474460],
[0.055, 1.38351566741, 38500.27603107220],
[0.041, 4.47012768909, 40077.61957352000],
[0.041, 0.36665992484, 19999.97290154599],
[0.040, 3.06358586355, 813.55028395980],
[0.040, 2.16802870803, 59728.66805461800],
[0.037, 1.08739100421, 17085.95866572220],
[0.039, 1.31040309875, 48739.85989708300],
[0.036, 1.43280677914, 42456.78404709160],
[0.037, 0.14190533464, 29050.78374334920],
[0.037, 3.66792179278, 20956.26205751660],
[0.025, 3.38876180652, 7058.59846131540],
[0.031, 6.16829805337, 10192.51015071860],
],
# L2
[
[54127.076, 0.00000000000, 0.00000000000],
[3891.460, 0.34514360047, 10213.28554621100],
[1337.880, 2.02011286082, 20426.57109242200],
[23.836, 2.04592119012, 26.29831979980],
[19.331, 3.53527371458, 30639.85663863300],
[9.984, 3.97130221102, 775.52261132400],
[7.046, 1.51962593409, 1577.34354244780],
[6.014, 0.99926757893, 191.44826611160],
[3.163, 4.36095475762, 9437.76293488700],
[2.125, 2.65810625752, 40853.14218484400],
[1.934, 3.39287946981, 382.89653222320],
[1.460, 6.04899046273, 529.69096509460],
[1.346, 2.94633106219, 5507.55323866740],
[1.025, 1.40598904981, 10404.73381232260],
[1.221, 3.73339139385, 3154.68708489560],
[1.033, 3.52858472904, 11015.10647733480],
[0.955, 5.11133878923, 801.82093112380],
[0.742, 1.49198584483, 1109.37855209340],
[0.525, 3.32087042103, 213.29909543800],
[0.578, 0.92614279843, 10239.58386601080],
[0.602, 5.19220099775, 7084.89678111520],
[0.431, 2.67159914364, 13367.97263110660],
[0.389, 4.14116341739, 8635.94200376320],
[0.355, 1.12061570874, 9153.90361602180],
[0.301, 3.90047984197, 10596.18207843420],
[0.212, 5.32697688872, 18837.49819713819],
[0.260, 0.22761369281, 2352.86615377180],
[0.243, 4.70747902991, 6283.07584999140],
[0.196, 4.10467294392, 11790.62908865880],
[0.194, 6.01197759470, 7860.41939243920],
[0.140, 4.97015671653, 14143.49524243060],
[0.134, 4.10529011674, 17298.18232732620],
[0.119, 3.39375528828, 11322.66409830440],
[0.126, 0.09854516140, 18073.70493865020],
[0.122, 5.92478855457, 574.34479833480],
[0.107, 0.35660030184, 1059.38193018920],
[0.108, 2.25352052666, 12566.15169998280],
[0.093, 5.48716819776, 10021.83728009940],
[0.084, 4.89744332968, 18307.80723204360],
[0.074, 2.35354025573, 426.59819087600],
[0.093, 4.99316908815, 14945.31617355440],
[0.069, 3.86409065860, 51066.42773105500],
[0.082, 5.36280178643, 10186.98722641120],
[0.077, 3.75728548372, 3723.50895892300],
[0.063, 5.39882267787, 21228.39202354580],
[0.056, 4.11564786973, 7064.12138562280],
[0.056, 6.26920407723, 32217.20018108080],
[0.060, 5.02186497542, 19367.18916223280],
[0.058, 5.13263709670, 20400.27277262220],
[0.051, 4.52870390511, 22003.91463486980],
[0.041, 3.83822107919, 16496.36139620240],
[0.041, 3.36020411807, 4705.73230754360],
[0.043, 5.98371820588, 15720.83878487840],
[0.047, 0.18498155367, 18875.52586977400],
[0.038, 0.52232581277, 1551.04522264800],
[0.039, 5.05391675878, 10742.97651130560],
[0.036, 3.16242472203, 20452.86941222180],
[0.035, 5.17462577483, 29088.81141598500],
[0.035, 3.47325394141, 24356.78078864160],
[0.031, 4.74511706231, 28521.09277825460],
[0.029, 0.19383091192, 19896.88012732740],
[0.033, 1.80059867635, 20618.01935853360],
[0.024, 0.14022912457, 21202.09370374600],
[0.022, 4.73565067573, 10988.80815753500],
[0.018, 0.74039763161, 25158.60171976540],
[0.019, 1.53770232218, 28286.99048486120],
[0.014, 1.49084059765, 30110.16567353840],
[0.013, 4.72171283479, 29864.33402730900],
[0.013, 5.79700427846, 29580.47470844380],
[0.014, 3.69205225010, 27511.46787353720],
],
# L3
[
[135.742, 4.80389020993, 10213.28554621100],
[77.846, 3.66876371591, 20426.57109242200],
[26.023, 0.00000000000, 0.00000000000],
[1.214, 5.31970006917, 30639.85663863300],
[0.254, 4.15021671822, 40853.14218484400],
[0.008, 5.55523563261, 51066.42773105500],
[0.008, 1.40501229148, 1577.34354244780],
[0.006, 1.27791479726, 10404.73381232260],
[0.006, 5.76447068962, 10239.58386601080],
],
# L4
[
[114.016, 3.14159265359, 0.00000000000],
[3.209, 5.20514170164, 20426.57109242200],
[1.714, 2.51099591706, 10213.28554621100],
[0.050, 0.71356059861, 30639.85663863300],
[0.023, 5.68127607034, 40853.14218484400],
],
# L5
[
[0.874, 3.14159265359, 0.00000000000],
[0.117, 0.54643013000, 20426.57109242200],
[0.118, 1.90548541922, 10213.28554621100],
[0.002, 1.07734277826, 40853.14218484400],
[0.002, 1.89460223529, 30639.85663863300],
],
]
"""This table contains Venus's periodic terms (all of them) from the planetary
theory VSOP87 for the heliocentric longitude at the equinox of date (taken from
the 'D' solution). In Meeus' book a shortened version can be found in
pages 418-420."""
VSOP87_B = [
# B0
[
[5923638.472, 0.26702775813, 10213.28554621100],
[40107.978, 1.14737178106, 20426.57109242200],
[32814.918, 3.14159265359, 0.00000000000],
[1011.392, 1.08946123021, 30639.85663863300],
[149.458, 6.25390296069, 18073.70493865020],
[137.788, 0.86020146523, 1577.34354244780],
[129.973, 3.67152483651, 9437.76293488700],
[119.507, 3.70468812804, 2352.86615377180],
[107.971, 4.53903677647, 22003.91463486980],
[92.029, 1.53954562706, 9153.90361602180],
[52.982, 2.28138172277, 5507.55323866740],
[45.617, 0.72319641722, 10239.58386601080],
[38.855, 2.93437865147, 10186.98722641120],
[43.491, 6.14015776699, 11790.62908865880],
[41.700, 5.99126845246, 19896.88012732740],
[39.644, 3.86842095901, 8635.94200376320],
[39.175, 3.94960351174, 529.69096509460],
[33.320, 4.83194909595, 14143.49524243060],
[23.711, 2.90646621218, 10988.80815753500],
[23.500, 2.00770618322, 13367.97263110660],
[21.809, 2.69701424951, 19651.04848109800],
[20.653, 0.98666685459, 775.52261132400],
[16.976, 4.13711782135, 10021.83728009940],
[17.835, 5.96268643102, 25934.12433108940],
[14.949, 5.61075168206, 10404.73381232260],
[18.579, 1.80529277514, 40853.14218484400],
[15.407, 3.29563855296, 11015.10647733480],
[12.936, 5.42651448496, 29580.47470844380],
[11.962, 3.57604253827, 10742.97651130560],
[11.827, 1.19070919600, 8624.21265092720],
[11.466, 5.12780364967, 6283.07584999140],
[9.484, 2.75167834335, 191.44826611160],
[13.129, 5.70735942511, 9683.59458111640],
[8.583, 0.43182249199, 9786.68735533500],
[9.763, 0.14614896296, 20618.01935853360],
[8.148, 1.30548515603, 15720.83878487840],
[6.050, 6.26541665966, 11322.66409830440],
[5.955, 4.92235372433, 1059.38193018920],
[6.983, 3.44920932146, 17298.18232732620],
[6.228, 1.13312070908, 29864.33402730900],
[6.186, 4.92498052443, 19367.18916223280],
[6.155, 2.42413946900, 4705.73230754360],
[5.204, 3.42528906628, 9103.90699411760],
[6.000, 3.57639095526, 3154.68708489560],
[4.796, 3.86676184909, 7860.41939243920],
[5.289, 4.99182712443, 7084.89678111520],
[4.070, 5.58798144740, 12566.15169998280],
[3.942, 5.68758787835, 10206.17199921020],
[3.797, 3.89520601076, 10192.51015071860],
[3.798, 6.06410995916, 10234.06094170340],
[3.579, 0.73789669235, 4551.95349705880],
[3.641, 2.61501257205, 15874.61759536320],
[3.266, 0.97517223854, 23581.25817731760],
[2.813, 0.29951755546, 9411.46461508720],
[3.048, 2.51085146990, 33794.54372352860],
[2.559, 4.58043833032, 801.82093112380],
[2.462, 5.05790874754, 29050.78374334920],
[2.593, 5.73113176751, 20213.27199698400],
[2.625, 4.24272906574, 213.29909543800],
[2.246, 0.82112963936, 28286.99048486120],
[2.229, 2.22457598233, 10426.58464164900],
[1.742, 1.48394229233, 7058.59846131540],
[1.660, 5.42775825275, 32217.20018108080],
[1.491, 4.64883377941, 1109.37855209340],
[2.010, 0.75702888128, 9999.98645077300],
[1.562, 3.93962080463, 37724.75341974820],
[1.538, 2.17309577080, 21535.94964451540],
[1.546, 4.70759186462, 14945.31617355440],
[1.200, 1.48282382657, 9830.38901398780],
[1.224, 5.55090394449, 5661.33204915220],
[1.111, 1.20276209213, 9573.38825989700],
[1.064, 1.98891375536, 26.29831979980],
[1.041, 5.38535116069, 7.11354700080],
[1.036, 1.16719443387, 8662.24032356300],
[1.143, 3.20596958337, 3532.06069281140],
[1.201, 0.81913312536, 8094.52168583260],
[1.005, 2.38429892132, 27511.46787353720],
[1.047, 4.56525030769, 20419.45754542119],
[0.968, 6.18496721871, 25158.60171976540],
[1.044, 1.98055689074, 10596.18207843420],
[0.962, 0.48573513747, 23958.63178523340],
[0.846, 0.01566400887, 3128.38876509580],
[0.792, 5.39686899735, 24356.78078864160],
[0.858, 5.34692750735, 41654.96311596780],
[0.757, 6.25904553773, 20452.86941222180],
[0.801, 4.62406152514, 9929.42622734580],
[0.802, 5.37234892520, 10497.14486507620],
[0.750, 3.85219782842, 21228.39202354580],
[0.700, 1.98097957188, 3930.20969621960],
[0.719, 6.11596800207, 10218.80847051840],
[0.672, 6.23429601219, 14765.23904326980],
[0.639, 5.37566437358, 1589.07289528380],
[0.605, 2.42330391120, 10251.31321884680],
[0.726, 6.16683781802, 18875.52586977400],
[0.613, 5.99731180690, 4732.03062734340],
[0.720, 3.84286345199, 10207.76262190360],
[0.637, 6.17053891156, 10220.39909321180],
[0.515, 1.03001478293, 22779.43724619380],
[0.574, 0.43813688572, 17085.95866572220],
[0.510, 1.41065159851, 9161.01716302260],
[0.569, 3.34601425125, 3340.61242669980],
[0.608, 1.25236241968, 10175.25787357520],
[0.524, 2.39794248670, 26087.90314157420],
[0.542, 1.34665646732, 29088.81141598500],
[0.527, 4.01994270827, 18849.22754997420],
[0.569, 1.65498800378, 39264.06928956020],
[0.518, 4.96996115446, 30213.25844775700],
[0.514, 5.78413007838, 12592.45001978260],
[0.538, 4.56198493922, 10063.72234907640],
[0.484, 4.18538027381, 14919.01785375460],
[0.493, 4.79939382739, 9146.79006902100],
[0.427, 3.76876868949, 11272.66747640020],
[0.495, 0.49175293655, 45585.17281218740],
[0.494, 3.74345863918, 31441.67756975680],
[0.524, 0.97991794166, 30110.16567353840],
[0.483, 1.87898057316, 51066.42773105500],
[0.505, 3.70047474212, 20400.27277262220],
[0.351, 4.34026574490, 10137.01947493540],
[0.355, 5.56672554631, 18837.49819713819],
[0.328, 3.78427378910, 6681.22485339960],
[0.349, 4.20550749672, 20956.26205751660],
[0.333, 4.44969281739, 28521.09277825460],
[0.296, 2.83205515646, 17277.40693183380],
[0.311, 2.57334132897, 20809.46762464520],
[0.294, 0.75089224483, 3149.16416058820],
[0.377, 3.98143308775, 21202.09370374600],
[0.272, 5.56183082489, 16496.36139620240],
[0.314, 0.02584607093, 13745.34623902240],
[0.263, 0.55328410985, 36147.40987730040],
[0.286, 5.16408902215, 426.59819087600],
[0.279, 4.29871615943, 19999.97290154599],
[0.280, 1.92925047377, 49515.38250840700],
[0.265, 4.81168402147, 20235.12282631040],
[0.273, 5.12740051559, 35371.88726597640],
[0.306, 5.28903794869, 382.89653222320],
[0.223, 2.50591724074, 26709.64694241340],
[0.235, 5.96522395118, 10198.03307502600],
[0.234, 3.52866583267, 10228.53801739600],
[0.224, 6.24561979789, 7064.12138562280],
[0.251, 2.84739274245, 33019.02111220460],
[0.196, 1.50610393790, 31749.23519072640],
[0.192, 1.69321442572, 13341.67431130680],
[0.180, 6.19353087076, 39793.76025465480],
[0.199, 1.16433321880, 22805.73556599360],
[0.180, 3.72646417141, 1551.04522264800],
[0.173, 3.35235705827, 53445.59220462660],
[0.195, 1.51901264131, 43232.30665841560],
[0.174, 2.84049662693, 9967.45389998160],
[0.163, 4.29160537719, 36949.23080842420],
[0.169, 0.37000676558, 10459.11719244040],
[0.137, 5.61149803116, 10529.67741586760],
[0.139, 0.87847805052, 16522.65971600220],
[0.139, 4.12576475427, 36301.18868778519],
[0.127, 5.14447758616, 5481.25491886760],
[0.131, 3.11317801589, 9896.89367655440],
[0.131, 0.89697384735, 3442.57494496540],
[0.121, 1.32802112907, 38734.37832446560],
[0.122, 1.59017183044, 10110.19277199240],
[0.123, 2.33714216061, 10316.37832042960],
[0.133, 2.90682399304, 9793.80090233580],
[0.111, 2.52077634760, 13936.79450513400],
[0.120, 0.36076947165, 536.80451209540],
[0.115, 2.53355582059, 26735.94526221320],
[0.108, 2.65839634325, 10232.95530711079],
[0.108, 0.55230439694, 10193.61578531121],
[0.138, 1.06919239240, 65236.22129328540],
[0.101, 3.17012502017, 19317.19254032860],
[0.127, 5.63110477712, 10288.06714477830],
[0.127, 3.86278127025, 10138.50394764370],
[0.137, 2.93350659460, 47162.51635463520],
[0.095, 5.03917884334, 52175.80628314840],
[0.094, 0.71308489207, 38500.27603107220],
[0.092, 5.46204624886, 11764.33076885900],
[0.096, 1.52914774412, 9690.70812811720],
[0.101, 0.83318284426, 6489.77658728800],
[0.115, 3.76443612245, 522.57741809380],
[0.089, 2.53312656681, 10735.86296430480],
[0.082, 0.85628515615, 2379.16447357160],
[0.103, 5.22683237620, 103.09277421860],
[0.090, 2.12423586627, 28313.28880466100],
[0.090, 0.39668501735, 9580.50180689780],
[0.074, 6.02680095550, 3723.50895892300],
[0.081, 5.25045057985, 10419.47109464820],
[0.080, 4.23724598221, 10007.09999777380],
[0.091, 2.48874147947, 10846.06928552420],
[0.085, 3.82784790321, 51868.24866217880],
[0.081, 2.26235214191, 3903.91137641980],
[0.097, 0.77295091600, 18307.80723204360],
[0.094, 0.17063414792, 6872.67311951120],
[0.080, 5.62254102739, 29999.95935231900],
[0.068, 2.71762936670, 16983.99614745660],
[0.066, 0.76731351736, 20.77539549240],
[0.075, 0.36155638007, 39302.09696219600],
[0.075, 2.27327165974, 8521.11987670860],
[0.058, 2.14482855875, 8631.32619792800],
[0.064, 5.83569051301, 2118.76386037840],
[0.058, 2.98524209824, 19889.76658032659],
[0.054, 1.78260668333, 40077.61957352000],
[0.055, 4.70485939861, 639.89728631400],
[0.060, 5.89661892920, 41962.52073693740],
[0.066, 2.24746237999, 74.78159856730],
[0.061, 3.40726181591, 27490.69247804480],
[0.051, 3.07811180039, 24150.08005134500],
[0.057, 2.30081371235, 20529.66386664059],
[0.052, 2.37192464233, 29573.36116144300],
[0.052, 4.76610409132, 57375.80190084620],
[0.047, 1.61630288856, 30831.30490474460],
[0.054, 5.89684197257, 19903.99367432819],
[0.040, 5.32101847424, 42430.48572729180],
[0.051, 5.29186795569, 29587.58825544460],
],
# B1
[
[513347.602, 1.80364310797, 10213.28554621100],
[4380.100, 3.38615711591, 20426.57109242200],
[196.586, 2.53001197486, 30639.85663863300],
[199.162, 0.00000000000, 0.00000000000],
[14.031, 2.27087044687, 9437.76293488700],
[12.958, 1.50735622957, 18073.70493865020],
[11.941, 5.60462450426, 1577.34354244780],
[10.324, 5.24224313355, 2352.86615377180],
[9.294, 6.07545631303, 22003.91463486980],
[7.441, 1.50257909439, 11790.62908865880],
[8.031, 0.29371105198, 9153.90361602180],
[7.514, 5.08081885990, 10186.98722641120],
[4.669, 3.87801635015, 10239.58386601080],
[4.399, 3.58872736593, 40853.14218484400],
[3.975, 1.28397121206, 10404.73381232260],
[4.657, 0.75073886819, 5507.55323866740],
[3.783, 4.33004753984, 19651.04848109800],
[3.390, 4.88976070903, 10988.80815753500],
[3.555, 1.25927550356, 19896.88012732740],
[3.479, 5.50797002160, 529.69096509460],
[2.884, 0.08549582037, 14143.49524243060],
[1.786, 0.37134513186, 13367.97263110660],
[1.600, 1.68378002982, 20618.01935853360],
[1.539, 1.21683853657, 25934.12433108940],
[1.341, 2.90077139758, 15720.83878487840],
[0.993, 1.74681248965, 11322.66409830440],
[1.165, 6.13437155401, 7860.41939243920],
[1.115, 0.66743690380, 29580.47470844380],
[0.923, 2.25384969096, 10021.83728009940],
[0.965, 1.36425494833, 9683.59458111640],
[0.973, 0.39071758442, 6283.07584999140],
[0.805, 0.53331923557, 8624.21265092720],
[0.913, 0.76046003719, 8635.94200376320],
[0.991, 0.55319879330, 19367.18916223280],
[0.609, 2.62364470139, 23581.25817731760],
[0.532, 5.10925676528, 9786.68735533500],
[0.476, 6.17672999981, 11015.10647733480],
[0.472, 1.69672629200, 17298.18232732620],
[0.503, 2.65840772485, 29864.33402730900],
[0.456, 5.01205315518, 10742.97651130560],
[0.478, 3.94100005156, 775.52261132400],
[0.477, 3.71554345922, 10596.18207843420],
[0.347, 2.34551062680, 9411.46461508720],
[0.458, 2.31894399069, 9999.98645077300],
[0.374, 3.76878356974, 21228.39202354580],
[0.440, 4.33400244581, 15874.61759536320],
[0.349, 1.31468836511, 10234.06094170340],
[0.310, 5.45422332781, 10192.51015071860],
[0.346, 0.94242286364, 1059.38193018920],
[0.308, 4.90145899142, 3930.20969621960],
[0.331, 4.89498986674, 10206.17199921020],
[0.269, 2.39650266204, 801.82093112380],
[0.269, 0.00589873499, 9830.38901398780],
[0.261, 3.48196147279, 7058.59846131540],
[0.290, 0.10953964861, 29050.78374334920],
[0.283, 6.12133736787, 20419.45754542119],
[0.232, 3.07845850030, 12566.15169998280],
[0.265, 4.02431894973, 33794.54372352860],
[0.220, 2.37315851889, 4551.95349705880],
[0.247, 3.07626728158, 28286.99048486120],
[0.202, 3.56872121409, 21535.94964451540],
[0.225, 5.76888896320, 213.29909543800],
[0.217, 0.88382111135, 20213.27199698400],
[0.172, 6.12653050186, 9161.01716302260],
[0.195, 5.47240855400, 37724.75341974820],
[0.153, 4.07656151671, 27511.46787353720],
[0.174, 1.33676849359, 32217.20018108080],
[0.157, 5.98474214437, 26.29831979980],
[0.163, 5.45519134760, 10426.58464164900],
[0.129, 2.08748660996, 3128.38876509580],
[0.131, 1.51959002513, 10218.80847051840],
[0.139, 4.42330401713, 10220.39909321180],
[0.126, 2.62296638037, 22779.43724619380],
[0.146, 4.69869606856, 25158.60171976540],
[0.172, 6.13435208788, 18837.49819713819],
[0.157, 5.44507403858, 4705.73230754360],
[0.117, 6.18296175153, 20400.27277262220],
[0.164, 3.30849473132, 51066.42773105500],
[0.113, 3.64412860654, 7.11354700080],
[0.109, 5.21220660788, 8662.24032356300],
[0.133, 1.78047296245, 191.44826611160],
[0.117, 0.14681677884, 9146.79006902100],
[0.116, 0.61940521198, 41654.96311596780],
[0.096, 1.49631428731, 7084.89678111520],
[0.096, 1.21744230443, 10198.03307502600],
[0.082, 1.45863866349, 10207.76262190360],
[0.085, 6.04057728058, 21202.09370374600],
[0.083, 0.19985600927, 14919.01785375460],
[0.077, 5.50132310610, 5661.33204915220],
[0.077, 2.00173927326, 10228.53801739600],
[0.093, 1.85466268819, 45585.17281218740],
[0.066, 3.25826124156, 1109.37855209340],
[0.089, 0.64100435648, 3154.68708489560],
[0.061, 3.80043027736, 11272.66747640020],
[0.077, 1.85516358950, 3532.06069281140],
[0.062, 0.81341290651, 382.89653222320],
[0.072, 2.35312965005, 9103.90699411760],
[0.053, 3.21969389511, 20452.86941222180],
[0.067, 1.42090542131, 24356.78078864160],
[0.056, 2.97733070198, 30110.16567353840],
[0.051, 4.22406663447, 20809.46762464520],
[0.058, 6.20761936031, 29088.81141598500],
[0.061, 3.27309494322, 49515.38250840700],
[0.046, 5.49443476235, 31441.67756975680],
[0.050, 4.16651052942, 13341.67431130680],
[0.047, 1.25473247769, 33019.02111220460],
[0.047, 2.03402044389, 23958.63178523340],
[0.036, 5.24409311105, 3149.16416058820],
[0.038, 4.15337829669, 18849.22754997420],
[0.042, 0.43005959574, 1589.07289528380],
[0.041, 1.21289342964, 12592.45001978260],
[0.038, 5.91928287144, 28521.09277825460],
[0.033, 3.98241699279, 4732.03062734340],
[0.035, 2.24417218267, 16496.36139620240],
[0.040, 6.13293942728, 26087.90314157420],
[0.044, 1.78123294860, 426.59819087600],
[0.041, 3.16744909855, 39264.06928956020],
[0.033, 4.96183427323, 536.80451209540],
[0.034, 0.12963030501, 30213.25844775700],
[0.036, 5.41167321573, 522.57741809380],
[0.027, 4.44250239485, 17277.40693183380],
[0.034, 5.94541303751, 9929.42622734580],
[0.033, 0.40689057274, 10497.14486507620],
[0.023, 2.59067946967, 10175.25787357520],
[0.022, 0.69625017371, 19999.97290154599],
[0.023, 3.76162101633, 10251.31321884680],
[0.023, 0.62711494266, 35371.88726597640],
[0.022, 4.64142978776, 19889.76658032659],
[0.020, 4.01315480107, 26709.64694241340],
[0.020, 4.03344400680, 29573.36116144300],
[0.023, 0.90416640595, 8094.52168583260],
[0.022, 1.92092469688, 17085.95866572220],
[0.019, 5.04938942644, 6681.22485339960],
],
# B2
[
[22377.665, 3.38509143877, 10213.28554621100],
[281.739, 0.00000000000, 0.00000000000],
[173.164, 5.25563766915, 20426.57109242200],
[26.945, 3.87040891568, 30639.85663863300],
[1.174, 0.09768632072, 10186.98722641120],
[0.685, 3.19139067811, 11790.62908865880],
[0.788, 4.36515965295, 10239.58386601080],
[0.592, 5.22270440328, 40853.14218484400],
[0.515, 6.12821215207, 10988.80815753500],
[0.538, 0.57550272342, 2352.86615377180],
[0.540, 3.11657836329, 18073.70493865020],
[0.454, 2.79306867629, 10404.73381232260],
[0.374, 6.10468482446, 9437.76293488700],
[0.431, 4.00778431184, 1577.34354244780],
[0.360, 6.01747842320, 19651.04848109800],
[0.375, 1.31319959789, 22003.91463486980],
[0.354, 5.12509281266, 9153.90361602180],
[0.150, 4.58623687118, 15720.83878487840],
[0.164, 5.41790158607, 5507.55323866740],
[0.159, 2.78191550878, 19896.88012732740],
[0.157, 0.65774905071, 529.69096509460],
[0.155, 2.54824315372, 9683.59458111640],
[0.109, 2.01866665583, 14143.49524243060],
[0.106, 2.28289033017, 6283.07584999140],
[0.115, 3.23636374193, 20618.01935853360],
[0.128, 5.32400510939, 13367.97263110660],
[0.087, 3.28265082435, 11322.66409830440],
[0.090, 5.23585072275, 10596.18207843420],
[0.055, 4.82369879741, 7058.59846131540],
[0.044, 0.58444963462, 10206.17199921020],
[0.044, 2.34401612969, 19367.18916223280],
[0.038, 4.55053233088, 9999.98645077300],
[0.039, 5.84340580032, 10220.39909321180],
[0.036, 4.41006216127, 51066.42773105500],
[0.039, 3.14348236386, 9411.46461508720],
[0.033, 4.55748660340, 10742.97651130560],
[0.037, 2.79630938717, 25934.12433108940],
[0.034, 0.55287110072, 11015.10647733480],
[0.034, 2.25809144959, 29580.47470844380],
[0.038, 1.88638747393, 801.82093112380],
[0.034, 1.22706917271, 10021.83728009940],
[0.027, 4.83867137637, 9830.38901398780],
[0.027, 4.31140179350, 23581.25817731760],
[0.027, 2.17187621336, 8635.94200376320],
[0.020, 5.66581696952, 21228.39202354580],
[0.024, 2.17208107850, 18849.22754997420],
[0.020, 5.29318634138, 775.52261132400],
[0.019, 2.73486845601, 3128.38876509580],
[0.013, 3.40362915274, 1059.38193018920],
[0.014, 0.05074160195, 7860.41939243920],
[0.014, 5.43035907265, 26.29831979980],
[0.012, 3.24834347355, 9103.90699411760],
[0.013, 5.04826725887, 7.11354700080],
[0.015, 1.42027402522, 29050.78374334920],
[0.010, 4.98138067490, 10426.58464164900],
[0.011, 0.85773045784, 17298.18232732620],
[0.011, 4.23048200054, 29864.33402730900],
[0.010, 0.26447399758, 3930.20969621960],
[0.011, 1.46728576671, 20419.45754542119],
],
# B3
[
[646.671, 4.99166565277, 10213.28554621100],
[19.952, 3.14159265359, 0.00000000000],
[5.540, 0.77376923951, 20426.57109242200],
[2.526, 5.44493763020, 30639.85663863300],
[0.079, 1.51447613604, 10186.98722641120],
[0.056, 0.63647808442, 40853.14218484400],
[0.058, 5.70731176550, 10239.58386601080],
[0.031, 4.72523061067, 11790.62908865880],
[0.026, 1.02068113372, 10988.80815753500],
[0.025, 5.60599130442, 9437.76293488700],
[0.017, 2.05293621864, 2352.86615377180],
[0.011, 4.33056892256, 10404.73381232260],
[0.009, 1.36283915068, 19651.04848109800],
[0.007, 4.69592781899, 18073.70493865020],
[0.006, 2.97926526705, 22003.91463486980],
],
# B4
[
[14.102, 0.31537190181, 10213.28554621100],
[0.190, 2.35466404492, 20426.57109242200],
[0.164, 0.74476215141, 30639.85663863300],
[0.214, 3.14159265359, 0.00000000000],
[0.004, 2.34190883009, 40853.14218484400],
],
# B5
[
[0.239, 2.05201727566, 10213.28554621100],
[0.039, 0.00000000000, 0.00000000000],
[0.011, 3.82500275251, 20426.57109242200],
[0.009, 2.32953116868, 30639.85663863300],
],
]
"""This table contains Venus's periodic terms (all of them) from the planetary
theory VSOP87 for the heliocentric latitude at the equinox of date (taken from
the 'D' solution). In Meeus' book a shortened version can be found in
page 420."""
VSOP87_R = [
# R0
[
[72334820.905, 0.00000000000, 0.00000000000],
[489824.185, 4.02151832268, 10213.28554621100],
[1658.058, 4.90206728012, 20426.57109242200],
[1632.093, 2.84548851892, 7860.41939243920],
[1378.048, 1.12846590600, 11790.62908865880],
[498.399, 2.58682187717, 9683.59458111640],
[373.958, 1.42314837063, 3930.20969621960],
[263.616, 5.52938185920, 9437.76293488700],
[237.455, 2.55135903978, 15720.83878487840],
[221.983, 2.01346776772, 19367.18916223280],
[119.467, 3.01975365264, 10404.73381232260],
[125.896, 2.72769833559, 1577.34354244780],
[76.178, 1.59577224486, 9153.90361602180],
[85.336, 3.98607953754, 19651.04848109800],
[74.347, 4.11957854039, 5507.55323866740],
[41.904, 1.64273363458, 18837.49819713819],
[42.493, 3.81864530735, 13367.97263110660],
[39.430, 5.39019422358, 23581.25817731760],
[29.042, 5.67739528728, 5661.33204915220],
[27.555, 5.72392407794, 775.52261132400],
[27.283, 4.82151812709, 11015.10647733480],
[31.274, 2.31806719544, 9999.98645077300],
[19.700, 4.96157560245, 11322.66409830440],
[19.809, 0.53189326492, 27511.46787353720],
[13.567, 3.75530870628, 18073.70493865020],
[12.921, 1.13381083556, 10206.17199921020],
[16.215, 0.56453834290, 529.69096509460],
[11.821, 5.09025877427, 3154.68708489560],
[11.728, 0.23432298744, 7084.89678111520],
[13.079, 5.24353197586, 17298.18232732620],
[13.180, 3.37207825651, 13745.34623902240],
[9.097, 3.07004895769, 1109.37855209340],
[10.818, 2.45024712908, 10239.58386601080],
[11.438, 4.56838894696, 29050.78374334920],
[8.377, 5.78327612352, 30639.85663863300],
[8.193, 1.95023111860, 22003.91463486980],
[9.308, 1.61615909286, 2352.86615377180],
[10.652, 1.95528396140, 31441.67756975680],
[10.357, 1.20234990061, 15874.61759536320],
[9.585, 1.46639856228, 19999.97290154599],
[6.506, 2.17390732263, 14143.49524243060],
[7.562, 1.13789564977, 8624.21265092720],
[6.434, 0.84419623033, 6283.07584999140],
[5.898, 0.01093731110, 8635.94200376320],
[5.632, 3.94956548631, 12566.15169998280],
[5.523, 1.27394296557, 18307.80723204360],
[4.488, 2.47835729057, 191.44826611160],
[4.529, 4.73027770400, 19896.88012732740],
[6.193, 3.25881250939, 6872.67311951120],
[6.070, 0.35337419942, 21228.39202354580],
[4.315, 2.59737099519, 4551.95349705880],
[6.005, 3.37874723475, 35371.88726597640],
[3.852, 1.01162850357, 9786.68735533500],
[4.033, 0.00050855580, 801.82093112380],
[3.920, 5.56542869407, 10596.18207843420],
[2.709, 5.80195530112, 7064.12138562280],
[3.216, 0.39767254848, 10186.98722641120],
[3.089, 6.26174762876, 14945.31617355440],
[2.982, 4.21196716354, 28521.09277825460],
[3.284, 0.70709821006, 10742.97651130560],
[3.484, 4.79878191875, 39302.09696219600],
[3.172, 1.80518954174, 25158.60171976540],
[2.463, 0.68708153678, 10988.80815753500],
[2.374, 3.77948685343, 21535.94964451540],
[2.198, 2.82996372521, 8662.24032356300],
[1.958, 5.41763804167, 16496.36139620240],
[1.876, 2.63426768393, 29580.47470844380],
[1.902, 2.85782199133, 3532.06069281140],
[1.706, 3.67573010379, 26.29831979980],
[1.817, 0.41611036449, 4705.73230754360],
[1.858, 1.50368318296, 10021.83728009940],
[2.087, 6.22112874639, 43232.30665841560],
[1.950, 2.21447019683, 19786.67380610799],
[1.497, 0.00134773824, 17277.40693183380],
[1.819, 3.23144993268, 29088.81141598500],
[1.423, 5.85979618707, 9676.48103411560],
[1.223, 5.55818994329, 6770.71060124560],
[1.140, 5.92088900094, 13936.79450513400],
[1.484, 2.47665429253, 31749.23519072640],
[1.185, 1.42087628351, 4732.03062734340],
[1.323, 2.48821075422, 9690.70812811720],
[1.249, 1.88323673734, 19374.30270923360],
[1.270, 5.24647873116, 19360.07561523199],
[1.402, 5.17536780118, 10316.37832042960],
[1.042, 3.05454698508, 25934.12433108940],
[1.174, 1.42913732999, 18875.52586977400],
[1.278, 1.35747287297, 47162.51635463520],
[0.917, 6.26337648765, 20618.01935853360],
[0.905, 1.12740203561, 12592.45001978260],
[1.093, 4.64451720605, 33019.02111220460],
[1.014, 1.09259406433, 1059.38193018920],
[0.783, 2.02118183873, 24356.78078864160],
[0.779, 0.41585274010, 3340.61242669980],
[0.700, 1.14936815714, 16983.99614745660],
[0.878, 0.87852464964, 38734.37832446560],
[0.623, 0.89976912165, 17778.11626694899],
[0.608, 1.58476225197, 9573.38825989700],
[0.800, 3.94213003073, 10138.50394764370],
[0.760, 1.31851313748, 9967.45389998160],
[0.802, 2.78173370208, 51092.72605085480],
[0.664, 4.45864682400, 3128.38876509580],
[0.674, 5.11214939998, 382.89653222320],
[0.530, 0.85392938403, 10234.06094170340],
[0.509, 3.56809374595, 28286.99048486120],
[0.600, 4.25927726907, 41962.52073693740],
[0.601, 5.78144137895, 213.29909543800],
[0.595, 2.83045104588, 22805.73556599360],
[0.673, 6.06079908421, 36949.23080842420],
[0.535, 5.85422519711, 9103.90699411760],
[0.544, 5.44806074800, 3723.50895892300],
[0.492, 3.83802404893, 27991.40181316000],
[0.635, 0.76494024849, 8094.52168583260],
[0.434, 6.22214487735, 27197.28169366760],
[0.459, 3.55062885479, 20213.27199698400],
[0.398, 6.16269975784, 10426.58464164900],
[0.378, 2.41665947591, 18844.61174413899],
[0.421, 4.86552697954, 9146.79006902100],
[0.500, 4.20351458644, 55022.93574707440],
[0.404, 4.95834410782, 37410.56723987860],
[0.402, 2.97963246945, 10220.39909321180],
[0.464, 2.59869499733, 18734.40542291960],
[0.352, 0.08963076359, 10103.07922499160],
[0.348, 4.90260339364, 18830.38465013739],
[0.338, 3.22520096478, 24150.08005134500],
[0.375, 6.17532088136, 26087.90314157420],
[0.425, 1.20052578280, 40879.44050464380],
[0.408, 3.12833060705, 9050.81084180320],
[0.385, 1.94284690176, 283.85931886520],
[0.337, 4.87838699272, 12432.04265039780],
[0.326, 4.27369741426, 26735.94526221320],
[0.309, 0.50597475053, 38204.68735937100],
[0.329, 3.88430599153, 29864.33402730900],
[0.313, 1.36138752543, 10192.51015071860],
[0.347, 3.58439807209, 27490.69247804480],
[0.251, 3.78618457047, 10063.72234907640],
[0.244, 3.83523342668, 9411.46461508720],
[0.281, 4.50895206233, 32217.20018108080],
[0.237, 0.87748812245, 6681.22485339960],
[0.315, 5.62657778233, 58953.14544329400],
[0.311, 4.15626121491, 10175.15251057320],
[0.247, 2.53637594113, 16522.65971600220],
[0.219, 5.08729383251, 7058.59846131540],
[0.291, 3.72567217056, 29999.95935231900],
[0.267, 2.97685503991, 19573.37471066999],
[0.280, 3.70200084294, 47623.85278608960],
[0.239, 3.94545782067, 9580.50180689780],
[0.246, 2.18244883930, 9161.01716302260],
[0.253, 2.69506547016, 3442.57494496540],
[0.265, 2.62811801237, 44809.65020086340],
[0.194, 4.78926136175, 33794.54372352860],
[0.187, 3.65620881095, 20452.86941222180],
[0.224, 2.43601863127, 9992.87290377220],
[0.193, 2.55112161845, 2379.16447357160],
[0.201, 1.90356905733, 1551.04522264800],
[0.176, 4.29837616553, 10137.01947493540],
[0.184, 6.16061560223, 36147.40987730040],
[0.175, 2.71984797040, 20809.46762464520],
[0.186, 2.55098927966, 14919.01785375460],
[0.161, 4.13272567123, 23958.63178523340],
[0.221, 4.83552377614, 20277.00789528740],
[0.160, 1.81472642729, 10787.63034454580],
[0.199, 5.74259798330, 30666.15495843280],
[0.160, 4.46270605493, 18947.70451835760],
[0.187, 2.98688597588, 2218.75710418680],
[0.189, 5.34607810282, 10007.09999777380],
[0.198, 0.77846666692, 62883.35513951360],
[0.144, 5.00261963924, 9264.10993724120],
[0.171, 2.05212624568, 7255.56965173440],
[0.188, 4.08173534559, 48739.85989708300],
[0.146, 3.94191715702, 6309.37416979120],
[0.146, 5.06313558118, 39264.06928956020],
[0.135, 5.93689169614, 37724.75341974820],
[0.139, 2.81266025896, 20.77539549240],
[0.177, 5.16224804657, 9835.91193829520],
[0.119, 1.37254262864, 40077.61957352000],
[0.120, 0.21443767468, 31022.75317085620],
[0.128, 2.92458887798, 7.11354700080],
[0.150, 5.73646272556, 632.78373931320],
[0.106, 0.62224833817, 11272.66747640020],
[0.114, 2.63301326520, 17468.85519794540],
[0.123, 6.22518843711, 53285.18483524180],
[0.107, 1.17258978900, 43071.89928903080],
[0.103, 1.09613781581, 41654.96311596780],
[0.109, 2.01412667085, 20419.45754542119],
[0.102, 4.23406964348, 10251.31321884680],
[0.116, 1.27731728606, 10199.05845220940],
[0.103, 5.25887538465, 9830.38901398780],
[0.112, 2.24436894064, 18204.71445782499],
[0.111, 2.23547857955, 8521.11987670860],
[0.118, 0.23754207200, 10497.14486507620],
[0.123, 0.88054816668, 34596.36465465240],
[0.102, 4.39438646620, 18300.69368504279],
[0.131, 6.01711652115, 9367.20271145980],
[0.100, 5.00532389609, 10175.25787357520],
[0.107, 0.41270197502, 40853.14218484400],
[0.132, 5.45008342761, 11506.76976979360],
[0.098, 1.07722950958, 13553.89797291080],
[0.094, 2.91720097590, 44007.82926973960],
[0.097, 1.04004223634, 68050.42387851159],
[0.127, 2.20215372683, 66813.56483573320],
[0.111, 1.57823839032, 29043.67019634839],
[0.118, 2.33268176890, 18314.92077904440],
[0.090, 2.42353056125, 32858.61374281979],
[0.109, 3.82796787296, 19470.28193645139],
[0.111, 4.47666957576, 29057.89729034999],
[0.101, 3.41528493660, 19264.09638801420],
[0.092, 3.66289799512, 22645.32819660879],
[0.094, 6.07530805791, 10846.06928552420],
[0.114, 4.02718653431, 7576.56007357400],
[0.087, 6.01842459303, 17085.95866572220],
[0.109, 5.46886607309, 52670.06959330260],
[0.107, 0.54805946713, 34363.36559755600],
[0.108, 5.44460610707, 19050.79729257620],
[0.076, 6.15177368654, 27682.14074415640],
[0.107, 4.80525404063, 8144.27871130440],
[0.073, 1.60549217847, 20956.26205751660],
[0.097, 5.13542051130, 22779.43724619380],
[0.068, 2.31300447144, 8631.32619792800],
[0.091, 4.28652743953, 10110.19277199240],
[0.093, 5.27290609264, 522.57741809380],
[0.071, 3.65565961690, 11764.33076885900],
[0.089, 1.79712963206, 45585.17281218740],
[0.067, 2.25900071584, 9360.08916445900],
[0.085, 0.67062144972, 56600.27928952220],
[0.080, 1.58278081077, 19992.85935454519],
[0.065, 6.23472325597, 10419.47109464820],
[0.064, 0.53356325917, 17248.42530185440],
[0.085, 4.52011215904, 29786.66025688100],
[0.068, 4.48235266554, 10632.77019008620],
[0.064, 4.33495700921, 47938.03896595920],
[0.071, 3.03858484137, 11787.10597030980],
[0.087, 4.81823063172, 2107.03450754240],
[0.070, 2.35648061034, 11794.15220700780],
[0.080, 2.33248094128, 38526.57435087200],
[0.070, 3.70454061100, 8734.41897214660],
[0.077, 4.49569185467, 20007.08644854680],
[0.072, 1.19410424468, 10217.21769947410],
[0.068, 2.01841060183, 14128.24277124560],
[0.064, 5.39293951654, 7880.08915333899],
[0.066, 3.20467071127, 14765.23904326980],
[0.080, 3.41620457770, 48417.97290558199],
[0.080, 3.39651161571, 245.83164622940],
[0.066, 5.85414440204, 9793.80090233580],
[0.082, 3.62592908644, 70743.77453195279],
[0.058, 4.95174942212, 30110.16567353840],
[0.079, 6.24161471033, 6037.24420376200],
[0.069, 5.50183658445, 19793.78735310880],
[0.056, 1.24148350566, 10207.76262190360],
[0.070, 2.45123308846, 10218.80847051840],
[0.064, 5.53983104501, 10735.86296430480],
[0.054, 3.62259713240, 27461.71084806540],
[0.073, 1.75882480924, 1589.07289528380],
[0.075, 3.38244819846, 4214.06901508480],
[0.054, 0.64971567468, 9929.42622734580],
[0.054, 3.40959637230, 18418.01355326299],
[0.056, 3.65815006538, 14169.79356223040],
[0.056, 0.71243223808, 9896.89367655440],
[0.052, 1.33348131940, 20400.27277262220],
[0.067, 3.12806595400, 5481.25491886760],
[0.058, 0.54482893546, 28313.28880466100],
[0.054, 0.15603935681, 19580.48825767080],
[0.051, 3.37515473510, 9256.99639024040],
[0.063, 3.38848970950, 49515.38250840700],
[0.069, 4.90917651401, 63498.47038145279],
[0.057, 5.07437742030, 18521.10632748160],
[0.050, 1.59156823654, 18631.31264870099],
[0.054, 6.25816208666, 37674.99639427640],
[0.057, 5.48065460919, 24383.07910844140],
[0.045, 1.10466490660, 10408.25693067160],
[0.051, 3.61196470313, 426.59819087600],
[0.057, 2.09567711267, 60530.48898574180],
[0.060, 5.94659889997, 13897.66359620120],
[0.051, 5.47238517720, 57837.13833230060],
[0.051, 2.32438478428, 19779.56025910719],
[0.052, 3.23766328818, 18940.59097135679],
[0.043, 5.74921510909, 51868.24866217880],
[0.048, 1.12206254877, 9779.57380833420],
[0.058, 3.08646083897, 12074.48840752400],
[0.046, 4.07536026888, 7863.94251078820],
[0.045, 4.75746520642, 7856.89627409019],
[0.054, 4.43528236634, 8617.09910392640],
[0.050, 3.70569982975, 42456.78404709160],
[0.044, 1.29248911155, 69166.43098950500],
[0.046, 0.41229872114, 7564.83072073800],
[0.044, 6.17937388307, 13341.67431130680],
[0.053, 4.71388531889, 53445.59220462660],
[0.041, 3.48003037828, 37895.42629036740],
[0.040, 1.23305546260, 10228.53801739600],
[0.053, 5.04979874661, 74673.98422817240],
[0.039, 1.36646013032, 21202.09370374600],
[0.039, 2.15376025201, 8947.71806758460],
[0.041, 6.17532984460, 65236.22129328540],
[0.052, 1.29052331493, 90394.82301305079],
[0.039, 0.70253732683, 18093.37469954999],
[0.052, 1.18164377451, 10211.80107350270],
[0.047, 1.78672260794, 10401.21069397360],
[0.040, 3.66961416802, 10198.03307502600],
[0.051, 2.71698589018, 94325.03270927040],
[0.036, 1.25091711620, 10323.49186743040],
[0.049, 1.21335959420, 9721.62225375220],
[0.042, 6.05968230173, 105460.99111839019],
[0.046, 5.06978748275, 20350.30502114640],
[0.040, 1.97645050921, 32243.49850088060],
[0.036, 4.96702216961, 36301.18868778519],
[0.037, 5.29642935562, 38.02767263580],
[0.039, 0.52064327313, 26709.64694241340],
[0.035, 2.34112124655, 58946.51688439399],
[0.034, 1.82989750626, 17675.02349273040],
[0.034, 0.76493664110, 55798.45835839840],
[0.035, 1.09353675147, 69159.80243060499],
[0.031, 5.59148330297, 10639.88373708700],
[0.032, 3.32960781870, 71519.29714327680],
[0.031, 5.98191446392, 24341.52831745660],
[0.031, 0.68615213145, 10202.23984594710],
[0.030, 4.42039942947, 10459.11719244040],
[0.029, 1.30367701539, 20103.06567576459],
[0.031, 4.51793347997, 2957.71589447660],
[0.035, 4.05634321290, 19903.99367432819],
[0.030, 1.32113757427, 574.34479833480],
[0.029, 3.36506645849, 10288.06714477830],
[0.029, 1.40019042576, 9988.94075050910],
[0.032, 0.21932095318, 24978.52458948080],
[0.034, 5.22945947227, 8673.96967639900],
[0.039, 4.50883171158, 16004.69810374360],
[0.028, 2.32945945641, 11392.48008525060],
[0.034, 3.92498967835, 536.80451209540],
[0.032, 5.46972716255, 64607.84893354619],
[0.028, 2.38858990128, 20235.12282631040],
[0.030, 3.34585843979, 39793.76025465480],
[0.026, 5.36096904409, 1478.86657406440],
],
# R1
[
[34551.039, 0.89198710598, 10213.28554621100],
[234.203, 1.77224942714, 20426.57109242200],
[233.998, 3.14159265359, 0.00000000000],
[23.864, 1.11274502648, 9437.76293488700],
[10.568, 4.59168210921, 1577.34354244780],
[9.124, 4.53540907003, 10404.73381232260],
[6.599, 5.97703999838, 5507.55323866740],
[4.667, 3.87683960551, 9153.90361602180],
[3.840, 5.66196924375, 13367.97263110660],
[2.666, 2.82413291285, 10206.17199921020],
[2.194, 2.05314419626, 775.52261132400],
[2.094, 2.55137285015, 18837.49819713819],
[1.782, 2.64808558644, 30639.85663863300],
[1.845, 1.87612936641, 11015.10647733480],
[1.303, 0.20613045603, 11322.66409830440],
[1.169, 0.79431893441, 17298.18232732620],
[1.001, 6.16555101536, 10239.58386601080],
[0.915, 4.59854496966, 1109.37855209340],
[0.884, 0.66706834422, 18073.70493865020],
[0.849, 5.58641571940, 12566.15169998280],
[1.071, 4.94792017474, 6283.07584999140],
[0.887, 2.47785193216, 3154.68708489560],
[0.904, 0.81413053841, 10596.18207843420],
[0.818, 0.90016838097, 5661.33204915220],
[0.845, 5.48504338112, 529.69096509460],
[0.824, 3.74837629121, 7084.89678111520],
[0.652, 5.07444932607, 22003.91463486980],
[0.847, 0.44119876869, 8635.94200376320],
[0.638, 4.10125791268, 191.44826611160],
[0.615, 3.14417599741, 10186.98722641120],
[0.527, 5.86792949279, 2352.86615377180],
[0.520, 5.33201358267, 14143.49524243060],
[0.576, 2.25212731258, 21228.39202354580],
[0.662, 2.86880467345, 8624.21265092720],
[0.554, 2.17186191243, 18307.80723204360],
[0.515, 4.34331395104, 9786.68735533500],
[0.501, 5.56479589366, 10742.97651130560],
[0.426, 1.02161443120, 7064.12138562280],
[0.418, 1.26803034691, 9676.48103411560],
[0.391, 0.78974645621, 9690.70812811720],
[0.334, 3.18175822557, 10988.80815753500],
[0.375, 0.66142254036, 19360.07561523199],
[0.364, 0.19369831864, 19374.30270923360],
[0.313, 1.09734397626, 4551.95349705880],
[0.330, 0.58817502306, 16496.36139620240],
[0.339, 5.76768761396, 10021.83728009940],
[0.291, 3.65846764668, 25158.60171976540],
[0.223, 4.33581625553, 19786.67380610799],
[0.266, 3.57408827667, 801.82093112380],
[0.274, 5.73346687248, 11790.62908865880],
[0.275, 5.65814317085, 19896.88012732740],
[0.212, 4.27038489878, 4705.73230754360],
[0.230, 6.13406345590, 1059.38193018920],
[0.204, 4.87348390351, 7860.41939243920],
[0.241, 1.13551531894, 26.29831979980],
[0.206, 0.31907973682, 382.89653222320],
[0.216, 2.54741101724, 19651.04848109800],
[0.212, 3.15264941106, 14945.31617355440],
[0.163, 1.13604744392, 13936.79450513400],
[0.151, 5.11341268743, 28521.09277825460],
[0.151, 0.81278755582, 6770.71060124560],
[0.150, 5.02227334847, 29088.81141598500],
[0.146, 1.37568138685, 10220.39909321180],
[0.127, 4.49298610074, 3532.06069281140],
[0.121, 6.26589208179, 29580.47470844380],
[0.147, 6.16092774714, 8662.24032356300],
[0.114, 0.00114012635, 25934.12433108940],
[0.115, 3.56897715344, 24356.78078864160],
[0.124, 0.67547060274, 3723.50895892300],
[0.145, 0.36415036222, 9146.79006902100],
[0.104, 4.27865011376, 9573.38825989700],
[0.136, 5.09581116181, 19367.18916223280],
[0.102, 1.53637788668, 17277.40693183380],
[0.117, 0.57543238496, 9999.98645077300],
[0.092, 0.22936081655, 18830.38465013739],
[0.112, 4.04771058036, 9103.90699411760],
[0.098, 3.78447692407, 213.29909543800],
[0.085, 5.84471458481, 10234.06094170340],
[0.079, 0.64440357793, 18844.61174413899],
[0.084, 0.56950139213, 9683.59458111640],
[0.107, 1.77067111589, 17778.11626694899],
[0.081, 6.19048382717, 20618.01935853360],
[0.087, 0.15771136594, 33019.02111220460],
[0.082, 4.80683817059, 3930.20969621960],
[0.086, 2.21505615071, 8094.52168583260],
[0.064, 2.69215119482, 16983.99614745660],
[0.069, 0.83385751986, 3128.38876509580],
[0.081, 4.88025042367, 4732.03062734340],
[0.059, 3.34348033725, 10787.63034454580],
[0.061, 0.04044699966, 9161.01716302260],
[0.064, 4.13127333938, 9992.87290377220],
[0.060, 6.24603986632, 32217.20018108080],
[0.054, 3.38449893196, 10426.58464164900],
[0.054, 5.15939119644, 28286.99048486120],
[0.063, 4.32339245083, 12592.45001978260],
[0.060, 4.48753846170, 18875.52586977400],
[0.057, 3.64912085313, 10007.09999777380],
[0.049, 5.10267262491, 19573.37471066999],
[0.047, 5.79444960738, 68050.42387851159],
[0.052, 3.56658420552, 7255.56965173440],
[0.050, 1.61783309819, 36949.23080842420],
[0.053, 2.64370544855, 15874.61759536320],
[0.040, 3.93466530964, 20419.45754542119],
[0.051, 0.79154899901, 23581.25817731760],
[0.038, 1.77428239418, 10103.07922499160],
[0.049, 1.12423644455, 3442.57494496540],
[0.040, 5.22874487975, 21535.94964451540],
[0.038, 1.12473430132, 7.11354700080],
[0.038, 0.11510547453, 11272.66747640020],
[0.036, 2.02476324983, 7058.59846131540],
[0.047, 0.05589432390, 12432.04265039780],
[0.034, 3.45481114998, 9830.38901398780],
[0.045, 4.59817214088, 10192.51015071860],
[0.037, 4.93959675364, 3340.61242669980],
[0.044, 0.70533027806, 20213.27199698400],
[0.034, 2.16487642765, 64460.69868196140],
[0.031, 1.57612397319, 36147.40987730040],
[0.028, 2.56454760402, 94138.32702008578],
[0.033, 1.08907268562, 29864.33402730900],
[0.029, 0.59718407064, 59728.66805461800],
[0.031, 3.04423979263, 40879.44050464380],
[0.035, 0.32247158762, 1589.07289528380],
[0.031, 3.27727318906, 19992.85935454519],
[0.027, 5.83705748551, 17085.95866572220],
[0.032, 2.64260788260, 41962.52073693740],
[0.028, 4.90613317287, 29050.78374334920],
[0.025, 4.55050389739, 14919.01785375460],
[0.028, 3.58851614957, 40853.14218484400],
[0.029, 2.79705093386, 20007.08644854680],
[0.033, 0.93862065616, 15720.83878487840],
[0.024, 2.74970637101, 18947.70451835760],
[0.024, 4.38966861409, 46386.99374331120],
[0.024, 0.73361964525, 9411.46461508720],
[0.028, 4.19559784013, 37674.99639427640],
[0.023, 1.00023735538, 22779.43724619380],
[0.026, 0.46990555736, 13745.34623902240],
[0.028, 4.65181292126, 1551.04522264800],
[0.025, 4.18690270765, 44007.82926973960],
[0.022, 0.98102807789, 426.59819087600],
[0.030, 1.24986033487, 27461.71084806540],
[0.027, 3.94986823486, 17468.85519794540],
[0.021, 6.09897508157, 18300.69368504279],
[0.025, 4.75875623888, 27991.40181316000],
[0.022, 2.95281481673, 40077.61957352000],
[0.028, 6.12038264955, 38500.27603107220],
[0.022, 4.11184201321, 19779.56025910719],
[0.027, 3.72446446080, 19793.78735310880],
[0.020, 4.27086627368, 31441.67756975680],
[0.022, 4.99040169444, 31022.75317085620],
[0.023, 1.33505132122, 65236.22129328540],
[0.021, 4.46897353468, 53285.18483524180],
[0.020, 4.15140915983, 2218.75710418680],
[0.025, 2.18447182965, 27511.46787353720],
[0.019, 1.43653410349, 27197.28169366760],
[0.027, 1.22555218015, 42430.48572729180],
[0.019, 3.65054338893, 49515.38250840700],
[0.022, 5.88380811711, 10218.80847051840],
[0.018, 2.29853355765, 19264.09638801420],
[0.017, 5.44429906531, 6681.22485339960],
[0.020, 3.68116637773, 14128.24277124560],
[0.021, 4.30316190532, 44809.65020086340],
[0.020, 2.48583613985, 33794.54372352860],
[0.017, 3.02735393984, 28528.20632525540],
[0.019, 5.92656850674, 22805.73556599360],
[0.022, 5.30827572791, 10207.76262190360],
[0.020, 0.75829381378, 18314.92077904440],
[0.017, 5.63315744126, 16522.65971600220],
[0.016, 1.71021408448, 536.80451209540],
[0.015, 5.27016880041, 53445.59220462660],
[0.017, 5.61443395877, 47938.03896595920],
[0.015, 5.81110284451, 43071.89928903080],
[0.015, 4.96237667003, 19999.97290154599],
[0.018, 0.55618686515, 14765.23904326980],
[0.014, 3.48144272414, 29786.66025688100],
[0.015, 5.84132627836, 10228.53801739600],
[0.016, 1.05720065324, 26735.94526221320],
[0.014, 6.08462030302, 35371.88726597640],
[0.014, 2.84532871890, 574.34479833480],
[0.015, 5.34517715140, 10198.03307502600],
[0.013, 0.45004137509, 20452.86941222180],
],
# R2
[
[1406.587, 5.06366395190, 10213.28554621100],
[15.529, 5.47321687981, 20426.57109242200],
[13.059, 0.00000000000, 0.00000000000],
[1.099, 2.78883988292, 9437.76293488700],
[0.488, 6.27806914496, 1577.34354244780],
[0.361, 6.11914188253, 10404.73381232260],
[0.310, 1.38984998403, 5507.55323866740],
[0.389, 1.95017779915, 11015.10647733480],
[0.372, 2.33222828423, 775.52261132400],
[0.207, 5.63406721595, 10239.58386601080],
[0.168, 1.10765197296, 13367.97263110660],
[0.175, 6.16674652950, 30639.85663863300],
[0.168, 3.64495311632, 7084.89678111520],
[0.120, 5.85815843789, 9153.90361602180],
[0.160, 2.21564938463, 3154.68708489560],
[0.118, 2.62358866565, 8635.94200376320],
[0.112, 2.36235956804, 10596.18207843420],
[0.092, 0.72664449269, 12566.15169998280],
[0.067, 3.76089669118, 18837.49819713819],
[0.065, 2.47983709990, 11790.62908865880],
[0.048, 4.26620187144, 2352.86615377180],
[0.048, 5.50898189550, 191.44826611160],
[0.048, 2.54730918293, 17298.18232732620],
[0.046, 3.40293459332, 14143.49524243060],
[0.041, 1.83997113019, 11322.66409830440],
[0.037, 6.17871126027, 1109.37855209340],
[0.039, 4.77190210316, 18073.70493865020],
[0.035, 3.10133256432, 4705.73230754360],
[0.046, 3.30090415967, 6283.07584999140],
[0.034, 3.91721765773, 10021.83728009940],
[0.034, 3.24663787383, 22003.91463486980],
[0.042, 3.39360926939, 14945.31617355440],
[0.044, 4.42979374073, 7860.41939243920],
[0.034, 2.16381407025, 16496.36139620240],
[0.031, 0.45714618479, 26.29831979980],
[0.035, 3.62868651241, 801.82093112380],
[0.032, 1.84138997078, 382.89653222320],
[0.025, 3.32908650295, 18307.80723204360],
[0.026, 3.64313769818, 29088.81141598500],
[0.029, 3.82967178810, 10186.98722641120],
[0.022, 3.17741520378, 28521.09277825460],
[0.021, 2.52643834111, 529.69096509460],
[0.025, 5.71401244457, 21202.09370374600],
[0.021, 3.77813434325, 21228.39202354580],
[0.019, 5.24505118517, 19896.88012732740],
[0.018, 4.62463651925, 19651.04848109800],
[0.016, 3.35893297896, 28286.99048486120],
[0.015, 5.05571633205, 33019.02111220460],
[0.014, 2.83786355803, 19786.67380610799],
[0.014, 1.79922718553, 9830.38901398780],
[0.014, 3.14801263138, 19367.18916223280],
[0.014, 3.57896195191, 10988.80815753500],
[0.013, 3.06303088617, 10742.97651130560],
[0.013, 5.43981998532, 25158.60171976540],
[0.015, 4.83166312889, 18875.52586977400],
[0.012, 2.54141086214, 7064.12138562280],
[0.012, 4.45255110769, 15720.83878487840],
[0.010, 1.87933121728, 24356.78078864160],
[0.011, 2.58708635685, 9103.90699411760],
[0.010, 2.17901309900, 3723.50895892300],
[0.008, 3.63520673832, 1059.38193018920],
[0.008, 4.67523115598, 25934.12433108940],
[0.009, 5.97856553283, 9683.59458111640],
],
# R3
[
[49.582, 3.22263554520, 10213.28554621100],
[0.831, 3.21219077104, 20426.57109242200],
[0.112, 3.14159265359, 0.00000000000],
[0.013, 3.77448689585, 30639.85663863300],
[0.009, 4.19802043629, 10239.58386601080],
[0.006, 0.20714935358, 10186.98722641120],
[0.005, 0.68781956122, 8635.94200376320],
],
# R4
[
[0.573, 0.92229697820, 10213.28554621100],
[0.040, 0.95468912157, 20426.57109242200],
[0.006, 3.14159265359, 0.00000000000],
],
# R5
[
[0.045, 0.30032866722, 10213.28554621100],
[0.002, 5.29627718483, 20426.57109242200],
],
]
"""This table contains Venus's periodic terms (all of them) from the planetary
theory VSOP87 for the radius vector at the equinox of date (taken from the 'D'
solution). In Meeus' book a shortened version can be found in pages 420-421."""
ORBITAL_ELEM = [
[181.979801, 58519.2130302, 0.00031014, 0.000000015], # L
[0.72332982, 0.0, 0.0, 0.0], # a
[0.00677192, -0.000047765, 0.0000000981, 0.00000000046], # e
[3.394662, 0.0010037, -0.00000088, -0.000000007], # i
[76.67992, 0.9011206, 0.00040618, -0.000000093], # Omega
[131.563703, 1.4022288, -0.00107618, -0.000005678] # pie
]
"""This table contains the parameters to compute Venus' orbital elements for
the mean equinox of date. Based in Table 31.A, page 212"""
ORBITAL_ELEM_J2000 = [
[181.979801, 58517.815676, 0.00000165, -0.000000002], # L
[3.394662, -0.0008568, -0.00003244, 0.000000009], # i
[76.67992, -0.2780134, -0.00014257, -0.000000164], # Omega
[131.563703, 0.0048746, -0.00138467, -0.000005695] # pie
]
"""This table contains the parameters to compute Venus' orbital elements for
the standard equinox J2000.0. Based on Table 31.B, page 214"""
class Venus(object):
"""
Class Venus models that planet.
"""
@staticmethod
def geometric_heliocentric_position(epoch, tofk5=True):
"""This method computes the geometric heliocentric position of planet
Venus for a given epoch, using the VSOP87 theory.
:param epoch: Epoch to compute Venus position, as an Epoch object
:type epoch: :py:class:`Epoch`
:param tofk5: Whether or not the small correction to convert to the FK5
system will be applied or not
:type tofk5: bool
:returns: A tuple with the heliocentric longitude and latitude (as
:py:class:`Angle` objects), and the radius vector (as a float,
in astronomical units), in that order
:rtype: tuple
:raises: TypeError if input value is of wrong type.
>>> epoch = Epoch(1992, 12, 20.0)
>>> l, b, r = Venus.geometric_heliocentric_position(epoch, tofk5=False)
>>> print(round(l, 5))
26.11412
>>> print(round(b, 4))
-2.6206
>>> print(round(r, 6))
0.724602
"""
return geometric_vsop_pos(epoch, VSOP87_L, VSOP87_B, VSOP87_R, tofk5)
@staticmethod
def apparent_heliocentric_position(epoch):
"""This method computes the apparent heliocentric position of planet
Venus for a given epoch, using the VSOP87 theory.
:param epoch: Epoch to compute Venus position, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple with the heliocentric longitude and latitude (as
:py:class:`Angle` objects), and the radius vector (as a float,
in astronomical units), in that order
:rtype: tuple
:raises: TypeError if input value is of wrong type.
"""
return apparent_vsop_pos(epoch, VSOP87_L, VSOP87_B, VSOP87_R)
@staticmethod
def orbital_elements_mean_equinox(epoch):
"""This method computes the orbital elements of Venus for the mean
equinox of the date for a given epoch.
:param epoch: Epoch to compute orbital elements, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple containing the following six orbital elements:
- Mean longitude of the planet (Angle)
- Semimajor axis of the orbit (float, astronomical units)
- eccentricity of the orbit (float)
- inclination on the plane of the ecliptic (Angle)
- longitude of the ascending node (Angle)
- argument of the perihelion (Angle)
:rtype: tuple
:raises: TypeError if input value is of wrong type.
>>> epoch = Epoch(2065, 6, 24.0)
>>> l, a, e, i, ome, arg = Venus.orbital_elements_mean_equinox(epoch)
>>> print(round(l, 6))
338.646306
>>> print(round(a, 8))
0.72332982
>>> print(round(e, 7))
0.0067407
>>> print(round(i, 6))
3.395319
>>> print(round(ome, 5))
77.27012
>>> print(round(arg, 6))
55.211257
"""
return orbital_elements(epoch, ORBITAL_ELEM, ORBITAL_ELEM)
@staticmethod
def orbital_elements_j2000(epoch):
"""This method computes the orbital elements of Venus for the standard
equinox J2000.0 for a given epoch.
:param epoch: Epoch to compute orbital elements, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple containing the following six orbital elements:
- Mean longitude of the planet (Angle)
- Semimajor axis of the orbit (float, astronomical units)
- eccentricity of the orbit (float)
- inclination on the plane of the ecliptic (Angle)
- longitude of the ascending node (Angle)
- argument of the perihelion (Angle)
:rtype: tuple
:raises: TypeError if input value is of wrong type.
>>> epoch = Epoch(2065, 6, 24.0)
>>> l, a, e, i, ome, arg = Venus.orbital_elements_j2000(epoch)
>>> print(round(l, 6))
337.731227
>>> print(round(a, 8))
0.72332982
>>> print(round(e, 7))
0.0067407
>>> print(round(i, 6))
3.394087
>>> print(round(ome, 5))
76.49782
>>> print(round(arg, 6))
55.068476
"""
return orbital_elements(epoch, ORBITAL_ELEM, ORBITAL_ELEM_J2000)
@staticmethod
def geocentric_position(epoch):
"""This method computes the geocentric position of Venus (right
ascension and declination) for the given epoch, as well as the
elongation angle.
:param epoch: Epoch to compute geocentric position, as an Epoch object
:type epoch: :py:class:`Epoch`
:returns: A tuple containing the right ascension, the declination and
the elongation angle as Angle objects
:rtype: tuple
:raises: TypeError if input value is of wrong type.
>>> epoch = Epoch(1992, 12, 20.0)
>>> ra, dec, elon = Venus.geocentric_position(epoch)
>>> print(ra.ra_str(n_dec=1))
21h 4' 41.5''
>>> print(dec.dms_str(n_dec=1))
-18d 53' 16.8''
>>> print(elon.dms_str(n_dec=1))
44d 46' 8.9''
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Compute the heliocentric position of Venus
l, b, r = Venus.geometric_heliocentric_position(epoch, tofk5=False)
# Compute the heliocentric position of the Earth
l0, b0, r0 = Earth.geometric_heliocentric_position(epoch, tofk5=False)
# Convert to radians
lr = l.rad()
br = b.rad()
l0r = l0.rad()
b0r = b0.rad()
# Compute first iteration
x = r * cos(br) * cos(lr) - r0 * cos(b0r) * cos(l0r)
y = r * cos(br) * sin(lr) - r0 * cos(b0r) * sin(l0r)
z = r * sin(br) - r0 * sin(b0r)
delta = sqrt(x * x + y * y + z * z)
tau = 0.0057755183 * delta
# Adjust the epoch for light-time
epoch -= tau
# Compute again Venus coordinates with this correction
l, b, r = Venus.geometric_heliocentric_position(epoch, tofk5=False)
# Compute second iteration
lr = l.rad()
br = b.rad()
x = r * cos(br) * cos(lr) - r0 * cos(b0r) * cos(l0r)
y = r * cos(br) * sin(lr) - r0 * cos(b0r) * sin(l0r)
z = r * sin(br) - r0 * sin(b0r)
# Compute longitude and latitude
lamb = atan2(y, x)
beta = atan2(z, sqrt(x * x + y * y))
# Now, let's compute the aberration effect
t = (epoch - JDE2000) / 36525
e = 0.016708634 + t * (-0.000042037 - t * 0.0000001267)
pie = 102.93735 + t * (1.71946 + t * 0.00046)
pie = radians(pie)
lon = l0 + 180.0
lon = lon.rad()
k = 20.49552 # The constant of aberration
deltal1 = k * (-cos(lon - lamb) + e * cos(pie - lamb)) / cos(beta)
deltab1 = -k * sin(beta) * (sin(lon - lamb) - e * sin(pie - lamb))
deltal1 = Angle(0, 0, deltal1)
deltab1 = Angle(0, 0, deltab1)
# Correction to FK5 system
lamb = Angle(lamb, radians=True)
lamb = lamb.to_positive()
beta = Angle(beta, radians=True)
l_prime = lamb - t * (1.397 + t * 0.00031)
deltal2 = Angle(0, 0, -0.09033)
a = 0.03916 * (cos(l_prime.rad()) + sin(l_prime.rad()))
a = a * tan(b.rad())
deltal2 += Angle(0, 0, a)
deltab2 = 0.03916 * (cos(l_prime.rad()) - sin(l_prime.rad()))
deltab2 = Angle(0, 0, deltab2)
# Apply the corrections
lamb = lamb + deltal1 + deltal2
beta = beta + deltab1 + deltab2
# Correction for nutation
dpsi = nutation_longitude(epoch)
lamb += dpsi
e = true_obliquity(epoch)
ra, dec = ecliptical2equatorial(lamb, beta, e)
# Let's compute the elongation angle
lons, lats, rs = Sun.apparent_geocentric_position(epoch)
lambr = lamb.rad()
lsr = lons.rad()
betar = beta.rad()
elon = acos(cos(betar) * cos(lambr - lsr))
elon = Angle(elon, radians=True)
return ra, dec, elon
@staticmethod
def inferior_conjunction(epoch):
"""This method computes the time of the inferior conjunction closest to
the given epoch.
:param epoch: Epoch close to the desired inferior conjunction
:type epoch: :py:class:`Epoch`
:returns: The time when the inferior conjunction happens, as an Epoch
:rtype: :py:class:`Epoch`
:raises: TypeError if input value is of wrong type.
:raises: ValueError if input epoch outside the -2000/4000 range.
>>> epoch = Epoch(1882, 12, 1.0)
>>> conjunction = Venus.inferior_conjunction(epoch)
>>> y, m, d = conjunction.get_date()
>>> print(y)
1882
>>> print(m)
12
>>> print(round(d, 1))
6.7
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Check that the input epoch is within valid range
y = epoch.year()
if y < -2000.0 or y > 4000.0:
raise ValueError("Epoch outside the -2000/4000 range")
# Set some specific constants for Venus' inferior conjunction
a = 2451996.706
b = 583.921361
m0 = 82.7311
m1 = 215.513058
k = round((365.2425 * y + 1721060.0 - a) / b)
jde0 = a + k * b
m = m0 + k * m1
m = Angle(m).to_positive()
m = m.rad()
t = (jde0 - 2451545.0) / 36525.0
corr = (-0.0096 + t * (0.0002 - t * 0.00001) +
sin(m) * (2.0009 + t * (-0.0033 - t * 0.00001)) +
cos(m) * (0.598 + t * (-0.0104 + t * 0.00001)) +
sin(2.0 * m) * (0.0967 + t * (-0.0018 - t * 0.00003)) +
cos(2.0 * m) * (0.0913 + t * (0.0009 - t * 0.00002)) +
sin(3.0 * m) * (0.0046 - t * 0.0002) +
cos(3.0 * m) * (0.0079 + t * 0.0001))
to_return = jde0 + corr
return Epoch(to_return)
@staticmethod
def superior_conjunction(epoch):
"""This method computes the time of the superior conjunction closest to
the given epoch.
:param epoch: Epoch close to the desired superior conjunction
:type epoch: :py:class:`Epoch`
:returns: The time when the superior conjunction happens, as an Epoch
:rtype: :py:class:`Epoch`
:raises: TypeError if input value is of wrong type.
:raises: ValueError if input epoch outside the -2000/4000 range.
>>> epoch = Epoch(1993, 10, 1.0)
>>> conjunction = Venus.superior_conjunction(epoch)
>>> y, m, d = conjunction.get_date()
>>> print(y)
1994
>>> print(m)
1
>>> print(round(d, 2))
17.05
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Check that the input epoch is within valid range
y = epoch.year()
if y < -2000.0 or y > 4000.0:
raise ValueError("Epoch outside the -2000/4000 range")
# Set some specific constants for Venus' superior conjunction
a = 2451704.746
b = 583.921361
m0 = 154.9745
m1 = 215.513058
k = round((365.2425 * y + 1721060.0 - a) / b)
jde0 = a + k * b
m = m0 + k * m1
m = Angle(m).to_positive()
m = m.rad()
t = (jde0 - 2451545.0) / 36525.0
corr = (0.0099 + t * (-0.0002 - t * 0.00001) +
sin(m) * (4.1991 + t * (-0.0121 - t * 0.00003)) +
cos(m) * (-0.6095 + t * (0.0102 - t * 0.00002)) +
sin(2.0 * m) * (0.25 + t * (-0.0028 - t * 0.00003)) +
cos(2.0 * m) * (0.0063 + t * (0.0025 - t * 0.00002)) +
sin(3.0 * m) * (0.0232 + t * (-0.0005 - t * 0.00001)) +
cos(3.0 * m) * (0.0031 + t * 0.0004))
to_return = jde0 + corr
return Epoch(to_return)
@staticmethod
def western_elongation(epoch):
"""This method computes the time of the western elongation closest to
the given epoch, as well as the corresponding maximum elongation angle.
:param epoch: Epoch close to the desired western elongation
:type epoch: :py:class:`Epoch`
:returns: A tuple with the time when the western elongation happens, as
an Epoch, and the maximum elongation angle, as an Angle
:rtype: tuple
:raises: TypeError if input value is of wrong type.
:raises: ValueError if input epoch outside the -2000/4000 range.
>>> epoch = Epoch(2019, 1, 1.0)
>>> time, elongation = Venus.western_elongation(epoch)
>>> y, m, d = time.get_date()
>>> print(y)
2019
>>> print(m)
1
>>> print(round(d, 4))
6.1895
>>> print(round(elongation, 4))
46.9571
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Check that the input epoch is within valid range
y = epoch.year()
if y < -2000.0 or y > 4000.0:
raise ValueError("Epoch outside the -2000/4000 range")
# Set some specific constants for Venus' inferior conjunction
a = 2451996.706
b = 583.921361
m0 = 82.7311
m1 = 215.513058
k = round((365.2425 * y + 1721060.0 - a) / b)
jde0 = a + k * b
m = m0 + k * m1
m = Angle(m).to_positive()
m = m.rad()
t = (jde0 - 2451545.0) / 36525.0
corr = (70.7462 - t * t * 0.00001 +
sin(m) * (1.1218 + t * (-0.0025 - t * 0.00001)) +
cos(m) * (0.4538 - t * 0.0066) +
sin(2.0 * m) * (0.132 + t * (0.002 - t * 0.00003)) +
cos(2.0 * m) * (-0.0702 + t * (0.0022 + t * 0.00004)) +
sin(3.0 * m) * (0.0062 - t * 0.0001) +
cos(3.0 * m) * (0.0015 - t * t * 0.00001))
elon = (46.3245 +
sin(m) * (-0.5366 + t * (-0.0003 + t * 0.00001)) +
cos(m) * (0.3097 + t * (0.0016 - t * 0.00001)) +
sin(2.0 * m) * (-0.0163) +
cos(2.0 * m) * (-0.0075 + t * 0.0001))
elon = Angle(elon).to_positive()
to_return = jde0 + corr
return Epoch(to_return), elon
@staticmethod
def eastern_elongation(epoch):
"""This method computes the time of the eastern elongation closest to
the given epoch, as well as the corresponding maximum elongation angle.
:param epoch: Epoch close to the desired eastern elongation
:type epoch: :py:class:`Epoch`
:returns: A tuple with the time when the eastern elongation happens, as
an Epoch, and the maximum elongation angle, as an Angle
:rtype: tuple
:raises: TypeError if input value is of wrong type.
:raises: ValueError if input epoch outside the -2000/4000 range.
>>> epoch = Epoch(2019, 10, 1.0)
>>> time, elongation = Venus.eastern_elongation(epoch)
>>> y, m, d = time.get_date()
>>> print(y)
2020
>>> print(m)
3
>>> print(round(d, 4))
24.9179
>>> print(round(elongation, 4))
46.078
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Check that the input epoch is within valid range
y = epoch.year()
if y < -2000.0 or y > 4000.0:
raise ValueError("Epoch outside the -2000/4000 range")
# Set some specific constants for Venus' inferior conjunction
a = 2451996.706
b = 583.921361
m0 = 82.7311
m1 = 215.513058
k = round((365.2425 * y + 1721060.0 - a) / b)
jde0 = a + k * b
m = m0 + k * m1
m = Angle(m).to_positive()
m = m.rad()
t = (jde0 - 2451545.0) / 36525.0
corr = (-70.76 + t * (0.0002 - t * 0.00001) +
sin(m) * (1.0282 + t * (-0.001 - t * 0.00001)) +
cos(m) * (0.2761 - t * 0.006) +
sin(2.0 * m) * (-0.0438 + t * (-0.0023 + t * 0.00002)) +
cos(2.0 * m) * (0.166 + t * (-0.0037 - t * 0.00004)) +
sin(3.0 * m) * (0.0036 + t * 0.0001) +
cos(3.0 * m) * (-0.0011 + t * t * 0.00001))
elon = (46.3173 + t * 0.0001 +
sin(m) * (0.6916 - t * 0.0024) +
cos(m) * (0.6676 - t * 0.0045) +
sin(2.0 * m) * (0.0309 - t * 0.0002) +
cos(2.0 * m) * (0.0036 - t * 0.0001))
elon = Angle(elon).to_positive()
to_return = jde0 + corr
return Epoch(to_return), elon
@staticmethod
def station_longitude_1(epoch):
"""This method computes the time of the 1st station in longitude
(i.e. when the planet is stationary and begins to move westward -
retrograde - among the starts) closest to the given epoch.
:param epoch: Epoch close to the desired inferior conjunction
:type epoch: :py:class:`Epoch`
:returns: Time when the 1st station in longitude happens, as an Epoch
:rtype: :py:class:`Epoch`
:raises: TypeError if input value is of wrong type.
:raises: ValueError if input epoch outside the -2000/4000 range.
>>> epoch = Epoch(2018, 12, 1.0)
>>> sta1 = Venus.station_longitude_1(epoch)
>>> y, m, d = sta1.get_date()
>>> print(y)
2018
>>> print(m)
10
>>> print(round(d, 4))
5.7908
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Check that the input epoch is within valid range
y = epoch.year()
if y < -2000.0 or y > 4000.0:
raise ValueError("Epoch outside the -2000/4000 range")
# Set some specific constants for Venus' inferior conjunction
a = 2451996.706
b = 583.921361
m0 = 82.7311
m1 = 215.513058
k = round((365.2425 * y + 1721060.0 - a) / b)
jde0 = a + k * b
m = m0 + k * m1
m = Angle(m).to_positive()
m = m.rad()
t = (jde0 - 2451545.0) / 36525.0
corr = (-21.0672 + t * (0.0002 - t * 0.00001) +
sin(m) * (1.9396 + t * (-0.0029 - t * 0.00001)) +
cos(m) * (1.0727 - t * 0.0102) +
sin(2.0 * m) * (0.0404 + t * (-0.0023 - t * 0.00001)) +
cos(2.0 * m) * (0.1305 + t * (-0.0004 - t * 0.00003)) +
sin(3.0 * m) * (-0.0007 - t * 0.0002) +
cos(3.0 * m) * (0.0098))
to_return = jde0 + corr
return Epoch(to_return)
@staticmethod
def station_longitude_2(epoch):
"""This method computes the time of the 1st station in longitude
(i.e. when the planet is stationary and begins to move eastward -
prograde - among the starts) closest to the given epoch.
:param epoch: Epoch close to the desired inferior conjunction
:type epoch: :py:class:`Epoch`
:returns: Time when the 2nd station in longitude happens, as an Epoch
:rtype: :py:class:`Epoch`
:raises: TypeError if input value is of wrong type.
:raises: ValueError if input epoch outside the -2000/4000 range.
>>> epoch = Epoch(2018, 12, 1.0)
>>> sta2 = Venus.station_longitude_2(epoch)
>>> y, m, d = sta2.get_date()
>>> print(y)
2018
>>> print(m)
11
>>> print(round(d, 4))
16.439
"""
# First check that input value is of correct types
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input type")
# Check that the input epoch is within valid range
y = epoch.year()
if y < -2000.0 or y > 4000.0:
raise ValueError("Epoch outside the -2000/4000 range")
# Set some specific constants for Venus' inferior conjunction
a = 2451996.706
b = 583.921361
m0 = 82.7311
m1 = 215.513058
k = round((365.2425 * y + 1721060.0 - a) / b)
jde0 = a + k * b
m = m0 + k * m1
m = Angle(m).to_positive()
m = m.rad()
t = (jde0 - 2451545.0) / 36525.0
corr = (21.0623 - t * t * 0.00001 +
sin(m) * (1.9913 + t * (-0.004 - t * 0.00001)) +
cos(m) * (-0.0407 - t * 0.0077) +
sin(2.0 * m) * (0.1351 + t * (-0.0009 - t * 0.00004)) +
cos(2.0 * m) * (0.0303 + t * 0.0019) +
sin(3.0 * m) * (0.0089 - t * 0.0002) +
cos(3.0 * m) * (0.0043 + t * 0.0001))
to_return = jde0 + corr
return Epoch(to_return)
@staticmethod
def perihelion_aphelion(epoch, perihelion=True):
"""This method computes the time of Perihelion (or Aphelion) closer to
a given epoch.
:param epoch: Epoch close to the desired Perihelion (or Aphelion)
:type epoch: :py:class:`Epoch`
:param peihelion: If True, the epoch of the closest Perihelion is
computed, if False, the epoch of the closest Aphelion is found.
:type bool:
:returns: The epoch of the desired Perihelion (or Aphelion)
:rtype: :py:class:`Epoch`
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(1978, 10, 15.0)
>>> e = Venus.perihelion_aphelion(epoch)
>>> y, m, d, h, mi, s = e.get_full_date()
>>> print(y)
1978
>>> print(m)
12
>>> print(d)
31
>>> print(h)
4
>>> epoch = Epoch(1979, 2, 1.0)
>>> e = Venus.perihelion_aphelion(epoch, perihelion=False)
>>> y, m, d, h, mi, s = e.get_full_date()
>>> print(y)
1979
>>> print(m)
4
>>> print(d)
22
>>> print(h)
12
"""
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input value")
# First approximation
k = 1.62549 * (epoch.year() - 2000.53)
if perihelion:
k = round(k)
else:
k = round(k + 0.5) - 0.5
jde = 2451738.233 + k * (224.7008188 - k * 0.0000000327)
# Compute the epochs half a day before and after
jde_before = jde - 0.5
jde_after = jde + 0.5
# Compute the Sun-Venus distance for each epoch
l, b, r_b = Venus.geometric_heliocentric_position(Epoch(jde_before))
l, b, r = Venus.geometric_heliocentric_position(Epoch(jde))
l, b, r_a = Venus.geometric_heliocentric_position(Epoch(jde_after))
# Call an interpolation object
m = Interpolation([jde_before, jde, jde_after], [r_b, r, r_a])
sol = m.minmax()
return Epoch(sol)
@staticmethod
def passage_nodes(epoch, ascending=True):
"""This function computes the time of passage by the nodes (ascending
or descending) of Venus, nearest to the given epoch.
:param epoch: Epoch closest to the node passage
:type epoch: :py:class:`Epoch`
:param ascending: Whether the time of passage by the ascending (True)
or descending (False) node will be computed
:type ascending: bool
:returns: Tuple containing:
- Time of passage through the node (:py:class:`Epoch`)
- Radius vector when passing through the node (in AU, float)
:rtype: tuple
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(1979, 1, 1)
>>> time, r = Venus.passage_nodes(epoch)
>>> year, month, day = time.get_date()
>>> print(year)
1978
>>> print(month)
11
>>> print(round(day, 1))
27.4
>>> print(round(r, 4))
0.7205
"""
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input types")
# Get the orbital parameters
l, a, e, i, ome, arg = Venus.orbital_elements_mean_equinox(epoch)
# Compute the time of passage through perihelion
t = Venus.perihelion_aphelion(epoch)
# Get the time of passage through the node
time, r = passage_nodes_elliptic(arg, e, a, t, ascending)
return time, r
@staticmethod
def illuminated_fraction(epoch):
"""This function computes an approximation of the illuminated fraction
of Venus disk, as seen from Earth.
:param epoch: Epoch to compute the illuminated fraction
:type epoch: :py:class:`Epoch`
:returns: Illuminated fraction of Venus disk
:rtype: float
:raises: TypeError if input values are of wrong type.
>>> epoch = Epoch(1992, 12, 20)
>>> k = Venus.illuminated_fraction(epoch)
>>> print(round(k, 2))
0.64
"""
if not isinstance(epoch, Epoch):
raise TypeError("Invalid input types")
t = (epoch.jde() - 2451545.0) / 36525.0
v = Angle(261.51 + 22518.443 * t)
m = Angle(177.53 + 35999.050 * t)
n = Angle(50.42 + 58517.811 * t)
w = Angle(v + 1.91 * sin(m.rad()) + 0.78 * sin(n.rad()))
delta2 = abs(1.52321 + 1.44666 * cos(w.rad()))
delta = sqrt(delta2)
k = ((0.72333 + delta) * (0.72333 + delta) - 1.0) / (2.89332 * delta)
return k
@staticmethod
def magnitude(sun_dist, earth_dist, phase_angle):
"""This function computes the approximate magnitude of Venus.
:param sun_dist: Distance from Venus to the Sun, in Astronomical Units
:type sun_dist: float
:param earth_dist: Distance from Venus to Earth, in Astronomical Units
:type earth_dist: float
:param phase_angle: Venus phase angle
:type phase_angle: float, :py:class:`Angle`
:returns: Venus' magnitude
:rtype: float
:raises: TypeError if input values are of wrong type.
>>> sun_dist = 0.724604
>>> earth_dist = 0.910947
>>> phase_angle = Angle(72.96)
>>> m = Venus.magnitude(sun_dist, earth_dist, phase_angle)
>>> print(m)
-3.8
"""
if not (isinstance(sun_dist, float) and isinstance(earth_dist, float)
and isinstance(phase_angle, (float, Angle))):
raise TypeError("Invalid input types")
i = float(phase_angle)
m = (-4.0 + 5.0 * log10(sun_dist * earth_dist) + 0.01322 * i
+ 0.0000004247 * i * i * i)
return round(m, 1)
def main():
# Let's define a small helper function
def print_me(msg, val):
print("{}: {}".format(msg, val))
# Let's show some uses of Venus class
print("\n" + 35 * "*")
print("*** Use of Venus class")
print(35 * "*" + "\n")
# Let's now compute the heliocentric position for a given epoch
epoch = Epoch(1992, 12, 20.0)
lon, lat, r = Venus.geometric_heliocentric_position(epoch)
print_me("Geometric Heliocentric Longitude", lon.to_positive())
print_me("Geometric Heliocentric Latitude", lat)
print_me("Radius vector", r)
print("")
# Compute the geocentric position for 1992/12/20:
epoch = Epoch(1992, 12, 20.0)
ra, dec, elon = Venus.geocentric_position(epoch)
print_me("Right ascension", ra.ra_str(n_dec=1))
print_me("Declination", dec.dms_str(n_dec=1))
print_me("Elongation", elon.dms_str(n_dec=1))
print("")
# Print mean orbital elements for Venus at 2065.6.24
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Venus.orbital_elements_mean_equinox(epoch)
print_me("Mean longitude of the planet", round(l, 6)) # 338.646306
print_me("Semimajor axis of the orbit (UA)", round(a, 8)) # 0.72332982
print_me("Eccentricity of the orbit", round(e, 7)) # 0.0067407
print_me("Inclination on plane of the ecliptic", round(i, 6)) # 3.395319
print_me("Longitude of the ascending node", round(ome, 5)) # 77.27012
print_me("Argument of the perihelion", round(arg, 6)) # 55.211257
print("")
# Compute the time of the inferior conjunction close to 1882/12/1.0
epoch = Epoch(1882, 12, 1.0)
conjunction = Venus.inferior_conjunction(epoch)
y, m, d = conjunction.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Inferior conjunction date", date)
# Compute the time of the superior conjunction close to 1993/10/1
epoch = Epoch(1993, 10, 1.0)
conjunction = Venus.superior_conjunction(epoch)
y, m, d = conjunction.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Superior conjunction date", date)
print("")
# Compute the time and angle of the western elongation close to 2019/1/1
epoch = Epoch(2019, 1, 1.0)
time, elongation = Venus.western_elongation(epoch)
y, m, d = time.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Western elongation date", date)
elong = round(elongation, 4)
print_me("Maximum western elongation angle", elong)
print("")
# Compute the time and angle of the eastern elongation close to 2019/10/1
epoch = Epoch(2019, 10, 1.0)
time, elongation = Venus.eastern_elongation(epoch)
y, m, d = time.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Eastern elongation date", date)
elong = round(elongation, 4)
print_me("Maximum eastern elongation angle", elong)
print("")
# Compute the time of the station in longitude #1 close to 2018/12/1
epoch = Epoch(2018, 12, 1.0)
sta1 = Venus.station_longitude_1(epoch)
y, m, d = sta1.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Date of station in longitude #1", date)
# Compute the time of the station in longitude #2 close to 2018/12/1
epoch = Epoch(2018, 12, 1.0)
sta2 = Venus.station_longitude_2(epoch)
y, m, d = sta2.get_date()
d = round(d, 4)
date = "{}/{}/{}".format(y, m, d)
print_me("Date of station in longitude #2", date)
print("")
# Find the epoch of the Perihelion closer to 1978/10/15
epoch = Epoch(1978, 10, 15.0)
e = Venus.perihelion_aphelion(epoch)
y, m, d, h, mi, s = e.get_full_date()
peri = str(y) + '/' + str(m) + '/' + str(d) + ' at ' + str(h) + ' hours'
print_me("The Perihelion closest to 1978/10/15 happened on", peri)
print("")
# Compute the time of passage through an ascending node
epoch = Epoch(1979, 1, 1)
time, r = Venus.passage_nodes(epoch)
y, m, d = time.get_date()
d = round(d, 1)
print("Time of passage through ascending node: {}/{}/{}".format(y, m, d))
# 1978/11/27.4
print("Radius vector at ascending node: {}".format(round(r, 4))) # 0.7205
print("")
# Compute the (approximate) illuminated fraction of Venus disk for an Epoch
epoch = Epoch(1992, 12, 20)
k = Venus.illuminated_fraction(epoch)
print_me("Approximate illuminated fraction of Venus", round(k, 2)) # 0.64
# Compute the magnitude of Venus
sun_dist = 0.724604
earth_dist = 0.910947
phase_angle = Angle(72.96)
m = Venus.magnitude(sun_dist, earth_dist, phase_angle)
print_me("Venus' magnitude", round(m, 1)) # -3.8
if __name__ == "__main__":
main()
pymeeus-0.3.6/pymeeus/__init__.py 0000664 0000000 0000000 00000000000 13555455377 0017020 0 ustar 00root root 0000000 0000000 pymeeus-0.3.6/pymeeus/base.py 0000664 0000000 0000000 00000007710 13555455377 0016212 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from math import floor
"""
.. module:: base
:synopsis: Basic routines and constants used by the pymeeus module
:license: GNU Lesser General Public License v3 (LGPLv3)
.. moduleauthor:: Dagoberto Salazar
"""
TOL = 1e-10
"""Internal tolerance being used by default"""
def machine_accuracy():
"""This function computes the accuracy of the computer being used.
This function returns a tuple containing the number of significant bits in
the mantissa of a floating number, and the number of significant digits in
a decimal number.
:returns: Number of significant bits, and of significant digits
:rtype: tuple
"""
j = 0.0
x = 2.0
while x + 1.0 != x:
j += 1.0
x *= 2.0
return (j, int(j * 0.30103))
def get_ordinal_suffix(ordinal):
"""Method to get the suffix of a given ordinal number, like 1'st',
2'nd', 15'th', etc.
:param ordinal: Ordinal number
:type ordinal: int
:returns: Suffix corresponding to input ordinal number
:rtype: str
:raises: TypeError if input type is invalid.
>>> get_ordinal_suffix(40)
'th'
>>> get_ordinal_suffix(101)
'st'
>>> get_ordinal_suffix(2)
'nd'
>>> get_ordinal_suffix(19)
'th'
>>> get_ordinal_suffix(23)
'rd'
"""
if not isinstance(ordinal, (int, float)):
raise TypeError("Invalid input type")
else:
ordinal = int(floor(ordinal))
unit = ordinal % 10
if unit == 1 and ordinal != 11:
return "st"
elif unit == 2 and ordinal != 12:
return "nd"
elif unit == 3 and ordinal != 13:
return "rd"
else:
return "th"
def iint(number):
"""This method behaves in the same way as the **INT()** function described
by Meeus in his book: Greatest integer which is not greater than number.
:param number: Number or expresion
:type number: int, float
:returns: Greatest integer which is not greater than number
:rtype: int
:raises: TypeError if input type is invalid.
>>> iint(19)
19
>>> iint(19.95)
19
>>> iint(-2.4)
-3
"""
if not isinstance(number, (int, float)):
raise TypeError("Invalid input type")
else:
return int(floor(number))
def main():
# Let's define a small helper function
def print_me(msg, val):
print("{}: {}".format(msg, val))
# Let's print the tolerance
print_me("The default value for the tolerance is", TOL)
# Find the accuracy of this computer
j, d = machine_accuracy()
print_me("Number of significant BITS in the mantissa\t", j)
print_me("Number of significant DIGITS in a decimal number", d)
print("")
print_me("The suffix for ordinal 2 is", get_ordinal_suffix(2))
print_me("The suffix for ordinal 11 is", get_ordinal_suffix(11))
print_me("The suffix for ordinal 12 is", get_ordinal_suffix(12))
print_me("The suffix for ordinal 13 is", get_ordinal_suffix(13))
print_me("The suffix for ordinal 14 is", get_ordinal_suffix(14))
print_me("The suffix for ordinal 16 is", get_ordinal_suffix(16))
print_me("The suffix for ordinal 23 is", get_ordinal_suffix(23))
if __name__ == "__main__":
main()
pymeeus-0.3.6/setup.cfg 0000664 0000000 0000000 00000000046 13555455377 0015053 0 ustar 00root root 0000000 0000000 [egg_info]
tag_build =
tag_date = 0
pymeeus-0.3.6/setup.py 0000664 0000000 0000000 00000002507 13555455377 0014750 0 ustar 00root root 0000000 0000000 try:
from setuptools import setup
except ImportError:
from distutils.core import setup
from os import path
here = path.abspath(path.dirname(__file__))
# Get the long description from the relevant file
with open(path.join(here, 'README.rst')) as f:
long_description = f.read()
config = {
'name': 'PyMeeus',
'version': '0.3.6',
'description': 'Python implementation of Jean Meeus astronomical routines',
'long_description': long_description,
'keywords': 'Meeus astronomy module library',
'license': 'LGPLv3',
'author': 'Dagoberto Salazar',
'author_email': 'dagoberto.salazar@gmail.com',
'url': 'https://github.com/architest/pymeeus',
'download_url': 'https://github.com/architest/pymeeus',
# 'install_requires': ['nose', 'pypandoc'],
'packages': ['pymeeus'],
# 'scripts': ['example.py'],
'py_modules': ['base'],
'classifiers': [
'Development Status :: 4 - Beta',
'Environment :: Console',
'Intended Audience :: Developers',
'Intended Audience :: Education',
'Intended Audience :: Science/Research',
'License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)',
'Operating System :: OS Independent',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.6',
'Topic :: Scientific/Engineering :: Astronomy'
]
}
setup(**config)
pymeeus-0.3.6/tests/ 0000775 0000000 0000000 00000000000 13555455377 0014374 5 ustar 00root root 0000000 0000000 pymeeus-0.3.6/tests/__init__.py 0000664 0000000 0000000 00000000000 13555455377 0016473 0 ustar 00root root 0000000 0000000 pymeeus-0.3.6/tests/test_angle.py 0000664 0000000 0000000 00000051673 13555455377 0017107 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from math import pi
from pymeeus.base import TOL
from pymeeus.Angle import Angle
# Angle class
def test_angle_constructor():
"""Tests the constructor of Angle class"""
a = Angle(23.44694444)
assert abs(a._deg - 23.44694444) < TOL, \
"ERROR: 1st constructor test, degrees value doesn't match"
b = Angle(-23.44694444)
assert abs(b._deg - (-23.44694444)) < TOL, \
"ERROR: 2nd constructor test, degrees value doesn't match"
c = Angle(383.44694444)
assert abs(c._deg - 23.44694444) < TOL, \
"ERROR: 3rd constructor test, degrees value doesn't match"
d = Angle(-383.44694444)
assert abs(d._deg - (-23.44694444)) < TOL, \
"ERROR: 4th constructor test, degrees value doesn't match"
e = Angle(-23.0, 26.0, 48.999983999)
assert abs(e._deg - (-23.44694444)) < TOL, \
"ERROR: 5th constructor test, degrees value doesn't match"
f = Angle(23.0, -30.0)
assert abs(f._deg - (-23.5)) < TOL, \
"ERROR: 6th constructor test, degrees value doesn't match"
g = Angle((-23.0, 26.0, 48.999983999))
assert abs(g._deg - (-23.44694444)) < TOL, \
"ERROR: 7th constructor test, degrees value doesn't match"
h = Angle([-23.0, 26.0, 48.999983999])
assert abs(h._deg - (-23.44694444)) < TOL, \
"ERROR: 8th constructor test, degrees value doesn't match"
i = Angle(1.0, radians=True)
assert abs(i._deg - 57.29577951308232) < TOL, \
"ERROR: 9th constructor test, degrees value doesn't match"
j = Angle((23.0, 26.0, 48.999983999, -1.0))
assert abs(j._deg - (-23.44694444)) < TOL, \
"ERROR: 10th constructor test, degrees value doesn't match"
k = Angle(23.0, 26.0, 48.999983999, -7.4)
assert abs(k._deg - (-23.44694444)) < TOL, \
"ERROR: 11th constructor test, degrees value doesn't match"
m = Angle([23.0, -26.0, 48.999983999, -4.5])
assert abs(m._deg - (-23.44694444)) < TOL, \
"ERROR: 12th constructor test, degrees value doesn't match"
def test_angle_set_radians():
"""Tests the set_radians() method of Angle class"""
a = Angle()
a.set_radians(pi) # Input is in radians
assert abs(a() - 180.0) < TOL, \
"ERROR: 1st set_radians() test, degrees value doesn't match"
def test_angle_set_ra():
"""Tests the set_ra() method of Angle class"""
a = Angle()
a.set_ra(9.248833333333) # Input is in RA
assert abs(a._deg - 138.7325) < TOL, \
"ERROR: 1st set_ra() test, degrees value doesn't match"
a.set_ra(-9.248833333333)
assert abs(a._deg - (-138.7325)) < TOL, \
"ERROR: 2nd set_ra() test, degrees value doesn't match"
a.set_ra(9, 14, 55.8)
assert abs(a._deg - 138.7325) < TOL, \
"ERROR: 3rd set_ra() test, degrees value doesn't match"
a.set_ra((9, 14, 55.8, -1.0))
assert abs(a._deg - (-138.7325)) < TOL, \
"ERROR: 4th set_ra() test, degrees value doesn't match"
def test_angle_deg2dms():
"""Tests deg2dms() static method of Angle class"""
(d, m, s, sign) = Angle.deg2dms(23.44694444)
assert abs(d - 23.0) < TOL, \
"ERROR: In 1st deg2dms() test, degrees value doesn't match"
assert abs(m - 26.0) < TOL, \
"ERROR: In 1st deg2dms() test, minutes value doesn't match"
assert abs(s - 48.9999839999999) < TOL, \
"ERROR: In 1st deg2dms() test, seconds value doesn't match"
assert abs(sign - 1.0) < TOL, \
"ERROR: In 1st deg2dms() test, sign value doesn't match"
(d, m, s, sign) = Angle.deg2dms(-23.44694444)
assert abs(d - 23.0) < TOL, \
"ERROR: In 2nd deg2dms() test, degrees value doesn't match"
assert abs(m - 26.0) < TOL, \
"ERROR: In 2nd deg2dms() test, minutes value doesn't match"
assert abs(s - 48.9999839999999) < TOL, \
"ERROR: In 2nd deg2dms() test, seconds value doesn't match"
assert abs(sign - (-1.0)) < TOL, \
"ERROR: In 2nd deg2dms() test, sign value doesn't match"
def test_angle_dms2deg():
"""Tests dms2deg() static method of Angle class"""
d = Angle.dms2deg(23.0, 26.0, 48.999984)
assert abs(d - 23.44694444) < TOL, \
"ERROR: In 1st dms2deg() test, degrees value doesn't match"
d = Angle.dms2deg(-23.0, 26.0, 48.999984)
assert abs(d - (-23.44694444)) < TOL, \
"ERROR: In 2nd dms2deg() test, degrees value doesn't match"
d = Angle.dms2deg(0.0, -26.0, 48.999984)
assert abs(d - (-0.44694444)) < TOL, \
"ERROR: In 3rd dms2deg() test, degrees value doesn't match"
def test_angle_reduce_deg():
"""Tests reduce_deg() static method of Angle class"""
d = Angle.reduce_deg(745.67)
assert abs(d - 25.67) < TOL, \
"ERROR: In 1st reduce_deg() test, degrees value doesn't match"
d = Angle.reduce_deg(-360.86)
assert abs(d - (-0.86)) < TOL, \
"ERROR: In 2nd reduce_deg() test, degrees value doesn't match"
def test_angle_reduce_dms():
"""Tests reduce_dms() static method of Angle class"""
(d, m, s, sign) = Angle.reduce_dms(383.0, 26.0, 48.999984)
assert abs(d - 23.0) < TOL, \
"ERROR: In 1st reduce_dms() test, degrees value doesn't match"
assert abs(m - 26.0) < TOL, \
"ERROR: In 1st reduce_dms() test, minutes value doesn't match"
assert abs(s - 48.999984) < TOL, \
"ERROR: In 1st reduce_dms() test, seconds value doesn't match"
assert abs(sign - 1.0) < TOL, \
"ERROR: In 1st reduce_dms() test, sign value doesn't match"
(d, m, s, sign) = Angle.reduce_dms(-1103.6, 86.5, 168.84)
assert abs(d - 25.0) < TOL, \
"ERROR: In 2nd reduce_dms() test, degrees value doesn't match"
assert abs(m - 5.0) < TOL, \
"ERROR: In 2nd reduce_dms() test, minutes value doesn't match"
assert abs(s - 18.8399999997) < TOL, \
"ERROR: In 2nd reduce_dms() test, seconds value doesn't match"
assert abs(sign - (-1.0)) < TOL, \
"ERROR: In 2nd reduce_dms() test, sign value doesn't match"
(d, m, s, sign) = Angle.reduce_dms(0.0, -206.71)
assert abs(d - 3.0) < TOL, \
"ERROR: In 3rd reduce_dms() test, degrees value doesn't match"
assert abs(m - 26.0) < TOL, \
"ERROR: In 3rd reduce_dms() test, minutes value doesn't match"
assert abs(s - 42.6) < TOL, \
"ERROR: In 3rd reduce_dms() test, seconds value doesn't match"
assert abs(sign - (-1.0)) < TOL, \
"ERROR: In 3rd reduce_dms() test, sign value doesn't match"
def test_angle_dms_str():
"""Tests dms_str() method of Angle class"""
a = Angle(0, -46.25, 0.0)
result = a.dms_str()
assert result == "-46' 15.0''", \
"ERROR: In 1st dms_str() test, the output value doesn't match"
result = a.dms_str(False)
assert result == "0:-46:15.0", \
"ERROR: In 2nd dms_str() test, the output value doesn't match"
def test_angle_ra_str():
"""Tests ra_str() method of Angle class"""
a = Angle(138.75)
result = a.ra_str()
assert result == "9h 15' 0.0''", \
"ERROR: In 1st ra_str() test, the output value doesn't match"
result = a.ra_str(False)
assert result == "9:15:0.0", \
"ERROR: In 2nd ra_str() test, the output value doesn't match"
def test_angle_get_ra():
"""Tests get_ra() method of Angle class"""
a = Angle(138.75)
assert abs(a.get_ra() - 9.25) < TOL, \
"ERROR: In 1st get_ra() test, the output value doesn't match"
def test_angle_call():
"""Tests the __call__() method of Angle class"""
type_ok = False
a = Angle(40, -46.25, 0.0)
if isinstance(a(), (int, float)): # Test the returned type
type_ok = True
assert type_ok, "ERROR: In 1st __call__() test, type doesn't match"
assert abs(a() - (-40.770833333333)) < TOL, \
"ERROR: In 2nd __call__() test, degrees value doesn't match"
def test_angle_str():
"""Tests the __str__() method of Angle class"""
type_ok = False
a = Angle(40, -46.5, 0.0)
if isinstance(a.__str__(), str): # Test the returned type
type_ok = True
assert type_ok, "ERROR: In 1st __str__() test, type doesn't match"
assert a.__str__() == "-40.775", \
"ERROR: In 2nd __str__() test, degrees value doesn't match"
def test_angle_rad():
"""Tests the rad() method of Angle class"""
a = Angle(180.0)
assert abs(a.rad() - pi) < TOL, \
"ERROR: In 1st rad() test, radians value doesn't match"
def test_angle_to_positive():
"""Tests the to_positive() method"""
a = Angle(-87.32)
b = Angle(87.32)
assert abs(a.to_positive()() - 272.68) < TOL, \
"ERROR: In 1st to_positive() test, value doesn't match"
assert abs(b.to_positive()() - 87.32) < TOL, \
"ERROR: In 2nd to_positive() test, value doesn't match"
def test_angle_ne():
"""Tests the 'is not equal' operator of Angles"""
# NOTE: Test 'is not equal' also tests 'is equal' operator
# Default tolerance for Angles is 1E-10
a = Angle(152.7)
b = Angle(152.7000000001)
assert (a != b), \
"ERROR: In 1st __ne__() test, Angles are different but taken as equal"
a = Angle(-13, 30)
b = Angle(-13.50000000001)
assert not (a != b), \
"ERROR: In 2nd __ne__() test, Angles are equal but taken as different"
def test_angle_ge():
"""Tests the 'is greater or equal' operator of Angles"""
# NOTE: Test of 'is greater or equal' also test 'is less than' operator
a = Angle(152.7)
b = Angle(152.70000001)
assert not (a >= b), \
"ERROR: In 1st __ge__() test, Angles values don't match operator"
a = Angle(-13, 30)
b = Angle(-13.5)
assert (a >= b), \
"ERROR: In 2nd __ne__() test, Angles values don't match operator"
def test_angle_le():
"""Tests the 'is less or equal' operator of Angles"""
# NOTE: Test of 'is less or equal' also test 'is greater than' operator
a = Angle(152.7)
b = Angle(152.70000001)
assert (a <= b), \
"ERROR: In 1st __le__() test, Angles values don't match operator"
a = Angle(-13, 30)
b = Angle(-13.5)
assert (a <= b), \
"ERROR: In 2nd __le__() test, Angles values don't match operator"
def test_angle_neg():
"""Tests the negation of Angles"""
a = Angle(152.7)
b = -a
assert abs(b() - (-152.7)) < TOL, \
"ERROR: In 1st __neg__() test, degrees value doesn't match"
a = Angle(-13, 30)
b = -a
assert abs(b() - 13.5) < TOL, \
"ERROR: In 2nd __neg__() test, degrees value doesn't match"
def test_angle_abs():
"""Tests the absolute value of Angles"""
a = Angle(152.7)
b = abs(a)
assert abs(b() - 152.7) < TOL, \
"ERROR: In 1st __abs__() test, degrees value doesn't match"
a = Angle(-13, 30)
b = abs(a)
assert abs(b() - 13.5) < TOL, \
"ERROR: In 2nd __abs__() test, degrees value doesn't match"
def test_angle_mod():
"""Tests the module of Angles"""
a = Angle(152.7)
b = a % 50
assert abs(b() - 2.7) < TOL, \
"ERROR: In 1st __mod__() test, degrees value doesn't match"
a = Angle(-13, 30)
b = a % 7
assert abs(b() - (-6.5)) < TOL, \
"ERROR: In 2nd __mod__() test, degrees value doesn't match"
def test_angle_add():
"""Tests the addition between Angles"""
a = Angle(180.0)
b = Angle(13, 30)
c = a + b
assert abs(c() - 193.5) < TOL, \
"ERROR: In 1st __add__() test, degrees value doesn't match"
b.set(-13, 30)
c = a + b
assert abs(c() - 166.5) < TOL, \
"ERROR: In 2nd __add__() test, degrees value doesn't match"
c = a + 11.5
assert abs(c() - 191.5) < TOL, \
"ERROR: In 3rd __add__() test, degrees value doesn't match"
def test_angle_sub():
"""Tests the subtraction between Angles"""
a = Angle(180.0)
b = Angle(13, 30)
c = a - b
assert abs(c() - 166.5) < TOL, \
"ERROR: In 1st __sub__() test, degrees value doesn't match"
b.set(-13, 30)
c = a - b
assert abs(c() - 193.5) < TOL, \
"ERROR: In 2nd __sub__() test, degrees value doesn't match"
c = a - 11.5
assert abs(c() - 168.5) < TOL, \
"ERROR: In 3rd __sub__() test, degrees value doesn't match"
def test_angle_mul():
"""Tests the multiplication between Angles"""
a = Angle(150.0)
b = Angle(5.0)
c = a * b
assert abs(c() - 30.0) < TOL, \
"ERROR: In 1st __mul__() test, degrees value doesn't match"
b.set(-5.0)
c = a * b
assert abs(c() - (-30.0)) < TOL, \
"ERROR: In 2nd __mul__() test, degrees value doesn't match"
c = a * 2.5
assert abs(c() - 15.0) < TOL, \
"ERROR: In 3rd __mul__() test, degrees value doesn't match"
def test_angle_div():
"""Tests the division between Angles"""
# NOTE: This also tests method self.__truediv__()
a = Angle(150.0)
b = Angle(6.0)
c = a / b
assert abs(c() - 25.0) < TOL, \
"ERROR: In 1st __div__() test, degrees value doesn't match"
b.set(-6.0)
c = a / b
assert abs(c() - (-25.0)) < TOL, \
"ERROR: In 2nd __div__() test, degrees value doesn't match"
c = a / 1.5
assert abs(c() - 100.0) < TOL, \
"ERROR: In 3rd __div__() test, degrees value doesn't match"
def test_angle_pow():
"""Tests the power operation in Angles"""
a = Angle(13, 30)
b = a ** 3
assert abs(b() - 300.375) < TOL, \
"ERROR: In 1st __pow__() test, degrees value doesn't match"
b.set(-2.0)
c = a ** b
assert abs(c() - 0.005486968449931413) < TOL, \
"ERROR: In 2nd __pow__() test, degrees value doesn't match"
def test_angle_imod():
"""Tests the accumulative module between Angles"""
a = Angle(152.7)
a %= 50
assert abs(a() - 2.7) < TOL, \
"ERROR: In 1st __imod__() test, degrees value doesn't match"
a = Angle(-13, 30)
a %= 7
assert abs(a() - (-6.5)) < TOL, \
"ERROR: In 2nd __imod__() test, degrees value doesn't match"
def test_angle_iadd():
"""Tests the accumulative addition between Angles"""
a = Angle(180.0)
b = Angle(13, 30)
a += b
assert abs(a() - 193.5) < TOL, \
"ERROR: In 1st __iadd__() test, degrees value doesn't match"
b.set(-10, 30)
a += b
assert abs(a() - 183.0) < TOL, \
"ERROR: In 2nd __iadd__() test, degrees value doesn't match"
a += 37.5
assert abs(a() - 220.5) < TOL, \
"ERROR: In 3rd __iadd__() test, degrees value doesn't match"
def test_angle_isub():
"""Tests the accumulative subtraction between Angles"""
a = Angle(180.0)
b = Angle(13, 30)
a -= b
assert abs(a() - 166.5) < TOL, \
"ERROR: In 1st __isub__() test, degrees value doesn't match"
b.set(-10, 30)
a -= b
assert abs(a() - 177.0) < TOL, \
"ERROR: In 2nd __isub__() test, degrees value doesn't match"
a -= 37.5
assert abs(a() - 139.5) < TOL, \
"ERROR: In 3rd __isub__() test, degrees value doesn't match"
def test_angle_imul():
"""Tests the accumulative multiplication between Angles"""
a = Angle(150.0)
b = Angle(5.0)
a *= b
assert abs(a() - 30.0) < TOL, \
"ERROR: In 1st __imul__() test, degrees value doesn't match"
b.set(-5.0)
a *= b
assert abs(a() - (-150.0)) < TOL, \
"ERROR: In 2nd __imul__() test, degrees value doesn't match"
a *= 2.5
assert abs(a() - (-15.0)) < TOL, \
"ERROR: In 3rd __imul__() test, degrees value doesn't match"
def test_angle_idiv():
"""Tests the accumulative division between Angles"""
# NOTE: This also tests method self.__itruediv__()
a = Angle(150.0)
b = Angle(6.0)
a /= b
assert abs(a() - 25.0) < TOL, \
"ERROR: In 1st __idiv__() test, degrees value doesn't match"
b.set(-20.0)
a /= b
assert abs(a() - (-1.25)) < TOL, \
"ERROR: In 2nd __idiv__() test, degrees value doesn't match"
a /= 1.5
assert abs(a() - (-0.833333333333333)) < TOL, \
"ERROR: In 3rd __idiv__() test, degrees value doesn't match"
def test_angle_ipow():
"""Tests the accumulative power operation in Angles"""
a = Angle(13, 30)
a **= 3
assert abs(a() - 300.375) < TOL, \
"ERROR: In 1st __ipow__() test, degrees value doesn't match"
b = Angle(-2.0)
a **= b
assert abs(a() - 1.108338532999e-05) < TOL, \
"ERROR: In 2nd __ipow__() test, degrees value doesn't match"
def test_angle_rmod():
"""Tests the module operation between Angles by the right"""
a = Angle(25.0)
b = Angle(163.0)
c = a.__rmod__(b)
assert abs(c() - 13.0) < TOL, \
"ERROR: In 1st __rmod__() test, degrees value doesn't match"
b.set(-78.0)
c = a.__rmod__(b)
assert abs(c() - (-3.0)) < TOL, \
"ERROR: In 2nd __rmod__() test, degrees value doesn't match"
c = 31.5 % a
assert abs(c() - 6.5) < TOL, \
"ERROR: In 3rd __rmod__() test, degrees value doesn't match"
def test_angle_radd():
"""Tests the addition between Angles by the right"""
a = Angle(180.0)
b = Angle(13, 30)
c = a.__radd__(b)
assert abs(c() - 193.5) < TOL, \
"ERROR: In 1st __radd__() test, degrees value doesn't match"
b.set(-13, 30)
c = a.__radd__(b)
assert abs(c() - 166.5) < TOL, \
"ERROR: In 2nd __radd__() test, degrees value doesn't match"
c = 11.5 + a
assert abs(c() - 191.5) < TOL, \
"ERROR: In 3rd __radd__() test, degrees value doesn't match"
def test_angle_rsub():
"""Tests the subtraction between Angles by the right"""
a = Angle(180.0)
b = Angle(-13, 30)
c = a.__rsub__(b)
assert abs(c() - (-193.5)) < TOL, \
"ERROR: In 1st __rsub__() test, degrees value doesn't match"
b.set(13, 30)
c = a.__rsub__(b)
assert abs(c() - (-166.5)) < TOL, \
"ERROR: In 2nd __rsub__() test, degrees value doesn't match"
c = 11.5 - a
assert abs(c() - (-168.5)) < TOL, \
"ERROR: In 3rd __rsub__() test, degrees value doesn't match"
def test_angle_rmul():
"""Tests the multiplication between Angles by the right"""
a = Angle(150.0)
b = Angle(5.0)
c = a.__rmul__(b)
assert abs(c() - 30.0) < TOL, \
"ERROR: In 1st __rmul__() test, degrees value doesn't match"
b.set(-5.0)
c = a.__rmul__(b)
assert abs(c() - (-30.0)) < TOL, \
"ERROR: In 2nd __rmul__() test, degrees value doesn't match"
c = 2.5 * a
assert abs(c() - 15.0) < TOL, \
"ERROR: In 3rd __rmul__() test, degrees value doesn't match"
def test_angle_rdiv():
"""Tests the division between Angles by the right"""
a = Angle(150.0)
b = Angle(5.0)
c = b.__rdiv__(a)
assert abs(c() - 30.0) < TOL, \
"ERROR: In 1st __rdiv__() test, degrees value doesn't match"
b.set(-5.0)
a = b.__rdiv__(c)
assert abs(a() - (-6.0)) < TOL, \
"ERROR: In 2nd __rdiv__() test, degrees value doesn't match"
c = -24.0 / a
assert abs(c() - 4.0) < TOL, \
"ERROR: In 3rd __rdiv__() test, degrees value doesn't match"
def test_angle_rpow():
"""Tests the power operation between Angles by the right"""
a = Angle(15.0)
b = Angle(3.0)
c = b.__rpow__(a)
assert abs(c() - 135.0) < TOL, \
"ERROR: In 1st __rpow__() test, degrees value doesn't match"
b.set(-2.0)
a = b.__rpow__(c)
assert abs(a() - 5.48697e-05) < TOL, \
"ERROR: In 2nd __rpow__() test, degrees value doesn't match"
c = -10.0 ** b
assert abs(c() - (-0.01)) < TOL, \
"ERROR: In 3rd __rpow__() test, degrees value doesn't match"
def test_angle_float():
"""Tests the 'float()' operation on Angles"""
a = Angle(15, 30)
assert abs(float(a) - 15.5) < TOL, \
"ERROR: In 1st __float__() test, degrees value doesn't match"
def test_angle_int():
"""Tests the 'int()' operation on Angles"""
a = Angle(15, 30)
assert abs(int(a) - 15) < TOL, \
"ERROR: In 1st __int__() test, degrees value doesn't match"
def test_angle_round():
"""Tests the 'round()' operation on Angles"""
a = Angle(1.0, radians=True)
# NOTE: The 'float(round(x))' hack makes this test work in Python 2 and 3
assert abs(float(round(a)) - 57.0) < TOL, \
"ERROR: In 1st __round__() test, degrees value doesn't match"
assert abs(float(round(a, 3)) - 57.296) < TOL, \
"ERROR: In 2nd __round__() test, degrees value doesn't match"
assert abs(float(round(a, 7)) - 57.2957795) < TOL, \
"ERROR: In 3rd __round__() test, degrees value doesn't match"
pymeeus-0.3.6/tests/test_coordinates.py 0000664 0000000 0000000 00000067764 13555455377 0020343 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from math import cos
from pymeeus.base import TOL
from pymeeus.Coordinates import mean_obliquity, true_obliquity, \
nutation_longitude, nutation_obliquity, precession_equatorial, \
precession_ecliptical, motion_in_space, equatorial2ecliptical, \
ecliptical2equatorial, equatorial2horizontal, horizontal2equatorial, \
equatorial2galactic, galactic2equatorial, ecliptic_horizon, \
parallactic_angle, ecliptic_equator, diurnal_path_horizon, \
times_rise_transit_set, refraction_apparent2true, \
refraction_true2apparent, angular_separation, \
minimum_angular_separation, relative_position_angle, \
planetary_conjunction, planet_star_conjunction, planet_stars_in_line, \
straight_line, circle_diameter, apparent_position, \
orbital_equinox2equinox, kepler_equation, velocity, \
velocity_perihelion, velocity_aphelion, length_orbit, \
passage_nodes_elliptic, passage_nodes_parabolic, phase_angle, \
illuminated_fraction
from pymeeus.Angle import Angle
from pymeeus.Epoch import Epoch, JDE2000
# Coordinates module
def test_coordinates_mean_obliquity():
"""Tests the mean_obliquity() method of Coordinates module"""
e0 = mean_obliquity(1987, 4, 10)
a = e0.dms_tuple()
assert abs(a[0] - 23.0) < TOL, \
"ERROR: 1st mean_obliquity() test, 'degrees' value doesn't match"
assert abs(a[1] - 26.0) < TOL, \
"ERROR: 2nd mean_obliquity() test, 'minutes' value doesn't match"
assert abs(round(a[2], 3) - 27.407) < TOL, \
"ERROR: 3rd mean_obliquity() test, 'seconds value doesn't match"
assert abs(a[3] - 1.0) < TOL, \
"ERROR: 4th mean_obliquity() test, 'sign' value doesn't match"
def test_coordinates_true_obliquity():
"""Tests the true_obliquity() method of Coordinates module"""
epsilon = true_obliquity(1987, 4, 10)
a = epsilon.dms_tuple()
assert abs(a[0] - 23.0) < TOL, \
"ERROR: 1st true_obliquity() test, 'degrees' value doesn't match"
assert abs(a[1] - 26.0) < TOL, \
"ERROR: 2nd true_obliquity() test, 'minutes' value doesn't match"
assert abs(round(a[2], 3) - 36.849) < TOL, \
"ERROR: 3rd true_obliquity() test, 'seconds value doesn't match"
assert abs(a[3] - 1.0) < TOL, \
"ERROR: 4th true_obliquity() test, 'sign' value doesn't match"
def test_coordinates_nutation_longitude():
"""Tests the nutation_longitude() method of Coordinates module"""
dpsi = nutation_longitude(1987, 4, 10)
a = dpsi.dms_tuple()
assert abs(a[0] - 0.0) < TOL, \
"ERROR: 1st nutation_longitude() test, 'degrees' value doesn't match"
assert abs(a[1] - 0.0) < TOL, \
"ERROR: 2nd nutation_longitude() test, 'minutes' value doesn't match"
assert abs(round(a[2], 3) - 3.788) < TOL, \
"ERROR: 3rd nutation_longitude() test, 'seconds value doesn't match"
assert abs(a[3] - (-1.0)) < TOL, \
"ERROR: 4th nutation_longitude() test, 'sign' value doesn't match"
def test_coordinates_nutation_obliquity():
"""Tests the nutation_obliquity() method of Coordinates module"""
depsilon = nutation_obliquity(1987, 4, 10)
a = depsilon.dms_tuple()
assert abs(a[0] - 0.0) < TOL, \
"ERROR: 1st nutation_obliquity() test, 'degrees' value doesn't match"
assert abs(a[1] - 0.0) < TOL, \
"ERROR: 2nd nutation_obliquity() test, 'minutes' value doesn't match"
assert abs(round(a[2], 3) - 9.443) < TOL, \
"ERROR: 3rd nutation_obliquity() test, 'seconds value doesn't match"
assert abs(a[3] - 1.0) < TOL, \
"ERROR: 4th nutation_obliquity() test, 'sign' value doesn't match"
def test_coordinates_precession_equatorial():
"""Tests the precession_equatorial() method of Coordinates module"""
start_epoch = JDE2000
final_epoch = Epoch(2028, 11, 13.19)
alpha0 = Angle(2, 44, 11.986, ra=True)
delta0 = Angle(49, 13, 42.48)
pm_ra = Angle(0, 0, 0.03425, ra=True)
pm_dec = Angle(0, 0, -0.0895)
alpha, delta = precession_equatorial(start_epoch, final_epoch, alpha0,
delta0, pm_ra, pm_dec)
assert alpha.ra_str(False, 3) == "2:46:11.331", \
"ERROR: 1st precession_equatorial test, right ascension doesn't match"
assert delta.dms_str(False, 2) == "49:20:54.54", \
"ERROR: 2nd precession_equatorial() test, 'declination' doesn't match"
def test_coordinates_precession_ecliptical():
"""Tests the precession_ecliptical() method of Coordinates module"""
start_epoch = JDE2000
final_epoch = Epoch(-214, 6, 30.0)
lon0 = Angle(149.48194)
lat0 = Angle(1.76549)
lon, lat = precession_ecliptical(start_epoch, final_epoch, lon0, lat0)
assert abs(round(lon(), 3) - 118.704) < TOL, \
"ERROR: 1st precession_ecliptical() test, 'longitude' doesn't match"
assert abs(round(lat(), 3) - 1.615) < TOL, \
"ERROR: 2nd precession_ecliptical() test, 'latitude' doesn't match"
def test_coordinates_motion_in_space():
"""Tests the motion_in_space() method of Coordinates module"""
ra = Angle(6, 45, 8.871, ra=True)
dec = Angle(-16.716108)
pm_ra = Angle(0, 0, -0.03847, ra=True)
pm_dec = Angle(0, 0, -1.2053)
dist = 2.64
vel = -7.6
alpha, delta = motion_in_space(ra, dec, dist, vel, pm_ra, pm_dec, -2000.0)
assert alpha.ra_str(False, 2) == "6:46:25.09", \
"ERROR: 1st motion_in_space() test, 'right ascension' doesn't match"
assert delta.dms_str(False, 1) == "-16:3:0.8", \
"ERROR: 2nd motion_in_space() test, 'declination' doesn't match"
alpha, delta = motion_in_space(ra, dec, dist, vel, pm_ra, pm_dec, -3000.0)
assert alpha.ra_str(False, 2) == "6:47:2.67", \
"ERROR: 3rd motion_in_space() test, 'right ascension' doesn't match"
assert delta.dms_str(False, 1) == "-15:43:12.3", \
"ERROR: 4th motion_in_space() test, 'declination' doesn't match"
alpha, delta = motion_in_space(ra, dec, dist, vel, pm_ra, pm_dec, -12000.0)
assert alpha.ra_str(False, 2) == "6:52:25.72", \
"ERROR: 5th motion_in_space() test, 'right ascension' doesn't match"
assert delta.dms_str(False, 1) == "-12:50:6.7", \
"ERROR: 6th motion_in_space() test, 'declination' doesn't match"
def test_coordinates_equatorial2ecliptical():
"""Tests the equatorial2ecliptical() method of Coordinates module"""
ra = Angle(7, 45, 18.946, ra=True)
dec = Angle(28, 1, 34.26)
epsilon = Angle(23.4392911)
lon, lat = equatorial2ecliptical(ra, dec, epsilon)
assert abs(round(lon(), 5) - 113.21563) < TOL, \
"ERROR: 1st equatorial2ecliptical() test, 'longitude' doesn't match"
assert abs(round(lat(), 5) - 6.68417) < TOL, \
"ERROR: 2nd equatorial2ecliptical() test, 'latitude' doesn't match"
def test_coordinates_ecliptical2equatorial():
"""Tests the ecliptical2equatorial() method of Coordinates module"""
lon = Angle(113.21563)
lat = Angle(6.68417)
epsilon = Angle(23.4392911)
ra, dec = ecliptical2equatorial(lon, lat, epsilon)
assert ra.ra_str(n_dec=3) == "7h 45' 18.946''", \
"ERROR: 1st ecliptical2equatorial() test, 'ra' doesn't match"
assert dec.dms_str(n_dec=2) == "28d 1' 34.26''", \
"ERROR: 2nd ecliptical2equatorial() test, 'declination' doesn't match"
def test_coordinates_equatorial2horizontal():
"""Tests the equatorial2horizontal() method of Coordinates module"""
lon = Angle(77, 3, 56)
lat = Angle(38, 55, 17)
ra = Angle(23, 9, 16.641, ra=True)
dec = Angle(-6, 43, 11.61)
theta0 = Angle(8, 34, 57.0896, ra=True)
eps = Angle(23, 26, 36.87)
delta = Angle(0, 0, ((-3.868*cos(eps.rad()))/15.0), ra=True)
theta0 += delta
h = theta0 - lon - ra
azi, ele = equatorial2horizontal(h, dec, lat)
assert abs(round(azi, 3) - 68.034) < TOL, \
"ERROR: 1st equatorial2horizontal() test, 'azimuth' doesn't match"
assert abs(round(ele, 3) - 15.125) < TOL, \
"ERROR: 2nd equatorial2horizontal() test, 'elevation' doesn't match"
def test_coordinates_horizontal2equatorial():
"""Tests the horizontal2equatorial() method of Coordinates module"""
azi = Angle(68.0337)
ele = Angle(15.1249)
lat = Angle(38, 55, 17)
h, dec = horizontal2equatorial(azi, ele, lat)
assert abs(round(h, 4) - 64.3521) < TOL, \
"ERROR: 1st horizontal2equatorial() test, 'hour angle' doesn't match"
assert dec.dms_str(n_dec=0) == "-6d 43' 12.0''", \
"ERROR: 2nd horizontal2equatorial() test, 'declination' match"
def test_coordinates_equatorial2galactic():
"""Tests the equatorial2galactic() method of Coordinates module"""
ra = Angle(17, 48, 59.74, ra=True)
dec = Angle(-14, 43, 8.2)
lon, lat = equatorial2galactic(ra, dec)
assert abs(round(lon, 4) - 12.9593) < TOL, \
"ERROR: 1st equatorial2galactic() test, 'longitude' doesn't match"
assert abs(round(lat, 4) - 6.0463) < TOL, \
"ERROR: 2nd equatorial2galactic() test, 'latitude' doesn't match"
def test_coordinates_galactic2equatorial():
"""Tests the galactic2equatorial() method of Coordinates module"""
lon = Angle(12.9593)
lat = Angle(6.0463)
ra, dec = galactic2equatorial(lon, lat)
assert ra.ra_str(n_dec=1) == "17h 48' 59.7''", \
"ERROR: 1st galactic2equatorial() test, 'ra' doesn't match"
assert dec.dms_str(n_dec=0) == "-14d 43' 8.0''", \
"ERROR: 2nd galactic2equatorial() test, 'declination' doesn't match"
def test_coordinates_parallactic_angle():
"""Tests the parallactic_angle() method of Coordinates module"""
hour_angle = Angle(0.0)
declination = Angle(45.0)
latitude = Angle(50.0)
q = parallactic_angle(hour_angle, declination, latitude)
assert q.dms_str(n_dec=1) == "0d 0' 0.0''", \
"ERROR: 1st parallactic_angle() test, 'lon1' doesn't match"
def test_coordinates_ecliptic_horizon():
"""Tests the ecliptic_horizon() method of Coordinates module"""
sidereal_time = Angle(5.0, ra=True)
lat = Angle(51.0)
epsilon = Angle(23.44)
lon1, lon2, i = ecliptic_horizon(sidereal_time, lat, epsilon)
assert lon1.dms_str(n_dec=1) == "169d 21' 29.9''", \
"ERROR: 1st ecliptic_horizon() test, 'lon1' doesn't match"
assert lon2.dms_str(n_dec=1) == "349d 21' 29.9''", \
"ERROR: 2nd ecliptic_horizon() test, 'lon2' doesn't match"
assert abs(round(i, 0) - 62.0) < TOL, \
"ERROR: 3rd ecliptic_horizon() test, 'i' angle doesn't match"
def test_coordinates_ecliptic_equator():
"""Tests the ecliptic_equator() method of Coordinates module"""
lon = Angle(0.0)
lat = Angle(0.0)
eps = Angle(23.5)
ang_ecl_equ = ecliptic_equator(lon, lat, eps)
assert ang_ecl_equ.dms_str(n_dec=1) == "156d 30' 0.0''", \
"ERROR: 1st ecliptic_equator() test, 'ang_ecl_equ' doesn't match"
def test_coordinates_diurnal_path_horizon():
"""Tests the diurnal_path_horizon() method of Coordinates module"""
dec = Angle(23.44)
lat = Angle(40.0)
j = diurnal_path_horizon(dec, lat)
assert j.dms_str(n_dec=1) == "45d 31' 28.4''", \
"ERROR: 1st diurnal_path_horizon() test, 'j' angle doesn't match"
def test_coordinates_times_rise_transit_set():
"""Tests the times_rise_transit_set() method of Coordinates module"""
longitude = Angle(71, 5, 0.0)
latitude = Angle(42, 20, 0.0)
alpha1 = Angle(2, 42, 43.25, ra=True)
delta1 = Angle(18, 2, 51.4)
alpha2 = Angle(2, 46, 55.51, ra=True)
delta2 = Angle(18, 26, 27.3)
alpha3 = Angle(2, 51, 7.69, ra=True)
delta3 = Angle(18, 49, 38.7)
h0 = Angle(-0.5667)
delta_t = 56.0
theta0 = Angle(11, 50, 58.1, ra=True)
rising, transit, setting = times_rise_transit_set(longitude, latitude,
alpha1, delta1,
alpha2, delta2,
alpha3, delta3, h0,
delta_t, theta0)
assert abs(round(rising, 4) - 12.4238) < TOL, \
"ERROR: 1st times_rise_transit_set() test, 'rising' time doesn't match"
assert abs(round(transit, 3) - 19.675) < TOL, \
"ERROR: 2nd times_rise_transit_set() test, 'transit' doesn't match"
assert abs(round(setting, 3) - 2.911) < TOL, \
"ERROR: 3rd times_rise_transit_set() test, 'setting' doesn't match"
def test_coordinates_refraction_apparent2true():
"""Tests the refraction_apparent2true() method of Coordinates module"""
apparent_elevation = Angle(0, 30, 0.0)
true = refraction_apparent2true(apparent_elevation)
assert true.dms_str(n_dec=1) == "1' 14.7''", \
"ERROR: 1st refraction_apparent2true() test, 'true' doesn't match"
def test_coordinates_refraction_true2apparent():
"""Tests the refraction_true2apparent() method of Coordinates module"""
true_elevation = Angle(0, 33, 14.76)
apparent = refraction_true2apparent(true_elevation)
assert apparent.dms_str(n_dec=2) == "57' 51.96''", \
"ERROR: 1st refraction_true2apparent() test, 'apparent' doesn't match"
def test_coordinates_angular_separation():
"""Tests the angular_separation() method of Coordinates module"""
alpha1 = Angle(14, 15, 39.7, ra=True)
delta1 = Angle(19, 10, 57.0)
alpha2 = Angle(13, 25, 11.6, ra=True)
delta2 = Angle(-11, 9, 41.0)
sep_ang = angular_separation(alpha1, delta1, alpha2, delta2)
assert abs(round(sep_ang, 3) - 32.793) < TOL, \
"ERROR: 1st angular_separation() test, 'sep_ang' value doesn't match"
def test_coordinates_minimum_angular_separation():
"""Tests the minimum_angular_separation() method of Coordinates module"""
alpha1_1 = Angle(10, 29, 44.27, ra=True)
delta1_1 = Angle(11, 2, 5.9)
alpha2_1 = Angle(10, 33, 29.64, ra=True)
delta2_1 = Angle(10, 40, 13.2)
alpha1_2 = Angle(10, 36, 19.63, ra=True)
delta1_2 = Angle(10, 29, 51.7)
alpha2_2 = Angle(10, 33, 57.97, ra=True)
delta2_2 = Angle(10, 37, 33.4)
alpha1_3 = Angle(10, 43, 1.75, ra=True)
delta1_3 = Angle(9, 55, 16.7)
alpha2_3 = Angle(10, 34, 26.22, ra=True)
delta2_3 = Angle(10, 34, 53.9)
n, d = minimum_angular_separation(alpha1_1, delta1_1, alpha1_2, delta1_2,
alpha1_3, delta1_3, alpha2_1, delta2_1,
alpha2_2, delta2_2, alpha2_3, delta2_3)
assert abs(round(n, 6) + 0.370726) < TOL, \
"ERROR: 1st minimum_angular_separation() test, 'n' value doesn't match"
assert d.dms_str(n_dec=0) == "3' 44.0''", \
"ERROR: 2nd minimum_angular_separation() test, 'd' value doesn't match"
def test_coordinates_relative_position_angle():
"""Tests the relative_position_angle() method of Coordinates module"""
alpha1 = Angle(14, 15, 39.7, ra=True)
delta1 = Angle(19, 10, 57.0)
alpha2 = Angle(14, 15, 39.7, ra=True)
delta2 = Angle(-11, 9, 41.0)
pos_ang = relative_position_angle(alpha1, delta1, alpha2, delta2)
assert abs(round(pos_ang, 1) - 0.0) < TOL, \
"ERROR: 1st relative_position_angle() test, 'pos_ang' doesn't match"
alpha1 = Angle(14, 15, 39.7, ra=True)
delta1 = Angle(-19, 10, 57.0)
alpha2 = Angle(14, 15, 39.7, ra=True)
delta2 = Angle(11, 9, 41.0)
pos_ang = relative_position_angle(alpha1, delta1, alpha2, delta2)
assert abs(round(pos_ang, 1) - 180.0) < TOL, \
"ERROR: 2nd relative_position_angle() test, 'pos_ang' doesn't match"
def test_coordinates_planetary_conjunction():
"""Tests the planetary_conjunction() method of Coordinates module"""
alpha1_1 = Angle(10, 24, 30.125, ra=True)
delta1_1 = Angle(6, 26, 32.05)
alpha1_2 = Angle(10, 25, 0.342, ra=True)
delta1_2 = Angle(6, 10, 57.72)
alpha1_3 = Angle(10, 25, 12.515, ra=True)
delta1_3 = Angle(5, 57, 33.08)
alpha1_4 = Angle(10, 25, 6.235, ra=True)
delta1_4 = Angle(5, 46, 27.07)
alpha1_5 = Angle(10, 24, 41.185, ra=True)
delta1_5 = Angle(5, 37, 48.45)
alpha2_1 = Angle(10, 27, 27.175, ra=True)
delta2_1 = Angle(4, 4, 41.83)
alpha2_2 = Angle(10, 26, 32.410, ra=True)
delta2_2 = Angle(3, 55, 54.66)
alpha2_3 = Angle(10, 25, 29.042, ra=True)
delta2_3 = Angle(3, 48, 3.51)
alpha2_4 = Angle(10, 24, 17.191, ra=True)
delta2_4 = Angle(3, 41, 10.25)
alpha2_5 = Angle(10, 22, 57.024, ra=True)
delta2_5 = Angle(3, 35, 16.61)
alpha1_list = [alpha1_1, alpha1_2, alpha1_3, alpha1_4, alpha1_5]
delta1_list = [delta1_1, delta1_2, delta1_3, delta1_4, delta1_5]
alpha2_list = [alpha2_1, alpha2_2, alpha2_3, alpha2_4, alpha2_5]
delta2_list = [delta2_1, delta2_2, delta2_3, delta2_4, delta2_5]
pc = planetary_conjunction(alpha1_list, delta1_list,
alpha2_list, delta2_list)
assert abs(round(pc[0], 5) - 0.23797) < TOL, \
"ERROR: 1st planetary_conjunction() test, 'pc[0]' doesn't match"
assert pc[1].dms_str(n_dec=1) == "2d 8' 21.8''", \
"ERROR: 2nd planetary_conjunction() test, 'pc[1]' doesn't match"
def test_coordinates_planet_star_conjunction():
"""Tests the planet_star_conjunction() method of Coordinates module"""
alpha_1 = Angle(15, 3, 51.937, ra=True)
delta_1 = Angle(-8, 57, 34.51)
alpha_2 = Angle(15, 9, 57.327, ra=True)
delta_2 = Angle(-9, 9, 3.88)
alpha_3 = Angle(15, 15, 37.898, ra=True)
delta_3 = Angle(-9, 17, 37.94)
alpha_4 = Angle(15, 20, 50.632, ra=True)
delta_4 = Angle(-9, 23, 16.25)
alpha_5 = Angle(15, 25, 32.695, ra=True)
delta_5 = Angle(-9, 26, 1.01)
alpha_star = Angle(15, 17, 0.446, ra=True)
delta_star = Angle(-9, 22, 58.47)
alpha_list = [alpha_1, alpha_2, alpha_3, alpha_4, alpha_5]
delta_list = [delta_1, delta_2, delta_3, delta_4, delta_5]
pc = planet_star_conjunction(alpha_list, delta_list,
alpha_star, delta_star)
assert abs(round(pc[0], 4) - 0.2551) < TOL, \
"ERROR: 1st planet_star_conjunction() test, 'pc[0]' doesn't match"
assert pc[1].dms_str(n_dec=0) == "3' 38.0''", \
"ERROR: 2nd planet_star_conjunction() test, 'pc[1]' doesn't match"
def test_coordinates_planet_stars_in_line():
"""Tests the planet_stars_in_line() method of Coordinates module"""
alpha_1 = Angle(7, 55, 55.36, ra=True)
delta_1 = Angle(21, 41, 3.0)
alpha_2 = Angle(7, 58, 22.55, ra=True)
delta_2 = Angle(21, 35, 23.4)
alpha_3 = Angle(8, 0, 48.99, ra=True)
delta_3 = Angle(21, 29, 38.2)
alpha_4 = Angle(8, 3, 14.66, ra=True)
delta_4 = Angle(21, 23, 47.5)
alpha_5 = Angle(8, 5, 39.54, ra=True)
delta_5 = Angle(21, 17, 51.4)
alpha_star1 = Angle(7, 34, 16.40, ra=True)
delta_star1 = Angle(31, 53, 51.2)
alpha_star2 = Angle(7, 45, 0.10, ra=True)
delta_star2 = Angle(28, 2, 12.5)
alpha_list = [alpha_1, alpha_2, alpha_3, alpha_4, alpha_5]
delta_list = [delta_1, delta_2, delta_3, delta_4, delta_5]
n = planet_stars_in_line(alpha_list, delta_list, alpha_star1, delta_star1,
alpha_star2, delta_star2)
assert abs(round(n, 4) - 0.2233) < TOL, \
"ERROR: 1st planet_stars_in_line() test, 'n' value doesn't match"
def test_coordinates_straight_line():
"""Tests the straight_line() method of Coordinates module"""
alpha1 = Angle(5, 32, 0.40, ra=True)
delta1 = Angle(0, -17, 56.9)
alpha2 = Angle(5, 36, 12.81, ra=True)
delta2 = Angle(-1, 12, 7.0)
alpha3 = Angle(5, 40, 45.52, ra=True)
delta3 = Angle(-1, 56, 33.3)
psi, omega = straight_line(alpha1, delta1, alpha2, delta2, alpha3, delta3)
assert psi.dms_str(n_dec=0) == "7d 31' 1.0''", \
"ERROR: 1st straight_line() test, 'psi' value doesn't match"
assert omega.dms_str(n_dec=0) == "-5' 24.0''", \
"ERROR: 2nd straight_line() test, 'omega' value doesn't match"
def test_coordinates_circle_diameter():
"""Tests the circle_diameter() method of Coordinates module"""
alpha1 = Angle(12, 41, 8.63, ra=True)
delta1 = Angle(-5, 37, 54.2)
alpha2 = Angle(12, 52, 5.21, ra=True)
delta2 = Angle(-4, 22, 26.2)
alpha3 = Angle(12, 39, 28.11, ra=True)
delta3 = Angle(-1, 50, 3.7)
d = circle_diameter(alpha1, delta1, alpha2, delta2, alpha3, delta3)
assert d.dms_str(n_dec=0) == "4d 15' 49.0''", \
"ERROR: 1st circle_diameter() test, 'd' value doesn't match"
alpha1 = Angle(9, 5, 41.44, ra=True)
delta1 = Angle(18, 30, 30.0)
alpha2 = Angle(9, 9, 29.0, ra=True)
delta2 = Angle(17, 43, 56.7)
alpha3 = Angle(8, 59, 47.14, ra=True)
delta3 = Angle(17, 49, 36.8)
d = circle_diameter(alpha1, delta1, alpha2, delta2, alpha3, delta3)
assert d.dms_str(n_dec=0) == "2d 18' 38.0''", \
"ERROR: 2nd circle_diameter() test, 'd' value doesn't match"
def test_coordinates_apparent_position():
"""Tests the apparent_position() method of Coordinates module"""
epoch = Epoch(2028, 11, 13.19)
alpha = Angle(2, 46, 11.331, ra=True)
delta = Angle(49, 20, 54.54)
sun_lon = Angle(231.328)
app_alpha, app_delta = apparent_position(epoch, alpha, delta, sun_lon)
assert app_alpha.ra_str(n_dec=2) == "2h 46' 14.39''", \
"ERROR: 1st apparent_position() test, 'app_alpha' value doesn't match"
assert app_delta.dms_str(n_dec=2) == "49d 21' 7.45''", \
"ERROR: 2nd apparent_position() test, 'app_delta' value doesn't match"
def test_coordinates_orbital_equinox2equinox():
"""Tests the orbital_equinox2equinox() method of Coordinates module"""
epoch0 = Epoch(2358042.5305)
epoch = Epoch(2433282.4235)
i0 = Angle(47.122)
arg0 = Angle(151.4486)
lon0 = Angle(45.7481)
i1, arg1, lon1 = orbital_equinox2equinox(epoch0, epoch, i0, arg0, lon0)
assert abs(round(i1(), 3) - 47.138) < TOL, \
"ERROR: 1st orbital_equinox2equinox() test, 'i1' value doesn't match"
assert abs(round(arg1(), 4) - 151.4782) < TOL, \
"ERROR: 2nd orbital_equinox2equinox() test, 'arg1' value doesn't match"
assert abs(round(lon1(), 4) - 48.6037) < TOL, \
"ERROR: 3rd orbital_equinox2equinox() test, 'lon1' value doesn't match"
def test_coordinates_kepler_equation():
"""Tests the kepler_equation() method of Coordinates module"""
e1, v1 = kepler_equation(0.1, Angle(5.0))
e2, v2 = kepler_equation(0.99, Angle(1.0))
e3, v3 = kepler_equation(0.99, Angle(0.2, radians=True))
assert abs(round(e1(), 6) - 5.554589) < TOL, \
"ERROR: 1st kepler_equation() test, 'e1' value doesn't match"
assert abs(round(v1(), 6) - 6.139762) < TOL, \
"ERROR: 2nd kepler_equation() test, 'v1' value doesn't match"
assert abs(round(e2(), 6) - 24.725822) < TOL, \
"ERROR: 3rd kepler_equation() test, 'e2' value doesn't match"
assert abs(round(v2(), 6) - 144.155952) < TOL, \
"ERROR: 4th kepler_equation() test, 'v2' value doesn't match"
assert abs(round(e3(), 8) - 61.13444578) < TOL, \
"ERROR: 5th kepler_equation() test, 'e3' value doesn't match"
assert abs(round(v3(), 6) - 166.311977) < TOL, \
"ERROR: 6th kepler_equation() test, 'v3' value doesn't match"
def test_coordinates_velocity():
"""Tests the velocity() function of Coordinates module"""
r = 1.0
a = 17.9400782
v = velocity(r, a)
assert abs(round(v, 2) - 41.53) < TOL, \
"ERROR: 1st velocity() test, value doesn't match"
def test_coordinates_velocity_perihelion():
"""Tests the velocity_perihelion() function of Coordinates module"""
a = 17.9400782
e = 0.96727426
vp = velocity_perihelion(e, a)
assert abs(round(vp, 2) - 54.52) < TOL, \
"ERROR: 1st velocity_perihelion() test, value doesn't match"
def test_coordinates_velocity_aphelion():
"""Tests the velocity_aphelion() function of Coordinates module"""
a = 17.9400782
e = 0.96727426
va = velocity_aphelion(e, a)
assert abs(round(va, 2) - 0.91) < TOL, \
"ERROR: 1st velocity_aphelion() test, value doesn't match"
def test_coordinates_length_orbit():
"""Tests the length_orbit() function of Coordinates module"""
a = 17.9400782
e = 0.96727426
length = length_orbit(e, a)
assert abs(round(length, 2) - 77.06) < TOL, \
"ERROR: 1st length_orbit() test, value doesn't match"
def test_coordinates_passage_nodes_elliptic():
"""Tests the passage_nodes_elliptic() function of Coordinates module"""
omega = Angle(111.84644)
e = 0.96727426
a = 17.9400782
t = Epoch(1986, 2, 9.45891)
time, r = passage_nodes_elliptic(omega, e, a, t)
year, month, day = time.get_date()
assert abs(year - 1985) < TOL, \
"ERROR: 1st passage_nodes_elliptic() test, value doesn't match"
assert abs(month - 11) < TOL, \
"ERROR: 2nd passage_nodes_elliptic() test, value doesn't match"
assert abs(round(day, 2) - 9.16) < TOL, \
"ERROR: 3rd passage_nodes_elliptic() test, value doesn't match"
assert abs(round(r, 4) - 1.8045) < TOL, \
"ERROR: 4th passage_nodes_elliptic() test, value doesn't match"
time, r = passage_nodes_elliptic(omega, e, a, t, ascending=False)
year, month, day = time.get_date()
assert abs(year - 1986) < TOL, \
"ERROR: 5th passage_nodes_elliptic() test, value doesn't match"
assert abs(month - 3) < TOL, \
"ERROR: 6th passage_nodes_elliptic() test, value doesn't match"
assert abs(round(day, 2) - 10.37) < TOL, \
"ERROR: 7th passage_nodes_elliptic() test, value doesn't match"
assert abs(round(r, 4) - 0.8493) < TOL, \
"ERROR: 8th passage_nodes_elliptic() test, value doesn't match"
def test_coordinates_passage_nodes_parabolic():
"""Tests the passage_nodes_parabolic() function of Coordinates module"""
omega = Angle(154.9103)
q = 1.324502
t = Epoch(1989, 8, 20.291)
time, r = passage_nodes_parabolic(omega, q, t)
year, month, day = time.get_date()
assert abs(year - 1977) < TOL, \
"ERROR: 1st passage_nodes_parabolic() test, value doesn't match"
assert abs(month - 9) < TOL, \
"ERROR: 2nd passage_nodes_parabolic() test, value doesn't match"
assert abs(round(day, 2) - 17.64) < TOL, \
"ERROR: 3rd passage_nodes_parabolic() test, value doesn't match"
assert abs(round(r, 4) - 28.0749) < TOL, \
"ERROR: 4th passage_nodes_parabolic() test, value doesn't match"
time, r = passage_nodes_parabolic(omega, q, t, ascending=False)
year, month, day = time.get_date()
assert abs(year - 1989) < TOL, \
"ERROR: 5th passage_nodes_parabolic() test, value doesn't match"
assert abs(month - 9) < TOL, \
"ERROR: 6th passage_nodes_parabolic() test, value doesn't match"
assert abs(round(day, 3) - 17.636) < TOL, \
"ERROR: 7th passage_nodes_parabolic() test, value doesn't match"
assert abs(round(r, 4) - 1.3901) < TOL, \
"ERROR: 8th passage_nodes_parabolic() test, value doesn't match"
def test_coordinates_phase_angle():
"""Tests the phase_angle() function of Coordinates module"""
sun_dist = 0.724604
earth_dist = 0.910947
sun_earth_dist = 0.983824
angle = phase_angle(sun_dist, earth_dist, sun_earth_dist)
assert abs(round(angle, 2) - 72.96) < TOL, \
"ERROR: 1st phase_angle() test, value doesn't match"
def test_coordinates_illuminated_fraction():
"""Tests the illuminated_fraction() function of Coordinates module"""
sun_dist = 0.724604
earth_dist = 0.910947
sun_earth_dist = 0.983824
k = illuminated_fraction(sun_dist, earth_dist, sun_earth_dist)
assert abs(round(k, 3) - 0.647) < TOL, \
"ERROR: 1st illuminated_fraction() test, value doesn't match"
pymeeus-0.3.6/tests/test_curvefitting.py 0000664 0000000 0000000 00000013322 13555455377 0020517 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from math import sqrt, radians, sin
from pymeeus.base import TOL
from pymeeus.CurveFitting import CurveFitting
# Declare some objects to be used later
cf1 = CurveFitting()
cf2 = CurveFitting()
cf3 = CurveFitting()
cf4 = CurveFitting()
def setup():
"""This function is used to set up the environment for the tests"""
# Set up a few CurveFitting objects
cf1.set([73.0, 38.0, 35.0, 42.0, 78.0, 68.0, 74.0, 42.0, 52.0, 54.0, 39.0,
61.0, 42.0, 49.0, 50.0, 62.0, 44.0, 39.0, 43.0, 54.0, 44.0, 37.0],
[90.4, 125.3, 161.8, 143.4, 52.5, 50.8, 71.5, 152.8, 131.3, 98.5,
144.8, 78.1, 89.5, 63.9, 112.1, 82.0, 119.8, 161.2, 208.4, 111.6,
167.1, 162.1])
cf2.set([0.2982, 0.2969, 0.2918, 0.2905, 0.2707, 0.2574, 0.2485, 0.2287,
0.2238, 0.2156, 0.1992, 0.1948, 0.1931, 0.1889, 0.1781, 0.1772,
0.1770, 0.1755, 0.1746],
[10.92, 11.01, 10.99, 10.78, 10.87, 10.80, 10.75, 10.14, 10.21,
9.97, 9.69, 9.57, 9.66, 9.63, 9.65, 9.44, 9.44, 9.32, 9.20])
cf3.set([-2.0, -1.5, -1.0, -0.5, 0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0],
[-9.372, -3.821, 0.291, 3.730, 5.822, 8.324, 9.083, 6.957, 7.006,
0.365, -1.722])
cf4.set([3, 20, 34, 50, 75, 88, 111, 129, 143, 160, 183, 200, 218, 230,
248, 269, 290, 303, 320, 344],
[0.0433, 0.2532, 0.3386, 0.3560, 0.4983, 0.7577, 1.4585, 1.8628,
1.8264, 1.2431, -0.2043, -1.2431, -1.8422, -1.8726, -1.4889,
-0.8372, -0.4377, -0.3640, -0.3508, -0.2126])
def teardown():
pass
# CurveFitting class
def test_curvefitting_constructor():
"""Tests the constructor of CurveFitting class"""
i = CurveFitting([5, 3, 6, 1, 2, 4, 9], [10, 6, 12, 2, 4, 8])
assert i._x == [5, 3, 6, 1, 2, 4], \
"ERROR: 1st constructor test, 'x' values don't match"
assert i._y == [10, 6, 12, 2, 4, 8], \
"ERROR: 2nd constructor test, 'y' values don't match"
j = CurveFitting([3, -8, 1, 12, 2, 5, 8])
assert j._x == [0, 1, 2, 3, 4, 5, 6], \
"ERROR: 3rd constructor test, 'x' values don't match"
assert j._y == [3, -8, 1, 12, 2, 5, 8], \
"ERROR: 4th constructor test, 'y' values don't match"
k = CurveFitting(3, -8, 1, 12, 2, 5, 8)
assert k._x == [3, 1, 2], \
"ERROR: 5th constructor test, 'x' values don't match"
assert k._y == [-8, 12, 5], \
"ERROR: 6th constructor test, 'y' values don't match"
def test_curvefitting_correlation_coeff():
"""Tests the correlation_coeff() method of CurveFitting class"""
r = cf1.correlation_coeff()
assert abs(round(r, 3) - (-0.767)) < TOL, \
"ERROR: 1st correlation_coeff() test, 'r' value doesn't match"
def test_curvefitting_linear_fitting():
"""Tests the linear_fitting() method of CurveFitting class"""
a, b = cf1.linear_fitting()
assert abs(round(a, 2) - (-2.49)) < TOL, \
"ERROR: In 1st linear_fitting() test, 'a' value doesn't match"
assert abs(round(b, 2) - 244.18) < TOL, \
"ERROR: In 2nd linear_fitting() test, 'b' value doesn't match"
a, b = cf2.linear_fitting()
assert abs(round(a, 2) - 13.67) < TOL, \
"ERROR: In 3rd linear_fitting() test, 'a' value doesn't match"
assert abs(round(b, 2) - 7.03) < TOL, \
"ERROR: In 4th linear_fitting() test, 'b' value doesn't match"
def test_curvefitting_quadratic_fitting():
"""Tests the quadratic_fitting() method of CurveFitting class"""
a, b, c = cf3.quadratic_fitting()
assert abs(round(a, 2) - (-2.22)) < TOL, \
"ERROR: In 1st quadratic_fitting() test, 'a' value doesn't match"
assert abs(round(b, 2) - 3.76) < TOL, \
"ERROR: In 2nd quadratic_fitting() test, 'b' value doesn't match"
assert abs(round(c, 2) - 6.64) < TOL, \
"ERROR: In 3rd quadratic_fitting() test, 'c' value doesn't match"
def test_curvefitting_general_fitting():
"""Tests the general_fitting() method of CurveFitting class"""
# Let's define the three functions to be used for fitting
def sin1(x): return sin(radians(x))
def sin2(x): return sin(radians(2.0*x))
def sin3(x): return sin(radians(3.0*x))
a, b, c = cf4.general_fitting(sin1, sin2, sin3)
assert abs(round(a, 2) - 1.2) < TOL, \
"ERROR: In 1st general_fitting() test, 'a' value doesn't match"
assert abs(round(b, 2) - (-0.77)) < TOL, \
"ERROR: In 2nd general_fitting() test, 'b' value doesn't match"
assert abs(round(c, 2) - 0.39) < TOL, \
"ERROR: In 3rd general_fitting() test, 'c' value doesn't match"
cf5 = CurveFitting([0, 1.2, 1.4, 1.7, 2.1, 2.2])
a, b, c = cf5.general_fitting(sqrt)
assert abs(round(a, 3) - 1.016) < TOL, \
"ERROR: In 4th general_fitting() test, 'a' value doesn't match"
assert abs(round(b, 3) - 0.0) < TOL, \
"ERROR: In 5th general_fitting() test, 'b' value doesn't match"
assert abs(round(c, 3) - 0.0) < TOL, \
"ERROR: In 6th general_fitting() test, 'c' value doesn't match"
pymeeus-0.3.6/tests/test_earth.py 0000664 0000000 0000000 00000024651 13555455377 0017120 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from pymeeus.base import TOL
from pymeeus.Earth import Earth, IAU76
from pymeeus.Angle import Angle
from pymeeus.Epoch import Epoch
# Earth class
def test_earth_constructor():
"""Tests the constructor of Earth class"""
a = Earth()
assert abs(a._ellip._a - 6378137.0) < TOL, \
"ERROR: 1st constructor test, 'a' value doesn't match"
assert abs(a._ellip._f - (1.0/298.257223563)) < TOL, \
"ERROR: 2nd constructor test, 'f' value doesn't match"
assert abs(a._ellip._omega - 7292115e-11) < TOL, \
"ERROR: 3rd constructor test, 'omega' value doesn't match"
a = Earth(ellipsoid=IAU76)
assert abs(a._ellip._a - 6378140.0) < TOL, \
"ERROR: 4th constructor test, 'a' value doesn't match"
assert abs(a._ellip._f - (1.0/298.257)) < TOL, \
"ERROR: 5th constructor test, 'f' value doesn't match"
assert abs(a._ellip._omega - 7.292114992e-5) < TOL, \
"ERROR: 6th constructor test, 'omega' value doesn't match"
def test_earth_rho():
"""Tests the rho() method of Earth class"""
a = Earth()
assert abs(a.rho(0.0) - 1.0) < TOL, \
"ERROR: 1st rho() test, output doesn't match"
def test_earth_rho_sinphi():
"""Tests the rho_sinphi() method of Earth class"""
lat = Angle(33, 21, 22.0)
e = Earth(ellipsoid=IAU76)
assert abs(round(e.rho_sinphi(lat, 1706), 6) - 0.546861) < TOL, \
"ERROR: 1st rho_sinphi() test, output doesn't match"
def test_earth_rho_cosphi():
"""Tests the rho_cosphi() method of Earth class"""
lat = Angle(33, 21, 22.0)
e = Earth(ellipsoid=IAU76)
assert abs(round(e.rho_cosphi(lat, 1706), 6) - 0.836339) < TOL, \
"ERROR: 1st rho_cosphi() test, output doesn't match"
def test_earth_rp():
"""Tests the rp() method of Earth class"""
e = Earth(ellipsoid=IAU76)
assert abs(round(e.rp(42.0), 1) - 4747001.2) < TOL, \
"ERROR: 1st rp() test, output doesn't match"
def test_earth_rm():
"""Tests the rm() method of Earth class"""
e = Earth(ellipsoid=IAU76)
assert abs(round(e.rm(42.0), 1) - 6364033.3) < TOL, \
"ERROR: 1st rm() test, output doesn't match"
def test_earth_linear_velocity():
"""Tests the linear_velocity() method of Earth class"""
e = Earth(ellipsoid=IAU76)
assert abs(round(e.linear_velocity(42.0), 2) - 346.16) < TOL, \
"ERROR: 1st linear_velocity() test, output doesn't match"
def test_earth_distance():
"""Tests the distance() method of Earth class"""
e = Earth(ellipsoid=IAU76)
lon1 = Angle(-2, 20, 14.0)
lat1 = Angle(48, 50, 11.0)
lon2 = Angle(77, 3, 56.0)
lat2 = Angle(38, 55, 17.0)
dist, error = e.distance(lon1, lat1, lon2, lat2)
assert abs(round(dist, 0) - 6181628.0) < TOL, \
"ERROR: 1st distance() test, output doesn't match"
assert abs(round(error, 0) - 69.0) < TOL, \
"ERROR: 2nd distance() test, output doesn't match"
lon1 = Angle(-2.09)
lat1 = Angle(41.3)
lon2 = Angle(73.99)
lat2 = Angle(40.75)
dist, error = e.distance(lon1, lat1, lon2, lat2)
assert abs(round(dist, 0) - 6176760.0) < TOL, \
"ERROR: 3rd distance() test, output doesn't match"
assert abs(round(error, 0) - 69.0) < TOL, \
"ERROR: 4th distance() test, output doesn't match"
def test_earth_geometric_heliocentric_position():
"""Tests the geometric_heliocentric_position() method of Earth class"""
epoch = Epoch(1992, 10, 13.0)
lon, lat, r = Earth.geometric_heliocentric_position(epoch)
assert abs(round(lon.to_positive(), 6) - 19.907272) < TOL, \
"ERROR: 1st geometric_heliocentric_position() test doesn't match"
assert lat.dms_str(n_dec=3) == "-0.721''", \
"ERROR: 2nd geometric_heliocentric_position() test doesn't match"
assert abs(round(r, 8) - 0.99760852) < TOL, \
"ERROR: 3rd geometric_heliocentric_position() test doesn't match"
def test_earth_apparent_heliocentric_position():
"""Tests the apparent_heliocentric_position() method of Earth class"""
epoch = Epoch(1992, 10, 13.0)
lon, lat, r = Earth.apparent_heliocentric_position(epoch)
assert abs(round(lon.to_positive(), 6) - 19.905986) < TOL, \
"ERROR: 1st apparent_heliocentric_position() test doesn't match"
assert lat.dms_str(n_dec=3) == "-0.721''", \
"ERROR: 2nd apparent_heliocentric_position() test doesn't match"
assert abs(round(r, 8) - 0.99760852) < TOL, \
"ERROR: 3rd apparent_heliocentric_position() test doesn't match"
def test_earth_orbital_elements_mean_equinox():
"""Tests the orbital_elements_mean_equinox() method of Earth class"""
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Earth.orbital_elements_mean_equinox(epoch)
assert abs(round(l, 6) - 272.716028) < TOL, \
"ERROR: 1st orbital_elements_mean_equinox() test doesn't match"
assert abs(round(a, 8) - 1.00000102) < TOL, \
"ERROR: 2nd orbital_elements_mean_equinox() test doesn't match"
assert abs(round(e, 7) - 0.0166811) < TOL, \
"ERROR: 3rd orbital_elements_mean_equinox() test doesn't match"
assert abs(round(i, 6) - 0.0) < TOL, \
"ERROR: 4th orbital_elements_mean_equinox() test doesn't match"
assert abs(round(ome, 5) - 174.71534) < TOL, \
"ERROR: 5th orbital_elements_mean_equinox() test doesn't match"
assert abs(round(arg, 6) - (-70.651889)) < TOL, \
"ERROR: 6th orbital_elements_mean_equinox() test doesn't match"
def test_earth_orbital_elements_j2000():
"""Tests the orbital_elements_j2000() method of Earth class"""
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Earth.orbital_elements_j2000(epoch)
assert abs(round(l, 6) - 271.801199) < TOL, \
"ERROR: 1st orbital_elements_j2000() test doesn't match"
assert abs(round(a, 8) - 1.00000102) < TOL, \
"ERROR: 2nd orbital_elements_j2000() test doesn't match"
assert abs(round(e, 7) - 0.0166811) < TOL, \
"ERROR: 3rd orbital_elements_j2000() test doesn't match"
assert abs(round(i, 6) - 0.008544) < TOL, \
"ERROR: 4th orbital_elements_j2000() test doesn't match"
assert abs(round(ome, 5) - 174.71534) < TOL, \
"ERROR: 5th orbital_elements_j2000() test doesn't match"
assert abs(round(arg, 6) - (-71.566717)) < TOL, \
"ERROR: 6th orbital_elements_j2000() test doesn't match"
def test_earth_perihelion_aphelion():
"""Tests the perihelion_aphelion() method of Earth class"""
epoch = Epoch(2003, 3, 10.0)
e = Earth.perihelion_aphelion(epoch)
y, m, d, h, mi, s = e.get_full_date()
assert abs(y - 2003) < TOL, \
"ERROR: 1st perihelion_aphelion() test doesn't match"
assert abs(m - 1) < TOL, \
"ERROR: 2nd perihelion_aphelion() test doesn't match"
assert abs(d - 4) < TOL, \
"ERROR: 3rd perihelion_aphelion() test doesn't match"
assert abs(h - 5) < TOL, \
"ERROR: 4th perihelion_aphelion() test doesn't match"
assert abs(mi - 1) < TOL, \
"ERROR: 5th perihelion_aphelion() test doesn't match"
epoch = Epoch(2009, 5, 1.0)
e = Earth.perihelion_aphelion(epoch, perihelion=False)
y, m, d, h, mi, s = e.get_full_date()
assert abs(y - 2009) < TOL, \
"ERROR: 6th perihelion_aphelion() test doesn't match"
assert abs(m - 7) < TOL, \
"ERROR: 7th perihelion_aphelion() test doesn't match"
assert abs(d - 4) < TOL, \
"ERROR: 8th perihelion_aphelion() test doesn't match"
assert abs(h - 1) < TOL, \
"ERROR: 9th perihelion_aphelion() test doesn't match"
assert abs(mi - 41) < TOL, \
"ERROR: 10th perihelion_aphelion() test doesn't match"
def test_earth_passage_nodes():
"""Tests the passage_nodes() method of Earth class"""
epoch = Epoch(2019, 1, 1)
time, r = Earth.passage_nodes(epoch)
y, m, d = time.get_date()
d = round(d, 1)
r = round(r, 4)
assert abs(y - 2019) < TOL, \
"ERROR: 1st passage_nodes() test doesn't match"
assert abs(m - 3) < TOL, \
"ERROR: 2nd passage_nodes() test doesn't match"
assert abs(d - 15.0) < TOL, \
"ERROR: 3rd passage_nodes() test doesn't match"
assert abs(r - 0.9945) < TOL, \
"ERROR: 4th passage_nodes() test doesn't match"
def test_earth_parallax_correction():
"""Tests the parallax_correction() method of Earth class"""
right_ascension = Angle(22, 38, 7.25, ra=True)
declination = Angle(-15, 46, 15.9)
latitude = Angle(33, 21, 22)
distance = 0.37276
hour_angle = Angle(288.7958)
top_ra, top_dec = Earth.parallax_correction(right_ascension, declination,
latitude, distance, hour_angle)
assert top_ra.ra_str(n_dec=2) == "22h 38' 8.54''", \
"ERROR: 1st parallax_correction() test doesn't match"
assert top_dec.dms_str(n_dec=1) == "-15d 46' 30.0''", \
"ERROR: 2nd parallax_correction() test doesn't match"
def test_earth_parallax_ecliptical():
"""Tests the parallax_ecliptical() method of Earth class"""
longitude = Angle(181, 46, 22.5)
latitude = Angle(2, 17, 26.2)
semidiameter = Angle(0, 16, 15.5)
obs_lat = Angle(50, 5, 7.8)
obliquity = Angle(23, 28, 0.8)
sidereal_time = Angle(209, 46, 7.9)
distance = 0.0024650163
topo_lon, topo_lat, topo_diam = \
Earth.parallax_ecliptical(longitude, latitude, semidiameter, obs_lat,
obliquity, sidereal_time, distance)
assert topo_lon.dms_str(n_dec=1) == "181d 48' 5.0''", \
"ERROR: 1st parallax_ecliptical() test doesn't match"
assert topo_lat.dms_str(n_dec=1) == "1d 29' 7.1''", \
"ERROR: 2nd parallax_ecliptical() test doesn't match"
assert topo_diam.dms_str(n_dec=1) == "16' 25.5''", \
"ERROR: 3rd parallax_ecliptical() test doesn't match"
pymeeus-0.3.6/tests/test_epoch.py 0000664 0000000 0000000 00000034460 13555455377 0017112 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from pymeeus.base import TOL
from pymeeus.Epoch import Epoch
from pymeeus.Angle import Angle
# Epoch class
def test_epoch_constructor():
"""Tests the constructor of Epoch class"""
a = Epoch(1987, 6, 19.5)
assert abs(a._jde - 2446966.0) < TOL, \
"ERROR: 1st constructor test, JDE value doesn't match"
a = Epoch(1988, 6, 19.5)
assert abs(a._jde - 2447332.0) < TOL, \
"ERROR: 2nd constructor test, JDE value doesn't match"
a = Epoch(1600, 'jan', 1.0)
assert abs(a._jde - 2305447.5) < TOL, \
"ERROR: 3rd constructor test, JDE value doesn't match"
a = Epoch(-123, 'DECEMBER', 31.0)
assert abs(a._jde - 1676496.5) < TOL, \
"ERROR: 4th constructor test, JDE value doesn't match"
a = Epoch(-4712, 1, 1.5)
assert abs(a._jde - 0.0) < TOL, \
"ERROR: 5th constructor test, JDE value doesn't match"
def test_epoch_is_julian():
"""Tests the is_julian() static method of Epoch class"""
assert Epoch.is_julian(1582, 10, 4.99), \
"ERROR: 1st is_julian() test, output doesn't match"
assert not Epoch.is_julian(1582, 10, 5.0), \
"ERROR: 2nd is_julian() test, output doesn't match"
assert not Epoch.is_julian(2018, 11, 6.0), \
"ERROR: 3rd is_julian() test, output doesn't match"
assert Epoch.is_julian(-2000, 3, 16.0), \
"ERROR: 4th is_julian() test, output doesn't match"
def test_epoch_get_month():
"""Test the get_month() static method of Epoch class"""
assert Epoch.get_month(10) == 10, \
"ERROR: 1st get_month() test, output doesn't match"
assert Epoch.get_month('Feb') == 2, \
"ERROR: 2nd get_month() test, output doesn't match"
assert Epoch.get_month('MAR') == 3, \
"ERROR: 3rd get_month() test, output doesn't match"
assert Epoch.get_month('January') == 1, \
"ERROR: 4th get_month() test, output doesn't match"
assert Epoch.get_month('DECEMBER') == 12, \
"ERROR: 5th get_month() test, output doesn't match"
assert Epoch.get_month('september') == 9, \
"ERROR: 6th get_month() test, output doesn't match"
assert Epoch.get_month('may') == 5, \
"ERROR: 7th get_month() test, output doesn't match"
assert Epoch.get_month(6, as_string=True) == 'June', \
"ERROR: 8th get_month() test, output doesn't match"
def test_epoch_is_leap():
"""Tests the is_leap() static method of Epoch class"""
assert not Epoch.is_leap(1582), \
"ERROR: 1st is_leap() test, output doesn't match"
assert Epoch.is_leap(1580), \
"ERROR: 2nd is_leap() test, output doesn't match"
assert not Epoch.is_leap(2018), \
"ERROR: 3rd is_leap() test, output doesn't match"
assert Epoch.is_leap(2000), \
"ERROR: 4th is_leap() test, output doesn't match"
assert Epoch.is_leap(-2000), \
"ERROR: 5th is_leap() test, output doesn't match"
def test_epoch_get_doy():
"""Tests the get_doy() static method of Epoch class"""
assert Epoch.get_doy(1978, 11, 14) == 318, \
"ERROR: 1st get_doy() test, output doesn't match"
assert Epoch.get_doy(2012, 3, 3.1) == 63.1, \
"ERROR: 2nd get_doy() test, output doesn't match"
assert Epoch.get_doy(-400, 2, 29.9) == 60.9, \
"ERROR: 3rd get_doy() test, output doesn't match"
def test_epoch_doy2date():
"""Tests the doy2date() static method of Epoch class"""
assert Epoch.doy2date(2017, 32) == (2017, 2, 1), \
"ERROR: 1st doy2date() test, output doesn't match"
assert Epoch.doy2date(-3, 60) == (-3, 3, 1.0), \
"ERROR: 2nd doy2date() test, output doesn't match"
assert Epoch.doy2date(-4, 60) == (-4, 2, 29.0), \
"ERROR: 3rd doy2date() test, output doesn't match"
t = Epoch.doy2date(2017, 365.7)
assert t[0] == 2017 and t[1] == 12 and abs(t[2] - 31.7) < TOL, \
"ERROR: 4th doy2date() test, output doesn't match"
t = Epoch.doy2date(2012, 63.1)
assert t[0] == 2012 and t[1] == 3 and abs(t[2] - 3.1) < TOL, \
"ERROR: 5th doy2date() test, output doesn't match"
t = Epoch.doy2date(-4, 60)
assert t[0] == -4 and t[1] == 2 and abs(t[2] - 29) < TOL, \
"ERROR: 6th doy2date() test, output doesn't match"
def test_epoch_leap_seconds():
"""Tests the leap_seconds() static method of Epoch class"""
assert Epoch.leap_seconds(1983, 6) == 11, \
"ERROR: 1st leap_seconds() test, output doesn't match"
assert Epoch.leap_seconds(1983, 7) == 12, \
"ERROR: 2nd leap_seconds() test, output doesn't match"
assert Epoch.leap_seconds(2016, 11) == 26, \
"ERROR: 3rd leap_seconds() test, output doesn't match"
assert Epoch.leap_seconds(2017, 1) == 27, \
"ERROR: 4th leap_seconds() test, output doesn't match"
assert Epoch.leap_seconds(1972, 6) == 0, \
"ERROR: 5th leap_seconds() test, output doesn't match"
assert Epoch.leap_seconds(1972, 7) == 1, \
"ERROR: 6th leap_seconds() test, output doesn't match"
assert Epoch.leap_seconds(2018, 7) == 27, \
"ERROR: 7th leap_seconds() test, output doesn't match"
def test_epoch_easter():
"""Tests the easter() method of Epoch class"""
t = Epoch.easter(2000)
assert t[0] == 4 and t[1] == 23, \
"ERROR: 1st easter() test, output doesn't match"
t = Epoch.easter(1954)
assert t[0] == 4 and t[1] == 18, \
"ERROR: 2nd easter() test, output doesn't match"
t = Epoch.easter(179)
assert t[0] == 4 and t[1] == 12, \
"ERROR: 3rd easter() test, output doesn't match"
t = Epoch.easter(1243)
assert t[0] == 4 and t[1] == 12, \
"ERROR: 4th easter() test, output doesn't match"
t = Epoch.easter(1991)
assert t[0] == 3 and t[1] == 31, \
"ERROR: 5th easter() test, output doesn't match"
t = Epoch.easter(1993)
assert t[0] == 4 and t[1] == 11, \
"ERROR: 6th easter() test, output doesn't match"
def test_epoch_jewish_pesach():
"""Tests the jewish_pesach() method of Epoch class"""
t = Epoch.jewish_pesach(1990)
assert t[0] == 4 and t[1] == 10, \
"ERROR: 1st jewish_pesach() test, output doesn't match"
def test_epoch_moslem2gregorian():
"""Tests the moslem2gregorian() method of Epoch class"""
t = Epoch.moslem2gregorian(1421, 1, 1)
assert t[0] == 2000 and t[1] == 4 and t[2] == 6, \
"ERROR: 1st moslem2gregorian() test, output doesn't match"
def test_epoch_gregorian2moslem():
"""Tests the gregorian2moslem() method of Epoch class"""
t = Epoch.gregorian2moslem(1991, 8, 13)
assert t[0] == 1412 and t[1] == 2 and t[2] == 2, \
"ERROR: 1st gregorian2moslem() test, output doesn't match"
def test_epoch_get_date():
"""Tests the get_date() method of Epoch class"""
e = Epoch(2436116.31)
t = e.get_date()
assert t[0] == 1957 and t[1] == 10 and abs(t[2] - 4.81) < TOL, \
"ERROR: 1st get_date() test, output doesn't match"
e = Epoch(1842713.0)
t = e.get_date()
assert t[0] == 333 and t[1] == 1 and abs(t[2] - 27.5) < TOL, \
"ERROR: 2nd get_date() test, output doesn't match"
e = Epoch(1507900.13)
t = e.get_date()
assert t[0] == -584 and t[1] == 5 and abs(round(t[2], 2) - 28.63) < TOL, \
"ERROR: 3rd get_date() test, output doesn't match"
def test_epoch_tt2ut():
"""Tests the tt2ut() method of Epoch class"""
assert abs(round(Epoch.tt2ut(1642, 1), 1) - 62.1) < TOL, \
"ERROR: 1st tt2ut() test, output doesn't match"
assert abs(round(Epoch.tt2ut(1680, 1), 1) - 15.3) < TOL, \
"ERROR: 2nd tt2ut() test, output doesn't match"
assert abs(round(Epoch.tt2ut(1774, 1), 1) - 16.7) < TOL, \
"ERROR: 3rd tt2ut() test, output doesn't match"
assert abs(round(Epoch.tt2ut(1890, 1), 1) - (-6.1)) < TOL, \
"ERROR: 4th tt2ut() test, output doesn't match"
assert abs(round(Epoch.tt2ut(1928, 2), 1) - 24.2) < TOL, \
"ERROR: 5th tt2ut() test, output doesn't match"
assert abs(round(Epoch.tt2ut(2015, 7), 1) - 69.3) < TOL, \
"ERROR: 6th tt2ut() test, output doesn't match"
def test_epoch_dow():
"""Tests the dow() method of Epoch class"""
e = Epoch(1954, 'June', 30)
assert e.dow() == 3, "ERROR: 1st dow() test, output doesn't match"
e = Epoch(2018, 'Feb', 14.9)
assert e.dow(as_string=True) == 'Wednesday', \
"ERROR: 2nd dow() test, output doesn't match"
e = Epoch(2018, 'Feb', 15)
assert e.dow(as_string=True) == 'Thursday', \
"ERROR: 3rd dow() test, output doesn't match"
e = Epoch(2018, 'Jul', 15.9)
assert e.dow(as_string=True) == 'Sunday', \
"ERROR: 4th dow() test, output doesn't match"
def test_epoch_mean_sidereal_time():
"""Tests the mean_sidereal_time() method of Epoch class"""
e = Epoch(1987, 4, 10)
assert abs(round(e.mean_sidereal_time(), 9) - 0.549147764) < TOL, \
"ERROR: 1st mean_sidereal_time() test, output doesn't match"
e = Epoch(1987, 4, 10, 19, 21, 0.0)
assert abs(round(e.mean_sidereal_time(), 9) - 0.357605204) < TOL, \
"ERROR: 2nd mean_sidereal_time() test, output doesn't match"
def test_epoch_apparent_sidereal_time():
"""Tests the apparent_sidereal_time() method of Epoch class"""
e = Epoch(1987, 4, 10)
assert abs(round(e.apparent_sidereal_time(23.44357, (-3.788)/3600.0), 8) -
0.54914508) < TOL, \
"ERROR: 1st apparent_sidereal_time() test, output doesn't match"
def test_epoch_mjd():
"""Tests the mjd() method of Epoch class"""
e = Epoch(1858, 'NOVEMBER', 17)
assert e.mjd() == 0.0, "ERROR: 1st mjd() test, output doesn't match"
def test_epoch_jde():
"""Tests the jde() method of Epoch class"""
e = Epoch(-1000, 2, 29.0)
assert e.jde() == 1355866.5, "ERROR: 1st jde() test, output doesn't match"
def test_epoch_call():
"""Tests the __call__() method of Epoch class"""
e = Epoch(-122, 1, 1.0)
assert e() == 1676497.5, "ERROR: 1st __call__() test, output doesn't match"
def test_epoch_add():
"""Tests the addition between Epochs"""
a = Epoch(1991, 7, 11)
b = a + 10000
y, m, d = b.get_date()
assert y == 2018 and m == 11 and abs(round(d, 2) - 26.0) < TOL, \
"ERROR: 1st __add__() test, output doesn't match"
def test_epoch_sub():
"""Tests the subtraction between Epochs"""
a = Epoch(1986, 2, 9.0)
b = Epoch(1910, 4, 20.0)
c = a - b
assert abs(round(c, 1) - 27689.0) < TOL, \
"ERROR: 1st __sub__() test, output doesn't match"
a = Epoch(2003, 12, 31.0)
b = a - 365.5
y, m, d = b.get_date()
assert y == 2002 and m == 12 and abs(round(d, 1) - 30.5) < TOL, \
"ERROR: 2nd __sub__() test, output doesn't match"
def test_epoch_iadd():
"""Tests the accumulative addition in Epochs"""
a = Epoch(2003, 12, 31.0)
a += 32.5
y, m, d = a.get_date()
assert y == 2004 and m == 2 and abs(round(d, 1) - 1.5) < TOL, \
"ERROR: 1st __iadd__() test, output doesn't match"
def test_epoch_isub():
"""Tests the accumulative subtraction in Epochs"""
a = Epoch(2001, 12, 31.0)
a -= 2*365
y, m, d = a.get_date()
assert y == 2000 and m == 1 and abs(round(d, 1) - 1.0) < TOL, \
"ERROR: 1st __isub__() test, output doesn't match"
def test_epoch_radd():
"""Tests the addition with Epochs by the right"""
a = Epoch(2004, 2, 27.8)
b = 2.2 + a
y, m, d = b.get_date()
assert y == 2004 and m == 3 and abs(round(d, 1) - 1.0) < TOL, \
"ERROR: 1st __radd__() test, output doesn't match"
def test_epoch_int():
"""Tests the 'int()' operation on Epochs"""
a = Epoch(2434923.85)
assert abs(int(a) - 2434923) < TOL, \
"ERROR: 1st __int__() test, output doesn't match"
def test_epoch_float():
"""Tests the 'float()' operation on Epochs"""
a = Epoch(2434923.85)
assert abs(float(a) - 2434923.85) < TOL, \
"ERROR: 1st __float__() test, output doesn't match"
def test_epoch_ne():
"""Tests the 'is not equal' operator of Epochs"""
# NOTE: Test 'is not equal' also tests 'is equal' operator
a = Epoch(2007, 5, 20.0)
b = Epoch(2007, 5, 20.000001)
assert a != b, "ERROR: 1st __ne__() test, output doesn't match"
a = Epoch(2004, 10, 15.7)
b = Epoch(a)
assert not a != b, "ERROR: 2nd __ne__() test, output doesn't match"
a = Epoch(2434923.85)
assert not a != 2434923.85, \
"ERROR: 3rd __ne__() test, output doesn't match"
def test_epoch_ge():
"""Tests the 'is greater or equal' operator of Epochs"""
# NOTE: Test of 'is greater or equal' also tests 'is less than' operator
a = Epoch(2004, 10, 15.71)
b = Epoch(2004, 10, 15.7)
assert a >= b, "ERROR: 1st __ge__() test, output doesn't match"
def test_epoch_le():
"""Tests the 'is less or equal' operator of Epochs"""
# NOTE: Test of 'is less or equal' also tests 'is greater than' operator
a = Epoch(2004, 10, 15.71)
b = Epoch(2004, 10, 15.7)
assert not a <= b, "ERROR: 1st __le__() test, output doesn't match"
a = Epoch(-207, 11, 5.2)
b = Epoch(-207, 11, 5.2)
assert a <= b, "ERROR: 2nd __le__() test, output doesn't match"
def test_epoch_rise_set():
"""Tests the 'rise_set()' method of Epochs"""
e = Epoch(2019, 4, 2)
latitude = Angle(48, 8, 0)
longitude = Angle(11, 34, 0)
altitude = 520.0
rising, setting = e.rise_set(latitude, longitude, altitude)
y, m, d, h, mi, s = rising.get_full_date()
assert h == 4, "ERROR: 1st rise_set() test, output doesn't match"
assert mi == 48, "ERROR: 2nd rise_set() test, output doesn't match"
y, m, d, h, mi, s = setting.get_full_date()
assert h == 17, "ERROR: 3rd rise_set() test, output doesn't match"
assert mi == 48, "ERROR: 3rd rise_set() test, output doesn't match"
pymeeus-0.3.6/tests/test_interpolation.py 0000664 0000000 0000000 00000016330 13555455377 0020677 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from math import sqrt, degrees
from pymeeus.base import TOL
from pymeeus.Angle import Angle
from pymeeus.Interpolation import Interpolation
# Declare some objects to be used later
i_ra = Interpolation()
i_angles1 = Interpolation()
i_angles2 = Interpolation()
i_sine = Interpolation()
def setup():
"""This function is used to set up the environment for the tests"""
# Set up a interpolation object which uses Right Ascension
y0 = Angle(10, 18, 48.732, ra=True)
y1 = Angle(10, 23, 22.835, ra=True)
y2 = Angle(10, 27, 57.247, ra=True)
y3 = Angle(10, 32, 31.983, ra=True)
i_ra.set([8.0, 10.0, 12.0, 14.0], [y0, y1, y2, y3])
# Set up a couple interpolation objects with Angles
y0 = Angle(0, -28, 13.4)
y1 = Angle(0, 6, 46.3)
y2 = Angle(0, 38, 23.2)
i_angles1.set([26.0, 27.0, 28.0], [y0, y1, y2])
y0 = Angle(-1, 11, 21.23)
y1 = Angle(0, -28, 12.31)
y2 = Angle(0, 16, 7.02)
y3 = Angle(1, 1, 0.13)
y4 = Angle(1, 45, 46.33)
i_angles2.set([25.0, 26.0, 27.0, 28.0, 29.0], [y0, y1, y2, y3, y4])
# Set up an interpolation object with 6 interpolation table entries, based
# on sine function
i_sine.set([29.43, 30.97, 27.69, 28.11, 31.58, 33.05],
[0.4913598528, 0.5145891926, 0.4646875083, 0.4711658342,
0.5236885653, 0.5453707057])
def teardown():
pass
# Interpolation class
def test_interpolation_constructor():
"""Tests the constructor of Interpolation class"""
i = Interpolation([5, 3, 6, 1, 2, 4, 9], [10, 6, 12, 2, 4, 8])
assert i._x == [1, 2, 3, 4, 5, 6], \
"ERROR: 1st constructor test, 'x' values don't match"
assert i._y == [2, 4, 6, 8, 10, 12], \
"ERROR: 2nd constructor test, 'y' values don't match"
j = Interpolation([3, -8, 1, 12, 2, 5, 8])
assert j._x == [0, 1, 2, 3, 4, 5, 6], \
"ERROR: 3rd constructor test, 'x' values don't match"
assert j._y == [3, -8, 1, 12, 2, 5, 8], \
"ERROR: 4th constructor test, 'y' values don't match"
k = Interpolation(3, -8, 1, 12, 2, 5, 8)
assert k._x == [1, 2, 3], \
"ERROR: 5th constructor test, 'x' values don't match"
assert k._y == [12, 5, -8], \
"ERROR: 6th constructor test, 'y' values don't match"
def test_interpolation_call():
"""Tests the __call__() method of Interpolation class"""
m = Interpolation([-1.0, 0.0, 1.0], [-2.0, 3.0, 2.0])
assert abs(m(-0.8) - (-0.52)) < TOL, \
"ERROR: In 1st __call__() test, output value doesn't match"
assert abs(m(0.7) - 2.93) < TOL, \
"ERROR: In 2nd __call__() test, output value doesn't match"
assert abs(m(-1.0) - (-2.0)) < TOL, \
"ERROR: In 3rd __call__() test, output value doesn't match"
m = Interpolation([-3.0, 0.0, 2.5], [12.0, -3.0, -1.75])
assert abs(m(-2.0) - 5.0) < TOL, \
"ERROR: In 4th __call__() test, output value doesn't match"
assert abs(m(2.5) - (-1.75)) < TOL, \
"ERROR: In 5th __call__() test, output value doesn't match"
# This interpolation test uses Right Ascension
a = Angle(i_ra(11.0))
h, m, s, sign = a.ra_tuple()
assert abs(h - 10.0) < TOL and \
abs(m - 25.0) < TOL and \
abs(s - 40.0014375) < TOL and \
abs(sign == 1.0), \
"ERROR: In 6th __call__() test, output value doesn't match"
# Test with 6 interpolation table entries, based on sine function
assert abs(i_sine(30.0) - 0.5) < TOL, \
"ERROR: In 7th __call__() test, output value doesn't match"
def test_interpolation_derivative():
"""Tests the derivative() method of Interpolation class"""
m = Interpolation([-1.0, 0.0, 1.0], [-2.0, 3.0, 2.0])
assert abs(m.derivative(-1.0) - 8.0) < TOL, \
"ERROR: In 1st derivative() test, output value doesn't match"
assert abs(m.derivative(0.0) - 2.0) < TOL, \
"ERROR: In 2nd derivative() test, output value doesn't match"
assert abs(m.derivative(0.5) - (-1.0)) < TOL, \
"ERROR: In 3rd derivative() test, output value doesn't match"
m = Interpolation([-3.0, 0.0, 2.5], [12.0, -3.0, -1.75])
assert abs(m.derivative(-3.0) - (-8.0)) < TOL, \
"ERROR: In 4th derivative() test, output value doesn't match"
assert abs(m.derivative(0.0) - (-2.0)) < TOL, \
"ERROR: In 5th derivative() test, output value doesn't match"
assert abs(m.derivative(2.5) - 3.0) < TOL, \
"ERROR: In 6th derivative() test, output value doesn't match"
# Do test with an interpolation object with 6 table entries, based on sine
# We need to adjust the result because degrees were used instead of radians
res = degrees(i_sine.derivative(30.0))
assert abs(res - sqrt(3.0)/2.0) < TOL, \
"ERROR: In 7th derivative() test, output value doesn't match"
def test_interpolation_root():
"""Tests the root() method of Interpolation class"""
m = Interpolation([-1.0, 0.0, 1.0], [-2.0, 3.0, 2.0])
assert abs(m.root() - (-0.7207592200561265)) < TOL, \
"ERROR: In 1st root() test, output value doesn't match"
m = Interpolation([-3.0, 0.0, 2.5], [12.0, -3.0, -1.75])
assert abs(m.root(-2.0, 0.0) - (-1.0)) < TOL, \
"ERROR: In 2nd root() test, output value doesn't match"
assert abs(m.root() - (-1.0)) < TOL, \
"ERROR: In 3rd root() test, output value doesn't match"
m = Interpolation([-3.0, 0.0, 2.5, 3.5], [12.0, -3.0, -1.75, 2.25])
assert abs(m.root(0.0, 3.15) - 3.0) < TOL, \
"ERROR: In 4th root() test, output value doesn't match"
# Let's do some tests with Angles
assert abs(i_angles1.root() - 26.798732705) < TOL, \
"ERROR: In 5th root() test, output value doesn't match"
assert abs(i_angles2.root() - 26.6385869469) < TOL, \
"ERROR: In 6th root() test, output value doesn't match"
def test_interpolation_minmax():
"""Tests the minmax() method of Interpolation class"""
m = Interpolation([-1.0, 0.0, 1.0], [-2.0, 3.0, 2.0])
assert abs(m.minmax() - 0.3333333333) < TOL, \
"ERROR: In 1st minmax() test, output value doesn't match"
m = Interpolation([-3.0, 0.0, 2.5], [12.0, -3.0, -1.75])
assert abs(m.minmax() - 1.0) < TOL, \
"ERROR: In 2nd minmax() test, output value doesn't match"
m = Interpolation([12.0, 16.0, 20.0], [1.3814294, 1.3812213, 1.3812453])
assert abs(m.minmax() - 17.5863851788) < TOL, \
"ERROR: In 3rd minmax() test, output value doesn't match"
assert abs(m(m.minmax()) - 1.38120304666) < TOL, \
"ERROR: In 4th minmax() test, output value doesn't match"
pymeeus-0.3.6/tests/test_jupiter.py 0000664 0000000 0000000 00000017077 13555455377 0017503 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from pymeeus.base import TOL
from pymeeus.Jupiter import Jupiter
from pymeeus.Epoch import Epoch
# Jupiter class
def test_jupiter_geometric_heliocentric_position():
"""Tests the geometric_heliocentric_position() method of Jupiter class"""
epoch = Epoch(2018, 10, 27.0)
lon, lat, r = Jupiter.geometric_heliocentric_position(epoch)
assert abs(round(lon.to_positive(), 4) - 241.5873) < TOL, \
"ERROR: 1st geometric_heliocentric_position() test doesn't match"
assert abs(round(lat, 4) - 0.8216) < TOL, \
"ERROR: 2nd geometric_heliocentric_position() test doesn't match"
assert abs(round(r, 5) - 5.36848) < TOL, \
"ERROR: 3rd geometric_heliocentric_position() test doesn't match"
def test_jupiter_orbital_elements_mean_equinox():
"""Tests the orbital_elements_mean_equinox() method of Jupiter class"""
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Jupiter.orbital_elements_mean_equinox(epoch)
assert abs(round(l, 6) - 222.433723) < TOL, \
"ERROR: 1st orbital_elements_mean_equinox() test doesn't match"
assert abs(round(a, 8) - 5.20260333) < TOL, \
"ERROR: 2nd orbital_elements_mean_equinox() test doesn't match"
assert abs(round(e, 7) - 0.0486046) < TOL, \
"ERROR: 3rd orbital_elements_mean_equinox() test doesn't match"
assert abs(round(i, 6) - 1.29967) < TOL, \
"ERROR: 4th orbital_elements_mean_equinox() test doesn't match"
assert abs(round(ome, 5) - 101.13309) < TOL, \
"ERROR: 5th orbital_elements_mean_equinox() test doesn't match"
assert abs(round(arg, 6) - (-85.745532)) < TOL, \
"ERROR: 6th orbital_elements_mean_equinox() test doesn't match"
def test_jupiter_orbital_elements_j2000():
"""Tests the orbital_elements_j2000() method of Jupiter class"""
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Jupiter.orbital_elements_j2000(epoch)
assert abs(round(l, 6) - 221.518802) < TOL, \
"ERROR: 1st orbital_elements_j2000() test doesn't match"
assert abs(round(a, 8) - 5.20260333) < TOL, \
"ERROR: 2nd orbital_elements_j2000() test doesn't match"
assert abs(round(e, 7) - 0.0486046) < TOL, \
"ERROR: 3rd orbital_elements_j2000() test doesn't match"
assert abs(round(i, 6) - 1.30198) < TOL, \
"ERROR: 4th orbital_elements_j2000() test doesn't match"
assert abs(round(ome, 5) - 100.58051) < TOL, \
"ERROR: 5th orbital_elements_j2000() test doesn't match"
assert abs(round(arg, 6) - (-86.107875)) < TOL, \
"ERROR: 6th orbital_elements_j2000() test doesn't match"
def test_jupiter_geocentric_position():
"""Tests the geocentric_position() method of Jupiter class"""
epoch = Epoch(1992, 12, 20.0)
ra, dec, elon = Jupiter.geocentric_position(epoch)
assert ra.ra_str(n_dec=1) == "12h 47' 9.6''", \
"ERROR: 1st geocentric_position() test doesn't match"
assert dec.dms_str(n_dec=1) == "-3d 41' 55.3''", \
"ERROR: 2nd geocentric_position() test doesn't match"
assert elon.dms_str(n_dec=1) == "76d 2' 26.0''", \
"ERROR: 3rd geocentric_position() test doesn't match"
def test_jupiter_conjunction():
"""Tests the conjunction() method of Jupiter class"""
epoch = Epoch(1993, 10, 1.0)
conjunction = Jupiter.conjunction(epoch)
y, m, d = conjunction.get_date()
assert abs(round(y, 0) - 1993) < TOL, \
"ERROR: 1st conjunction() test doesn't match"
assert abs(round(m, 0) - 10) < TOL, \
"ERROR: 2nd conjunction() test doesn't match"
assert abs(round(d, 4) - 18.3341) < TOL, \
"ERROR: 3rd conjunction() test doesn't match"
def test_jupiter_opposition():
"""Tests the opposition() method of Jupiter class"""
epoch = Epoch(-6, 9, 1.0)
oppo = Jupiter.opposition(epoch)
y, m, d = oppo.get_date()
assert abs(round(y, 0) - (-6)) < TOL, \
"ERROR: 1st opposition() test doesn't match"
assert abs(round(m, 0) - 9) < TOL, \
"ERROR: 2nd opposition() test doesn't match"
assert abs(round(d, 4) - 15.2865) < TOL, \
"ERROR: 3rd opposition() test doesn't match"
def test_jupiter_station_longitude_1():
"""Tests the station_longitude_1() method of Jupiter class"""
epoch = Epoch(2018, 11, 1.0)
sta1 = Jupiter.station_longitude_1(epoch)
y, m, d = sta1.get_date()
assert abs(round(y, 0) - 2018) < TOL, \
"ERROR: 1st station_longitude_1() test doesn't match"
assert abs(round(m, 0) - 3) < TOL, \
"ERROR: 2nd station_longitude_1() test doesn't match"
assert abs(round(d, 4) - 9.1288) < TOL, \
"ERROR: 3rd station_longitude_1() test doesn't match"
def test_jupiter_station_longitude_2():
"""Tests the station_longitude_2() method of Jupiter class"""
epoch = Epoch(2018, 11, 1.0)
sta2 = Jupiter.station_longitude_2(epoch)
y, m, d = sta2.get_date()
assert abs(round(y, 0) - 2018) < TOL, \
"ERROR: 1st station_longitude_2() test doesn't match"
assert abs(round(m, 0) - 7) < TOL, \
"ERROR: 2nd station_longitude_2() test doesn't match"
assert abs(round(d, 4) - 10.6679) < TOL, \
"ERROR: 3rd station_longitude_2() test doesn't match"
def test_jupiter_perihelion_aphelion():
"""Tests the perihelion_aphelion() method of Jupiter class"""
epoch = Epoch(2019, 2, 23.0)
e = Jupiter.perihelion_aphelion(epoch)
y, m, d, h, mi, s = e.get_full_date()
assert abs(y - 2023) < TOL, \
"ERROR: 1st perihelion_aphelion() test doesn't match"
assert abs(m - 1) < TOL, \
"ERROR: 2nd perihelion_aphelion() test doesn't match"
assert abs(d - 20) < TOL, \
"ERROR: 3rd perihelion_aphelion() test doesn't match"
assert abs(h - 11) < TOL, \
"ERROR: 4th perihelion_aphelion() test doesn't match"
epoch = Epoch(1981, 6, 1.0)
e = Jupiter.perihelion_aphelion(epoch, perihelion=False)
y, m, d, h, mi, s = e.get_full_date()
assert abs(y - 1981) < TOL, \
"ERROR: 5th perihelion_aphelion() test doesn't match"
assert abs(m - 7) < TOL, \
"ERROR: 6th perihelion_aphelion() test doesn't match"
assert abs(d - 28) < TOL, \
"ERROR: 7th perihelion_aphelion() test doesn't match"
assert abs(h - 6) < TOL, \
"ERROR: 8th perihelion_aphelion() test doesn't match"
def test_jupiter_passage_nodes():
"""Tests the passage_nodes() method of Jupiter class"""
epoch = Epoch(2019, 1, 1)
time, r = Jupiter.passage_nodes(epoch)
y, m, d = time.get_date()
d = round(d, 1)
r = round(r, 4)
assert abs(y - 2025) < TOL, \
"ERROR: 1st passage_nodes() test doesn't match"
assert abs(m - 9) < TOL, \
"ERROR: 2nd passage_nodes() test doesn't match"
assert abs(d - 15.6) < TOL, \
"ERROR: 3rd passage_nodes() test doesn't match"
assert abs(r - 5.1729) < TOL, \
"ERROR: 4th passage_nodes() test doesn't match"
pymeeus-0.3.6/tests/test_mars.py 0000664 0000000 0000000 00000016740 13555455377 0016757 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from pymeeus.base import TOL
from pymeeus.Mars import Mars
from pymeeus.Epoch import Epoch
# Mars class
def test_mars_geometric_heliocentric_position():
"""Tests the geometric_heliocentric_position() method of Mars class"""
epoch = Epoch(2018, 10, 27.0)
lon, lat, r = Mars.geometric_heliocentric_position(epoch)
assert abs(round(lon.to_positive(), 4) - 2.0015) < TOL, \
"ERROR: 1st geometric_heliocentric_position() test doesn't match"
assert abs(round(lat, 4) - (-1.3683)) < TOL, \
"ERROR: 2nd geometric_heliocentric_position() test doesn't match"
assert abs(round(r, 5) - 1.39306) < TOL, \
"ERROR: 3rd geometric_heliocentric_position() test doesn't match"
def test_mars_orbital_elements_mean_equinox():
"""Tests the orbital_elements_mean_equinox() method of Mars class"""
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Mars.orbital_elements_mean_equinox(epoch)
assert abs(round(l, 6) - 288.855211) < TOL, \
"ERROR: 1st orbital_elements_mean_equinox() test doesn't match"
assert abs(round(a, 8) - 1.52367934) < TOL, \
"ERROR: 2nd orbital_elements_mean_equinox() test doesn't match"
assert abs(round(e, 7) - 0.0934599) < TOL, \
"ERROR: 3rd orbital_elements_mean_equinox() test doesn't match"
assert abs(round(i, 6) - 1.849338) < TOL, \
"ERROR: 4th orbital_elements_mean_equinox() test doesn't match"
assert abs(round(ome, 5) - 50.06365) < TOL, \
"ERROR: 5th orbital_elements_mean_equinox() test doesn't match"
assert abs(round(arg, 6) - 287.202108) < TOL, \
"ERROR: 6th orbital_elements_mean_equinox() test doesn't match"
def test_mars_orbital_elements_j2000():
"""Tests the orbital_elements_j2000() method of Mars class"""
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Mars.orbital_elements_j2000(epoch)
assert abs(round(l, 6) - 287.94027) < TOL, \
"ERROR: 1st orbital_elements_j2000() test doesn't match"
assert abs(round(a, 8) - 1.52367934) < TOL, \
"ERROR: 2nd orbital_elements_j2000() test doesn't match"
assert abs(round(e, 7) - 0.0934599) < TOL, \
"ERROR: 3rd orbital_elements_j2000() test doesn't match"
assert abs(round(i, 6) - 1.844381) < TOL, \
"ERROR: 4th orbital_elements_j2000() test doesn't match"
assert abs(round(ome, 5) - 49.36464) < TOL, \
"ERROR: 5th orbital_elements_j2000() test doesn't match"
assert abs(round(arg, 6) - 286.98617) < TOL, \
"ERROR: 6th orbital_elements_j2000() test doesn't match"
def test_mars_geocentric_position():
"""Tests the geocentric_position() method of Mars class"""
epoch = Epoch(1992, 12, 20.0)
ra, dec, elon = Mars.geocentric_position(epoch)
assert ra.ra_str(n_dec=1) == "7h 48' 35.4''", \
"ERROR: 1st geocentric_position() test doesn't match"
assert dec.dms_str(n_dec=1) == "24d 35' 33.9''", \
"ERROR: 2nd geocentric_position() test doesn't match"
assert elon.dms_str(n_dec=1) == "153d 35' 1.6''", \
"ERROR: 3rd geocentric_position() test doesn't match"
def test_mars_conjunction():
"""Tests the conjunction() method of Mars class"""
epoch = Epoch(1993, 10, 1.0)
conjunction = Mars.conjunction(epoch)
y, m, d = conjunction.get_date()
assert abs(round(y, 0) - 1993) < TOL, \
"ERROR: 1st conjunction() test doesn't match"
assert abs(round(m, 0) - 12) < TOL, \
"ERROR: 2nd conjunction() test doesn't match"
assert abs(round(d, 4) - 27.0898) < TOL, \
"ERROR: 3rd conjunction() test doesn't match"
def test_mars_superior_conjunction():
"""Tests the opposition() method of Mars class"""
epoch = Epoch(2729, 10, 1.0)
oppo = Mars.opposition(epoch)
y, m, d = oppo.get_date()
assert abs(round(y, 0) - 2729) < TOL, \
"ERROR: 1st opposition() test doesn't match"
assert abs(round(m, 0) - 9) < TOL, \
"ERROR: 2nd opposition() test doesn't match"
assert abs(round(d, 4) - 9.1412) < TOL, \
"ERROR: 3rd opposition() test doesn't match"
def test_mars_station_longitude_1():
"""Tests the station_longitude_1() method of Mars class"""
epoch = Epoch(1997, 3, 1.0)
sta1 = Mars.station_longitude_1(epoch)
y, m, d = sta1.get_date()
assert abs(round(y, 0) - 1997) < TOL, \
"ERROR: 1st station_longitude_1() test doesn't match"
assert abs(round(m, 0) - 2) < TOL, \
"ERROR: 2nd station_longitude_1() test doesn't match"
assert abs(round(d, 4) - 6.033) < TOL, \
"ERROR: 3rd station_longitude_1() test doesn't match"
def test_mars_station_longitude_2():
"""Tests the station_longitude_2() method of Mars class"""
epoch = Epoch(1997, 3, 1.0)
sta2 = Mars.station_longitude_2(epoch)
y, m, d = sta2.get_date()
assert abs(round(y, 0) - 1997) < TOL, \
"ERROR: 1st station_longitude_2() test doesn't match"
assert abs(round(m, 0) - 4) < TOL, \
"ERROR: 2nd station_longitude_2() test doesn't match"
assert abs(round(d, 4) - 27.7553) < TOL, \
"ERROR: 3rd station_longitude_2() test doesn't match"
def test_mars_perihelion_aphelion():
"""Tests the perihelion_aphelion() method of Mars class"""
epoch = Epoch(2019, 2, 23.0)
e = Mars.perihelion_aphelion(epoch)
y, m, d, h, mi, s = e.get_full_date()
assert abs(y - 2018) < TOL, \
"ERROR: 1st perihelion_aphelion() test doesn't match"
assert abs(m - 9) < TOL, \
"ERROR: 2nd perihelion_aphelion() test doesn't match"
assert abs(d - 16) < TOL, \
"ERROR: 3rd perihelion_aphelion() test doesn't match"
assert abs(h - 12) < TOL, \
"ERROR: 4th perihelion_aphelion() test doesn't match"
epoch = Epoch(2032, 1, 1.0)
e = Mars.perihelion_aphelion(epoch, perihelion=False)
y, m, d, h, mi, s = e.get_full_date()
assert abs(y - 2032) < TOL, \
"ERROR: 5th perihelion_aphelion() test doesn't match"
assert abs(m - 10) < TOL, \
"ERROR: 6th perihelion_aphelion() test doesn't match"
assert abs(d - 24) < TOL, \
"ERROR: 7th perihelion_aphelion() test doesn't match"
assert abs(h - 22) < TOL, \
"ERROR: 8th perihelion_aphelion() test doesn't match"
def test_mars_passage_nodes():
"""Tests the passage_nodes() method of Mars class"""
epoch = Epoch(2019, 1, 1)
time, r = Mars.passage_nodes(epoch)
y, m, d = time.get_date()
d = round(d, 1)
r = round(r, 4)
assert abs(y - 2019) < TOL, \
"ERROR: 1st passage_nodes() test doesn't match"
assert abs(m - 1) < TOL, \
"ERROR: 2nd passage_nodes() test doesn't match"
assert abs(d - 15.2) < TOL, \
"ERROR: 3rd passage_nodes() test doesn't match"
assert abs(r - 1.4709) < TOL, \
"ERROR: 4th passage_nodes() test doesn't match"
pymeeus-0.3.6/tests/test_mercury.py 0000664 0000000 0000000 00000022663 13555455377 0017504 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from pymeeus.base import TOL
from pymeeus.Mercury import Mercury
from pymeeus.Epoch import Epoch
# Mercury class
def test_mercury_geometric_heliocentric_position():
"""Tests the geometric_heliocentric_position() method of Mercury class"""
epoch = Epoch(2018, 10, 27.0)
lon, lat, r = Mercury.geometric_heliocentric_position(epoch)
assert abs(round(lon.to_positive(), 4) - 287.4887) < TOL, \
"ERROR: 1st geometric_heliocentric_position() test doesn't match"
assert abs(round(lat, 4) - (-6.0086)) < TOL, \
"ERROR: 2nd geometric_heliocentric_position() test doesn't match"
assert abs(round(r, 5) - 0.45113) < TOL, \
"ERROR: 3rd geometric_heliocentric_position() test doesn't match"
def test_mercury_orbital_elements_mean_equinox():
"""Tests the orbital_elements_mean_equinox() method of Mercury class"""
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Mercury.orbital_elements_mean_equinox(epoch)
assert abs(round(l, 6) - 203.494701) < TOL, \
"ERROR: 1st orbital_elements_mean_equinox() test doesn't match"
assert abs(round(a, 8) - 0.38709831) < TOL, \
"ERROR: 2nd orbital_elements_mean_equinox() test doesn't match"
assert abs(round(e, 7) - 0.2056451) < TOL, \
"ERROR: 3rd orbital_elements_mean_equinox() test doesn't match"
assert abs(round(i, 6) - 7.006171) < TOL, \
"ERROR: 4th orbital_elements_mean_equinox() test doesn't match"
assert abs(round(ome, 5) - 49.10765) < TOL, \
"ERROR: 5th orbital_elements_mean_equinox() test doesn't match"
assert abs(round(arg, 6) - 29.367732) < TOL, \
"ERROR: 6th orbital_elements_mean_equinox() test doesn't match"
def test_mercury_orbital_elements_j2000():
"""Tests the orbital_elements_j2000() method of Mercury class"""
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Mercury.orbital_elements_j2000(epoch)
assert abs(round(l, 6) - 202.579453) < TOL, \
"ERROR: 1st orbital_elements_j2000() test doesn't match"
assert abs(round(a, 8) - 0.38709831) < TOL, \
"ERROR: 2nd orbital_elements_j2000() test doesn't match"
assert abs(round(e, 7) - 0.2056451) < TOL, \
"ERROR: 3rd orbital_elements_j2000() test doesn't match"
assert abs(round(i, 6) - 7.001089) < TOL, \
"ERROR: 4th orbital_elements_j2000() test doesn't match"
assert abs(round(ome, 5) - 48.24873) < TOL, \
"ERROR: 5th orbital_elements_j2000() test doesn't match"
assert abs(round(arg, 6) - 29.311401) < TOL, \
"ERROR: 6th orbital_elements_j2000() test doesn't match"
def test_mercury_geocentric_position():
"""Tests the geocentric_position() method of Mercury class"""
epoch = Epoch(1992, 12, 20.0)
ra, dec, elon = Mercury.geocentric_position(epoch)
assert ra.ra_str(n_dec=1) == "16h 33' 59.3''", \
"ERROR: 1st geocentric_position() test doesn't match"
assert dec.dms_str(n_dec=1) == "-20d 53' 31.6''", \
"ERROR: 2nd geocentric_position() test doesn't match"
assert elon.dms_str(n_dec=1) == "18d 24' 29.8''", \
"ERROR: 3rd geocentric_position() test doesn't match"
def test_mercury_inferior_conjunction():
"""Tests the inferior_conjunction() method of Mercury class"""
epoch = Epoch(1993, 10, 1.0)
conjunction = Mercury.inferior_conjunction(epoch)
y, m, d = conjunction.get_date()
assert abs(round(y, 0) - 1993) < TOL, \
"ERROR: 1st inferior_conjunction() test doesn't match"
assert abs(round(m, 0) - 11) < TOL, \
"ERROR: 2nd inferior_conjunction() test doesn't match"
assert abs(round(d, 4) - 6.1449) < TOL, \
"ERROR: 3rd inferior_conjunction() test doesn't match"
epoch = Epoch(1631, 10, 1.0)
conjunction = Mercury.inferior_conjunction(epoch)
y, m, d = conjunction.get_date()
assert abs(round(y, 0) - 1631) < TOL, \
"ERROR: 4th inferior_conjunction() test doesn't match"
assert abs(round(m, 0) - 11) < TOL, \
"ERROR: 5th inferior_conjunction() test doesn't match"
assert abs(round(d, 3) - 7.306) < TOL, \
"ERROR: 6th inferior_conjunction() test doesn't match"
def test_mercury_superior_conjunction():
"""Tests the superior_conjunction() method of Mercury class"""
epoch = Epoch(1993, 10, 1.0)
conjunction = Mercury.superior_conjunction(epoch)
y, m, d = conjunction.get_date()
assert abs(round(y, 0) - 1993) < TOL, \
"ERROR: 1st superior_conjunction() test doesn't match"
assert abs(round(m, 0) - 8) < TOL, \
"ERROR: 2nd superior_conjunction() test doesn't match"
assert abs(round(d, 4) - 29.3301) < TOL, \
"ERROR: 3rd superior_conjunction() test doesn't match"
def test_mercury_western_elongation():
"""Tests the western_elongation() method of Mercury class"""
epoch = Epoch(1993, 11, 1.0)
time, elongation = Mercury.western_elongation(epoch)
y, m, d = time.get_date()
assert abs(round(y, 0) - 1993) < TOL, \
"ERROR: 1st western_elongation() test doesn't match"
assert abs(round(m, 0) - 11) < TOL, \
"ERROR: 2nd western_elongation() test doesn't match"
assert abs(round(d, 4) - 22.6386) < TOL, \
"ERROR: 3rd western_elongation() test doesn't match"
assert abs(round(elongation, 4) - 19.7506) < TOL, \
"ERROR: 4th western_elongation() test doesn't match"
def test_mercury_eastern_elongation():
"""Tests the eastern_elongation() method of Mercury class"""
epoch = Epoch(1990, 8, 1.0)
time, elongation = Mercury.eastern_elongation(epoch)
y, m, d = time.get_date()
assert abs(round(y, 0) - 1990) < TOL, \
"ERROR: 1st eastern_elongation() test doesn't match"
assert abs(round(m, 0) - 8) < TOL, \
"ERROR: 2nd eastern_elongation() test doesn't match"
assert abs(round(d, 4) - 11.8514) < TOL, \
"ERROR: 3rd eastern_elongation() test doesn't match"
assert abs(round(elongation, 4) - 27.4201) < TOL, \
"ERROR: 4th eastern_elongation() test doesn't match"
def test_mercury_station_longitude_1():
"""Tests the station_longitude_1() method of Mercury class"""
epoch = Epoch(1993, 10, 1.0)
sta1 = Mercury.station_longitude_1(epoch)
y, m, d = sta1.get_date()
assert abs(round(y, 0) - 1993) < TOL, \
"ERROR: 1st station_longitude_1() test doesn't match"
assert abs(round(m, 0) - 10) < TOL, \
"ERROR: 2nd station_longitude_1() test doesn't match"
assert abs(round(d, 4) - 25.9358) < TOL, \
"ERROR: 3rd station_longitude_1() test doesn't match"
def test_mercury_station_longitude_2():
"""Tests the station_longitude_2() method of Mercury class"""
epoch = Epoch(1993, 10, 1.0)
sta2 = Mercury.station_longitude_2(epoch)
y, m, d = sta2.get_date()
assert abs(round(y, 0) - 1993) < TOL, \
"ERROR: 1st station_longitude_2() test doesn't match"
assert abs(round(m, 0) - 11) < TOL, \
"ERROR: 2nd station_longitude_2() test doesn't match"
assert abs(round(d, 4) - 15.0724) < TOL, \
"ERROR: 3rd station_longitude_2() test doesn't match"
def test_mercury_perihelion_aphelion():
"""Tests the perihelion_aphelion() method of Mercury class"""
epoch = Epoch(2000, 1, 1.0)
e = Mercury.perihelion_aphelion(epoch)
y, m, d, h, mi, s = e.get_full_date()
assert abs(y - 2000) < TOL, \
"ERROR: 1st perihelion_aphelion() test doesn't match"
assert abs(m - 2) < TOL, \
"ERROR: 2nd perihelion_aphelion() test doesn't match"
assert abs(d - 15) < TOL, \
"ERROR: 3rd perihelion_aphelion() test doesn't match"
assert abs(h - 18) < TOL, \
"ERROR: 4th perihelion_aphelion() test doesn't match"
epoch = Epoch(2000, 3, 1.0)
e = Mercury.perihelion_aphelion(epoch, perihelion=False)
y, m, d, h, mi, s = e.get_full_date()
assert abs(y - 2000) < TOL, \
"ERROR: 5th perihelion_aphelion() test doesn't match"
assert abs(m - 3) < TOL, \
"ERROR: 6th perihelion_aphelion() test doesn't match"
assert abs(d - 30) < TOL, \
"ERROR: 7th perihelion_aphelion() test doesn't match"
assert abs(h - 17) < TOL, \
"ERROR: 8th perihelion_aphelion() test doesn't match"
def test_mercury_passage_nodes():
"""Tests the passage_nodes() method of Mercury class"""
epoch = Epoch(2019, 1, 1)
time, r = Mercury.passage_nodes(epoch)
y, m, d = time.get_date()
d = round(d, 1)
r = round(r, 4)
assert abs(y - 2018) < TOL, \
"ERROR: 1st passage_nodes() test doesn't match"
assert abs(m - 11) < TOL, \
"ERROR: 2nd passage_nodes() test doesn't match"
assert abs(d - 24.7) < TOL, \
"ERROR: 3rd passage_nodes() test doesn't match"
assert abs(r - 0.3143) < TOL, \
"ERROR: 4th passage_nodes() test doesn't match"
pymeeus-0.3.6/tests/test_minor.py 0000664 0000000 0000000 00000004506 13555455377 0017136 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from pymeeus.base import TOL
from pymeeus.Angle import Angle
from pymeeus.Minor import Minor
from pymeeus.Epoch import Epoch
# Minor class
def test_minor_geocentric_position():
"""Tests the geocentric_position() method of Minor class"""
a = 2.2091404
e = 0.8502196
q = a * (1.0 - e)
i = Angle(11.94524)
omega = Angle(334.75006)
w = Angle(186.23352)
t = Epoch(1990, 10, 28.54502)
epoch = Epoch(1990, 10, 6.0)
minor = Minor(q, e, i, omega, w, t)
ra, dec, elong = minor.geocentric_position(epoch)
assert ra.ra_str(n_dec=1) == "10h 34' 13.7''", \
"ERROR: 1st geocentric_position() test doesn't match"
assert dec.dms_str(n_dec=0) == "19d 9' 32.0''", \
"ERROR: 2nd geocentric_position() test doesn't match"
assert abs(round(elong, 2) - 40.51) < TOL, \
"ERROR: 3rd geocentric_position() test doesn't match"
def test_minor_heliocentric_ecliptical_position():
"""Tests the heliocentric_ecliptical_position() method of Minor class"""
a = 2.2091404
e = 0.8502196
q = a * (1.0 - e)
i = Angle(11.94524)
omega = Angle(334.75006)
w = Angle(186.23352)
t = Epoch(1990, 10, 28.54502)
epoch = Epoch(1990, 10, 6.0)
minor = Minor(q, e, i, omega, w, t)
lon, lat = minor.heliocentric_ecliptical_position(epoch)
assert lon.dms_str(n_dec=1) == "66d 51' 57.8''", \
"ERROR: 1st heliocentric_ecliptical_position() test doesn't match"
assert lat.dms_str(n_dec=1) == "11d 56' 14.4''", \
"ERROR: 2nd heliocentric_ecliptical_position() test doesn't match"
pymeeus-0.3.6/tests/test_neptune.py 0000664 0000000 0000000 00000011521 13555455377 0017463 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from pymeeus.base import TOL
from pymeeus.Neptune import Neptune
from pymeeus.Epoch import Epoch
# Neptune class
def test_neptune_geometric_heliocentric_position():
"""Tests the geometric_heliocentric_position() method of Neptune class"""
epoch = Epoch(2018, 10, 27.0)
lon, lat, r = Neptune.geometric_heliocentric_position(epoch)
assert abs(round(lon.to_positive(), 4) - 345.3776) < TOL, \
"ERROR: 1st geometric_heliocentric_position() test doesn't match"
assert abs(round(lat, 4) - (-0.9735)) < TOL, \
"ERROR: 2nd geometric_heliocentric_position() test doesn't match"
assert abs(round(r, 5) - 29.93966) < TOL, \
"ERROR: 3rd geometric_heliocentric_position() test doesn't match"
def test_neptune_orbital_elements_mean_equinox():
"""Tests the orbital_elements_mean_equinox() method of Neptune class"""
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Neptune.orbital_elements_mean_equinox(epoch)
assert abs(round(l, 6) - 88.321947) < TOL, \
"ERROR: 1st orbital_elements_mean_equinox() test doesn't match"
assert abs(round(a, 8) - 30.11038676) < TOL, \
"ERROR: 2nd orbital_elements_mean_equinox() test doesn't match"
assert abs(round(e, 7) - 0.0094597) < TOL, \
"ERROR: 3rd orbital_elements_mean_equinox() test doesn't match"
assert abs(round(i, 6) - 1.763855) < TOL, \
"ERROR: 4th orbital_elements_mean_equinox() test doesn't match"
assert abs(round(ome, 5) - 132.46986) < TOL, \
"ERROR: 5th orbital_elements_mean_equinox() test doesn't match"
assert abs(round(arg, 6) - (-83.415521)) < TOL, \
"ERROR: 6th orbital_elements_mean_equinox() test doesn't match"
def test_neptune_orbital_elements_j2000():
"""Tests the orbital_elements_j2000() method of Neptune class"""
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Neptune.orbital_elements_j2000(epoch)
assert abs(round(l, 6) - 87.407029) < TOL, \
"ERROR: 1st orbital_elements_j2000() test doesn't match"
assert abs(round(a, 8) - 30.11038676) < TOL, \
"ERROR: 2nd orbital_elements_j2000() test doesn't match"
assert abs(round(e, 7) - 0.0094597) < TOL, \
"ERROR: 3rd orbital_elements_j2000() test doesn't match"
assert abs(round(i, 6) - 1.770101) < TOL, \
"ERROR: 4th orbital_elements_j2000() test doesn't match"
assert abs(round(ome, 5) - 131.74402) < TOL, \
"ERROR: 5th orbital_elements_j2000() test doesn't match"
assert abs(round(arg, 6) - (-83.6046)) < TOL, \
"ERROR: 6th orbital_elements_j2000() test doesn't match"
def test_neptune_geocentric_position():
"""Tests the geocentric_position() method of Neptune class"""
epoch = Epoch(1992, 12, 20.0)
ra, dec, elon = Neptune.geocentric_position(epoch)
assert ra.ra_str(n_dec=1) == "19h 17' 14.5''", \
"ERROR: 1st geocentric_position() test doesn't match"
assert dec.dms_str(n_dec=1) == "-21d 34' 15.1''", \
"ERROR: 2nd geocentric_position() test doesn't match"
assert elon.dms_str(n_dec=1) == "19d 44' 59.6''", \
"ERROR: 3rd geocentric_position() test doesn't match"
def test_neptune_conjunction():
"""Tests the conjunction() method of Neptune class"""
epoch = Epoch(1993, 10, 1.0)
conjunction = Neptune.conjunction(epoch)
y, m, d = conjunction.get_date()
assert abs(round(y, 0) - 1994) < TOL, \
"ERROR: 1st conjunction() test doesn't match"
assert abs(round(m, 0) - 1) < TOL, \
"ERROR: 2nd conjunction() test doesn't match"
assert abs(round(d, 4) - 11.3057) < TOL, \
"ERROR: 3rd conjunction() test doesn't match"
def test_neptune_opposition():
"""Tests the opposition() method of Neptune class"""
epoch = Epoch(1846, 8, 1)
oppo = Neptune.opposition(epoch)
y, m, d = oppo.get_date()
assert abs(round(y, 0) - 1846) < TOL, \
"ERROR: 1st opposition() test doesn't match"
assert abs(round(m, 0) - 8) < TOL, \
"ERROR: 2nd opposition() test doesn't match"
assert abs(round(d, 4) - 20.1623) < TOL, \
"ERROR: 3rd opposition() test doesn't match"
pymeeus-0.3.6/tests/test_pluto.py 0000664 0000000 0000000 00000003614 13555455377 0017154 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from pymeeus.base import TOL
from pymeeus.Pluto import Pluto
from pymeeus.Epoch import Epoch
# Pluto class
def test_pluto_geometric_heliocentric_position():
"""Tests the geometric_heliocentric_position() method of Pluto class"""
epoch = Epoch(1992, 10, 13.0)
lon, lat, r = Pluto.geometric_heliocentric_position(epoch)
assert abs(round(lon.to_positive(), 5) - 232.74071) < TOL, \
"ERROR: 1st geometric_heliocentric_position() test doesn't match"
assert abs(round(lat, 5) - 14.58782) < TOL, \
"ERROR: 2nd geometric_heliocentric_position() test doesn't match"
assert abs(round(r, 6) - 29.711111) < TOL, \
"ERROR: 3rd geometric_heliocentric_position() test doesn't match"
def test_pluto_geocentric_position():
"""Tests the geocentric_position() method of Pluto class"""
epoch = Epoch(1992, 10, 13.0)
ra, dec = Pluto.geocentric_position(epoch)
assert ra.ra_str(n_dec=1) == "15h 31' 43.7''", \
"ERROR: 1st geocentric_position() test doesn't match"
assert dec.dms_str(n_dec=0) == "-4d 27' 29.0''", \
"ERROR: 2nd geocentric_position() test doesn't match"
pymeeus-0.3.6/tests/test_saturn.py 0000664 0000000 0000000 00000016544 13555455377 0017333 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from pymeeus.base import TOL
from pymeeus.Saturn import Saturn
from pymeeus.Epoch import Epoch
# Saturn class
def test_saturn_geometric_heliocentric_position():
"""Tests the geometric_heliocentric_position() method of Saturn class"""
epoch = Epoch(2018, 10, 27.0)
lon, lat, r = Saturn.geometric_heliocentric_position(epoch)
assert abs(round(lon.to_positive(), 4) - 279.5108) < TOL, \
"ERROR: 1st geometric_heliocentric_position() test doesn't match"
assert abs(round(lat, 4) - 0.6141) < TOL, \
"ERROR: 2nd geometric_heliocentric_position() test doesn't match"
assert abs(round(r, 5) - 10.06266) < TOL, \
"ERROR: 3rd geometric_heliocentric_position() test doesn't match"
def test_saturn_orbital_elements_mean_equinox():
"""Tests the orbital_elements_mean_equinox() method of Saturn class"""
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Saturn.orbital_elements_mean_equinox(epoch)
assert abs(round(l, 6) - 131.196871) < TOL, \
"ERROR: 1st orbital_elements_mean_equinox() test doesn't match"
assert abs(round(a, 8) - 9.55490779) < TOL, \
"ERROR: 2nd orbital_elements_mean_equinox() test doesn't match"
assert abs(round(e, 7) - 0.0553209) < TOL, \
"ERROR: 3rd orbital_elements_mean_equinox() test doesn't match"
assert abs(round(i, 6) - 2.486426) < TOL, \
"ERROR: 4th orbital_elements_mean_equinox() test doesn't match"
assert abs(round(ome, 5) - 114.23974) < TOL, \
"ERROR: 5th orbital_elements_mean_equinox() test doesn't match"
assert abs(round(arg, 6) - (-19.896331)) < TOL, \
"ERROR: 6th orbital_elements_mean_equinox() test doesn't match"
def test_saturn_orbital_elements_j2000():
"""Tests the orbital_elements_j2000() method of Saturn class"""
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Saturn.orbital_elements_j2000(epoch)
assert abs(round(l, 6) - 130.28188) < TOL, \
"ERROR: 1st orbital_elements_j2000() test doesn't match"
assert abs(round(a, 8) - 9.55490779) < TOL, \
"ERROR: 2nd orbital_elements_j2000() test doesn't match"
assert abs(round(e, 7) - 0.0553209) < TOL, \
"ERROR: 3rd orbital_elements_j2000() test doesn't match"
assert abs(round(i, 6) - 2.490529) < TOL, \
"ERROR: 4th orbital_elements_j2000() test doesn't match"
assert abs(round(ome, 5) - 113.49736) < TOL, \
"ERROR: 5th orbital_elements_j2000() test doesn't match"
assert abs(round(arg, 6) - (-20.068943)) < TOL, \
"ERROR: 6th orbital_elements_j2000() test doesn't match"
def test_saturn_geocentric_position():
"""Tests the geocentric_position() method of Saturn class"""
epoch = Epoch(1992, 12, 20.0)
ra, dec, elon = Saturn.geocentric_position(epoch)
assert ra.ra_str(n_dec=1) == "21h 11' 41.8''", \
"ERROR: 1st geocentric_position() test doesn't match"
assert dec.dms_str(n_dec=1) == "-17d 15' 40.8''", \
"ERROR: 2nd geocentric_position() test doesn't match"
assert elon.dms_str(n_dec=1) == "46d 51' 47.7''", \
"ERROR: 3rd geocentric_position() test doesn't match"
def test_saturn_conjunction():
"""Tests the conjunction() method of Saturn class"""
epoch = Epoch(2125, 6, 1.0)
conjunction = Saturn.conjunction(epoch)
y, m, d = conjunction.get_date()
assert abs(round(y, 0) - 2125) < TOL, \
"ERROR: 1st conjunction() test doesn't match"
assert abs(round(m, 0) - 8) < TOL, \
"ERROR: 2nd conjunction() test doesn't match"
assert abs(round(d, 4) - 26.4035) < TOL, \
"ERROR: 3rd conjunction() test doesn't match"
def test_saturn_opposition():
"""Tests the opposition() method of Saturn class"""
epoch = Epoch(-6, 9, 1.0)
oppo = Saturn.opposition(epoch)
y, m, d = oppo.get_date()
assert abs(round(y, 0) - (-6)) < TOL, \
"ERROR: 1st opposition() test doesn't match"
assert abs(round(m, 0) - 9) < TOL, \
"ERROR: 2nd opposition() test doesn't match"
assert abs(round(d, 4) - 14.3709) < TOL, \
"ERROR: 3rd opposition() test doesn't match"
def test_saturn_station_longitude_1():
"""Tests the station_longitude_1() method of Saturn class"""
epoch = Epoch(2018, 11, 1.0)
sta1 = Saturn.station_longitude_1(epoch)
y, m, d = sta1.get_date()
assert abs(round(y, 0) - 2018) < TOL, \
"ERROR: 1st station_longitude_1() test doesn't match"
assert abs(round(m, 0) - 4) < TOL, \
"ERROR: 2nd station_longitude_1() test doesn't match"
assert abs(round(d, 4) - 17.9433) < TOL, \
"ERROR: 3rd station_longitude_1() test doesn't match"
def test_saturn_station_longitude_2():
"""Tests the station_longitude_2() method of Saturn class"""
epoch = Epoch(2018, 11, 1.0)
sta2 = Saturn.station_longitude_2(epoch)
y, m, d = sta2.get_date()
assert abs(round(y, 0) - 2018) < TOL, \
"ERROR: 1st station_longitude_2() test doesn't match"
assert abs(round(m, 0) - 9) < TOL, \
"ERROR: 2nd station_longitude_2() test doesn't match"
assert abs(round(d, 4) - 6.4175) < TOL, \
"ERROR: 3rd station_longitude_2() test doesn't match"
def test_saturn_perihelion_aphelion():
"""Tests the perihelion_aphelion() method of Saturn class"""
epoch = Epoch(2030, 1, 1.0)
e = Saturn.perihelion_aphelion(epoch)
y, m, d, h, mi, s = e.get_full_date()
assert abs(y - 2032) < TOL, \
"ERROR: 1st perihelion_aphelion() test doesn't match"
assert abs(m - 11) < TOL, \
"ERROR: 2nd perihelion_aphelion() test doesn't match"
assert abs(d - 28) < TOL, \
"ERROR: 3rd perihelion_aphelion() test doesn't match"
epoch = Epoch(1925, 1, 1.0)
e = Saturn.perihelion_aphelion(epoch, perihelion=False)
y, m, d, h, mi, s = e.get_full_date()
assert abs(y - 1929) < TOL, \
"ERROR: 4th perihelion_aphelion() test doesn't match"
assert abs(m - 11) < TOL, \
"ERROR: 5th perihelion_aphelion() test doesn't match"
assert abs(d - 11) < TOL, \
"ERROR: 6th perihelion_aphelion() test doesn't match"
def test_saturn_passage_nodes():
"""Tests the passage_nodes() method of Saturn class"""
epoch = Epoch(2019, 1, 1)
time, r = Saturn.passage_nodes(epoch)
y, m, d = time.get_date()
d = round(d, 1)
r = round(r, 4)
assert abs(y - 2034) < TOL, \
"ERROR: 1st passage_nodes() test doesn't match"
assert abs(m - 5) < TOL, \
"ERROR: 2nd passage_nodes() test doesn't match"
assert abs(d - 30.2) < TOL, \
"ERROR: 3rd passage_nodes() test doesn't match"
assert abs(r - 9.0546) < TOL, \
"ERROR: 4th passage_nodes() test doesn't match"
pymeeus-0.3.6/tests/test_sun.py 0000664 0000000 0000000 00000016117 13555455377 0016620 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from pymeeus.base import TOL
from pymeeus.Sun import Sun
from pymeeus.Epoch import Epoch
# Sun module
def test_sun_true_longitude_coarse():
"""Tests the true_longitude_coarse() method of Sun class"""
epoch = Epoch(1992, 10, 13)
true_lon, r = Sun.true_longitude_coarse(epoch)
assert true_lon.dms_str(n_dec=0) == "199d 54' 36.0''", \
"ERROR: 1st true_longitude_coarse() test, 'true_lon' doesn't match"
assert abs(round(r, 5) - 0.99766) < TOL, \
"ERROR: 2nd true_longitude_coarse() test, 'r' value doesn't match"
def test_sun_apparent_longitude_coarse():
"""Tests apparent_longitude_coarse() method of Sun class"""
epoch = Epoch(1992, 10, 13)
alon, r = Sun.apparent_longitude_coarse(epoch)
assert alon.dms_str(n_dec=0) == "199d 54' 32.0''", \
"ERROR: 1st apparent_longitude_coarse() test, 'alon' doesn't match"
def test_sun_apparent_rightascension_declination_coarse():
"""Tests apparent_rightascension_declination_coarse() method of Sun
class"""
epoch = Epoch(1992, 10, 13)
ra, delta, r = Sun.apparent_rightascension_declination_coarse(epoch)
assert ra.ra_str(n_dec=1) == "13h 13' 31.4''", \
"ERROR: 1st rightascension_declination_coarse() test doesn't match"
assert delta.dms_str(n_dec=0) == "-7d 47' 6.0''", \
"ERROR: 2nd rightascension_declination_coarse() test doesn't match"
def test_sun_geometric_geocentric_position():
"""Tests the geometric_geocentric_position() method of Sun class"""
epoch = Epoch(1992, 10, 13.0)
lon, lat, r = Sun.geometric_geocentric_position(epoch, tofk5=False)
assert abs(round(lon.to_positive(), 6) - 199.907297) < TOL, \
"ERROR: 1st geometric_geocentric_position() test, 'lon' doesn't match"
assert lat.dms_str(n_dec=3) == "0.744''", \
"ERROR: 2nd geometric_geocentric_position() test, 'lat' doesn't match"
assert abs(round(r, 8) - 0.99760852) < TOL, \
"ERROR: 3rd geometric_geocentric_position() test, 'r' doesn't match"
def test_sun_apparent_geocentric_position():
"""Tests the apparent_geocentric_position() method of Sun class"""
epoch = Epoch(1992, 10, 13.0)
lon, lat, r = Sun.apparent_geocentric_position(epoch)
assert lon.to_positive().dms_str(n_dec=3) == "199d 54' 21.548''", \
"ERROR: 1st apparent_geocentric_position() test, 'lon' doesn't match"
assert lat.dms_str(n_dec=3) == "0.721''", \
"ERROR: 2nd apparent_geocentric_position() test, 'lat' doesn't match"
assert abs(round(r, 8) - 0.99760852) < TOL, \
"ERROR: 3rd apparent_geocentric_position() test, 'r' doesn't match"
def test_rectangular_coordinates_mean_equinox():
"""Tests rectangular_coordinates_mean_equinox() method of Sun class"""
epoch = Epoch(1992, 10, 13.0)
x, y, z = Sun.rectangular_coordinates_mean_equinox(epoch)
assert abs(round(x, 7) - (-0.9379963)) < TOL, \
"ERROR: 1st rectangular_coordinates_mean_equinox(), 'x' doesn't match"
assert abs(round(y, 6) - (-0.311654)) < TOL, \
"ERROR: 2nd rectangular_coordinates_mean_equinox(), 'y' doesn't match"
assert abs(round(z, 7) - (-0.1351207)) < TOL, \
"ERROR: 3rd rectangular_coordinates_mean_equinox(), 'z' doesn't match"
def test_rectangular_coordinates_j2000():
"""Tests rectangular_coordinates_j2000() method of Sun class"""
epoch = Epoch(1992, 10, 13.0)
x, y, z = Sun.rectangular_coordinates_j2000(epoch)
assert abs(round(x, 8) - (-0.93740485)) < TOL, \
"ERROR: 1st rectangular_coordinates_j2000() test, 'x' doesn't match"
assert abs(round(y, 8) - (-0.3131474)) < TOL, \
"ERROR: 2nd rectangular_coordinates_j2000() test, 'y' doesn't match"
assert abs(round(z, 8) - (-0.13577045)) < TOL, \
"ERROR: 3rd rectangular_coordinates_j2000() test, 'z' doesn't match"
def test_rectangular_coordinates_b1950():
"""Tests rectangular_coordinates_b1950() method of Sun class"""
epoch = Epoch(1992, 10, 13.0)
x, y, z = Sun.rectangular_coordinates_b1950(epoch)
assert abs(round(x, 8) - (-0.94149557)) < TOL, \
"ERROR: 1st rectangular_coordinates_b1950() test, 'x' doesn't match"
assert abs(round(y, 8) - (-0.30259922)) < TOL, \
"ERROR: 2nd rectangular_coordinates_b1950() test, 'y' doesn't match"
assert abs(round(z, 8) - (-0.11578695)) < TOL, \
"ERROR: 3rd rectangular_coordinates_b1950() test, 'z' doesn't match"
def test_rectangular_coordinates_equinox():
"""Tests rectangular_coordinates_equinox() method of Sun class"""
epoch = Epoch(1992, 10, 13.0)
e_equinox = Epoch(2467616.0)
x, y, z = Sun.rectangular_coordinates_equinox(epoch, e_equinox)
assert abs(round(x, 8) - (-0.93368986)) < TOL, \
"ERROR: 1st rectangular_coordinates_equinox() test, 'x' doesn't match"
assert abs(round(y, 8) - (-0.32235085)) < TOL, \
"ERROR: 2nd rectangular_coordinates_equinox() test, 'y' doesn't match"
assert abs(round(z, 8) - (-0.13977098)) < TOL, \
"ERROR: 3rd rectangular_coordinates_equinox() test, 'z' doesn't match"
def test_sun_get_equinox_solstice():
"""Tests the get_equinox_solstice() method of Sun class"""
epoch = Sun.get_equinox_solstice(1962, target="summer")
y, m, d, h, mi, s = epoch.get_full_date()
st = "{}/{}/{} {}:{}:{}".format(y, m, d, h, mi, round(s, 0))
assert st == "1962/6/21 21:24:42.0", \
"ERROR: 1st get_equinox_solstice() test, time stamp doesn't match"
def test_sun_equation_of_time():
"""Tests the equation_of_time() method of Sun class"""
epoch = Epoch(1992, 10, 13.0)
m, s = Sun.equation_of_time(epoch)
assert abs(m) - 13 < TOL, \
"ERROR: 1st equation_of_time() test, 'm' doesn't match"
assert abs(round(s, 1)) - 42.6 < TOL, \
"ERROR: 2nd equation_of_time() test, 's' doesn't match"
def test_sun_ephemeris_physical_observations():
"""Tests the ephemeris_physical_observations() method of Sun class"""
epoch = Epoch(1992, 10, 13)
p, b0, l0 = Sun.ephemeris_physical_observations(epoch)
assert abs(round(p, 2)) - 26.27 < TOL, \
"ERROR: 1st ephemeris_physical_observations() test, 'p' doesn't match"
assert abs(round(b0, 2)) - 5.99 < TOL, \
"ERROR: 2nd ephemeris_physical_observations() test, 'b0' doesn't match"
assert abs(round(l0, 2)) - 238.63 < TOL, \
"ERROR: 3rd ephemeris_physical_observations() test, 'l0' doesn't match"
pymeeus-0.3.6/tests/test_uranus.py 0000664 0000000 0000000 00000014465 13555455377 0017334 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from pymeeus.base import TOL
from pymeeus.Uranus import Uranus
from pymeeus.Epoch import Epoch
# Uranus class
def test_uranus_geometric_heliocentric_position():
"""Tests the geometric_heliocentric_position() method of Uranus class"""
epoch = Epoch(2018, 10, 27.0)
lon, lat, r = Uranus.geometric_heliocentric_position(epoch)
assert abs(round(lon.to_positive(), 4) - 30.5888) < TOL, \
"ERROR: 1st geometric_heliocentric_position() test doesn't match"
assert abs(round(lat, 4) - (-0.5315)) < TOL, \
"ERROR: 2nd geometric_heliocentric_position() test doesn't match"
assert abs(round(r, 5) - 19.86964) < TOL, \
"ERROR: 3rd geometric_heliocentric_position() test doesn't match"
def test_uranus_orbital_elements_mean_equinox():
"""Tests the orbital_elements_mean_equinox() method of Uranus class"""
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Uranus.orbital_elements_mean_equinox(epoch)
assert abs(round(l, 6) - 235.517526) < TOL, \
"ERROR: 1st orbital_elements_mean_equinox() test doesn't match"
assert abs(round(a, 8) - 19.21844604) < TOL, \
"ERROR: 2nd orbital_elements_mean_equinox() test doesn't match"
assert abs(round(e, 7) - 0.0463634) < TOL, \
"ERROR: 3rd orbital_elements_mean_equinox() test doesn't match"
assert abs(round(i, 6) - 0.77372) < TOL, \
"ERROR: 4th orbital_elements_mean_equinox() test doesn't match"
assert abs(round(ome, 5) - 74.34776) < TOL, \
"ERROR: 5th orbital_elements_mean_equinox() test doesn't match"
assert abs(round(arg, 6) - 99.630865) < TOL, \
"ERROR: 6th orbital_elements_mean_equinox() test doesn't match"
def test_uranus_orbital_elements_j2000():
"""Tests the orbital_elements_j2000() method of Uranus class"""
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Uranus.orbital_elements_j2000(epoch)
assert abs(round(l, 6) - 234.602641) < TOL, \
"ERROR: 1st orbital_elements_j2000() test doesn't match"
assert abs(round(a, 8) - 19.21844604) < TOL, \
"ERROR: 2nd orbital_elements_j2000() test doesn't match"
assert abs(round(e, 7) - 0.0463634) < TOL, \
"ERROR: 3rd orbital_elements_j2000() test doesn't match"
assert abs(round(i, 6) - 0.772094) < TOL, \
"ERROR: 4th orbital_elements_j2000() test doesn't match"
assert abs(round(ome, 5) - 74.05468) < TOL, \
"ERROR: 5th orbital_elements_j2000() test doesn't match"
assert abs(round(arg, 6) - 99.009058) < TOL, \
"ERROR: 6th orbital_elements_j2000() test doesn't match"
def test_uranus_geocentric_position():
"""Tests the geocentric_position() method of Uranus class"""
epoch = Epoch(1992, 12, 20.0)
ra, dec, elon = Uranus.geocentric_position(epoch)
assert ra.ra_str(n_dec=1) == "19h 13' 48.7''", \
"ERROR: 1st geocentric_position() test doesn't match"
assert dec.dms_str(n_dec=1) == "-22d 46' 13.0''", \
"ERROR: 2nd geocentric_position() test doesn't match"
assert elon.dms_str(n_dec=1) == "18d 44' 18.7''", \
"ERROR: 3rd geocentric_position() test doesn't match"
def test_uranus_conjunction():
"""Tests the conjunction() method of Uranus class"""
epoch = Epoch(1993, 10, 1.0)
conjunction = Uranus.conjunction(epoch)
y, m, d = conjunction.get_date()
assert abs(round(y, 0) - 1994) < TOL, \
"ERROR: 1st conjunction() test doesn't match"
assert abs(round(m, 0) - 1) < TOL, \
"ERROR: 2nd conjunction() test doesn't match"
assert abs(round(d, 4) - 12.7365) < TOL, \
"ERROR: 3rd conjunction() test doesn't match"
def test_uranus_opposition():
"""Tests the opposition() method of Uranus class"""
epoch = Epoch(1780, 12, 1.0)
oppo = Uranus.opposition(epoch)
y, m, d = oppo.get_date()
assert abs(round(y, 0) - 1780) < TOL, \
"ERROR: 1st opposition() test doesn't match"
assert abs(round(m, 0) - 12) < TOL, \
"ERROR: 2nd opposition() test doesn't match"
assert abs(round(d, 4) - 17.5998) < TOL, \
"ERROR: 3rd opposition() test doesn't match"
def test_uranus_perihelion_aphelion():
"""Tests the perihelion_aphelion() method of Uranus class"""
epoch = Epoch(1960, 1, 1.0)
e = Uranus.perihelion_aphelion(epoch)
y, m, d, h, mi, s = e.get_full_date()
assert abs(y - 1966) < TOL, \
"ERROR: 1st perihelion_aphelion() test doesn't match"
assert abs(m - 5) < TOL, \
"ERROR: 2nd perihelion_aphelion() test doesn't match"
assert abs(d - 18) < TOL, \
"ERROR: 3rd perihelion_aphelion() test doesn't match"
epoch = Epoch(2009, 1, 1.0)
e = Uranus.perihelion_aphelion(epoch, perihelion=False)
y, m, d, h, mi, s = e.get_full_date()
assert abs(y - 2009) < TOL, \
"ERROR: 4th perihelion_aphelion() test doesn't match"
assert abs(m - 2) < TOL, \
"ERROR: 5th perihelion_aphelion() test doesn't match"
assert abs(d - 23) < TOL, \
"ERROR: 6th perihelion_aphelion() test doesn't match"
def test_uranus_passage_nodes():
"""Tests the passage_nodes() method of Uranus class"""
epoch = Epoch(2019, 1, 1)
time, r = Uranus.passage_nodes(epoch)
y, m, d = time.get_date()
d = round(d, 1)
r = round(r, 4)
assert abs(y - 2028) < TOL, \
"ERROR: 1st passage_nodes() test doesn't match"
assert abs(m - 8) < TOL, \
"ERROR: 2nd passage_nodes() test doesn't match"
assert abs(d - 23.2) < TOL, \
"ERROR: 3rd passage_nodes() test doesn't match"
assert abs(r - 19.3201) < TOL, \
"ERROR: 4th passage_nodes() test doesn't match"
pymeeus-0.3.6/tests/test_venus.py 0000664 0000000 0000000 00000023054 13555455377 0017151 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# PyMeeus: Python module implementing astronomical algorithms.
# Copyright (C) 2018 Dagoberto Salazar
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see .
from pymeeus.base import TOL
from pymeeus.Venus import Venus
from pymeeus.Epoch import Epoch
from pymeeus.Angle import Angle
# Venus class
def test_venus_geometric_heliocentric_position():
"""Tests the geometric_heliocentric_position() method of Venus class"""
epoch = Epoch(1992, 12, 20.0)
lon, lat, r = Venus.geometric_heliocentric_position(epoch, tofk5=False)
assert abs(round(lon.to_positive(), 5) - 26.11412) < TOL, \
"ERROR: 1st geometric_heliocentric_position() test doesn't match"
assert abs(round(lat, 4) - (-2.6206)) < TOL, \
"ERROR: 2nd geometric_heliocentric_position() test doesn't match"
assert abs(round(r, 6) - 0.724602) < TOL, \
"ERROR: 3rd geometric_heliocentric_position() test doesn't match"
def test_venus_orbital_elements_mean_equinox():
"""Tests the orbital_elements_mean_equinox() method of Venus class"""
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Venus.orbital_elements_mean_equinox(epoch)
assert abs(round(l, 6) - 338.646306) < TOL, \
"ERROR: 1st orbital_elements_mean_equinox() test doesn't match"
assert abs(round(a, 8) - 0.72332982) < TOL, \
"ERROR: 2nd orbital_elements_mean_equinox() test doesn't match"
assert abs(round(e, 7) - 0.0067407) < TOL, \
"ERROR: 3rd orbital_elements_mean_equinox() test doesn't match"
assert abs(round(i, 6) - 3.395319) < TOL, \
"ERROR: 4th orbital_elements_mean_equinox() test doesn't match"
assert abs(round(ome, 5) - 77.27012) < TOL, \
"ERROR: 5th orbital_elements_mean_equinox() test doesn't match"
assert abs(round(arg, 6) - 55.211257) < TOL, \
"ERROR: 6th orbital_elements_mean_equinox() test doesn't match"
def test_venus_orbital_elements_j2000():
"""Tests the orbital_elements_j2000() method of Venus class"""
epoch = Epoch(2065, 6, 24.0)
l, a, e, i, ome, arg = Venus.orbital_elements_j2000(epoch)
assert abs(round(l, 6) - 337.731227) < TOL, \
"ERROR: 1st orbital_elements_j2000() test doesn't match"
assert abs(round(a, 8) - 0.72332982) < TOL, \
"ERROR: 2nd orbital_elements_j2000() test doesn't match"
assert abs(round(e, 7) - 0.0067407) < TOL, \
"ERROR: 3rd orbital_elements_j2000() test doesn't match"
assert abs(round(i, 6) - 3.394087) < TOL, \
"ERROR: 4th orbital_elements_j2000() test doesn't match"
assert abs(round(ome, 5) - 76.49782) < TOL, \
"ERROR: 5th orbital_elements_j2000() test doesn't match"
assert abs(round(arg, 6) - 55.068476) < TOL, \
"ERROR: 6th orbital_elements_j2000() test doesn't match"
def test_venus_geocentric_position():
"""Tests the geocentric_position() method of Venus class"""
epoch = Epoch(1992, 12, 20.0)
ra, dec, elon = Venus.geocentric_position(epoch)
assert ra.ra_str(n_dec=1) == "21h 4' 41.5''", \
"ERROR: 1st geocentric_position() test doesn't match"
assert dec.dms_str(n_dec=1) == "-18d 53' 16.8''", \
"ERROR: 2nd geocentric_position() test doesn't match"
assert elon.dms_str(n_dec=1) == "44d 46' 8.9''", \
"ERROR: 3rd geocentric_position() test doesn't match"
def test_venus_inferior_conjunction():
"""Tests the inferior_conjunction() method of Venus class"""
epoch = Epoch(1882, 12, 1.0)
conjunction = Venus.inferior_conjunction(epoch)
y, m, d = conjunction.get_date()
assert abs(round(y, 0) - 1882) < TOL, \
"ERROR: 1st inferior_conjunction() test doesn't match"
assert abs(round(m, 0) - 12) < TOL, \
"ERROR: 2nd inferior_conjunction() test doesn't match"
assert abs(round(d, 1) - 6.7) < TOL, \
"ERROR: 3rd inferior_conjunction() test doesn't match"
def test_venus_superior_conjunction():
"""Tests the superior_conjunction() method of Venus class"""
epoch = Epoch(1993, 10, 1.0)
conjunction = Venus.superior_conjunction(epoch)
y, m, d = conjunction.get_date()
assert abs(round(y, 0) - 1994) < TOL, \
"ERROR: 1st superior_conjunction() test doesn't match"
assert abs(round(m, 0) - 1) < TOL, \
"ERROR: 2nd superior_conjunction() test doesn't match"
assert abs(round(d, 2) - 17.05) < TOL, \
"ERROR: 3rd superior_conjunction() test doesn't match"
def test_venus_western_elongation():
"""Tests the western_elongation() method of Venus class"""
epoch = Epoch(2019, 1, 1.0)
time, elongation = Venus.western_elongation(epoch)
y, m, d = time.get_date()
assert abs(round(y, 0) - 2019) < TOL, \
"ERROR: 1st western_elongation() test doesn't match"
assert abs(round(m, 0) - 1) < TOL, \
"ERROR: 2nd western_elongation() test doesn't match"
assert abs(round(d, 4) - 6.1895) < TOL, \
"ERROR: 3rd western_elongation() test doesn't match"
assert abs(round(elongation, 4) - 46.9571) < TOL, \
"ERROR: 4th western_elongation() test doesn't match"
def test_venus_eastern_elongation():
"""Tests the eastern_elongation() method of Venus class"""
epoch = Epoch(2019, 10, 1.0)
time, elongation = Venus.eastern_elongation(epoch)
y, m, d = time.get_date()
assert abs(round(y, 0) - 2020) < TOL, \
"ERROR: 1st eastern_elongation() test doesn't match"
assert abs(round(m, 0) - 3) < TOL, \
"ERROR: 2nd eastern_elongation() test doesn't match"
assert abs(round(d, 4) - 24.9179) < TOL, \
"ERROR: 3rd eastern_elongation() test doesn't match"
assert abs(round(elongation, 4) - 46.078) < TOL, \
"ERROR: 3rd eastern_elongation() test doesn't match"
def test_venus_station_longitude_1():
"""Tests the station_longitude_1() method of Venus class"""
epoch = Epoch(2018, 12, 1.0)
sta1 = Venus.station_longitude_1(epoch)
y, m, d = sta1.get_date()
assert abs(round(y, 0) - 2018) < TOL, \
"ERROR: 1st station_longitude_1() test doesn't match"
assert abs(round(m, 0) - 10) < TOL, \
"ERROR: 2nd station_longitude_1() test doesn't match"
assert abs(round(d, 4) - 5.7908) < TOL, \
"ERROR: 3rd station_longitude_1() test doesn't match"
def test_venus_station_longitude_2():
"""Tests the station_longitude_2() method of Venus class"""
epoch = Epoch(2018, 12, 1.0)
sta2 = Venus.station_longitude_2(epoch)
y, m, d = sta2.get_date()
assert abs(round(y, 0) - 2018) < TOL, \
"ERROR: 1st station_longitude_2() test doesn't match"
assert abs(round(m, 0) - 11) < TOL, \
"ERROR: 2nd station_longitude_2() test doesn't match"
assert abs(round(d, 4) - 16.439) < TOL, \
"ERROR: 3rd station_longitude_2() test doesn't match"
def test_venus_perihelion_aphelion():
"""Tests the perihelion_aphelion() method of Venus class"""
epoch = Epoch(1978, 10, 15.0)
e = Venus.perihelion_aphelion(epoch)
y, m, d, h, mi, s = e.get_full_date()
assert abs(y - 1978) < TOL, \
"ERROR: 1st perihelion_aphelion() test doesn't match"
assert abs(m - 12) < TOL, \
"ERROR: 2nd perihelion_aphelion() test doesn't match"
assert abs(d - 31) < TOL, \
"ERROR: 3rd perihelion_aphelion() test doesn't match"
assert abs(h - 4) < TOL, \
"ERROR: 4th perihelion_aphelion() test doesn't match"
epoch = Epoch(1979, 2, 1.0)
e = Venus.perihelion_aphelion(epoch, perihelion=False)
y, m, d, h, mi, s = e.get_full_date()
assert abs(y - 1979) < TOL, \
"ERROR: 5th perihelion_aphelion() test doesn't match"
assert abs(m - 4) < TOL, \
"ERROR: 6th perihelion_aphelion() test doesn't match"
assert abs(d - 22) < TOL, \
"ERROR: 7th perihelion_aphelion() test doesn't match"
assert abs(h - 12) < TOL, \
"ERROR: 8th perihelion_aphelion() test doesn't match"
def test_venus_passage_nodes():
"""Tests the passage_nodes() method of Venus class"""
epoch = Epoch(1979, 1, 1)
time, r = Venus.passage_nodes(epoch)
y, m, d = time.get_date()
d = round(d, 1)
r = round(r, 4)
assert abs(y - 1978) < TOL, \
"ERROR: 1st passage_nodes() test doesn't match"
assert abs(m - 11) < TOL, \
"ERROR: 2nd passage_nodes() test doesn't match"
assert abs(d - 27.4) < TOL, \
"ERROR: 3rd passage_nodes() test doesn't match"
assert abs(r - 0.7205) < TOL, \
"ERROR: 4th passage_nodes() test doesn't match"
def test_venus_illuminated_fraction():
"""Tests the illuminated_fraction() method of Venus class"""
epoch = Epoch(1992, 12, 20)
k = Venus.illuminated_fraction(epoch)
assert abs(round(k, 2) - 0.64) < TOL, \
"ERROR: 1st illuminated_fraction() test doesn't match"
def test_venus_magnitude():
"""Tests the magnitude() method of Venus class"""
sun_dist = 0.724604
earth_dist = 0.910947
phase_angle = Angle(72.96)
m = Venus.magnitude(sun_dist, earth_dist, phase_angle)
assert abs(round(m, 1) - (-3.8)) < TOL, \
"ERROR: 1st magnitude() test doesn't match"