mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-03-31 19:00:35 +08:00
Starting Eigen 2 development. The current plan is to use the last
release of tvmet (inactive for 2 years and developer unreachable) as the basis for eigen2, because it provides seemingly good expression template mechanisms, we want that, and it would take years to reinvent that wheel. We'll see. So this commit imports the last tvmet release.
This commit is contained in:
commit
3036eeca0a
1
tvmet-1.7.1/AUTHORS
Normal file
1
tvmet-1.7.1/AUTHORS
Normal file
@ -0,0 +1 @@
|
||||
Olaf Petzold <opetzold@users.sourceforge.net>
|
504
tvmet-1.7.1/COPYING
Normal file
504
tvmet-1.7.1/COPYING
Normal file
@ -0,0 +1,504 @@
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the Lesser GPL. It also counts
|
||||
as the successor of the GNU Library Public License, version 2, hence
|
||||
the version number 2.1.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Lesser General Public License, applies to some
|
||||
specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
not price. Our General Public Licenses are designed to make sure that
|
||||
you have the freedom to distribute copies of free software (and charge
|
||||
for this service if you wish); that you receive source code or can get
|
||||
it if you want it; that you can change the software and use pieces of
|
||||
it in new free programs; and that you are informed that you can do
|
||||
these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
distributors to deny you these rights or to ask you to surrender these
|
||||
rights. These restrictions translate to certain responsibilities for
|
||||
you if you distribute copies of the library or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link other code with the library, you must provide
|
||||
complete object files to the recipients, so that they can relink them
|
||||
with the library after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the
|
||||
library, and (2) we offer you this license, which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that
|
||||
there is no warranty for the free library. Also, if the library is
|
||||
modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
restrictive license from a patent holder. Therefore, we insist that
|
||||
any patent license obtained for a version of the library must be
|
||||
consistent with the full freedom of use specified in this license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the
|
||||
ordinary GNU General Public License. This license, the GNU Lesser
|
||||
General Public License, applies to certain designated libraries, and
|
||||
is quite different from the ordinary General Public License. We use
|
||||
this license for certain libraries in order to permit linking those
|
||||
libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using
|
||||
a shared library, the combination of the two is legally speaking a
|
||||
combined work, a derivative of the original library. The ordinary
|
||||
General Public License therefore permits such linking only if the
|
||||
entire combination fits its criteria of freedom. The Lesser General
|
||||
Public License permits more lax criteria for linking other code with
|
||||
the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it
|
||||
does Less to protect the user's freedom than the ordinary General
|
||||
Public License. It also provides other free software developers Less
|
||||
of an advantage over competing non-free programs. These disadvantages
|
||||
are the reason we use the ordinary General Public License for many
|
||||
libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free
|
||||
programs enables a greater number of people to use a large body of
|
||||
free software. For example, permission to use the GNU C Library in
|
||||
non-free programs enables many more people to use the whole GNU
|
||||
operating system, as well as its variant, the GNU/Linux operating
|
||||
system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the
|
||||
users' freedom, it does ensure that the user of a program that is
|
||||
linked with the Library has the freedom and the wherewithal to run
|
||||
that program using a modified version of the Library.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser General Public License (also called "this License").
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the materials to be distributed need not include anything that is
|
||||
normally distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
||||
|
||||
|
4104
tvmet-1.7.1/ChangeLog
Normal file
4104
tvmet-1.7.1/ChangeLog
Normal file
File diff suppressed because it is too large
Load Diff
761
tvmet-1.7.1/ChangeLog.1
Normal file
761
tvmet-1.7.1/ChangeLog.1
Normal file
@ -0,0 +1,761 @@
|
||||
2003-02-12 Olaf Petzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* ChangeLog: this files is renamed to ChangeLog.1 and holds all old
|
||||
Changes. We use the cvs ChangeLog now.
|
||||
|
||||
* examples/Makefile.am: example target diag added.
|
||||
|
||||
* examples/diag.cc: added.
|
||||
|
||||
* regression/TestMathOps.h: TestMathOps<T>::MatrixDiagVector() added.
|
||||
|
||||
* include/tvmet/MatrixFunctions.h: diag(Matrix<T, Sz, Sz>& m) added.
|
||||
|
||||
* include/tvmet/Matrix.h: MatrixDiagVectorReference added.
|
||||
|
||||
2003-02-10 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* Makefile.am (rpm): rpm package is using bz2 archive now.
|
||||
|
||||
* tvmet.spec.in: target tvmet-doc-xxx removed, it's inside the standard
|
||||
rpm package
|
||||
|
||||
2003-02-09 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* version 0.8.0 released (cvs tagged)
|
||||
|
||||
* Makefile.am: target doc-dist added to dist-hook, as well as
|
||||
moving ps/pdf manuals into distdir.
|
||||
|
||||
* doc/compiler.dox: HTML <li></li> environment removed to avoid
|
||||
problems with latex ref manual.
|
||||
|
||||
* configure.in, Makefile.am: parts adapted to new syntax style of
|
||||
autoconf 2.5x and automake 1.6x
|
||||
|
||||
* include/tvmet/util/Timer.h: rusage cpp wrapper replaced with
|
||||
config.h's defined(TVMET_HAVE_XYZ_H)
|
||||
|
||||
* configure.in: enhanced for better recognizing, features from autoconf-2.5x
|
||||
added. Some problems left using
|
||||
AC_INIT(AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
|
||||
|
||||
* doc/Doxyfile.in (INPUT): points to @top_srcdir@/include/@PACKAGE@, therefore
|
||||
we can apply other lib's includes too (e.g. for benchmark)
|
||||
|
||||
2003-02-08 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* config/license: removed
|
||||
|
||||
* version 0.7.6 released internally (cvs tagged)
|
||||
|
||||
* misc corrections to the cvs
|
||||
|
||||
* doc/bench*.png: replaced with an 'empty' picture
|
||||
|
||||
* doc/Makefile.am: bug fixed: tgz dist installs the docs now
|
||||
|
||||
* include/tvmet/Makefile.am: bug fixed: tgz dist install target doesn't
|
||||
install meta and util directory; include/tvmet/meta/Makefile.am,
|
||||
include/tvmet/util/Makefile.am added
|
||||
|
||||
* version 0.7.5 released internally (cvs tagged)
|
||||
|
||||
* project imported into cvs, cvs keyword Id corrected and added
|
||||
|
||||
* doc/Util.h: header guard prefix TVMET extended
|
||||
|
||||
* include/tvmet/meta/: copyright and cvs Id keyword added
|
||||
|
||||
2002-12-28 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* benchmark/BenchImpl.h: Each BenchImpl does run 10 times each benchmark to
|
||||
trick the optimizer a little bit.
|
||||
|
||||
2002-12-27 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* benchmark/Makefile.am: each benchmark got his own optimizer cxxflags.
|
||||
|
||||
2002-12-22 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* version 0.7.4 released internally
|
||||
|
||||
* include/tvmet/MatrixFunctions.h: element_wise::product(Matrix, Matrix)
|
||||
added.
|
||||
|
||||
* benchmark/benchmark.m: stl and peak benchmark added
|
||||
|
||||
* benchmark/stl.{cc|h}: created to measure STL performance
|
||||
|
||||
* benchmark/peak.{cc|h}: created to measure peak performance
|
||||
|
||||
* benchmark/Interface.h: interface_peak etc. added
|
||||
|
||||
* benchmark/BenchmarkBase.h: created, moved basic functionality from
|
||||
Benchmark.h
|
||||
|
||||
2002-12-21 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* benchmark/BenchInfo.h: created, class definition moved from
|
||||
Benchmark.h into.
|
||||
|
||||
2002-12-17 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* version 0.7.3 released internally
|
||||
|
||||
* doc/benchmark.dox: Result comments to each benchmark removed.
|
||||
|
||||
* doc/ doxygen extension is dox now to avoid confusion.
|
||||
|
||||
* include/tvmet/util/General.h: all functions inside doxygroup
|
||||
_util_function now.
|
||||
|
||||
* benchmark/Makefile.am: Depencies corrected.
|
||||
|
||||
2002-12-16 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* benchmark/Benchmark.h (class BenchInfo): typeid added
|
||||
|
||||
* benchmark/*.cc: axpy included in benchmark
|
||||
|
||||
* benchmark/BenchImpl.h (BenchImpl::vector_inner_product): result z static
|
||||
now to avoid removing by optimizer of gcc-3.2, thanks to Jörg Walter.
|
||||
|
||||
* benchmark/Benchmark.h (class Benchmark): BUG inside set_complexity(),
|
||||
vector_add(), vector_outer_product() removed, thanks to Jörg Walter.
|
||||
|
||||
2002-12-15 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* include/tvmet/XprMatrixOperators.h: element_wise
|
||||
operator*(XprMatrix, XprMatrix) supports non-square matrizes now.
|
||||
|
||||
* bechmark/*: (C) added
|
||||
|
||||
* include/tvmet/XprOperators.h: IMPLEMENT macros splitted for
|
||||
XprVector<> and XprMatrix<>, NS element_wise introduced,
|
||||
file splited into Xpr{Matrix, Vector}Operators.h
|
||||
|
||||
2002-12-14 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* version 0.7.2 released internally; interface has changed too!
|
||||
|
||||
* include/tvmet/MatrixImpl.h (Matrix::print_on): small BUG removed,
|
||||
introduced from v0.4.2 (last comma separator was wrong)
|
||||
|
||||
* doc/operator_tab.html: added as doc for namespace element_wise
|
||||
|
||||
* regressions/*: adapted to namespace element_wise
|
||||
|
||||
* include/tvmet/tvmet.h: doxygen namespace description moved from
|
||||
doc/misc.doc into this header.
|
||||
|
||||
* include/tvmet/MatrixOperators.h: operators for *=, /= ... <<= for
|
||||
Matrix<> and XprMatrix<> inside namespace element_wise now!
|
||||
Macro KICK_MATH_SENSE absolete now!
|
||||
|
||||
* include/tvmet/MatrixImpl.h: operator impl for +=, -= ... <<= for
|
||||
Matrix<> and XprMatrix<> moved here from Matrix.h.
|
||||
|
||||
* include/tvmet/MatrixImpl.h: Forgotten macro prefix TVMET_ added.
|
||||
operator %=,^=,&=,|= have as argument std::size_t since these
|
||||
are bitops, only int's are allowed/usefull.
|
||||
|
||||
* include/tvmet/Matrix.h (class Matrix): operator %=,^=,&=,|= have
|
||||
as argumeent std::size_t since these are bitops, only int's
|
||||
are allowed/usefull.
|
||||
|
||||
* include/tvmet/VectorOperators.h: operators for /=, %= ... <<= for
|
||||
Vector<> and XprVector<> inside namespace element_wise now!
|
||||
Macro KICK_MATH_SENSE absolete now!
|
||||
|
||||
* include/tvmet/VectorImpl.h: operator impl for +=, -= ... <<= for
|
||||
Vector<> and XprVector<> moved here from Vector.h.
|
||||
|
||||
* include/tvmet/Vector.h (class Vector): member operators for
|
||||
+=, -= ... <<= for Vector<> and XprVector<> named to equivalent
|
||||
functions.
|
||||
|
||||
* doc/faq.doc: comma_initializer and assign_op compiler error section
|
||||
added.
|
||||
|
||||
* include/tvmet/VectorImpl.h: Forgotten macro prefix TVMET_ added.
|
||||
|
||||
* version 0.7.1 released internally
|
||||
|
||||
2002-12-10 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* doc/notes.doc: notes about aliasing added.
|
||||
|
||||
* doc/benchmark.doc: Fomula written for benchmarks, notes abot aliasing.
|
||||
|
||||
* benchmark/ublas.h: assumes alias free ops, thanks to Jörg Walter
|
||||
|
||||
2002-12-08 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* include/tvmet/MatrixOperators.h: operator*(XprMatrix, Matrix|Matrix, XprMatrix)
|
||||
moved from NS tvmet::element_wise to tvmet,
|
||||
operator/(XprMatrix, Matrix|Matrix, XprMatrix) moved from NS
|
||||
tvmet to tvmet::element_wise. M = transpose(M1) * M2 is working now.
|
||||
|
||||
* include/tvmet/meta/Gemv.h: doxygen class docs corrected.
|
||||
|
||||
* regression/TestMathOps.h: productTranspose regression Test added
|
||||
|
||||
* include/tvmet/MatrixFunctions.h: Formula written in doxygen docs for
|
||||
productTransposed(M,x)
|
||||
|
||||
2002-11-30 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* version 0.7.0 released
|
||||
|
||||
* include/tvmet/{Matrix,Vector}.h: Reference level printing changed.
|
||||
|
||||
2002-11-26 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* include/tvmet/{Xpr,BinaryFunctionals,UnaryFunctionals,Matrix,Vector}.h:
|
||||
expression printing enhanced.
|
||||
|
||||
* include/tvmet/VectorOperators.h: Vector<std::complex<T>, Sz> and std::complex<T>,
|
||||
std::complex<T> and Vector<std::complex<T>, Sz> are working now.
|
||||
|
||||
* include/tvmet/MatrixOperators.h: Matrix<T, Rows, Cols> and complex<T>,
|
||||
complex<T> and Matrix<T, Rows, Cols> are working now.
|
||||
|
||||
2002-11-24 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* regression/TestSTL.h: added for regression with STL's vector class.
|
||||
|
||||
* include/tvmet/Vector.h (class Vector): runtime condition added for
|
||||
construction from given iterator.
|
||||
|
||||
* regression/*: TVMET prefix for all *.h
|
||||
|
||||
* version 0.6.3 released internally
|
||||
|
||||
* regression/Makefile.am: CXXFLAGS limited to the minimum optimizations
|
||||
|
||||
* regression/TestMathOps.h: adapted to the new situation.
|
||||
|
||||
* regression/MVOps.h: moved to namespace util, file moved to
|
||||
include/tvmet/util/General.h; functions renamed
|
||||
|
||||
* include/tvmet/Timer.h: moved to util subdir.
|
||||
|
||||
* include/tvmet/*: All meta stuff moved to an own namespace into a
|
||||
subdirectoy meta.
|
||||
|
||||
* include/tvmet/Matrix.h (class Matrix::assign): adapted for use of meta
|
||||
templates default parameter
|
||||
|
||||
* include/tvmet/MetaMatrix.h (class Matrix): {Row,Col}Stride have default
|
||||
parameter now.
|
||||
|
||||
* doc/Makefile.am: CXXFLAGS limited to the minimum optimizations
|
||||
|
||||
2002-11-23 opetzold |opetzold@wit.regiocom.net>
|
||||
|
||||
* version 0.6.2 released internally
|
||||
|
||||
* doc/benchmark.doc: updated.
|
||||
|
||||
* benchmark/* completly rewritten, uses interfaces for libaries (blitz,
|
||||
ublas, mtl), results in MFlops now.
|
||||
|
||||
2002-11-16 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* benchmark/Timer.h (class Timer): moved to namespace tvmet::util, file
|
||||
moved to include/tvmet
|
||||
|
||||
2002-11-14 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* version 0.6.1 released internally
|
||||
|
||||
* doc/{notes,faq}.doc: About regression test moved from notes to
|
||||
faq. Added to faq dimension check error compiler.
|
||||
|
||||
* doc/*: Benchmark results added.
|
||||
|
||||
* regression/TestMathOps.h (TestMathOps<T>::MatrixOps()): Regression
|
||||
for trace(Matrix<>) added.
|
||||
|
||||
* include/tvmet/MatrixFunctions.h: trace(Matrix<>) added.
|
||||
|
||||
* include/tvmet/Matrix.h (class MetaMatrix): MetaMatrix::trace added.
|
||||
|
||||
2002-11-13 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* include/tvmet/*.h: brute force replace DECLARE_XYZ with TVMET prefix
|
||||
to avoid complications with other macros.
|
||||
Same to asXpr() -> as_expr() to hold member conventions.
|
||||
|
||||
* include/tvmet/*.h: brute force replace ExprType with expr_type to be
|
||||
conform to the used style.
|
||||
|
||||
2002-11-12 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* regression/MVOps.h: Header guard with TVMET prefix, doxygen like,
|
||||
VVAdd fn added.
|
||||
|
||||
2002-11-10 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* regression/*: completly rewritten. Now we have a benchmark with blitz++,
|
||||
tvmet, ublas and conventional implementation.
|
||||
|
||||
* doc/*: Corrections and Enhancements to the docs generally (intro rewritten).
|
||||
|
||||
* include/tvmet/tvmet.h: Guard for defined DEBUG arround TVMET_DEBUG removed.
|
||||
TVMET_DEBUG isn't turned on at defined DEBUG any more.
|
||||
|
||||
2002-11-03 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* version 0.6.0 released
|
||||
|
||||
* regression/TestMathOps.h: Test for normalize(Vector<>) added.
|
||||
|
||||
* include/tvmet/{Matrix,Vector}Operators.h: Matrix/Vector<T, Sz> and POD's
|
||||
extended with long long int to handle long long from NumericTraits
|
||||
too.
|
||||
|
||||
2002-10-29 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* doc/{usage,faq}.doc enhanced.
|
||||
|
||||
* include/tvmet/VectorFunctions.h: normalize(Vector<>) added.
|
||||
|
||||
* regression/TestUnFunc.h: copy && paste devel killed:
|
||||
3 test cases indicate that they are testing the inverse functions,
|
||||
asin, acos, atan but the test case calls the sin function - thanks
|
||||
to Darin DeForest (deforest) from sf.
|
||||
|
||||
2002-10-19 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* include/tvmet/{Matrix|Vector}Functions.h: Formula docs enhanced,
|
||||
doxy grouping enhanced for unary and binary functions and
|
||||
operators.
|
||||
|
||||
2002-10-17 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* version 0.5.1 released as doc update
|
||||
|
||||
* doc/Doxygen.in: PREDEFINED targets use the forgotten TVMET prefix too.
|
||||
|
||||
* include/tvmet/{Binary|UnaryFunctionals.h, NumericTraits.h,
|
||||
TypePromotion.h TvmetBase.h}: macros
|
||||
generated operators, functions and functionals doc added for
|
||||
doxygen include path.
|
||||
|
||||
2002-10-10 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* doc/{functions|operators}_doc.cc: naming convention for private
|
||||
data updated
|
||||
|
||||
* doc/*: Corrections and Enhancements to the docs generally.
|
||||
|
||||
2002-08-18 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* version 0.5.o released after some time of playing with.
|
||||
|
||||
* doc/tvmet.css: using tvmet.css now.
|
||||
|
||||
* Small docs enhancements.
|
||||
|
||||
2002-08-03 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* include/tvmet/VectorImpl.h (print_on): simplifyied rewritten.
|
||||
|
||||
* include/tvmet/MatrixImpl.h (print_on): simplifyied rewritten.
|
||||
|
||||
* version 0.4.2 released only internal
|
||||
|
||||
* doc/compiler.doc: Section general compiler requirements added.
|
||||
|
||||
* include/tvmet/*.h: forwards for namespace std rewritten to avoid
|
||||
doxygen confuse.
|
||||
|
||||
* regression/TestMathOps.h: Regression test for row() and col() added.
|
||||
|
||||
* include/tvmet/Matrix.h (Matrix{Row, Col}VectorReference):
|
||||
operator[] const added, manual ctor removed.
|
||||
|
||||
* include/tvmet/Matrix.h (Matrix{Row, Col}VectorReference): XprLevel is
|
||||
IndentLevl now (removed bug from beginning time.)
|
||||
|
||||
* examples/mv.cc: cstdlib for rand added for compatibility.
|
||||
|
||||
2002-07-27 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* version 0.4.1 released only internal
|
||||
|
||||
* regression/Makefile.am (regression_LDADD): cppunit-1.9.8 needs -ldl for
|
||||
dl{open,close,sym}.
|
||||
|
||||
* include/tvmet/Matrix.h (class Matrix): added reverse_iterator STL
|
||||
interface as well as empty() and max_size(). size() is static now.
|
||||
|
||||
* include/tvmet/Vector.h (class Vector): added reverse_iterator STL
|
||||
interface as well as front(), back(), empty(), max_size().
|
||||
size() is static now.
|
||||
|
||||
* tvmet.spec.in: Adapted for manual.
|
||||
|
||||
* Makefile.am (man_MANS): manual for tvmet-config written
|
||||
|
||||
* include/tvmet/*: brute force query replace printOn with print_on
|
||||
for member naming conformity.
|
||||
|
||||
* include/tvmet/*: brute force query replace restrict by _tvmet_restrict
|
||||
due to the use of the prefix macro.
|
||||
|
||||
* include/tvmet/* all header guards with TVMET_ prefix extensioned.
|
||||
|
||||
* doc/Doxyfile.in: adapted to the new situation
|
||||
|
||||
* tvmet-config.in (Usage): corrected very old package name (tvm)
|
||||
|
||||
* include/tvmet/config/config-{icc,kcc,pgi}.h: dummies created for
|
||||
compiler specifics.
|
||||
|
||||
* include/tvmet/config/config-gcc.h: created for gcc specifics.
|
||||
|
||||
* include/tvmet/TvmetBase.h: created, contents of old tvmet.h moved in.
|
||||
|
||||
* include/tvmet/tvmet.h (IndentLevel): forgotten member rename to be
|
||||
conform to m_xxx; particular rewritten and splitted, so below
|
||||
and above.
|
||||
|
||||
* configure.in: We are using the ac_create_prefix_config_h to create
|
||||
a prefixed config.h header now. Unfortunally accconfig.h is
|
||||
deprecated too. With this we can easy mix different packages
|
||||
(prior all autoXXX defined PACKAGE and VERSION with the result
|
||||
of multiple define warnings).
|
||||
|
||||
* Makefile.am (m4sources): added ac_create_prefix_config_h.m4, aclocal.m4
|
||||
moved from root dir to config dir.
|
||||
|
||||
2002-07-24 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* include/tvmet/VectorImpl.h: printOn() does care the io manipulators
|
||||
std::setw(), see examples/mv.cc
|
||||
|
||||
* include/tvmet/MatrixImpl.h: same too.
|
||||
|
||||
2002-07-23 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* version 0.4.0 released
|
||||
|
||||
* include/tvmet/NumericTraits.h: rewritten to avoid macro and ifdef garbage.
|
||||
|
||||
* include/tvmet/*: member rename to be conform to m_xxx
|
||||
|
||||
* include/tvmet/Matrix.h: CT_CONDITION have the tvmet identifier now.
|
||||
|
||||
* include/tvmet/Vector.h: CT_CONDITION have the tvmet identifier now.
|
||||
|
||||
2002-07-17 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* now we have a postscript and pdf manual
|
||||
|
||||
* doc/functions_doc.cc: some missed return statements added.
|
||||
|
||||
2002-07-16 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* doc/Makefile.am: pdf support improved.
|
||||
|
||||
* doc/Makefile.am (doc-dist): tvmet-doc-xxx dist doesn't have html subdir anymore
|
||||
- usefull for sourceforge dist since we have only html docs.
|
||||
|
||||
* regression/main.cc (main): args removed to avoid warnings.
|
||||
|
||||
* configure.in: CXX_OPTIMIZE_FLAG/CXX_DEBUG_FLAGS for GnuCC -W -Wall added
|
||||
|
||||
* include/tvmet/TypePromotion.h: No idea when this bug where introduced - the
|
||||
header guard was in wrong scope, v0.3.1 suffered. Nobdy told me ...
|
||||
|
||||
* include/tvmet/TypePromotion.h: Support for long long. Enhanced for unsigned
|
||||
and complex types as well. Change ranking breaks compatibility
|
||||
with prior releases.
|
||||
|
||||
* include/tvmet/NumericTraits.h: support for long long. Specialized version for
|
||||
long double and long long self removed - there isn't a way to guarantee
|
||||
the precision than.
|
||||
|
||||
* config/ac_c_long_long.m4 added.
|
||||
|
||||
2002-07-13 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* acconfig.h: political correct error messages now 8-)
|
||||
|
||||
2002-07-07 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* version 0.3.1 released
|
||||
|
||||
* include/tvmet/Vector.h (class Vector): brute force query replace ThisType
|
||||
by this_type, to be conform to the naming convention
|
||||
|
||||
* include/tvmet/Matrix.h (class Matrix): brute force query replace ThisType
|
||||
by this_type, to be conform to the naming convention
|
||||
|
||||
* doc/Doxyfile.in: slighly minor changes.
|
||||
|
||||
2002-07-06 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* include/tvmet/Matrix.h (class Matrix): same here.
|
||||
|
||||
* include/tvmet/Vector.h (class Vector): doxygen correctness for copy ctor doc.
|
||||
|
||||
2002-06-25 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* doc/notes.doc: chapter _thread inside contents now.
|
||||
|
||||
* include/tvmet/TypePromotion.h: classes inside namespace tvmet now.
|
||||
|
||||
2002-06-23 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* version 0.3.0 released
|
||||
|
||||
* doc-dists does have a doxygen tag file now
|
||||
|
||||
* header class descriptions follows now the statement
|
||||
\class <name> [<header-file>] [<header-name>]
|
||||
|
||||
* include/tvmet/CompileTimeError.h, include/tvmet/CommaInitializer.h: doxygen
|
||||
confuseness removed (first line of header (LGPL) introduced a doxy comment - therfore
|
||||
doxygen did interpret the follwing statement)
|
||||
|
||||
2002-06-22 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* include/tvmet/Functional.h: class replaced by struct, since all members are public
|
||||
|
||||
* include/tvmet/XprOperators.h: std::complex<T> templated
|
||||
|
||||
* include/tvmet/XprFunctions.h: std::complex<T> templated
|
||||
|
||||
* include/tvmet/VectorOperators.h: std::complex<T> templated
|
||||
|
||||
* include/tvmet/VectorFunctions.h: std::complex<T> templated
|
||||
|
||||
* include/tvmet/VectorEval.h: std::complex<T> templated, macro removed
|
||||
|
||||
* include/tvmet/UnaryFunctionals.h: std::complex<T> templated
|
||||
|
||||
* include/tvmet/MatrixFunctions.h: std::complex<T> templated
|
||||
|
||||
* include/tvmet/MatrixOperators.h: std::complex<T> templated
|
||||
|
||||
* include/tvmet/MatrixEval.h: std::complex<T> templated, macro removed
|
||||
|
||||
* include/tvmet/XprFunctions.h: forgotten exp function added
|
||||
|
||||
* regression/TestMathOps.h: bug removed in regressions due to prior initialized
|
||||
vars. Moved the test into MatrixMatrixVector.
|
||||
|
||||
* benchmark/Benchmark.h: new, parts from m1.cc and v1.cc has been moved here.
|
||||
|
||||
2002-06-20 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* include/tvmet/TypePromotion.h: std::complex<int> added, therfore the priorities
|
||||
for all complex types have changed!
|
||||
|
||||
* include/tvmet/NumericTraits.h: depends on HAVE_LONG_DOUBLE, sum_type of double
|
||||
is long double or double.
|
||||
|
||||
* include/tvmet/{MatrixEval.h, MatrixFunctions.h, MatrixOperators.h, NumericTraits.h,
|
||||
TypePromotion.h, UnaryFunctionals.h, VectorEval.h, VectorFunctions.h,
|
||||
VectorOperators.h, XprFunctions.h, XprOperators.h} HAVE_LONG_DOUBLE
|
||||
encapsulated.
|
||||
|
||||
* configure.in: AC_C_LONG_DOUBLE added.
|
||||
|
||||
* include/tvmet/UnaryFunctionals.h: for std::complex<> expanded, uses now a const reference.
|
||||
functions for std::complex<int> added
|
||||
|
||||
* include/tvmet/MatrixEval.h: std::complex<int> added
|
||||
|
||||
* doc/Doxyfile.in (BIN_ABSPATH): updated for doxygen 2.2.18 (new generated).
|
||||
|
||||
2002-06-16 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* examples/Makefile.am (examples): bug corrected.
|
||||
|
||||
* include/tvmet/NumericTraits.h: complex<int> numeric traits added.
|
||||
|
||||
* include/tvmet/MatrixOperators.h: operator*() is in namespace element_wise left
|
||||
|
||||
2002-06-13 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* doc/Makefile.am (doc-dist): gzip with bzip2 replaced
|
||||
|
||||
* Makefile.am (doc-dist): gzip to bzip2 replaced as well
|
||||
|
||||
* include/tvmet/MatrixFunctions.h: for std::complex<> expanded, uses now a const reference.
|
||||
functions for std::complex<int> added
|
||||
|
||||
2002-06-12 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* include/tvmet/XprFunctions.h: for std::complex<> expanded, uses now a const reference.
|
||||
functions for std::complex<int> added
|
||||
|
||||
* include/tvmet/MatrixOperators.h (DECLARE_BINARY_OPERATOR): for std::complex<>
|
||||
expanded, uses now a const reference.
|
||||
operators for std::complex<int> added
|
||||
|
||||
* include/tvmet/VectorOperators.h (DECLARE_BINARY_OPERATOR): for std::complex<>
|
||||
expanded, uses now a const reference.
|
||||
operators for std::complex<int> added
|
||||
|
||||
* include/tvmet/XprOperators.h (DECLARE_BINARY_OPERATOR): for std::complex<>
|
||||
expanded, uses now a const reference.
|
||||
logical operators for float, double etc. removed, since isn't applicable
|
||||
operators for std::complex<int> added
|
||||
|
||||
2002-06-11 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* acconfig.h (__S_STL_INTERNAL_RELOPS): hack removed since isn't usefull.
|
||||
|
||||
* doc/Makefile.am (api): target renamed to doc
|
||||
|
||||
* include/tvmet/tvmet.h: NS_TVMET_BEGIN/END removed again due to doxygen problems
|
||||
description of namespace moved to misc.doc
|
||||
|
||||
* doc/Doxyfile.in (INPUT): @top_srcdir@/include/tvmet now
|
||||
|
||||
* include/tvmet/tvmet.h: macros NS_TVMET_BEGIN/END completly removed - too
|
||||
much trouble with doxygen, only NS_TVMET_NAME is used now. NS_TVMET_NAME
|
||||
has a guard now.
|
||||
|
||||
* include/tvmet/*.h: doxygen grouping for global functions and operators
|
||||
|
||||
* doc/functions.doc: added for global functions documenting
|
||||
|
||||
* doc/operators.doc: added for global operators documenting
|
||||
|
||||
2002-06-09 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* version 0.2.1 released
|
||||
|
||||
* benchmark/* completly rewritten
|
||||
|
||||
* regression/MVOps.h: extracted from TestMathOp.h for use for benchmarking
|
||||
|
||||
2002-06-08 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* regression/: checked/rewritten and updated against cppunit-1.8.0,
|
||||
which s now used for regression test.0
|
||||
TestConstruction.cc TestMathOps.cc TestXpr.cc removed.
|
||||
|
||||
* regression/main.cc: Oops, non std iostream include header fixed. Thanks
|
||||
to gcc-3.1 8-)
|
||||
|
||||
* include/tvmet/*.h: doxygen enhancements
|
||||
|
||||
* doc/Makefile.am: modified for splitted doc files, ChangeLog and THANKS files
|
||||
included into html doc tree.
|
||||
|
||||
* doc/intro.doc: original intro.doxy splitted to several *.doc files,
|
||||
anhanced docs and topics regrouped.
|
||||
|
||||
* include/tvmet/Matrix.h (class Matrix): Member assignValue(), forgotten return
|
||||
statement added. Thanks to Kresimir Fresl <fresl@grad.hr>
|
||||
|
||||
2002-06-02 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* version 0.2.0 released
|
||||
|
||||
* include/tvmet/Matrix.h (class Matrix): STL iterator constructors and interface
|
||||
added.
|
||||
|
||||
* include/tvmet/Vector.h (class Vector): STL iterator constructors and interface
|
||||
added.
|
||||
|
||||
* generell: Designer decision to rename all const_reference to ConstReference,
|
||||
reference to Reference, expr_type to ExprType. This make its possible
|
||||
to support the STL interface. Finally this means a public interface
|
||||
change.
|
||||
|
||||
* include/tvmet/MatrixFunctions.h (class MetaMM ): typename
|
||||
PromoteTraits<T1, T2>::value_type' is implicitly a typename,
|
||||
changed, (class MetaMV ): same here.
|
||||
|
||||
* include/tvmet/: brute-force query-replace size_t with std::size_t
|
||||
|
||||
* doc/intro.doxy: slightly changed and anhanced docs due to positive
|
||||
test with stlport and gcc-3.1.
|
||||
|
||||
* include/tvmet/UnaryFunctionals.h: removed ieee math functions
|
||||
from namespace std, STLport does it right.
|
||||
|
||||
2002-06-01 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* cleaned some comments/doxygen tags for cosmetic
|
||||
|
||||
* removed doing vector cross product as ET from todo list
|
||||
|
||||
* include/tvmet/Vector.h (class Vector): enum size removed, since it's never used
|
||||
here and not really usefull. Added new member function size() instead.
|
||||
|
||||
* include/tvmet/Matrix.h (class Matrix): enum { rows, cols} removed since they are
|
||||
never used here, and not really usefull. Added new member functions
|
||||
rows() and cols() instead.
|
||||
|
||||
* include/tvmet/Vector.h (class Vector): template argument length replaced
|
||||
with tvmet::Vector template argument Sz, since it's the same.
|
||||
Removed enum length, since isn't needed.
|
||||
|
||||
* Makefile.am (rpm): --target=noarch added, therefore it's really
|
||||
plattform independed 8)
|
||||
|
||||
2002-04-27 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* version 0.1.2 released
|
||||
|
||||
* include/tvmet/tvmet.h (NS_TVMET): removed since it holds only the name self and
|
||||
isn't used anwhere expect NS_TVMET_BEGIN.
|
||||
|
||||
* doc/header.html: meta tags added and sf logo changed.
|
||||
|
||||
2002-04-21 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* docs/ adhanced
|
||||
|
||||
* include/tvmet/Matrix.h (MatrixReference::operator()): removed const since
|
||||
it isn't const.
|
||||
|
||||
2002-04-20 opetzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* include/tvmet/Matrix.h: MatrixColVectorReference, MatrixRowVectorReference added.
|
||||
|
||||
* include/tvmet/MatrixFunctions.h: row() and col() functions added
|
||||
|
||||
* examples/: new complex examples
|
||||
|
||||
* macro for automake added tvmet.m4
|
||||
|
||||
2002-03-11 O.Petzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* version 0.1.1 released
|
||||
|
||||
2002-03-05 O.Petzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* examples/: some examples added for xpr printing and simple mv, mm ops
|
||||
|
||||
* include/tvmet/Vector.h (VectorReference, VectorConstReference): XprLevel
|
||||
printing uses typeid now.
|
||||
|
||||
* include/tvmet/Matrix.h (MatrixReference, MatrixConstReference): XprLevel
|
||||
printing uses typeid now.
|
||||
|
||||
* include/tvmet/VectorImpl.h (operator<<()): XprLevel printing uses typeid now.
|
||||
|
||||
* include/tvmet/MatrixImpl.h (operator<<()): XprLevel printing uses typeid now.
|
||||
|
||||
2002-03-04 O.Petzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* include/tvmet/MatrixFunctions.h: min/max temp vars improved
|
||||
|
||||
* include/tvmet/VectorFunctions.h: min/max temp vars improved
|
||||
|
||||
* doc/intro.doxy: corrections
|
||||
|
||||
2002-03-01 O.Petzold <opetzold@wit.regiocom.net>
|
||||
|
||||
* version 0.1.0 released
|
229
tvmet-1.7.1/INSTALL
Normal file
229
tvmet-1.7.1/INSTALL
Normal file
@ -0,0 +1,229 @@
|
||||
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
This file is free documentation; the Free Software Foundation gives
|
||||
unlimited permission to copy, distribute and modify it.
|
||||
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
These are generic installation instructions.
|
||||
|
||||
The `configure' shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
those values to create a `Makefile' in each directory of the package.
|
||||
It may also create one or more `.h' files containing system-dependent
|
||||
definitions. Finally, it creates a shell script `config.status' that
|
||||
you can run in the future to recreate the current configuration, and a
|
||||
file `config.log' containing compiler output (useful mainly for
|
||||
debugging `configure').
|
||||
|
||||
It can also use an optional file (typically called `config.cache'
|
||||
and enabled with `--cache-file=config.cache' or simply `-C') that saves
|
||||
the results of its tests to speed up reconfiguring. (Caching is
|
||||
disabled by default to prevent problems with accidental use of stale
|
||||
cache files.)
|
||||
|
||||
If you need to do unusual things to compile the package, please try
|
||||
to figure out how `configure' could check whether to do them, and mail
|
||||
diffs or instructions to the address given in the `README' so they can
|
||||
be considered for the next release. If you are using the cache, and at
|
||||
some point `config.cache' contains results you don't want to keep, you
|
||||
may remove or edit it.
|
||||
|
||||
The file `configure.ac' (or `configure.in') is used to create
|
||||
`configure' by a program called `autoconf'. You only need
|
||||
`configure.ac' if you want to change it or regenerate `configure' using
|
||||
a newer version of `autoconf'.
|
||||
|
||||
The simplest way to compile this package is:
|
||||
|
||||
1. `cd' to the directory containing the package's source code and type
|
||||
`./configure' to configure the package for your system. If you're
|
||||
using `csh' on an old version of System V, you might need to type
|
||||
`sh ./configure' instead to prevent `csh' from trying to execute
|
||||
`configure' itself.
|
||||
|
||||
Running `configure' takes awhile. While running, it prints some
|
||||
messages telling which features it is checking for.
|
||||
|
||||
2. Type `make' to compile the package.
|
||||
|
||||
3. Optionally, type `make check' to run any self-tests that come with
|
||||
the package.
|
||||
|
||||
4. Type `make install' to install the programs and any data files and
|
||||
documentation.
|
||||
|
||||
5. You can remove the program binaries and object files from the
|
||||
source code directory by typing `make clean'. To also remove the
|
||||
files that `configure' created (so you can compile the package for
|
||||
a different kind of computer), type `make distclean'. There is
|
||||
also a `make maintainer-clean' target, but that is intended mainly
|
||||
for the package's developers. If you use it, you may have to get
|
||||
all sorts of other programs in order to regenerate files that came
|
||||
with the distribution.
|
||||
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that
|
||||
the `configure' script does not know about. Run `./configure --help'
|
||||
for details on some of the pertinent environment variables.
|
||||
|
||||
You can give `configure' initial values for configuration parameters
|
||||
by setting variables in the command line or in the environment. Here
|
||||
is an example:
|
||||
|
||||
./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
|
||||
|
||||
*Note Defining Variables::, for more details.
|
||||
|
||||
Compiling For Multiple Architectures
|
||||
====================================
|
||||
|
||||
You can compile the package for more than one kind of computer at the
|
||||
same time, by placing the object files for each architecture in their
|
||||
own directory. To do this, you must use a version of `make' that
|
||||
supports the `VPATH' variable, such as GNU `make'. `cd' to the
|
||||
directory where you want the object files and executables to go and run
|
||||
the `configure' script. `configure' automatically checks for the
|
||||
source code in the directory that `configure' is in and in `..'.
|
||||
|
||||
If you have to use a `make' that does not support the `VPATH'
|
||||
variable, you have to compile the package for one architecture at a
|
||||
time in the source code directory. After you have installed the
|
||||
package for one architecture, use `make distclean' before reconfiguring
|
||||
for another architecture.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, `make install' will install the package's files in
|
||||
`/usr/local/bin', `/usr/local/man', etc. You can specify an
|
||||
installation prefix other than `/usr/local' by giving `configure' the
|
||||
option `--prefix=PATH'.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
give `configure' the option `--exec-prefix=PATH', the package will use
|
||||
PATH as the prefix for installing programs and libraries.
|
||||
Documentation and other data files will still use the regular prefix.
|
||||
|
||||
In addition, if you use an unusual directory layout you can give
|
||||
options like `--bindir=PATH' to specify different values for particular
|
||||
kinds of files. Run `configure --help' for a list of the directories
|
||||
you can set and what kinds of files go in them.
|
||||
|
||||
If the package supports it, you can cause programs to be installed
|
||||
with an extra prefix or suffix on their names by giving `configure' the
|
||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
`configure', where FEATURE indicates an optional part of the package.
|
||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||
is something like `gnu-as' or `x' (for the X Window System). The
|
||||
`README' should mention any `--enable-' and `--with-' options that the
|
||||
package recognizes.
|
||||
|
||||
For packages that use the X Window System, `configure' can usually
|
||||
find the X include and library files automatically, but if it doesn't,
|
||||
you can use the `configure' options `--x-includes=DIR' and
|
||||
`--x-libraries=DIR' to specify their locations.
|
||||
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features `configure' cannot figure out
|
||||
automatically, but needs to determine by the type of machine the package
|
||||
will run on. Usually, assuming the package is built to be run on the
|
||||
_same_ architectures, `configure' can figure that out, but if it prints
|
||||
a message saying it cannot guess the machine type, give it the
|
||||
`--build=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as `sun4', or a canonical name which has the form:
|
||||
|
||||
CPU-COMPANY-SYSTEM
|
||||
|
||||
where SYSTEM can have one of these forms:
|
||||
|
||||
OS KERNEL-OS
|
||||
|
||||
See the file `config.sub' for the possible values of each field. If
|
||||
`config.sub' isn't included in this package, then this package doesn't
|
||||
need to know the machine type.
|
||||
|
||||
If you are _building_ compiler tools for cross-compiling, you should
|
||||
use the `--target=TYPE' option to select the type of system they will
|
||||
produce code for.
|
||||
|
||||
If you want to _use_ a cross compiler, that generates code for a
|
||||
platform different from the build platform, you should specify the
|
||||
"host" platform (i.e., that on which the generated programs will
|
||||
eventually be run) with `--host=TYPE'.
|
||||
|
||||
Sharing Defaults
|
||||
================
|
||||
|
||||
If you want to set default values for `configure' scripts to share,
|
||||
you can create a site shell script called `config.site' that gives
|
||||
default values for variables like `CC', `cache_file', and `prefix'.
|
||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||
`CONFIG_SITE' environment variable to the location of the site script.
|
||||
A warning: not all `configure' scripts look for a site script.
|
||||
|
||||
Defining Variables
|
||||
==================
|
||||
|
||||
Variables not defined in a site shell script can be set in the
|
||||
environment passed to `configure'. However, some packages may run
|
||||
configure again during the build, and the customized values of these
|
||||
variables may be lost. In order to avoid this problem, you should set
|
||||
them in the `configure' command line, using `VAR=value'. For example:
|
||||
|
||||
./configure CC=/usr/local2/bin/gcc
|
||||
|
||||
will cause the specified gcc to be used as the C compiler (unless it is
|
||||
overridden in the site shell script).
|
||||
|
||||
`configure' Invocation
|
||||
======================
|
||||
|
||||
`configure' recognizes the following options to control how it
|
||||
operates.
|
||||
|
||||
`--help'
|
||||
`-h'
|
||||
Print a summary of the options to `configure', and exit.
|
||||
|
||||
`--version'
|
||||
`-V'
|
||||
Print the version of Autoconf used to generate the `configure'
|
||||
script, and exit.
|
||||
|
||||
`--cache-file=FILE'
|
||||
Enable the cache: use and save the results of the tests in FILE,
|
||||
traditionally `config.cache'. FILE defaults to `/dev/null' to
|
||||
disable caching.
|
||||
|
||||
`--config-cache'
|
||||
`-C'
|
||||
Alias for `--cache-file=config.cache'.
|
||||
|
||||
`--quiet'
|
||||
`--silent'
|
||||
`-q'
|
||||
Do not print messages saying which checks are being made. To
|
||||
suppress all normal output, redirect it to `/dev/null' (any error
|
||||
messages will still be shown).
|
||||
|
||||
`--srcdir=DIR'
|
||||
Look for the package's source code in directory DIR. Usually
|
||||
`configure' can determine that directory automatically.
|
||||
|
||||
`configure' also accepts some other, not widely useful, options. Run
|
||||
`configure --help' for more details.
|
||||
|
53
tvmet-1.7.1/LICENSE
Normal file
53
tvmet-1.7.1/LICENSE
Normal file
@ -0,0 +1,53 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ADDENDUM TO LICENSE
|
||||
Februar 2003
|
||||
|
||||
Copyright (C) 2003 Olaf Petzold
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license addendum document, but changing it is not allowed.
|
||||
|
||||
|
||||
tvmet License Agreement.
|
||||
|
||||
|
||||
0. tvmet ("The Library") is licensed under GNU Lesser General Public License
|
||||
as published by the Free Software Foundation, version 2.1 of the License, or
|
||||
(at your option) any later version, with the following additional conditions.
|
||||
The following conditions take precedence over any conditions or restrictions
|
||||
stipulated by the Lesser General Public License insofar as a conflict exists.
|
||||
|
||||
1. The tvmet License Agreement ("License") covers only tvmet ("The Library").
|
||||
Other libraries which the Library may use are covered by their own respective
|
||||
licenses.
|
||||
|
||||
2. Modification of the configure scripts, makefiles, or installation tools of
|
||||
the Library to support a specific platform does not constitute creating a
|
||||
modified or derivative work based on the Library.
|
||||
|
||||
3. Statically linking of a copy of the Library against any work using the
|
||||
Library, i.e. the inclusion of (parts of) the Library into a program or binary,
|
||||
is functionally equivalent to a work using the Library by linking to it
|
||||
dynamically, and therefore does not constitute creating a modified or derivative
|
||||
work based on the Library.
|
||||
|
||||
4. Otherwise, if the work is a derivative of the Library, you may distribute
|
||||
the object code for the work under the terms of the GNU Lesser General Public
|
||||
License. Any executables containing that work also may be distributed under
|
||||
the Lesser General Public License whether or not they are linked directly with
|
||||
the Library itself.
|
||||
|
||||
5. Programs or binaries linked with the Library must be identified as such by
|
||||
including, in the Documentation or by other means (for example in the About
|
||||
Box or Online Help), the following statement:
|
||||
|
||||
"This software uses tvmet (http://tvmet.sourceforge.net)."
|
||||
|
||||
|
||||
|
||||
|
||||
END OF ADDENDUM
|
101
tvmet-1.7.1/Makefile.am
Normal file
101
tvmet-1.7.1/Makefile.am
Normal file
@ -0,0 +1,101 @@
|
||||
# $Id: Makefile.am,v 1.25 2004/09/16 08:12:28 opetzold Exp $
|
||||
|
||||
ACLOCAL_AMFLAGS = -I config
|
||||
|
||||
SUBDIRS = include examples testsuite doc tests benchmark
|
||||
|
||||
m4sources = \
|
||||
config/ac_c_long_long.m4 \
|
||||
config/ac_create_prefix_config_h.m4 \
|
||||
config/ac_cxx_have_complex.m4 \
|
||||
config/ac_cxx_have_complex_math1.m4 \
|
||||
config/ac_cxx_have_complex_math2.m4 \
|
||||
config/ac_cxx_have_ieee_math.m4 \
|
||||
config/ac_cxx_have_mutable.m4 \
|
||||
config/ac_cxx_have_namespaces.m4 \
|
||||
config/ac_cxx_have_sysv_math.m4 \
|
||||
config/ac_cxx_partial_specialization.m4 \
|
||||
config/ac_cxx_typename.m4 \
|
||||
config/ac_set_compiler.m4 \
|
||||
config/ac_prog_cxx_intel.m4 \
|
||||
config/ac_prog_cxx_kai.m4 \
|
||||
config/ac_prog_cxx_pgi.m4 \
|
||||
config/op_doxygen_doc.m4
|
||||
|
||||
# m4 automake macros
|
||||
m4datadir = $(datadir)/aclocal
|
||||
m4data_DATA = tvmet.m4
|
||||
|
||||
# setup/config scripts
|
||||
bin_SCRIPTS = tvmet-config
|
||||
|
||||
# manual for script
|
||||
man_MANS = tvmet-config.1
|
||||
|
||||
EXTRA_DIST = \
|
||||
$(m4sources) \
|
||||
$(m4data_DATA) \
|
||||
$(man_MANS) \
|
||||
ChangeLog.1 \
|
||||
LICENSE
|
||||
|
||||
DISTCLEANFILES = \
|
||||
$(PACKAGE)-docs-$(VERSION).tar.bz2 \
|
||||
$(PACKAGE)-$(VERSION).pdf.bz2
|
||||
|
||||
# Targets
|
||||
ChangeLog:
|
||||
@if test -d CVS -a -x `which cvs2log`; then \
|
||||
echo "Create ChangeLog from CVS"; \
|
||||
`which cvs2log`; \
|
||||
fi
|
||||
|
||||
dist-hook: ChangeLog
|
||||
cp tvmet.spec $(distdir)
|
||||
$(MAKE) doc-dist
|
||||
@if test -f $(top_builddir)/doc/$(PACKAGE)-$(VERSION).ps; then \
|
||||
$(LN_S) $(top_builddir)/doc/$(PACKAGE)-$(VERSION).ps $(PACKAGE)-$(VERSION).ps; \
|
||||
cat $(top_builddir)/doc/$(PACKAGE)-$(VERSION).ps | bzip2 --best > $(PACKAGE)-$(VERSION).ps.bz2; \
|
||||
fi
|
||||
@if test -f $(top_builddir)/doc/$(PACKAGE)-$(VERSION).pdf; then \
|
||||
$(LN_S) $(top_builddir)/doc/$(PACKAGE)-$(VERSION).pdf $(PACKAGE)-$(VERSION).pdf; \
|
||||
cat $(top_builddir)/doc/$(PACKAGE)-$(VERSION).pdf | bzip2 --best > $(PACKAGE)-$(VERSION).pdf.bz2; \
|
||||
fi
|
||||
|
||||
.PHONY: release snapshot rpm docs doc-dist
|
||||
|
||||
release:
|
||||
rm -rf .deps */.deps
|
||||
$(MAKE) distcheck
|
||||
|
||||
snapshot:
|
||||
$(MAKE) dist distdir=$(PACKAGE)-$(VERSION)-`date +"%y%m%d"`
|
||||
|
||||
docs:
|
||||
$(MAKE) -C doc
|
||||
|
||||
if CONFIG_DOC
|
||||
doc-dist: docs
|
||||
$(MAKE) -C doc doc-dist
|
||||
mv -f doc/$(PACKAGE)-docs-$(VERSION).tar.bz2 .
|
||||
else
|
||||
doc-dist:
|
||||
endif
|
||||
|
||||
example:
|
||||
$(MAKE) -C examples example
|
||||
|
||||
rpm: dist
|
||||
@if test -f $(PACKAGE).spec; then \
|
||||
echo "Build rpm distribution"; \
|
||||
$(RM) $(PACKAGE).spec && make $(PACKAGE).spec; \
|
||||
fi
|
||||
rpm -ta --target noarch $(PACKAGE)-$(VERSION).tar.bz2
|
||||
cp ~/RPM/SRPMS/$(PACKAGE)-$(VERSION)-1.src.rpm .
|
||||
cp ~/RPM/RPMS/noarch/$(PACKAGE)-$(VERSION)-1.noarch.rpm .
|
||||
|
||||
md5:
|
||||
md5sum `find . -maxdepth 1 -name "*.rpm" -or -name "*.gz" -or -name "*.bz2" -xtype f` > MD5sums
|
||||
|
||||
sign: md5
|
||||
cat MD5sums | gpg --clearsign > .MD5sums && mv .MD5sums MD5sums
|
822
tvmet-1.7.1/Makefile.in
Normal file
822
tvmet-1.7.1/Makefile.in
Normal file
@ -0,0 +1,822 @@
|
||||
# Makefile.in generated by automake 1.8.3 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# $Id: Makefile.am,v 1.25 2004/09/16 08:12:28 opetzold Exp $
|
||||
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = .
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = @INSTALL@
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
host_triplet = @host@
|
||||
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
|
||||
$(srcdir)/Makefile.in $(srcdir)/tvmet-config.in \
|
||||
$(srcdir)/tvmet.spec.in $(top_srcdir)/config/config.h.in \
|
||||
$(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
|
||||
THANKS config/config.guess config/config.sub config/depcomp \
|
||||
config/install-sh config/ltmain.sh config/missing
|
||||
subdir = .
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/config/ac_c_long_long.m4 \
|
||||
$(top_srcdir)/config/ac_create_prefix_config_h.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_complex.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_complex_math1.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_complex_math2.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_ieee_math.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_mutable.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_namespaces.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_sysv_math.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_partial_specialization.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_typename.m4 \
|
||||
$(top_srcdir)/config/ac_set_compiler.m4 \
|
||||
$(top_srcdir)/config/op_doxygen_doc.m4 \
|
||||
$(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||
configure.lineno configure.status.lineno
|
||||
mkinstalldirs = $(mkdir_p)
|
||||
CONFIG_HEADER = $(top_builddir)/config/config.h
|
||||
CONFIG_CLEAN_FILES = tvmet-config tvmet.spec
|
||||
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(m4datadir)"
|
||||
binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
|
||||
SCRIPTS = $(bin_SCRIPTS)
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||
html-recursive info-recursive install-data-recursive \
|
||||
install-exec-recursive install-info-recursive \
|
||||
install-recursive installcheck-recursive installdirs-recursive \
|
||||
pdf-recursive ps-recursive uninstall-info-recursive \
|
||||
uninstall-recursive
|
||||
man1dir = $(mandir)/man1
|
||||
NROFF = nroff
|
||||
MANS = $(man_MANS)
|
||||
m4dataDATA_INSTALL = $(INSTALL_DATA)
|
||||
DATA = $(m4data_DATA)
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
distdir = $(PACKAGE)-$(VERSION)
|
||||
top_distdir = $(distdir)
|
||||
am__remove_distdir = \
|
||||
{ test ! -d $(distdir) \
|
||||
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
|
||||
&& rm -fr $(distdir); }; }
|
||||
DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2
|
||||
GZIP_ENV = --best
|
||||
distuninstallcheck_listfiles = find . -type f -print
|
||||
distcleancheck_listfiles = find . -type f -print
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CONFIG_CPPUNIT_FALSE = @CONFIG_CPPUNIT_FALSE@
|
||||
CONFIG_CPPUNIT_TRUE = @CONFIG_CPPUNIT_TRUE@
|
||||
CONFIG_DOC_FALSE = @CONFIG_DOC_FALSE@
|
||||
CONFIG_DOC_TRUE = @CONFIG_DOC_TRUE@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@
|
||||
CPPUNIT_CONFIG = @CPPUNIT_CONFIG@
|
||||
CPPUNIT_LIBS = @CPPUNIT_LIBS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CXX_DEBUG_FLAGS = @CXX_DEBUG_FLAGS@
|
||||
CXX_OPTIMIZE_FLAGS = @CXX_OPTIMIZE_FLAGS@
|
||||
CXX_WARN_FLAGS = @CXX_WARN_FLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DOXYGEN = @DOXYGEN@
|
||||
DOXYGEN_HAVE_DOT = @DOXYGEN_HAVE_DOT@
|
||||
ECHO = @ECHO@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
F77 = @F77@
|
||||
FFLAGS = @FFLAGS@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LATEX_BATCHMODE = @LATEX_BATCHMODE@
|
||||
LATEX_MODE = @LATEX_MODE@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
RANLIB = @RANLIB@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_F77 = @ac_ct_F77@
|
||||
ac_ct_RANLIB = @ac_ct_RANLIB@
|
||||
ac_ct_STRIP = @ac_ct_STRIP@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
|
||||
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
datadir = @datadir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
ACLOCAL_AMFLAGS = -I config
|
||||
SUBDIRS = include examples testsuite doc tests benchmark
|
||||
m4sources = \
|
||||
config/ac_c_long_long.m4 \
|
||||
config/ac_create_prefix_config_h.m4 \
|
||||
config/ac_cxx_have_complex.m4 \
|
||||
config/ac_cxx_have_complex_math1.m4 \
|
||||
config/ac_cxx_have_complex_math2.m4 \
|
||||
config/ac_cxx_have_ieee_math.m4 \
|
||||
config/ac_cxx_have_mutable.m4 \
|
||||
config/ac_cxx_have_namespaces.m4 \
|
||||
config/ac_cxx_have_sysv_math.m4 \
|
||||
config/ac_cxx_partial_specialization.m4 \
|
||||
config/ac_cxx_typename.m4 \
|
||||
config/ac_set_compiler.m4 \
|
||||
config/ac_prog_cxx_intel.m4 \
|
||||
config/ac_prog_cxx_kai.m4 \
|
||||
config/ac_prog_cxx_pgi.m4 \
|
||||
config/op_doxygen_doc.m4
|
||||
|
||||
|
||||
# m4 automake macros
|
||||
m4datadir = $(datadir)/aclocal
|
||||
m4data_DATA = tvmet.m4
|
||||
|
||||
# setup/config scripts
|
||||
bin_SCRIPTS = tvmet-config
|
||||
|
||||
# manual for script
|
||||
man_MANS = tvmet-config.1
|
||||
EXTRA_DIST = \
|
||||
$(m4sources) \
|
||||
$(m4data_DATA) \
|
||||
$(man_MANS) \
|
||||
ChangeLog.1 \
|
||||
LICENSE
|
||||
|
||||
DISTCLEANFILES = \
|
||||
$(PACKAGE)-docs-$(VERSION).tar.bz2 \
|
||||
$(PACKAGE)-$(VERSION).pdf.bz2
|
||||
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
am--refresh:
|
||||
@:
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
|
||||
cd $(srcdir) && $(AUTOMAKE) --gnu \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
echo ' $(SHELL) ./config.status'; \
|
||||
$(SHELL) ./config.status;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
$(SHELL) ./config.status --recheck
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(srcdir) && $(AUTOCONF)
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||
|
||||
config/config.h: config/stamp-h1
|
||||
@if test ! -f $@; then \
|
||||
rm -f config/stamp-h1; \
|
||||
$(MAKE) config/stamp-h1; \
|
||||
else :; fi
|
||||
|
||||
config/stamp-h1: $(top_srcdir)/config/config.h.in $(top_builddir)/config.status
|
||||
@rm -f config/stamp-h1
|
||||
cd $(top_builddir) && $(SHELL) ./config.status config/config.h
|
||||
$(top_srcdir)/config/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_srcdir) && $(AUTOHEADER)
|
||||
rm -f config/stamp-h1
|
||||
touch $@
|
||||
|
||||
distclean-hdr:
|
||||
-rm -f config/config.h config/stamp-h1
|
||||
tvmet-config: $(top_builddir)/config.status $(srcdir)/tvmet-config.in
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||
tvmet.spec: $(top_builddir)/config.status $(srcdir)/tvmet.spec.in
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||
install-binSCRIPTS: $(bin_SCRIPTS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
|
||||
@list='$(bin_SCRIPTS)'; for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
if test -f $$d$$p; then \
|
||||
f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
|
||||
echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \
|
||||
$(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
|
||||
else :; fi; \
|
||||
done
|
||||
|
||||
uninstall-binSCRIPTS:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(bin_SCRIPTS)'; for p in $$list; do \
|
||||
f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
|
||||
echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
|
||||
rm -f "$(DESTDIR)$(bindir)/$$f"; \
|
||||
done
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
distclean-libtool:
|
||||
-rm -f libtool
|
||||
uninstall-info-am:
|
||||
install-man1: $(man1_MANS) $(man_MANS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(man1dir)" || $(mkdir_p) "$(DESTDIR)$(man1dir)"
|
||||
@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
|
||||
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
|
||||
for i in $$l2; do \
|
||||
case "$$i" in \
|
||||
*.1*) list="$$list $$i" ;; \
|
||||
esac; \
|
||||
done; \
|
||||
for i in $$list; do \
|
||||
if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
|
||||
else file=$$i; fi; \
|
||||
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
|
||||
case "$$ext" in \
|
||||
1*) ;; \
|
||||
*) ext='1' ;; \
|
||||
esac; \
|
||||
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
|
||||
inst=`echo $$inst | sed -e 's/^.*\///'`; \
|
||||
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
|
||||
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
|
||||
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
|
||||
done
|
||||
uninstall-man1:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
|
||||
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
|
||||
for i in $$l2; do \
|
||||
case "$$i" in \
|
||||
*.1*) list="$$list $$i" ;; \
|
||||
esac; \
|
||||
done; \
|
||||
for i in $$list; do \
|
||||
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
|
||||
case "$$ext" in \
|
||||
1*) ;; \
|
||||
*) ext='1' ;; \
|
||||
esac; \
|
||||
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
|
||||
inst=`echo $$inst | sed -e 's/^.*\///'`; \
|
||||
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
|
||||
echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
|
||||
rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
|
||||
done
|
||||
install-m4dataDATA: $(m4data_DATA)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(m4datadir)" || $(mkdir_p) "$(DESTDIR)$(m4datadir)"
|
||||
@list='$(m4data_DATA)'; for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
f="`echo $$p | sed -e 's|^.*/||'`"; \
|
||||
echo " $(m4dataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(m4datadir)/$$f'"; \
|
||||
$(m4dataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(m4datadir)/$$f"; \
|
||||
done
|
||||
|
||||
uninstall-m4dataDATA:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(m4data_DATA)'; for p in $$list; do \
|
||||
f="`echo $$p | sed -e 's|^.*/||'`"; \
|
||||
echo " rm -f '$(DESTDIR)$(m4datadir)/$$f'"; \
|
||||
rm -f "$(DESTDIR)$(m4datadir)/$$f"; \
|
||||
done
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run `make' without going through this Makefile.
|
||||
# To change the values of `make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in `config.status', edit `config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||
# (2) otherwise, pass the desired values on the `make' command line.
|
||||
$(RECURSIVE_TARGETS):
|
||||
@set fnord $$MAKEFLAGS; amf=$$2; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
mostlyclean-recursive clean-recursive distclean-recursive \
|
||||
maintainer-clean-recursive:
|
||||
@set fnord $$MAKEFLAGS; amf=$$2; \
|
||||
dot_seen=no; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
rev=''; for subdir in $$list; do \
|
||||
if test "$$subdir" = "."; then :; else \
|
||||
rev="$$subdir $$rev"; \
|
||||
fi; \
|
||||
done; \
|
||||
rev="$$rev ."; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
for subdir in $$rev; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
||||
done && test -z "$$fail"
|
||||
tags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||
done
|
||||
ctags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||
done
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
if (etags --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -f $$subdir/TAGS && \
|
||||
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(ETAGS_ARGS)$$tags$$unique" \
|
||||
|| $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
ctags: CTAGS
|
||||
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
$(am__remove_distdir)
|
||||
mkdir $(distdir)
|
||||
$(mkdir_p) $(distdir)/. $(distdir)/config $(distdir)/doc $(distdir)/include/tvmet/config
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkdir_p) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -d "$(distdir)/$$subdir" \
|
||||
|| mkdir "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
(cd $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="../$(top_distdir)" \
|
||||
distdir="../$(distdir)/$$subdir" \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$(top_distdir)" distdir="$(distdir)" \
|
||||
dist-hook
|
||||
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
|
||||
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
|
||||
|| chmod -R a+r $(distdir)
|
||||
dist-gzip: distdir
|
||||
$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
$(am__remove_distdir)
|
||||
dist-bzip2: distdir
|
||||
$(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-tarZ: distdir
|
||||
$(AMTAR) chof - $(distdir) | compress -c >$(distdir).tar.Z
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-shar: distdir
|
||||
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-zip: distdir
|
||||
-rm -f $(distdir).zip
|
||||
zip -rq $(distdir).zip $(distdir)
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist dist-all: distdir
|
||||
$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
$(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2
|
||||
$(am__remove_distdir)
|
||||
|
||||
# This target untars the dist file and tries a VPATH configuration. Then
|
||||
# it guarantees that the distribution is self-contained by making another
|
||||
# tarfile.
|
||||
distcheck: dist
|
||||
case '$(DIST_ARCHIVES)' in \
|
||||
*.tar.gz*) \
|
||||
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - ;;\
|
||||
*.tar.bz2*) \
|
||||
bunzip2 -c $(distdir).tar.bz2 | $(AMTAR) xf - ;;\
|
||||
*.tar.Z*) \
|
||||
uncompress -c $(distdir).tar.Z | $(AMTAR) xf - ;;\
|
||||
*.shar.gz*) \
|
||||
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | unshar ;;\
|
||||
*.zip*) \
|
||||
unzip $(distdir).zip ;;\
|
||||
esac
|
||||
chmod -R a-w $(distdir); chmod a+w $(distdir)
|
||||
mkdir $(distdir)/_build
|
||||
mkdir $(distdir)/_inst
|
||||
chmod a-w $(distdir)
|
||||
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
||||
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||
&& cd $(distdir)/_build \
|
||||
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
|
||||
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
|
||||
distuninstallcheck \
|
||||
&& chmod -R a-w "$$dc_install_base" \
|
||||
&& ({ \
|
||||
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
|
||||
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
|
||||
} || { rm -rf "$$dc_destdir"; exit 1; }) \
|
||||
&& rm -rf "$$dc_destdir" \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dist \
|
||||
&& rm -rf $(DIST_ARCHIVES) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
|
||||
$(am__remove_distdir)
|
||||
@(echo "$(distdir) archives ready for distribution: "; \
|
||||
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
|
||||
sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
|
||||
distuninstallcheck:
|
||||
@cd $(distuninstallcheck_dir) \
|
||||
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|
||||
|| { echo "ERROR: files left after uninstall:" ; \
|
||||
if test -n "$(DESTDIR)"; then \
|
||||
echo " (check DESTDIR support)"; \
|
||||
fi ; \
|
||||
$(distuninstallcheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
distcleancheck: distclean
|
||||
@if test '$(srcdir)' = . ; then \
|
||||
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
|
||||
exit 1 ; \
|
||||
fi
|
||||
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|
||||
|| { echo "ERROR: files left in build directory after distclean:" ; \
|
||||
$(distcleancheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile $(SCRIPTS) $(MANS) $(DATA)
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(m4datadir)"; do \
|
||||
test -z "$$dir" || $(mkdir_p) "$$dir"; \
|
||||
done
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-hdr \
|
||||
distclean-libtool distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am: install-m4dataDATA install-man
|
||||
|
||||
install-exec-am: install-binSCRIPTS
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-man: install-man1
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -rf $(top_srcdir)/autom4te.cache
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-binSCRIPTS uninstall-info-am \
|
||||
uninstall-m4dataDATA uninstall-man
|
||||
|
||||
uninstall-info: uninstall-info-recursive
|
||||
|
||||
uninstall-man: uninstall-man1
|
||||
|
||||
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
|
||||
check-am clean clean-generic clean-libtool clean-recursive \
|
||||
ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
|
||||
dist-shar dist-tarZ dist-zip distcheck distclean \
|
||||
distclean-generic distclean-hdr distclean-libtool \
|
||||
distclean-recursive distclean-tags distcleancheck distdir \
|
||||
distuninstallcheck dvi dvi-am html html-am info info-am \
|
||||
install install-am install-binSCRIPTS install-data \
|
||||
install-data-am install-exec install-exec-am install-info \
|
||||
install-info-am install-m4dataDATA install-man install-man1 \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
installdirs-am maintainer-clean maintainer-clean-generic \
|
||||
maintainer-clean-recursive mostlyclean mostlyclean-generic \
|
||||
mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
|
||||
tags tags-recursive uninstall uninstall-am \
|
||||
uninstall-binSCRIPTS uninstall-info-am uninstall-m4dataDATA \
|
||||
uninstall-man uninstall-man1
|
||||
|
||||
|
||||
# Targets
|
||||
ChangeLog:
|
||||
@if test -d CVS -a -x `which cvs2log`; then \
|
||||
echo "Create ChangeLog from CVS"; \
|
||||
`which cvs2log`; \
|
||||
fi
|
||||
|
||||
dist-hook: ChangeLog
|
||||
cp tvmet.spec $(distdir)
|
||||
$(MAKE) doc-dist
|
||||
@if test -f $(top_builddir)/doc/$(PACKAGE)-$(VERSION).ps; then \
|
||||
$(LN_S) $(top_builddir)/doc/$(PACKAGE)-$(VERSION).ps $(PACKAGE)-$(VERSION).ps; \
|
||||
cat $(top_builddir)/doc/$(PACKAGE)-$(VERSION).ps | bzip2 --best > $(PACKAGE)-$(VERSION).ps.bz2; \
|
||||
fi
|
||||
@if test -f $(top_builddir)/doc/$(PACKAGE)-$(VERSION).pdf; then \
|
||||
$(LN_S) $(top_builddir)/doc/$(PACKAGE)-$(VERSION).pdf $(PACKAGE)-$(VERSION).pdf; \
|
||||
cat $(top_builddir)/doc/$(PACKAGE)-$(VERSION).pdf | bzip2 --best > $(PACKAGE)-$(VERSION).pdf.bz2; \
|
||||
fi
|
||||
|
||||
.PHONY: release snapshot rpm docs doc-dist
|
||||
|
||||
release:
|
||||
rm -rf .deps */.deps
|
||||
$(MAKE) distcheck
|
||||
|
||||
snapshot:
|
||||
$(MAKE) dist distdir=$(PACKAGE)-$(VERSION)-`date +"%y%m%d"`
|
||||
|
||||
docs:
|
||||
$(MAKE) -C doc
|
||||
|
||||
@CONFIG_DOC_TRUE@doc-dist: docs
|
||||
@CONFIG_DOC_TRUE@ $(MAKE) -C doc doc-dist
|
||||
@CONFIG_DOC_TRUE@ mv -f doc/$(PACKAGE)-docs-$(VERSION).tar.bz2 .
|
||||
@CONFIG_DOC_FALSE@doc-dist:
|
||||
|
||||
example:
|
||||
$(MAKE) -C examples example
|
||||
|
||||
rpm: dist
|
||||
@if test -f $(PACKAGE).spec; then \
|
||||
echo "Build rpm distribution"; \
|
||||
$(RM) $(PACKAGE).spec && make $(PACKAGE).spec; \
|
||||
fi
|
||||
rpm -ta --target noarch $(PACKAGE)-$(VERSION).tar.bz2
|
||||
cp ~/RPM/SRPMS/$(PACKAGE)-$(VERSION)-1.src.rpm .
|
||||
cp ~/RPM/RPMS/noarch/$(PACKAGE)-$(VERSION)-1.noarch.rpm .
|
||||
|
||||
md5:
|
||||
md5sum `find . -maxdepth 1 -name "*.rpm" -or -name "*.gz" -or -name "*.bz2" -xtype f` > MD5sums
|
||||
|
||||
sign: md5
|
||||
cat MD5sums | gpg --clearsign > .MD5sums && mv .MD5sums MD5sums
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
190
tvmet-1.7.1/NEWS
Normal file
190
tvmet-1.7.1/NEWS
Normal file
@ -0,0 +1,190 @@
|
||||
* release 1.7.1
|
||||
|
||||
- major and minor bug fix release.
|
||||
- element wise operations on non square matrix expressions.
|
||||
does work as expected now.
|
||||
- tvmet compiles with gcc 3.4.3.
|
||||
- extended docs.
|
||||
- new regression tests.
|
||||
|
||||
* release 1.7.0
|
||||
|
||||
- support for Microsoft VC++ 7.1
|
||||
- several critical bug fixes.
|
||||
- docs enhanced and corrected; new chapter for VC++ 7.1.
|
||||
- conj for signed types disabled, since an unary minus operator
|
||||
applied to unsigned type will result unsigned type.
|
||||
- drem, hypot, jn, yn, cbrt and rint are inside the global namespace
|
||||
now.
|
||||
- some fixes for Makefile on creating pdf documentation.
|
||||
- header depencies limited.
|
||||
|
||||
* release 1.6.0
|
||||
|
||||
- major bug fix: tvmet did crash on zero matrix print (introduced
|
||||
with release 1.5.0, there was only a patch available).
|
||||
- corrected and extended docs.
|
||||
- new regressions added for traits.
|
||||
- some compiler specific optimizations for gcc and icc
|
||||
(compatibility mode) introduced, use it by defined TVMET_OPTIMIZE.
|
||||
This uses the gcc's __attribute__((always_inline)) wrapped by a
|
||||
macro - this allows to produce high optimized and inline code
|
||||
even on lower optimization levels, e.g. -O. This is enabled by
|
||||
configure process by --enable-optimize.
|
||||
- For pgCC 5.1 the TVMET_HAVE_LONG_DOUBLE has been disabled, since
|
||||
the support is incomplete imo. For icc some pragma are used
|
||||
to avoid warnings about 'operands are evaluated in unspecified
|
||||
order' since it concerns ostream printing only.
|
||||
- traits prepared to be an entry point of several functions
|
||||
used in the feature.
|
||||
- new functions c{matrix,vector}_ref to handle C style vectors
|
||||
and arrays as expressions - using inside the tvmet Matrix/Vector
|
||||
expressions as usual.
|
||||
- tvmet's syntax/naming convention more cleaner, code should be
|
||||
more readable now. Further more unused template parameter has
|
||||
been removed.
|
||||
- new function identity<>() to create identity matrices.
|
||||
- some cosmetic changes.
|
||||
|
||||
* release 1.5.0
|
||||
|
||||
- the build process is more compliant to the GNU standard.
|
||||
- alias function extended.
|
||||
- Matrix and Vector data printing improved, gives better output
|
||||
even by negative values/contents.
|
||||
- configure script supports different compiler better; users
|
||||
can specify --enable-optimize, --enable-debug and
|
||||
--enable-warnings for their needs.
|
||||
- the configure and build process has been improved generally;
|
||||
tvmet can be build in a separate build directory and passes
|
||||
the distcheck target successfully.
|
||||
|
||||
* release 1.4.1
|
||||
|
||||
- new function alias to solve the aliasing problem.
|
||||
- major bug fix: forgotten header tvmet/loop/Vector.h added
|
||||
and benchmark shows AtA and AAt graph with matrices
|
||||
less than 10x10 too - the BTL patch is updated.
|
||||
|
||||
* release 1.4.0
|
||||
|
||||
- major and minor bug fixes
|
||||
- Matrix/Vector and XprMatrix/XprVector uses an assign_to()
|
||||
function - this could be a way for pre-evaluate/caching
|
||||
nodes of the sub expressions for further releases.
|
||||
- an alternate way of computing matrix-matrix and matrix-vector
|
||||
products added: using meta templates or loops. Therefore some
|
||||
trigger are introduced which are not tuned yet. Using
|
||||
matrix-matrix products less than Rows*Cols 8*8 or
|
||||
matrix-vector products less than Sz=8 uses meta templates
|
||||
else loops.
|
||||
- regression tests added for loop products, as well as bugs
|
||||
fixed.
|
||||
- enums Rows, Cols and Size for Matrix and Vector are
|
||||
introduced.
|
||||
- expression level printing improved - more info's are shown
|
||||
- output format has been changed, the output is compatible
|
||||
to octave/matlab. To get the type and size info as before
|
||||
a new member function info() has been introduced which can
|
||||
be streamed to ostreams.
|
||||
- improved data printing, aligns output regarding of maximum
|
||||
element.
|
||||
- different members for expression and data printing.
|
||||
- BTL benchmark results added.
|
||||
|
||||
* release 1.3.0
|
||||
|
||||
- major and minor bug fixes - all users should update !
|
||||
- RVO problem/bug removed, chaining/composed expressions are
|
||||
working now. The problem was related on use of temporaries
|
||||
on composed functions, which gone out of scope.
|
||||
- sources compiled without optimizations, by -O0, doesn't crash
|
||||
any more. The Problem was related by holding expressions by
|
||||
references instead by value. At higher optimization levels
|
||||
there were no faults than.
|
||||
- better english documentation (spelling and grammar) as well
|
||||
some corrections and extensions.
|
||||
- benchmark removed from sources.
|
||||
- interface changes.
|
||||
- prodTrans renamed to trans_prod to follow the naming convention
|
||||
- boolean version of eval removed to avoid confusion, comparing
|
||||
is done using all_elements and any_elements.
|
||||
- support for complex<> slightly improved.
|
||||
|
||||
* release 1.2.1
|
||||
|
||||
- major and minor bug fixes.
|
||||
- corrected and extended docs.
|
||||
- tvmet's const correctness improved.
|
||||
|
||||
* release 1.2.0
|
||||
|
||||
- major and minor bug fixes
|
||||
- better gcc 2.95.3 support but, still problems
|
||||
- function naming convention from product to prod, transpose
|
||||
to trans etc. changed.
|
||||
- new functions add,sub,mul and div on element wise functions.
|
||||
- expressions used for row/col and diag vectors on matrices,
|
||||
prevents use of temporaries on expressions for pre-evaluation.
|
||||
- Vector access using braces () is default on internal use,
|
||||
brackets [] are still valid and supported.
|
||||
- better debug support.
|
||||
- regression test improved and more tests added, especially
|
||||
on expressions.
|
||||
- more functions and operators on functions.
|
||||
- better header file layout.
|
||||
|
||||
* release 1.1.0
|
||||
|
||||
- major and minor bug fixes
|
||||
- new meta templated functions for matrix operations for
|
||||
product(transpose(M), M), product(M, transpose(M)) and
|
||||
transpose(product(M,M)), namely MtM_product(), MMt_product
|
||||
as well as productTransposed().
|
||||
- productTranspose(M,V) renamed to Mtx_product(). In this
|
||||
function is a return dimension bug removed (working for non-
|
||||
square matrices too now).
|
||||
- Therefore, old productTransposed() functions doesn't have
|
||||
the old meaning any more!
|
||||
- a matrix expression can be transposed too.
|
||||
- new functions and operators for products of expression of
|
||||
matrices and vectors added - chaining of this should work
|
||||
now.
|
||||
- better support for non-square matrices and non-square
|
||||
matrix-matrix and matrix-vector functions/operations.
|
||||
- regression test improved and more tests added.
|
||||
- file and directory structure extended.
|
||||
|
||||
* release 1.0.1:
|
||||
|
||||
- minor bug fixes
|
||||
|
||||
* release 1.0.0:
|
||||
|
||||
- corrected and improved documents
|
||||
- new product(XprMatrix, Vector) and operator*(XprMatrix, Vector)
|
||||
as well as product(XprMatrix<>, XprVector<>),
|
||||
- more regression tests
|
||||
- better intel compiler support
|
||||
- extended include directory structure
|
||||
|
||||
* release 0.9.0:
|
||||
|
||||
- the benchmark is delayed.
|
||||
- new function product(XprMatrix<>,XprMatrix<>) and operator*
|
||||
(XprMatrix<>,XprMatrix<>), therefore concating of mathematical
|
||||
expressions are better supported now.
|
||||
- Addendum to the LGPL, static linking is explicit allowed.
|
||||
- regression tests for element wise operations added.
|
||||
- docs FAQ enhanced.
|
||||
- new function diag(Matrix<>) added.
|
||||
- autoconf 2.5x ready.
|
||||
- default distribution is tar.bz2 now.
|
||||
- tvmet-doc-xxx.prm target removed, docs are inside the rpm
|
||||
package self.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
%%% Local IspellDict: "english"
|
9
tvmet-1.7.1/README
Normal file
9
tvmet-1.7.1/README
Normal file
@ -0,0 +1,9 @@
|
||||
This tiny vector and matrix template libary uses meta templates and
|
||||
template expressions to evaluate results at compile time - to make
|
||||
it fast for low order systems. Temporaries are kicked off.
|
||||
|
||||
Nevertheless, this isn't a matlab or octave in C++!
|
||||
|
||||
For more informations please have a look into docs/html/ or to the
|
||||
project web page at http://tvmet.sourceforge.net
|
||||
|
49
tvmet-1.7.1/THANKS
Normal file
49
tvmet-1.7.1/THANKS
Normal file
@ -0,0 +1,49 @@
|
||||
Thanks to:
|
||||
|
||||
- Alexei Sheplyakov reported a bug inside the matrix expressions
|
||||
using elementwise operations and others.
|
||||
|
||||
- Robi Carnecky for his report on success using MS VC 7.1 and
|
||||
reporting missing typename keyword inside CommaInitializer.h
|
||||
and others.
|
||||
|
||||
- Krzysiek Goj found a bug inside the swap functions and
|
||||
reported problems on calling functions in wrong namespace.
|
||||
|
||||
- Claudia Bertram for reporting a bug by printing a zero
|
||||
elements matrix.
|
||||
|
||||
- Julian Cummings for his help on supporting complex types and
|
||||
some other comments on tvmet.
|
||||
|
||||
- Alex V. Frolov found inconsistens on typepromotion used.
|
||||
|
||||
- David J. C. Beach, thanks! He checked the grammar and spelling
|
||||
of tvmet's documents. Further more, he gave me hints for
|
||||
any/all_elements and eval.
|
||||
|
||||
- David Sarrut for correction on the matrix column access bug.
|
||||
|
||||
- Holger Spiess, for his testing on real application (FEM), reporting
|
||||
problems and conversations.
|
||||
|
||||
- Erik Kruus, he found a bug inside tvmet.m4.
|
||||
|
||||
- George Schnurer for his suggestions and help concerning the licensing
|
||||
and the need to an addendum to it.
|
||||
|
||||
- Laurent Plagne, the author of the BTL, for his testing and comparing
|
||||
tvmet against other libs and others.
|
||||
|
||||
- Jörg Walter about using uBlas faster assuming alias free operations.
|
||||
Further more for his great conversation about benchmarking and others,
|
||||
thanks!
|
||||
|
||||
- Jörg Barfurth from de.compl.lang.iso-c++ for his help on instance
|
||||
problems with templates occoured on regressions test.
|
||||
|
||||
- Michael Kochetkov and Tom from comp.lang.c++ for help on namespace
|
||||
problems. Now I know more about Koenig lookup and the problems due
|
||||
too 8)
|
||||
|
||||
- Darin DeForest, he found a nasty bug inside the regression tests.
|
6945
tvmet-1.7.1/aclocal.m4
vendored
Normal file
6945
tvmet-1.7.1/aclocal.m4
vendored
Normal file
File diff suppressed because it is too large
Load Diff
3887
tvmet-1.7.1/benchmark/BTL-20030124.patch
Normal file
3887
tvmet-1.7.1/benchmark/BTL-20030124.patch
Normal file
File diff suppressed because it is too large
Load Diff
3
tvmet-1.7.1/benchmark/Makefile.am
Normal file
3
tvmet-1.7.1/benchmark/Makefile.am
Normal file
@ -0,0 +1,3 @@
|
||||
# $Id: Makefile.am,v 1.4 2003/12/04 19:18:09 opetzold Exp $
|
||||
|
||||
EXTRA_DIST = BTL-20030124.patch
|
338
tvmet-1.7.1/benchmark/Makefile.in
Normal file
338
tvmet-1.7.1/benchmark/Makefile.in
Normal file
@ -0,0 +1,338 @@
|
||||
# Makefile.in generated by automake 1.8.3 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# $Id: Makefile.am,v 1.4 2003/12/04 19:18:09 opetzold Exp $
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = ..
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = @INSTALL@
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
host_triplet = @host@
|
||||
subdir = benchmark
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/config/ac_c_long_long.m4 \
|
||||
$(top_srcdir)/config/ac_create_prefix_config_h.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_complex.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_complex_math1.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_complex_math2.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_ieee_math.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_mutable.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_namespaces.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_sysv_math.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_partial_specialization.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_typename.m4 \
|
||||
$(top_srcdir)/config/ac_set_compiler.m4 \
|
||||
$(top_srcdir)/config/op_doxygen_doc.m4 \
|
||||
$(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(mkdir_p)
|
||||
CONFIG_HEADER = $(top_builddir)/config/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CONFIG_CPPUNIT_FALSE = @CONFIG_CPPUNIT_FALSE@
|
||||
CONFIG_CPPUNIT_TRUE = @CONFIG_CPPUNIT_TRUE@
|
||||
CONFIG_DOC_FALSE = @CONFIG_DOC_FALSE@
|
||||
CONFIG_DOC_TRUE = @CONFIG_DOC_TRUE@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@
|
||||
CPPUNIT_CONFIG = @CPPUNIT_CONFIG@
|
||||
CPPUNIT_LIBS = @CPPUNIT_LIBS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CXX_DEBUG_FLAGS = @CXX_DEBUG_FLAGS@
|
||||
CXX_OPTIMIZE_FLAGS = @CXX_OPTIMIZE_FLAGS@
|
||||
CXX_WARN_FLAGS = @CXX_WARN_FLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DOXYGEN = @DOXYGEN@
|
||||
DOXYGEN_HAVE_DOT = @DOXYGEN_HAVE_DOT@
|
||||
ECHO = @ECHO@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
F77 = @F77@
|
||||
FFLAGS = @FFLAGS@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LATEX_BATCHMODE = @LATEX_BATCHMODE@
|
||||
LATEX_MODE = @LATEX_MODE@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
RANLIB = @RANLIB@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_F77 = @ac_ct_F77@
|
||||
ac_ct_RANLIB = @ac_ct_RANLIB@
|
||||
ac_ct_STRIP = @ac_ct_STRIP@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
|
||||
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
datadir = @datadir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
EXTRA_DIST = BTL-20030124.patch
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu benchmark/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu benchmark/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
distclean-libtool:
|
||||
-rm -f libtool
|
||||
uninstall-info-am:
|
||||
tags: TAGS
|
||||
TAGS:
|
||||
|
||||
ctags: CTAGS
|
||||
CTAGS:
|
||||
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkdir_p) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile
|
||||
installdirs:
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-libtool
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-man:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-info-am
|
||||
|
||||
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
|
||||
distclean distclean-generic distclean-libtool distdir dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-data install-data-am install-exec install-exec-am \
|
||||
install-info install-info-am install-man install-strip \
|
||||
installcheck installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-generic \
|
||||
mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
|
||||
uninstall-info-am
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
18
tvmet-1.7.1/config/ac_c_long_long.m4
Normal file
18
tvmet-1.7.1/config/ac_c_long_long.m4
Normal file
@ -0,0 +1,18 @@
|
||||
dnl $Id: ac_c_long_long.m4,v 1.2 2004/04/23 23:41:52 opetzold Exp $
|
||||
dnl
|
||||
dnl Provides a test for the existance of the long long int type and
|
||||
dnl defines HAVE_LONG_LONG if it is found.
|
||||
dnl
|
||||
|
||||
AC_DEFUN([AC_C_LONG_LONG],
|
||||
[AC_CACHE_CHECK(for long long int, ac_cv_c_long_long,
|
||||
[AC_LANG_PUSH([C++])
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
long long int i;
|
||||
]], [[]])],[ac_cv_c_long_long=yes],[ac_cv_c_long_long=no])
|
||||
AC_LANG_POP([C++])
|
||||
])
|
||||
if test "$ac_cv_c_long_long" = yes; then
|
||||
AC_DEFINE(HAVE_LONG_LONG,,[Define if the compiler supports the long_long type])
|
||||
fi
|
||||
])
|
107
tvmet-1.7.1/config/ac_create_prefix_config_h.m4
Normal file
107
tvmet-1.7.1/config/ac_create_prefix_config_h.m4
Normal file
@ -0,0 +1,107 @@
|
||||
dnl @synopsis AC_CREATE_PREFIX_CONFIG_H [(OUTPUT-HEADER [,PREFIX [,ORIG-HEADER]])]
|
||||
dnl
|
||||
dnl this is a new variant from ac_prefix_config_
|
||||
dnl this one will use a lowercase-prefix if
|
||||
dnl the config-define was starting with a lowercase-char, e.g.
|
||||
dnl #define const or #define restrict or #define off_t
|
||||
dnl (and this one can live in another directory, e.g. testpkg/config.h
|
||||
dnl therefore I decided to move the output-header to be the first arg)
|
||||
dnl
|
||||
dnl takes the usual config.h generated header file; looks for each of
|
||||
dnl the generated "#define SOMEDEF" lines, and prefixes the defined name
|
||||
dnl (ie. makes it "#define PREFIX_SOMEDEF". The result is written to
|
||||
dnl the output config.header file. The PREFIX is converted to uppercase
|
||||
dnl for the conversions.
|
||||
dnl
|
||||
dnl default OUTPUT-HEADER = $PACKAGE-config.h
|
||||
dnl default PREFIX = $PACKAGE
|
||||
dnl default ORIG-HEADER, derived from OUTPUT-HEADER
|
||||
dnl if OUTPUT-HEADER has a "/", use the basename
|
||||
dnl if OUTPUT-HEADER has a "-", use the section after it.
|
||||
dnl otherwise, just config.h
|
||||
dnl
|
||||
dnl In most cases, the configure.in will contain a line saying
|
||||
dnl AC_CONFIG_HEADER(config.h)
|
||||
dnl somewhere *before* AC_OUTPUT and a simple line saying
|
||||
dnl AC_PREFIX_CONFIG_HEADER
|
||||
dnl somewhere *after* AC_OUTPUT.
|
||||
dnl
|
||||
dnl example:
|
||||
dnl AC_INIT(config.h.in) # config.h.in as created by "autoheader"
|
||||
dnl AM_INIT_AUTOMAKE(testpkg, 0.1.1) # "#undef VERSION" and "PACKAGE"
|
||||
dnl AM_CONFIG_HEADER(config.h) # in config.h.in
|
||||
dnl AC_MEMORY_H # "#undef NEED_MEMORY_H"
|
||||
dnl AC_C_CONST_H # "#undef const"
|
||||
dnl AC_OUTPUT(Makefile) # creates the "config.h" now
|
||||
dnl AC_CREATE_PREFIX_CONFIG_H # creates "testpkg-config.h"
|
||||
dnl and the resulting "testpkg-config.h" contains lines like
|
||||
dnl #ifndef TESTPKG_VERSION
|
||||
dnl #define TESTPKG_VERSION "0.1.1"
|
||||
dnl #endif
|
||||
dnl #ifndef TESTPKG_NEED_MEMORY_H
|
||||
dnl #define TESTPKG_NEED_MEMORY_H 1
|
||||
dnl #endif
|
||||
dnl #ifndef _testpkg_const
|
||||
dnl #define _testpkg_const const
|
||||
dnl #endif
|
||||
dnl
|
||||
dnl and this "testpkg-config.h" can be installed along with other
|
||||
dnl header-files, which is most convenient when creating a shared
|
||||
dnl library (that has some headers) where some functionality is
|
||||
dnl dependent on the OS-features detected at compile-time. No
|
||||
dnl need to invent some "testpkg-confdefs.h.in" manually. :-)
|
||||
dnl
|
||||
dnl @version $Id: ac_create_prefix_config_h.m4,v 1.1.1.1 2003/02/08 19:32:50 opetzold Exp $
|
||||
dnl @author Guido Draheim <guidod@gmx.de>
|
||||
|
||||
AC_DEFUN([AC_CREATE_PREFIX_CONFIG_H],
|
||||
[changequote({, })dnl
|
||||
ac_prefix_conf_OUT=`echo ifelse($1, , ${PACKAGE_TARNAME}-config.h, $1)`
|
||||
ac_prefix_conf_DEF=`echo _$ac_prefix_conf_OUT | sed -e 'y:abcdefghijklmnopqrstuvwxyz./,-:ABCDEFGHIJKLMNOPQRSTUVWXYZ____:'`
|
||||
ac_prefix_conf_PKG=`echo ifelse($2, , ${PACKAGE_TARNAME}, $2)`
|
||||
ac_prefix_conf_LOW=`echo _$ac_prefix_conf_PKG | sed -e 'y:ABCDEFGHIJKLMNOPQRSTUVWXYZ-:abcdefghijklmnopqrstuvwxyz_:'`
|
||||
ac_prefix_conf_UPP=`echo $ac_prefix_conf_PKG | sed -e 'y:abcdefghijklmnopqrstuvwxyz-:ABCDEFGHIJKLMNOPQRSTUVWXYZ_:' -e '/^[0-9]/s/^/_/'`
|
||||
ac_prefix_conf_INP=`echo ifelse($3, , _, $3)`
|
||||
if test "$ac_prefix_conf_INP" = "_"; then
|
||||
case $ac_prefix_conf_OUT in
|
||||
*/*) ac_prefix_conf_INP=`basename $ac_prefix_conf_OUT`
|
||||
;;
|
||||
*-*) ac_prefix_conf_INP=`echo $ac_prefix_conf_OUT | sed -e 's/[a-zA-Z0-9_]*-//'`
|
||||
;;
|
||||
*) ac_prefix_conf_INP=config.h
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
changequote([, ])dnl
|
||||
if test -z "$ac_prefix_conf_PKG" ; then
|
||||
AC_MSG_ERROR([no prefix for _PREFIX_PKG_CONFIG_H])
|
||||
else
|
||||
AC_MSG_RESULT(creating $ac_prefix_conf_OUT - prefix $ac_prefix_conf_UPP for $ac_prefix_conf_INP defines)
|
||||
if test -f $ac_prefix_conf_INP ; then
|
||||
AS_DIRNAME([/* automatically generated */], $ac_prefix_conf_OUT)
|
||||
changequote({, })dnl
|
||||
echo '#ifndef '$ac_prefix_conf_DEF >$ac_prefix_conf_OUT
|
||||
echo '#define '$ac_prefix_conf_DEF' 1' >>$ac_prefix_conf_OUT
|
||||
echo ' ' >>$ac_prefix_conf_OUT
|
||||
echo /'*' $ac_prefix_conf_OUT. Generated automatically at end of configure. '*'/ >>$ac_prefix_conf_OUT
|
||||
|
||||
echo 's/#undef *\([A-Z_]\)/#undef '$ac_prefix_conf_UPP'_\1/' >conftest.sed
|
||||
echo 's/#undef *\([a-z]\)/#undef '$ac_prefix_conf_LOW'_\1/' >>conftest.sed
|
||||
echo 's/#define *\([A-Z_][A-Za-z0-9_]*\)\(.*\)/#ifndef '$ac_prefix_conf_UPP"_\\1 \\" >>conftest.sed
|
||||
echo '#define '$ac_prefix_conf_UPP"_\\1 \\2 \\" >>conftest.sed
|
||||
echo '#endif/' >>conftest.sed
|
||||
echo 's/#define *\([a-z][A-Za-z0-9_]*\)\(.*\)/#ifndef '$ac_prefix_conf_LOW"_\\1 \\" >>conftest.sed
|
||||
echo '#define '$ac_prefix_conf_LOW"_\\1 \\2 \\" >>conftest.sed
|
||||
echo '#endif/' >>conftest.sed
|
||||
sed -f conftest.sed $ac_prefix_conf_INP >>$ac_prefix_conf_OUT
|
||||
echo ' ' >>$ac_prefix_conf_OUT
|
||||
echo '/*' $ac_prefix_conf_DEF '*/' >>$ac_prefix_conf_OUT
|
||||
echo '#endif' >>$ac_prefix_conf_OUT
|
||||
changequote([, ])dnl
|
||||
else
|
||||
AC_MSG_ERROR([input file $ac_prefix_conf_IN does not exist, dnl
|
||||
skip generating $ac_prefix_conf_OUT])
|
||||
fi
|
||||
rm -f conftest.*
|
||||
fi])
|
||||
|
21
tvmet-1.7.1/config/ac_cxx_have_complex.m4
Normal file
21
tvmet-1.7.1/config/ac_cxx_have_complex.m4
Normal file
@ -0,0 +1,21 @@
|
||||
dnl $Id: ac_cxx_have_complex.m4,v 1.3 2004/04/23 23:41:52 opetzold Exp $
|
||||
dnl
|
||||
dnl Available from the GNU Autoconf Macro Archive at:
|
||||
dnl http://www.gnu.org/software/ac-archive/htmldoc/ac_cxx_have_complex.html
|
||||
dnl
|
||||
|
||||
AC_DEFUN([AC_CXX_HAVE_COMPLEX],
|
||||
[AC_CACHE_CHECK(whether the compiler has complex<T>,
|
||||
ac_cv_cxx_have_complex,
|
||||
[AC_REQUIRE([AC_CXX_NAMESPACES])
|
||||
AC_LANG_PUSH([C++])
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <complex>
|
||||
#ifdef HAVE_NAMESPACES
|
||||
using namespace std;
|
||||
#endif]], [[complex<float> a; complex<double> b; return 0;]])],[ac_cv_cxx_have_complex=yes],[ac_cv_cxx_have_complex=no])
|
||||
AC_LANG_POP([C++])
|
||||
])
|
||||
if test "$ac_cv_cxx_have_complex" = yes; then
|
||||
AC_DEFINE(HAVE_COMPLEX,,[define if the compiler has complex<T>])
|
||||
fi
|
||||
])
|
27
tvmet-1.7.1/config/ac_cxx_have_complex_math1.m4
Normal file
27
tvmet-1.7.1/config/ac_cxx_have_complex_math1.m4
Normal file
@ -0,0 +1,27 @@
|
||||
dnl $Id: ac_cxx_have_complex_math1.m4,v 1.2 2004/04/23 23:41:52 opetzold Exp $
|
||||
dnl
|
||||
dnl Available from the GNU Autoconf Macro Archive at:
|
||||
dnl http://www.gnu.org/software/ac-archive/htmldoc/ac_cxx_have_complex_math1.html
|
||||
dnl
|
||||
|
||||
AC_DEFUN([AC_CXX_HAVE_COMPLEX_MATH1],
|
||||
[AC_CACHE_CHECK(whether the compiler has complex math functions,
|
||||
ac_cv_cxx_have_complex_math1,
|
||||
[AC_REQUIRE([AC_CXX_NAMESPACES])
|
||||
AC_LANG_PUSH([C++])
|
||||
ac_save_LIBS="$LIBS"
|
||||
LIBS="$LIBS -lm"
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <complex>
|
||||
#ifdef HAVE_NAMESPACES
|
||||
using namespace std;
|
||||
#endif]], [[complex<double> x(1.0, 1.0), y(1.0, 1.0);
|
||||
cos(x); cosh(x); exp(x); log(x); pow(x,1); pow(x,double(2.0));
|
||||
pow(x, y); pow(double(2.0), x); sin(x); sinh(x); sqrt(x); tan(x); tanh(x);
|
||||
return 0;]])],[ac_cv_cxx_have_complex_math1=yes],[ac_cv_cxx_have_complex_math1=no])
|
||||
LIBS="$ac_save_LIBS"
|
||||
AC_LANG_POP([C++])
|
||||
])
|
||||
if test "$ac_cv_cxx_have_complex_math1" = yes; then
|
||||
AC_DEFINE(HAVE_COMPLEX_MATH1,,[define if the compiler has complex math functions])
|
||||
fi
|
||||
])
|
26
tvmet-1.7.1/config/ac_cxx_have_complex_math2.m4
Normal file
26
tvmet-1.7.1/config/ac_cxx_have_complex_math2.m4
Normal file
@ -0,0 +1,26 @@
|
||||
dnl $Id: ac_cxx_have_complex_math2.m4,v 1.2 2004/04/23 23:41:52 opetzold Exp $
|
||||
dnl
|
||||
dnl Available from the GNU Autoconf Macro Archive at:
|
||||
dnl http://www.gnu.org/software/ac-archive/htmldoc/ac_cxx_have_complex_math2.html
|
||||
dnl
|
||||
|
||||
AC_DEFUN([AC_CXX_HAVE_COMPLEX_MATH2],
|
||||
[AC_CACHE_CHECK(whether the compiler has more complex math functions,
|
||||
ac_cv_cxx_have_complex_math2,
|
||||
[AC_REQUIRE([AC_CXX_NAMESPACES])
|
||||
AC_LANG_PUSH([C++])
|
||||
ac_save_LIBS="$LIBS"
|
||||
LIBS="$LIBS -lm"
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <complex>
|
||||
#ifdef HAVE_NAMESPACES
|
||||
using namespace std;
|
||||
#endif]], [[complex<double> x(1.0, 1.0), y(1.0, 1.0);
|
||||
acos(x); asin(x); atan(x); atan2(x,y); atan2(x, double(3.0));
|
||||
atan2(double(3.0), x); log10(x); return 0;]])],[ac_cv_cxx_have_complex_math2=yes],[ac_cv_cxx_have_complex_math2=no])
|
||||
LIBS="$ac_save_LIBS"
|
||||
AC_LANG_POP([C++])
|
||||
])
|
||||
if test "$ac_cv_cxx_have_complex_math2" = yes; then
|
||||
AC_DEFINE(HAVE_COMPLEX_MATH2,,[define if the compiler has more complex math functions])
|
||||
fi
|
||||
])
|
42
tvmet-1.7.1/config/ac_cxx_have_ieee_math.m4
Normal file
42
tvmet-1.7.1/config/ac_cxx_have_ieee_math.m4
Normal file
@ -0,0 +1,42 @@
|
||||
dnl $Id: ac_cxx_have_ieee_math.m4,v 1.2 2004/04/23 23:41:52 opetzold Exp $
|
||||
dnl
|
||||
dnl Check for compiler support for double IEEE math, if there define
|
||||
dnl HAVE_IEEE_MATH.
|
||||
dnl
|
||||
|
||||
AC_DEFUN([AC_CXX_HAVE_IEEE_MATH],
|
||||
[AC_CACHE_CHECK(for IEEE math library,
|
||||
ac_cv_cxx_have_ieee_math,
|
||||
[AC_LANG_PUSH([C++])
|
||||
ac_save_LIBS="$LIBS"
|
||||
LIBS="$LIBS -lm"
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
||||
#ifndef _ALL_SOURCE
|
||||
#define _ALL_SOURCE
|
||||
#endif
|
||||
#ifndef _XOPEN_SOURCE
|
||||
#define _XOPEN_SOURCE
|
||||
#endif
|
||||
#ifndef _XOPEN_SOURCE_EXTENDED
|
||||
#define _XOPEN_SOURCE_EXTENDED 1
|
||||
#endif
|
||||
#include <cmath>]], [[double x = 1.0; double y = 1.0;
|
||||
acosh(x); asinh(x); atanh(x);
|
||||
expm1(x);
|
||||
erf(x); erfc(x);
|
||||
// finite(x);
|
||||
isnan(x);
|
||||
j0(x); j1(x);
|
||||
lgamma(x);
|
||||
logb(x); log1p(x);
|
||||
rint(x);
|
||||
// trunc(x);
|
||||
y0(x); y1(x);
|
||||
return 0;]])],[ac_cv_cxx_have_ieee_math=yes],[ac_cv_cxx_have_ieee_math=no])
|
||||
LIBS="$ac_save_LIBS"
|
||||
AC_LANG_POP([C++])
|
||||
])
|
||||
if test "$ac_cv_cxx_have_ieee_math" = yes; then
|
||||
AC_DEFINE(HAVE_IEEE_MATH,,[Define if the compiler supports IEEE math library])
|
||||
fi
|
||||
])
|
23
tvmet-1.7.1/config/ac_cxx_have_mutable.m4
Normal file
23
tvmet-1.7.1/config/ac_cxx_have_mutable.m4
Normal file
@ -0,0 +1,23 @@
|
||||
dnl $Id: ac_cxx_have_mutable.m4,v 1.2 2004/04/23 23:41:52 opetzold Exp $
|
||||
dnl
|
||||
dnl If the compiler allows modifying data members of classes flagged with
|
||||
dnl the mutable keyword even in const objects, define HAVE_MUTABLE.
|
||||
dnl
|
||||
|
||||
AC_DEFUN([AC_CXX_HAVE_MUTABLE],
|
||||
[AC_CACHE_CHECK(for mutable,
|
||||
ac_cv_cxx_mutable,
|
||||
[AC_LANG_PUSH([C++])
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
class Foo {
|
||||
mutable int i;
|
||||
public:
|
||||
int bar (int n) const { i = n; return i; }
|
||||
};
|
||||
]], [[Foo foo; return foo.bar(1);]])],[ac_cv_cxx_mutable=yes],[ac_cv_cxx_mutable=no])
|
||||
AC_LANG_POP([C++])
|
||||
])
|
||||
if test "$ac_cv_cxx_mutable" = yes; then
|
||||
AC_DEFINE(HAVE_MUTABLE,,[Define if the compiler supports the mutable keyword])
|
||||
fi
|
||||
])
|
17
tvmet-1.7.1/config/ac_cxx_have_namespaces.m4
Normal file
17
tvmet-1.7.1/config/ac_cxx_have_namespaces.m4
Normal file
@ -0,0 +1,17 @@
|
||||
dnl $Id: ac_cxx_have_namespaces.m4,v 1.2 2004/04/23 23:41:52 opetzold Exp $
|
||||
dnl
|
||||
dnl If the compiler can prevent names clashes using namespaces, define
|
||||
dnl HAVE_NAMESPACES.
|
||||
dnl
|
||||
|
||||
AC_DEFUN([AC_CXX_NAMESPACES],
|
||||
[AC_CACHE_CHECK(for namespaces support,
|
||||
ac_cv_cxx_namespaces,
|
||||
[AC_LANG_PUSH([C++])
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[namespace Outer { namespace Inner { int i = 0; }}]], [[using namespace Outer::Inner; return i;]])],[ac_cv_cxx_namespaces=yes],[ac_cv_cxx_namespaces=no])
|
||||
AC_LANG_POP([C++])
|
||||
])
|
||||
if test "$ac_cv_cxx_namespaces" = yes; then
|
||||
AC_DEFINE(HAVE_NAMESPACES,,[Define if the compiler implements namespaces])
|
||||
fi
|
||||
])
|
46
tvmet-1.7.1/config/ac_cxx_have_sysv_math.m4
Normal file
46
tvmet-1.7.1/config/ac_cxx_have_sysv_math.m4
Normal file
@ -0,0 +1,46 @@
|
||||
dnl $Id: ac_cxx_have_sysv_math.m4,v 1.2 2004/04/23 23:41:52 opetzold Exp $
|
||||
dnl
|
||||
dnl Check for compiler support for double SYSV math, if there define
|
||||
dnl HAVE_SYSV_MATH.
|
||||
dnl
|
||||
|
||||
AC_DEFUN([AC_CXX_HAVE_SYSV_MATH],
|
||||
[AC_CACHE_CHECK(for SYSV math library,
|
||||
ac_cv_cxx_have_sysv_math,
|
||||
[AC_LANG_PUSH([C++])
|
||||
ac_save_LIBS="$LIBS"
|
||||
LIBS="$LIBS -lm"
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
||||
#ifndef _ALL_SOURCE
|
||||
#define _ALL_SOURCE
|
||||
#endif
|
||||
#ifndef _XOPEN_SOURCE
|
||||
#define _XOPEN_SOURCE
|
||||
#endif
|
||||
#ifndef _XOPEN_SOURCE_EXTENDED
|
||||
#define _XOPEN_SOURCE_EXTENDED 1
|
||||
#endif
|
||||
#include <cmath>]], [[double x = 1.0; double y = 1.0;
|
||||
_class(x);
|
||||
ilogb(x);
|
||||
itrunc(x);
|
||||
nearest(x);
|
||||
rsqrt(x);
|
||||
uitrunc(x);
|
||||
|
||||
copysign(x,y);
|
||||
drem(x,y);
|
||||
fmod(x,y);
|
||||
hypot(x,y);
|
||||
nextafter(x,y);
|
||||
remainder(x,y);
|
||||
scalb(x,y);
|
||||
unordered(x,y);
|
||||
return 0;]])],[ac_cv_cxx_have_sysv_math=yes],[ac_cv_cxx_have_sysv_math=no])
|
||||
LIBS="$ac_save_LIBS"
|
||||
AC_LANG_POP([C++])
|
||||
])
|
||||
if test "$ac_cv_cxx_have_sysv_math" = yes; then
|
||||
AC_DEFINE(HAVE_SYSV_MATH,,[Define if the compiler supports SYSV math library])
|
||||
fi
|
||||
])
|
21
tvmet-1.7.1/config/ac_cxx_partial_specialization.m4
Normal file
21
tvmet-1.7.1/config/ac_cxx_partial_specialization.m4
Normal file
@ -0,0 +1,21 @@
|
||||
dnl $Id: ac_cxx_partial_specialization.m4,v 1.2 2004/04/23 23:41:52 opetzold Exp $
|
||||
dnl
|
||||
dnl Check if the compiler supports partial template specialization,
|
||||
dnl on support define HAVE_PARTIAL_SPECIALIZATION.
|
||||
dnl
|
||||
|
||||
AC_DEFUN([AC_CXX_PARTIAL_SPECIALIZATION],
|
||||
[AC_CACHE_CHECK(whether the compiler supports partial specialization,
|
||||
ac_cv_cxx_partial_specialization,
|
||||
[AC_LANG_PUSH([C++])
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
template<class T, int N> class X { public : enum { e = 0 }; };
|
||||
template<int N> class X<double, N> { public : enum { e = 1 }; };
|
||||
template<class T> class X<T, 2> { public : enum { e = 2 }; };
|
||||
]], [[return (X<int,3>::e == 0) && (X<double,3>::e == 1) && (X<float,2>::e == 2);]])],[ac_cv_cxx_partial_specialization=yes],[ac_cv_cxx_partial_specialization=no])
|
||||
AC_LANG_POP([C++])
|
||||
])
|
||||
if test "$ac_cv_cxx_partial_specialization" = yes; then
|
||||
AC_DEFINE(HAVE_PARTIAL_SPECIALIZATION,,[Define if the compiler supports partial specialization])
|
||||
fi
|
||||
])
|
16
tvmet-1.7.1/config/ac_cxx_typename.m4
Normal file
16
tvmet-1.7.1/config/ac_cxx_typename.m4
Normal file
@ -0,0 +1,16 @@
|
||||
dnl $Id: ac_cxx_typename.m4,v 1.2 2004/04/23 23:41:52 opetzold Exp $
|
||||
dnl
|
||||
dnl Check compiler support for "typename" keyword, define HAVE_TYPENAME if there.
|
||||
dnl
|
||||
|
||||
AC_DEFUN([AC_CXX_TYPENAME],
|
||||
[AC_CACHE_CHECK(for typename,
|
||||
ac_cv_cxx_typename,
|
||||
[ AC_LANG_PUSH([C++])
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[template<typename T>class X {public:X(){}};]], [[X<float> x; return 0;]])],[ac_cv_cxx_typename=yes],[ac_cv_cxx_typename=no])
|
||||
AC_LANG_POP([C++])
|
||||
])
|
||||
if test "$ac_cv_cxx_typename" = yes; then
|
||||
AC_DEFINE(HAVE_TYPENAME,,[Define if the compiler recognizes typename])
|
||||
fi
|
||||
])
|
18
tvmet-1.7.1/config/ac_prog_cxx_intel.m4
Normal file
18
tvmet-1.7.1/config/ac_prog_cxx_intel.m4
Normal file
@ -0,0 +1,18 @@
|
||||
dnl $Id: ac_prog_cxx_intel.m4,v 1.2 2004/04/23 23:41:52 opetzold Exp $
|
||||
dnl
|
||||
dnl Check for Intel C++ compiler
|
||||
dnl
|
||||
|
||||
AC_DEFUN([AC_PROG_CXX_INTEL],
|
||||
[AC_CACHE_CHECK(whether we are using INTEL C++, INTEL_CXX,
|
||||
[cat > conftest.c <<EOF
|
||||
# if defined(__ICL) || defined(__ICC)
|
||||
yes;
|
||||
#endif
|
||||
EOF
|
||||
if AC_TRY_COMMAND(${CXX} -E conftest.c) | egrep yes >/dev/null 2>&1; then
|
||||
INTEL_CXX=yes
|
||||
compiler=intelcc
|
||||
else
|
||||
INTEL_CXX=no
|
||||
fi])])
|
19
tvmet-1.7.1/config/ac_prog_cxx_kai.m4
Normal file
19
tvmet-1.7.1/config/ac_prog_cxx_kai.m4
Normal file
@ -0,0 +1,19 @@
|
||||
dnl $Id: ac_prog_cxx_kai.m4,v 1.2 2004/04/23 23:41:52 opetzold Exp $
|
||||
dnl
|
||||
dnl Check for KAI C++ compiler
|
||||
dnl
|
||||
|
||||
AC_DEFUN([AC_PROG_CXX_KAI],
|
||||
[AC_CACHE_CHECK(whether we are using KAI C++,
|
||||
KAI_CXX,
|
||||
[cat > conftest.c <<EOF
|
||||
# if defined(__KCC)
|
||||
yes;
|
||||
#endif
|
||||
EOF
|
||||
if AC_TRY_COMMAND(${CXX} -E conftest.c) | egrep yes >/dev/null 2>&1; then
|
||||
KAI_CXX=yes
|
||||
compiler=kaicc
|
||||
else
|
||||
KAI_CXX=no
|
||||
fi])])
|
18
tvmet-1.7.1/config/ac_prog_cxx_pgi.m4
Normal file
18
tvmet-1.7.1/config/ac_prog_cxx_pgi.m4
Normal file
@ -0,0 +1,18 @@
|
||||
dnl $Id: ac_prog_cxx_pgi.m4,v 1.2 2004/04/23 23:41:52 opetzold Exp $
|
||||
dnl
|
||||
dnl Portland Group Incorporated C++ compiler
|
||||
dnl
|
||||
|
||||
AC_DEFUN([AC_PROG_CXX_PGI],
|
||||
[AC_CACHE_CHECK(whether we are using PGI C++, PGI_CXX,
|
||||
[cat > conftest.c <<EOF
|
||||
# if defined(__PGI)
|
||||
yes;
|
||||
#endif
|
||||
EOF
|
||||
if AC_TRY_COMMAND(${CXX} -E conftest.c) | egrep yes >/dev/null 2>&1; then
|
||||
PGI_CXX=yes
|
||||
compiler=pgicc
|
||||
else
|
||||
PGI_CXX=no
|
||||
fi])])
|
21
tvmet-1.7.1/config/ac_set_compiler.m4
Normal file
21
tvmet-1.7.1/config/ac_set_compiler.m4
Normal file
@ -0,0 +1,21 @@
|
||||
dnl $Id: ac_set_compiler.m4,v 1.2 2004/04/23 23:41:52 opetzold Exp $
|
||||
dnl
|
||||
dnl AC_SET_COMPILER: borrowed from blitz++
|
||||
dnl
|
||||
|
||||
AC_DEFUN([AC_SET_COMPILER],
|
||||
[cxxwith=`echo $1 | sed -e 's/ /@/'`
|
||||
case "$cxxwith" in
|
||||
*:*@*) # Full initialization syntax
|
||||
CXX=`echo "$cxxwith" | sed -n -e 's/.*:\(.*\)@.*/\1/p'`
|
||||
CXXFLAGS=`echo "$cxxwith" | sed -n -e 's/.*:.*@\(.*\)/\1/p'`
|
||||
;;
|
||||
*:*) # Simple initialization syntax
|
||||
CXX=`echo "$cxxwith" | sed -n -e 's/.*:\(.*\)/\1/p'`
|
||||
CXXFLAGS=$3
|
||||
;;
|
||||
*) # Default values
|
||||
CXX=$2
|
||||
CXXFLAGS=$3
|
||||
;;
|
||||
esac])
|
1456
tvmet-1.7.1/config/config.guess
vendored
Executable file
1456
tvmet-1.7.1/config/config.guess
vendored
Executable file
File diff suppressed because it is too large
Load Diff
126
tvmet-1.7.1/config/config.h.in
Normal file
126
tvmet-1.7.1/config/config.h.in
Normal file
@ -0,0 +1,126 @@
|
||||
/* config/config.h.in. Generated from configure.ac by autoheader. */
|
||||
|
||||
/* define if the compiler has complex<T> */
|
||||
#undef HAVE_COMPLEX
|
||||
|
||||
/* define if the compiler has complex math functions */
|
||||
#undef HAVE_COMPLEX_MATH1
|
||||
|
||||
/* define if the compiler has more complex math functions */
|
||||
#undef HAVE_COMPLEX_MATH2
|
||||
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
#undef HAVE_DLFCN_H
|
||||
|
||||
/* Define to 1 if you have the `floor' function. */
|
||||
#undef HAVE_FLOOR
|
||||
|
||||
/* Define if the compiler supports IEEE math library */
|
||||
#undef HAVE_IEEE_MATH
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#undef HAVE_INTTYPES_H
|
||||
|
||||
/* Define to 1 if you have the `dl' library (-ldl). */
|
||||
#undef HAVE_LIBDL
|
||||
|
||||
/* Define to 1 if long double works and has more range or precision than
|
||||
double. */
|
||||
#undef HAVE_LONG_DOUBLE
|
||||
|
||||
/* Define if the compiler supports the long_long type */
|
||||
#undef HAVE_LONG_LONG
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#undef HAVE_MEMORY_H
|
||||
|
||||
/* Define if the compiler supports the mutable keyword */
|
||||
#undef HAVE_MUTABLE
|
||||
|
||||
/* Define if the compiler implements namespaces */
|
||||
#undef HAVE_NAMESPACES
|
||||
|
||||
/* Define if the compiler supports partial specialization */
|
||||
#undef HAVE_PARTIAL_SPECIALIZATION
|
||||
|
||||
/* Define to 1 if you have the `pow' function. */
|
||||
#undef HAVE_POW
|
||||
|
||||
/* Define to 1 if you have the `rint' function. */
|
||||
#undef HAVE_RINT
|
||||
|
||||
/* Define to 1 if you have the `sqrt' function. */
|
||||
#undef HAVE_SQRT
|
||||
|
||||
/* Define to 1 if stdbool.h conforms to C99. */
|
||||
#undef HAVE_STDBOOL_H
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#undef HAVE_STDINT_H
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#undef HAVE_STDLIB_H
|
||||
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#undef HAVE_STRINGS_H
|
||||
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#undef HAVE_STRING_H
|
||||
|
||||
/* Define if the compiler supports SYSV math library */
|
||||
#undef HAVE_SYSV_MATH
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#undef HAVE_SYS_STAT_H
|
||||
|
||||
/* Define to 1 if you have the <sys/time.h> header file. */
|
||||
#undef HAVE_SYS_TIME_H
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#undef HAVE_SYS_TYPES_H
|
||||
|
||||
/* Define if the compiler recognizes typename */
|
||||
#undef HAVE_TYPENAME
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#undef HAVE_UNISTD_H
|
||||
|
||||
/* Define to 1 if the system has the type `_Bool'. */
|
||||
#undef HAVE__BOOL
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#undef PACKAGE_BUGREPORT
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#undef PACKAGE_NAME
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#undef PACKAGE_STRING
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#undef PACKAGE_TARNAME
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#undef PACKAGE_VERSION
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#undef STDC_HEADERS
|
||||
|
||||
/* Define to 1 if your <sys/time.h> declares `struct tm'. */
|
||||
#undef TM_IN_SYS_TIME
|
||||
|
||||
/* Define to empty if `const' does not conform to ANSI C. */
|
||||
#undef const
|
||||
|
||||
/* Define to `__inline__' or `__inline' if that's what the C compiler
|
||||
calls it, or to nothing if 'inline' is not supported under any name. */
|
||||
#ifndef __cplusplus
|
||||
#undef inline
|
||||
#endif
|
||||
|
||||
/* Define to equivalent of C99 restrict keyword, or to nothing if this is not
|
||||
supported. Do not define if restrict is supported directly. */
|
||||
#undef restrict
|
||||
|
||||
/* Define to `unsigned' if <sys/types.h> does not define. */
|
||||
#undef size_t
|
1549
tvmet-1.7.1/config/config.sub
vendored
Executable file
1549
tvmet-1.7.1/config/config.sub
vendored
Executable file
File diff suppressed because it is too large
Load Diff
520
tvmet-1.7.1/config/depcomp
Executable file
520
tvmet-1.7.1/config/depcomp
Executable file
@ -0,0 +1,520 @@
|
||||
#! /bin/sh
|
||||
# depcomp - compile a program generating dependencies as side-effects
|
||||
|
||||
scriptversion=2003-11-08.23
|
||||
|
||||
# Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
|
||||
|
||||
case $1 in
|
||||
'')
|
||||
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
|
||||
exit 1;
|
||||
;;
|
||||
-h | --h*)
|
||||
cat <<\EOF
|
||||
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
|
||||
|
||||
Run PROGRAMS ARGS to compile a file, generating dependencies
|
||||
as side-effects.
|
||||
|
||||
Environment variables:
|
||||
depmode Dependency tracking mode.
|
||||
source Source file read by `PROGRAMS ARGS'.
|
||||
object Object file output by `PROGRAMS ARGS'.
|
||||
depfile Dependency file to output.
|
||||
tmpdepfile Temporary file to use when outputing dependencies.
|
||||
libtool Whether libtool is used (yes/no).
|
||||
|
||||
Report bugs to <bug-automake@gnu.org>.
|
||||
EOF
|
||||
exit 0
|
||||
;;
|
||||
-v | --v*)
|
||||
echo "depcomp $scriptversion"
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
|
||||
echo "depcomp: Variables source, object and depmode must be set" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
# `libtool' can also be set to `yes' or `no'.
|
||||
|
||||
if test -z "$depfile"; then
|
||||
base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
|
||||
dir=`echo "$object" | sed 's,/.*$,/,'`
|
||||
if test "$dir" = "$object"; then
|
||||
dir=
|
||||
fi
|
||||
# FIXME: should be _deps on DOS.
|
||||
depfile="$dir.deps/$base"
|
||||
fi
|
||||
|
||||
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
|
||||
|
||||
rm -f "$tmpdepfile"
|
||||
|
||||
# Some modes work just like other modes, but use different flags. We
|
||||
# parameterize here, but still list the modes in the big case below,
|
||||
# to make depend.m4 easier to write. Note that we *cannot* use a case
|
||||
# here, because this file can only contain one case statement.
|
||||
if test "$depmode" = hp; then
|
||||
# HP compiler uses -M and no extra arg.
|
||||
gccflag=-M
|
||||
depmode=gcc
|
||||
fi
|
||||
|
||||
if test "$depmode" = dashXmstdout; then
|
||||
# This is just like dashmstdout with a different argument.
|
||||
dashmflag=-xM
|
||||
depmode=dashmstdout
|
||||
fi
|
||||
|
||||
case "$depmode" in
|
||||
gcc3)
|
||||
## gcc 3 implements dependency tracking that does exactly what
|
||||
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
|
||||
## it if -MD -MP comes after the -MF stuff. Hmm.
|
||||
"$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
mv "$tmpdepfile" "$depfile"
|
||||
;;
|
||||
|
||||
gcc)
|
||||
## There are various ways to get dependency output from gcc. Here's
|
||||
## why we pick this rather obscure method:
|
||||
## - Don't want to use -MD because we'd like the dependencies to end
|
||||
## up in a subdir. Having to rename by hand is ugly.
|
||||
## (We might end up doing this anyway to support other compilers.)
|
||||
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
|
||||
## -MM, not -M (despite what the docs say).
|
||||
## - Using -M directly means running the compiler twice (even worse
|
||||
## than renaming).
|
||||
if test -z "$gccflag"; then
|
||||
gccflag=-MD,
|
||||
fi
|
||||
"$@" -Wp,"$gccflag$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
|
||||
## The second -e expression handles DOS-style file names with drive letters.
|
||||
sed -e 's/^[^:]*: / /' \
|
||||
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
|
||||
## This next piece of magic avoids the `deleted header file' problem.
|
||||
## The problem is that when a header file which appears in a .P file
|
||||
## is deleted, the dependency causes make to die (because there is
|
||||
## typically no way to rebuild the header). We avoid this by adding
|
||||
## dummy dependencies for each header file. Too bad gcc doesn't do
|
||||
## this for us directly.
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" |
|
||||
## Some versions of gcc put a space before the `:'. On the theory
|
||||
## that the space means something, we add a space to the output as
|
||||
## well.
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
hp)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
sgi)
|
||||
if test "$libtool" = yes; then
|
||||
"$@" "-Wp,-MDupdate,$tmpdepfile"
|
||||
else
|
||||
"$@" -MDupdate "$tmpdepfile"
|
||||
fi
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
|
||||
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
|
||||
echo "$object : \\" > "$depfile"
|
||||
|
||||
# Clip off the initial element (the dependent). Don't try to be
|
||||
# clever and replace this with sed code, as IRIX sed won't handle
|
||||
# lines with more than a fixed number of characters (4096 in
|
||||
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
|
||||
# the IRIX cc adds comments like `#:fec' to the end of the
|
||||
# dependency line.
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" \
|
||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
|
||||
tr '
|
||||
' ' ' >> $depfile
|
||||
echo >> $depfile
|
||||
|
||||
# The second pass generates a dummy entry for each header file.
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" \
|
||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
|
||||
>> $depfile
|
||||
else
|
||||
# The sourcefile does not contain any dependencies, so just
|
||||
# store a dummy comment line, to avoid errors with the Makefile
|
||||
# "include basename.Plo" scheme.
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
aix)
|
||||
# The C for AIX Compiler uses -M and outputs the dependencies
|
||||
# in a .u file. In older versions, this file always lives in the
|
||||
# current directory. Also, the AIX compiler puts `$object:' at the
|
||||
# start of each line; $object doesn't have directory information.
|
||||
# Version 6 uses the directory in both cases.
|
||||
stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
|
||||
tmpdepfile="$stripped.u"
|
||||
if test "$libtool" = yes; then
|
||||
"$@" -Wc,-M
|
||||
else
|
||||
"$@" -M
|
||||
fi
|
||||
stat=$?
|
||||
|
||||
if test -f "$tmpdepfile"; then :
|
||||
else
|
||||
stripped=`echo "$stripped" | sed 's,^.*/,,'`
|
||||
tmpdepfile="$stripped.u"
|
||||
fi
|
||||
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
if test -f "$tmpdepfile"; then
|
||||
outname="$stripped.o"
|
||||
# Each line is of the form `foo.o: dependent.h'.
|
||||
# Do two passes, one to just change these to
|
||||
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||
sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
|
||||
sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
|
||||
else
|
||||
# The sourcefile does not contain any dependencies, so just
|
||||
# store a dummy comment line, to avoid errors with the Makefile
|
||||
# "include basename.Plo" scheme.
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
icc)
|
||||
# Intel's C compiler understands `-MD -MF file'. However on
|
||||
# icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
|
||||
# ICC 7.0 will fill foo.d with something like
|
||||
# foo.o: sub/foo.c
|
||||
# foo.o: sub/foo.h
|
||||
# which is wrong. We want:
|
||||
# sub/foo.o: sub/foo.c
|
||||
# sub/foo.o: sub/foo.h
|
||||
# sub/foo.c:
|
||||
# sub/foo.h:
|
||||
# ICC 7.1 will output
|
||||
# foo.o: sub/foo.c sub/foo.h
|
||||
# and will wrap long lines using \ :
|
||||
# foo.o: sub/foo.c ... \
|
||||
# sub/foo.h ... \
|
||||
# ...
|
||||
|
||||
"$@" -MD -MF "$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
# Each line is of the form `foo.o: dependent.h',
|
||||
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
|
||||
# Do two passes, one to just change these to
|
||||
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
|
||||
# Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
# correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
|
||||
sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
tru64)
|
||||
# The Tru64 compiler uses -MD to generate dependencies as a side
|
||||
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
|
||||
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
|
||||
# dependencies in `foo.d' instead, so we check for that too.
|
||||
# Subdirectories are respected.
|
||||
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
||||
test "x$dir" = "x$object" && dir=
|
||||
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
||||
|
||||
if test "$libtool" = yes; then
|
||||
tmpdepfile1="$dir.libs/$base.lo.d"
|
||||
tmpdepfile2="$dir.libs/$base.d"
|
||||
"$@" -Wc,-MD
|
||||
else
|
||||
tmpdepfile1="$dir$base.o.d"
|
||||
tmpdepfile2="$dir$base.d"
|
||||
"$@" -MD
|
||||
fi
|
||||
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
if test -f "$tmpdepfile1"; then
|
||||
tmpdepfile="$tmpdepfile1"
|
||||
else
|
||||
tmpdepfile="$tmpdepfile2"
|
||||
fi
|
||||
if test -f "$tmpdepfile"; then
|
||||
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
|
||||
# That's a tab and a space in the [].
|
||||
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
|
||||
else
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
#nosideeffect)
|
||||
# This comment above is used by automake to tell side-effect
|
||||
# dependency tracking mechanisms from slower ones.
|
||||
|
||||
dashmstdout)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout, regardless of -o.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test $1 != '--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
# Remove `-o $object'.
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
test -z "$dashmflag" && dashmflag=-M
|
||||
# Require at least two characters before searching for `:'
|
||||
# in the target name. This is to cope with DOS-style filenames:
|
||||
# a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
|
||||
"$@" $dashmflag |
|
||||
sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
cat < "$tmpdepfile" > "$depfile"
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" | \
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
dashXmstdout)
|
||||
# This case only exists to satisfy depend.m4. It is never actually
|
||||
# run, as this mode is specially recognized in the preamble.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
makedepend)
|
||||
"$@" || exit $?
|
||||
# Remove any Libtool call
|
||||
if test "$libtool" = yes; then
|
||||
while test $1 != '--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
# X makedepend
|
||||
shift
|
||||
cleared=no
|
||||
for arg in "$@"; do
|
||||
case $cleared in
|
||||
no)
|
||||
set ""; shift
|
||||
cleared=yes ;;
|
||||
esac
|
||||
case "$arg" in
|
||||
-D*|-I*)
|
||||
set fnord "$@" "$arg"; shift ;;
|
||||
# Strip any option that makedepend may not understand. Remove
|
||||
# the object too, otherwise makedepend will parse it as a source file.
|
||||
-*|$object)
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"; shift ;;
|
||||
esac
|
||||
done
|
||||
obj_suffix="`echo $object | sed 's/^.*\././'`"
|
||||
touch "$tmpdepfile"
|
||||
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
|
||||
rm -f "$depfile"
|
||||
cat < "$tmpdepfile" > "$depfile"
|
||||
sed '1,2d' "$tmpdepfile" | tr ' ' '
|
||||
' | \
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile" "$tmpdepfile".bak
|
||||
;;
|
||||
|
||||
cpp)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test $1 != '--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
# Remove `-o $object'.
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
"$@" -E |
|
||||
sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
|
||||
sed '$ s: \\$::' > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
cat < "$tmpdepfile" >> "$depfile"
|
||||
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
msvisualcpp)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout, regardless of -o,
|
||||
# because we must use -o when running libtool.
|
||||
"$@" || exit $?
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case "$arg" in
|
||||
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
|
||||
set fnord "$@"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
"$@" -E |
|
||||
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
|
||||
echo " " >> "$depfile"
|
||||
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
none)
|
||||
exec "$@"
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Unknown depmode $depmode" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 2
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-end: "$"
|
||||
# End:
|
316
tvmet-1.7.1/config/install-sh
Executable file
316
tvmet-1.7.1/config/install-sh
Executable file
@ -0,0 +1,316 @@
|
||||
#!/bin/sh
|
||||
# install - install a program, script, or datafile
|
||||
|
||||
scriptversion=2004-02-15.20
|
||||
|
||||
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||
# following copyright and license.
|
||||
#
|
||||
# Copyright (C) 1994 X Consortium
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
|
||||
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
# Except as contained in this notice, the name of the X Consortium shall not
|
||||
# be used in advertising or otherwise to promote the sale, use or other deal-
|
||||
# ings in this Software without prior written authorization from the X Consor-
|
||||
# tium.
|
||||
#
|
||||
#
|
||||
# FSF changes to this file are in the public domain.
|
||||
#
|
||||
# Calling this script install-sh is preferred over install.sh, to prevent
|
||||
# `make' implicit rules from creating a file called install from it
|
||||
# when there is no Makefile.
|
||||
#
|
||||
# This script is compatible with the BSD install script, but was written
|
||||
# from scratch. It can only install one file at a time, a restriction
|
||||
# shared with many OS's install programs.
|
||||
|
||||
# set DOITPROG to echo to test this script
|
||||
|
||||
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||
doit="${DOITPROG-}"
|
||||
|
||||
# put in absolute paths if you don't have them in your path; or use env. vars.
|
||||
|
||||
mvprog="${MVPROG-mv}"
|
||||
cpprog="${CPPROG-cp}"
|
||||
chmodprog="${CHMODPROG-chmod}"
|
||||
chownprog="${CHOWNPROG-chown}"
|
||||
chgrpprog="${CHGRPPROG-chgrp}"
|
||||
stripprog="${STRIPPROG-strip}"
|
||||
rmprog="${RMPROG-rm}"
|
||||
mkdirprog="${MKDIRPROG-mkdir}"
|
||||
|
||||
transformbasename=
|
||||
transform_arg=
|
||||
instcmd="$mvprog"
|
||||
chmodcmd="$chmodprog 0755"
|
||||
chowncmd=
|
||||
chgrpcmd=
|
||||
stripcmd=
|
||||
rmcmd="$rmprog -f"
|
||||
mvcmd="$mvprog"
|
||||
src=
|
||||
dst=
|
||||
dir_arg=
|
||||
|
||||
usage="Usage: $0 [OPTION]... SRCFILE DSTFILE
|
||||
or: $0 [OPTION]... SRCFILES... DIRECTORY
|
||||
or: $0 -d DIRECTORIES...
|
||||
|
||||
In the first form, install SRCFILE to DSTFILE, removing SRCFILE by default.
|
||||
In the second, create the directory path DIR.
|
||||
|
||||
Options:
|
||||
-b=TRANSFORMBASENAME
|
||||
-c copy source (using $cpprog) instead of moving (using $mvprog).
|
||||
-d create directories instead of installing files.
|
||||
-g GROUP $chgrp installed files to GROUP.
|
||||
-m MODE $chmod installed files to MODE.
|
||||
-o USER $chown installed files to USER.
|
||||
-s strip installed files (using $stripprog).
|
||||
-t=TRANSFORM
|
||||
--help display this help and exit.
|
||||
--version display version info and exit.
|
||||
|
||||
Environment variables override the default commands:
|
||||
CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
|
||||
"
|
||||
|
||||
while test -n "$1"; do
|
||||
case $1 in
|
||||
-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-c) instcmd=$cpprog
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-d) dir_arg=true
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-g) chgrpcmd="$chgrpprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
--help) echo "$usage"; exit 0;;
|
||||
|
||||
-m) chmodcmd="$chmodprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-o) chowncmd="$chownprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-s) stripcmd=$stripprog
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-t=*) transformarg=`echo $1 | sed 's/-t=//'`
|
||||
shift
|
||||
continue;;
|
||||
|
||||
--version) echo "$0 $scriptversion"; exit 0;;
|
||||
|
||||
*) # When -d is used, all remaining arguments are directories to create.
|
||||
test -n "$dir_arg" && break
|
||||
# Otherwise, the last argument is the destination. Remove it from $@.
|
||||
for arg
|
||||
do
|
||||
if test -n "$dstarg"; then
|
||||
# $@ is not empty: it contains at least $arg.
|
||||
set fnord "$@" "$dstarg"
|
||||
shift # fnord
|
||||
fi
|
||||
shift # arg
|
||||
dstarg=$arg
|
||||
done
|
||||
break;;
|
||||
esac
|
||||
done
|
||||
|
||||
if test -z "$1"; then
|
||||
if test -z "$dir_arg"; then
|
||||
echo "$0: no input file specified." >&2
|
||||
exit 1
|
||||
fi
|
||||
# It's OK to call `install-sh -d' without argument.
|
||||
# This can happen when creating conditional directories.
|
||||
exit 0
|
||||
fi
|
||||
|
||||
for src
|
||||
do
|
||||
# Protect names starting with `-'.
|
||||
case $src in
|
||||
-*) src=./$src ;;
|
||||
esac
|
||||
|
||||
if test -n "$dir_arg"; then
|
||||
dst=$src
|
||||
src=
|
||||
|
||||
if test -d "$dst"; then
|
||||
instcmd=:
|
||||
chmodcmd=
|
||||
else
|
||||
instcmd=$mkdirprog
|
||||
fi
|
||||
else
|
||||
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
|
||||
# might cause directories to be created, which would be especially bad
|
||||
# if $src (and thus $dsttmp) contains '*'.
|
||||
if test ! -f "$src" && test ! -d "$src"; then
|
||||
echo "$0: $src does not exist." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if test -z "$dstarg"; then
|
||||
echo "$0: no destination specified." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
dst=$dstarg
|
||||
# Protect names starting with `-'.
|
||||
case $dst in
|
||||
-*) dst=./$dst ;;
|
||||
esac
|
||||
|
||||
# If destination is a directory, append the input filename; won't work
|
||||
# if double slashes aren't ignored.
|
||||
if test -d "$dst"; then
|
||||
dst=$dst/`basename "$src"`
|
||||
fi
|
||||
fi
|
||||
|
||||
# This sed command emulates the dirname command.
|
||||
dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
|
||||
|
||||
# Make sure that the destination directory exists.
|
||||
|
||||
# Skip lots of stat calls in the usual case.
|
||||
if test ! -d "$dstdir"; then
|
||||
defaultIFS='
|
||||
'
|
||||
IFS="${IFS-$defaultIFS}"
|
||||
|
||||
oIFS=$IFS
|
||||
# Some sh's can't handle IFS=/ for some reason.
|
||||
IFS='%'
|
||||
set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
|
||||
IFS=$oIFS
|
||||
|
||||
pathcomp=
|
||||
|
||||
while test $# -ne 0 ; do
|
||||
pathcomp=$pathcomp$1
|
||||
shift
|
||||
if test ! -d "$pathcomp"; then
|
||||
$mkdirprog "$pathcomp" || lasterr=$?
|
||||
# mkdir can fail with a `File exist' error in case several
|
||||
# install-sh are creating the directory concurrently. This
|
||||
# is OK.
|
||||
test ! -d "$pathcomp" && { (exit ${lasterr-1}); exit; }
|
||||
fi
|
||||
pathcomp=$pathcomp/
|
||||
done
|
||||
fi
|
||||
|
||||
if test -n "$dir_arg"; then
|
||||
$doit $instcmd "$dst" \
|
||||
&& { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
|
||||
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
|
||||
&& { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
|
||||
&& { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
|
||||
|
||||
else
|
||||
# If we're going to rename the final executable, determine the name now.
|
||||
if test -z "$transformarg"; then
|
||||
dstfile=`basename "$dst"`
|
||||
else
|
||||
dstfile=`basename "$dst" $transformbasename \
|
||||
| sed $transformarg`$transformbasename
|
||||
fi
|
||||
|
||||
# don't allow the sed command to completely eliminate the filename.
|
||||
test -z "$dstfile" && dstfile=`basename "$dst"`
|
||||
|
||||
# Make a couple of temp file names in the proper directory.
|
||||
dsttmp=$dstdir/_inst.$$_
|
||||
rmtmp=$dstdir/_rm.$$_
|
||||
|
||||
# Trap to clean up those temp files at exit.
|
||||
trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
|
||||
trap '(exit $?); exit' 1 2 13 15
|
||||
|
||||
# Move or copy the file name to the temp name
|
||||
$doit $instcmd "$src" "$dsttmp" &&
|
||||
|
||||
# and set any options; do chmod last to preserve setuid bits.
|
||||
#
|
||||
# If any of these fail, we abort the whole thing. If we want to
|
||||
# ignore errors from any of these, just make sure not to ignore
|
||||
# errors from the above "$doit $instcmd $src $dsttmp" command.
|
||||
#
|
||||
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
|
||||
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
|
||||
&& { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
|
||||
&& { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
|
||||
|
||||
# Now remove or move aside any old file at destination location. We
|
||||
# try this two ways since rm can't unlink itself on some systems and
|
||||
# the destination file might be busy for other reasons. In this case,
|
||||
# the final cleanup might fail but the new file should still install
|
||||
# successfully.
|
||||
{
|
||||
if test -f "$dstdir/$dstfile"; then
|
||||
$doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
|
||||
|| $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
|
||||
|| {
|
||||
echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
|
||||
(exit 1); exit
|
||||
}
|
||||
else
|
||||
:
|
||||
fi
|
||||
} &&
|
||||
|
||||
# Now rename the file to the real destination.
|
||||
$doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
|
||||
fi || { (exit 1); exit; }
|
||||
done
|
||||
|
||||
# The final little trick to "correctly" pass the exit status to the exit trap.
|
||||
{
|
||||
(exit 0); exit
|
||||
}
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-end: "$"
|
||||
# End:
|
6422
tvmet-1.7.1/config/ltmain.sh
Normal file
6422
tvmet-1.7.1/config/ltmain.sh
Normal file
File diff suppressed because it is too large
Load Diff
360
tvmet-1.7.1/config/missing
Executable file
360
tvmet-1.7.1/config/missing
Executable file
@ -0,0 +1,360 @@
|
||||
#! /bin/sh
|
||||
# Common stub for a few missing GNU programs while installing.
|
||||
|
||||
scriptversion=2003-09-02.23
|
||||
|
||||
# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003
|
||||
# Free Software Foundation, Inc.
|
||||
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
if test $# -eq 0; then
|
||||
echo 1>&2 "Try \`$0 --help' for more information"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
run=:
|
||||
|
||||
# In the cases where this matters, `missing' is being run in the
|
||||
# srcdir already.
|
||||
if test -f configure.ac; then
|
||||
configure_ac=configure.ac
|
||||
else
|
||||
configure_ac=configure.in
|
||||
fi
|
||||
|
||||
msg="missing on your system"
|
||||
|
||||
case "$1" in
|
||||
--run)
|
||||
# Try to run requested program, and just exit if it succeeds.
|
||||
run=
|
||||
shift
|
||||
"$@" && exit 0
|
||||
# Exit code 63 means version mismatch. This often happens
|
||||
# when the user try to use an ancient version of a tool on
|
||||
# a file that requires a minimum version. In this case we
|
||||
# we should proceed has if the program had been absent, or
|
||||
# if --run hadn't been passed.
|
||||
if test $? = 63; then
|
||||
run=:
|
||||
msg="probably too old"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
# If it does not exist, or fails to run (possibly an outdated version),
|
||||
# try to emulate it.
|
||||
case "$1" in
|
||||
|
||||
-h|--h|--he|--hel|--help)
|
||||
echo "\
|
||||
$0 [OPTION]... PROGRAM [ARGUMENT]...
|
||||
|
||||
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
|
||||
error status if there is no known handling for PROGRAM.
|
||||
|
||||
Options:
|
||||
-h, --help display this help and exit
|
||||
-v, --version output version information and exit
|
||||
--run try to run the given command, and emulate it if it fails
|
||||
|
||||
Supported PROGRAM values:
|
||||
aclocal touch file \`aclocal.m4'
|
||||
autoconf touch file \`configure'
|
||||
autoheader touch file \`config.h.in'
|
||||
automake touch all \`Makefile.in' files
|
||||
bison create \`y.tab.[ch]', if possible, from existing .[ch]
|
||||
flex create \`lex.yy.c', if possible, from existing .c
|
||||
help2man touch the output file
|
||||
lex create \`lex.yy.c', if possible, from existing .c
|
||||
makeinfo touch the output file
|
||||
tar try tar, gnutar, gtar, then tar without non-portable flags
|
||||
yacc create \`y.tab.[ch]', if possible, from existing .[ch]
|
||||
|
||||
Send bug reports to <bug-automake@gnu.org>."
|
||||
;;
|
||||
|
||||
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
|
||||
echo "missing $scriptversion (GNU Automake)"
|
||||
;;
|
||||
|
||||
-*)
|
||||
echo 1>&2 "$0: Unknown \`$1' option"
|
||||
echo 1>&2 "Try \`$0 --help' for more information"
|
||||
exit 1
|
||||
;;
|
||||
|
||||
aclocal*)
|
||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||
# We have it, but it failed.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
|
||||
to install the \`Automake' and \`Perl' packages. Grab them from
|
||||
any GNU archive site."
|
||||
touch aclocal.m4
|
||||
;;
|
||||
|
||||
autoconf)
|
||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||
# We have it, but it failed.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified \`${configure_ac}'. You might want to install the
|
||||
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
|
||||
archive site."
|
||||
touch configure
|
||||
;;
|
||||
|
||||
autoheader)
|
||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||
# We have it, but it failed.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified \`acconfig.h' or \`${configure_ac}'. You might want
|
||||
to install the \`Autoconf' and \`GNU m4' packages. Grab them
|
||||
from any GNU archive site."
|
||||
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
|
||||
test -z "$files" && files="config.h"
|
||||
touch_files=
|
||||
for f in $files; do
|
||||
case "$f" in
|
||||
*:*) touch_files="$touch_files "`echo "$f" |
|
||||
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
|
||||
*) touch_files="$touch_files $f.in";;
|
||||
esac
|
||||
done
|
||||
touch $touch_files
|
||||
;;
|
||||
|
||||
automake*)
|
||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||
# We have it, but it failed.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
|
||||
You might want to install the \`Automake' and \`Perl' packages.
|
||||
Grab them from any GNU archive site."
|
||||
find . -type f -name Makefile.am -print |
|
||||
sed 's/\.am$/.in/' |
|
||||
while read f; do touch "$f"; done
|
||||
;;
|
||||
|
||||
autom4te)
|
||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||
# We have it, but it failed.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is needed, but is $msg.
|
||||
You might have modified some files without having the
|
||||
proper tools for further handling them.
|
||||
You can get \`$1' as part of \`Autoconf' from any GNU
|
||||
archive site."
|
||||
|
||||
file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
|
||||
test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
|
||||
if test -f "$file"; then
|
||||
touch $file
|
||||
else
|
||||
test -z "$file" || exec >$file
|
||||
echo "#! /bin/sh"
|
||||
echo "# Created by GNU Automake missing as a replacement of"
|
||||
echo "# $ $@"
|
||||
echo "exit 0"
|
||||
chmod +x $file
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
bison|yacc)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' $msg. You should only need it if
|
||||
you modified a \`.y' file. You may need the \`Bison' package
|
||||
in order for those modifications to take effect. You can get
|
||||
\`Bison' from any GNU archive site."
|
||||
rm -f y.tab.c y.tab.h
|
||||
if [ $# -ne 1 ]; then
|
||||
eval LASTARG="\${$#}"
|
||||
case "$LASTARG" in
|
||||
*.y)
|
||||
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
|
||||
if [ -f "$SRCFILE" ]; then
|
||||
cp "$SRCFILE" y.tab.c
|
||||
fi
|
||||
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
|
||||
if [ -f "$SRCFILE" ]; then
|
||||
cp "$SRCFILE" y.tab.h
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
if [ ! -f y.tab.h ]; then
|
||||
echo >y.tab.h
|
||||
fi
|
||||
if [ ! -f y.tab.c ]; then
|
||||
echo 'main() { return 0; }' >y.tab.c
|
||||
fi
|
||||
;;
|
||||
|
||||
lex|flex)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified a \`.l' file. You may need the \`Flex' package
|
||||
in order for those modifications to take effect. You can get
|
||||
\`Flex' from any GNU archive site."
|
||||
rm -f lex.yy.c
|
||||
if [ $# -ne 1 ]; then
|
||||
eval LASTARG="\${$#}"
|
||||
case "$LASTARG" in
|
||||
*.l)
|
||||
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
|
||||
if [ -f "$SRCFILE" ]; then
|
||||
cp "$SRCFILE" lex.yy.c
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
if [ ! -f lex.yy.c ]; then
|
||||
echo 'main() { return 0; }' >lex.yy.c
|
||||
fi
|
||||
;;
|
||||
|
||||
help2man)
|
||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||
# We have it, but it failed.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified a dependency of a manual page. You may need the
|
||||
\`Help2man' package in order for those modifications to take
|
||||
effect. You can get \`Help2man' from any GNU archive site."
|
||||
|
||||
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
|
||||
if test -z "$file"; then
|
||||
file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
|
||||
fi
|
||||
if [ -f "$file" ]; then
|
||||
touch $file
|
||||
else
|
||||
test -z "$file" || exec >$file
|
||||
echo ".ab help2man is required to generate this page"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
makeinfo)
|
||||
if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
|
||||
# We have makeinfo, but it failed.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified a \`.texi' or \`.texinfo' file, or any other file
|
||||
indirectly affecting the aspect of the manual. The spurious
|
||||
call might also be the consequence of using a buggy \`make' (AIX,
|
||||
DU, IRIX). You might want to install the \`Texinfo' package or
|
||||
the \`GNU make' package. Grab either from any GNU archive site."
|
||||
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
|
||||
if test -z "$file"; then
|
||||
file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
|
||||
file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
|
||||
fi
|
||||
touch $file
|
||||
;;
|
||||
|
||||
tar)
|
||||
shift
|
||||
if test -n "$run"; then
|
||||
echo 1>&2 "ERROR: \`tar' requires --run"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# We have already tried tar in the generic part.
|
||||
# Look for gnutar/gtar before invocation to avoid ugly error
|
||||
# messages.
|
||||
if (gnutar --version > /dev/null 2>&1); then
|
||||
gnutar "$@" && exit 0
|
||||
fi
|
||||
if (gtar --version > /dev/null 2>&1); then
|
||||
gtar "$@" && exit 0
|
||||
fi
|
||||
firstarg="$1"
|
||||
if shift; then
|
||||
case "$firstarg" in
|
||||
*o*)
|
||||
firstarg=`echo "$firstarg" | sed s/o//`
|
||||
tar "$firstarg" "$@" && exit 0
|
||||
;;
|
||||
esac
|
||||
case "$firstarg" in
|
||||
*h*)
|
||||
firstarg=`echo "$firstarg" | sed s/h//`
|
||||
tar "$firstarg" "$@" && exit 0
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: I can't seem to be able to run \`tar' with the given arguments.
|
||||
You may want to install GNU tar or Free paxutils, or check the
|
||||
command line arguments."
|
||||
exit 1
|
||||
;;
|
||||
|
||||
*)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is needed, and is $msg.
|
||||
You might have modified some files without having the
|
||||
proper tools for further handling them. Check the \`README' file,
|
||||
it often tells you about the needed prerequisites for installing
|
||||
this package. You may also peek at any GNU archive site, in case
|
||||
some other package would contain this missing \`$1' program."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-end: "$"
|
||||
# End:
|
48
tvmet-1.7.1/config/op_doxygen_doc.m4
Normal file
48
tvmet-1.7.1/config/op_doxygen_doc.m4
Normal file
@ -0,0 +1,48 @@
|
||||
dnl $Id: op_doxygen_doc.m4,v 1.2 2004/04/23 23:41:52 opetzold Exp $
|
||||
dnl
|
||||
dnl OP_DOXYGEN_DOC
|
||||
dnl
|
||||
|
||||
AC_DEFUN([OP_DOXYGEN_DOC],
|
||||
[
|
||||
AC_MSG_CHECKING(for documentation)
|
||||
AC_ARG_ENABLE(docs,
|
||||
[ --enable-docs build documentation],
|
||||
[case "$enableval" in
|
||||
y | yes) CONFIG_DOC=yes ;;
|
||||
*) unset CONFIG_DOC ;;
|
||||
esac])
|
||||
AC_MSG_RESULT([${CONFIG_DOC:-no}])
|
||||
|
||||
AC_MSG_CHECKING(whether using LaTeX non-stop mode)
|
||||
AC_ARG_ENABLE(verbose-latex,
|
||||
[ --enable-verbose-latex Uses LaTeX non-stop mode],
|
||||
[case "$enableval" in
|
||||
y | yes) CONFIG_DOC_LATEX_NONSTOP=yes ;;
|
||||
*) unset CONFIG_DOC_LATEX_NONSTOP ;;
|
||||
esac])
|
||||
AC_MSG_RESULT(${CONFIG_DOC_LATEX_NONSTOP:-no})
|
||||
|
||||
if test x${CONFIG_DOC_LATEX_NONSTOP} = xyes; then
|
||||
LATEX_BATCHMODE=NO
|
||||
LATEX_MODE=nonstopmode
|
||||
else
|
||||
LATEX_BATCHMODE=YES
|
||||
LATEX_MODE=batchmode
|
||||
fi
|
||||
|
||||
AC_CHECK_PROG(DOXYGEN, doxygen, doxygen)
|
||||
if test x${CONFIG_DOC} = xyes -a x"$DOXYGEN" = x; then
|
||||
AC_MSG_ERROR([missing the doxygen tools to generate the documentation.])
|
||||
fi
|
||||
|
||||
AC_CHECK_PROG(DOXYGEN_HAVE_DOT, dot, yes, no)
|
||||
|
||||
AM_CONDITIONAL(CONFIG_DOC,[test x"$CONFIG_DOC" = xyes])
|
||||
dnl force docs
|
||||
dnl AM_CONDITIONAL(CONFIG_DOC, [test x=x])
|
||||
AC_SUBST(DOXYGEN)
|
||||
AC_SUBST(DOXYGEN_HAVE_DOT)
|
||||
AC_SUBST(LATEX_BATCHMODE)
|
||||
AC_SUBST(LATEX_MODE)
|
||||
])
|
23174
tvmet-1.7.1/configure
vendored
Executable file
23174
tvmet-1.7.1/configure
vendored
Executable file
File diff suppressed because it is too large
Load Diff
342
tvmet-1.7.1/configure.ac
Normal file
342
tvmet-1.7.1/configure.ac
Normal file
@ -0,0 +1,342 @@
|
||||
dnl $Id: configure.ac,v 1.47 2005/04/26 15:07:00 opetzold Exp $
|
||||
dnl Configure script for the Tiny Vector Matrix Expression Template Library
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
|
||||
|
||||
dnl autoconf 2.50 or higher to rebuild aclocal.m4, because the
|
||||
dnl AC_CREATE_PREFIX_CONFIG_H macro needs the AS_DIRNAME macro.
|
||||
AC_PREREQ(2.59)
|
||||
|
||||
|
||||
dnl Copy revision stamp into the `configure' script,
|
||||
AC_REVISION($Revision: 1.47 $)
|
||||
|
||||
|
||||
dnl Disable caching.
|
||||
define([AC_CACHE_LOAD], )
|
||||
define([AC_CACHE_SAVE], )
|
||||
|
||||
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
AC_INIT([tvmet],[1.7.1],[opetzold@users.sourceforge.net])
|
||||
|
||||
|
||||
dnl inform about
|
||||
AC_MSG_RESULT([Configure Tiny Vector Matrix using Expression Templates library AC_PACKAGE_VERSION])
|
||||
|
||||
|
||||
dnl config and versioning, the config.h header is in config - we use a prefixed
|
||||
dnl config header, see below
|
||||
AC_CONFIG_AUX_DIR(config)
|
||||
AC_CONFIG_HEADERS([config/config.h])
|
||||
|
||||
|
||||
dnl Getting the Canonical System Type
|
||||
AC_CANONICAL_HOST
|
||||
|
||||
|
||||
dnl require gnu style, automake 1.8 or better, etc.
|
||||
AM_INIT_AUTOMAKE([gnu 1.8 no-define dist-bzip2])
|
||||
|
||||
|
||||
dnl --enable-maintainer-mode for configure
|
||||
AM_MAINTAINER_MODE
|
||||
|
||||
|
||||
# Declare variables which we want substituted in the Makefile.in's
|
||||
AC_SUBST(CXX_OPTIMIZE_FLAGS)
|
||||
AC_SUBST(CXX_DEBUG_FLAGS)
|
||||
AC_SUBST(CXX_WARN_FLAGS)
|
||||
|
||||
|
||||
dnl Manual configuration options of oopattern.
|
||||
AC_ARG_ENABLE(tvmet, [
|
||||
Options of tvmet:])
|
||||
|
||||
|
||||
dnl Process command-line arguments for compiler (parts borrowed from blitz++)
|
||||
AC_MSG_CHECKING([for compiler])
|
||||
AC_ARG_WITH(cxx,
|
||||
[ --with-cxx=compiler set specific C++ compiler and options (e.g. g++ (default), KCC, icc, pgCC)],
|
||||
[case "$withval" in
|
||||
KCC*) # KAI C++ http://www.kai.com/
|
||||
AC_MSG_RESULT([KAI C++])
|
||||
CXX_OPTIMIZE_FLAGS="-DTVMET_OPTIMIZE +K3 -O3 -fast --inline_keyword_space_time=10000"
|
||||
CXX_DEBUG_FLAGS="-g +K0 -DTVMET_DEBUG"
|
||||
CXX_WARN_FLAGS=""
|
||||
;;
|
||||
g++*|gcc*) # gcc http://gcc.gnu.org/
|
||||
AC_MSG_RESULT([GNU C++])
|
||||
AC_SET_COMPILER($withval,"g++","")
|
||||
CXX_OPTIMIZE_FLAGS="-DTVMET_OPTIMIZE -O2 -finline-limit=5000 -ftemplate-depth-200 -fomit-frame-pointer"
|
||||
CXX_DEBUG_FLAGS="-g -O1 -DTVMET_DEBUG"
|
||||
CXX_WARN_FLAGS="-W -Wall -Winline"
|
||||
|
||||
# paranoia on older gcc versions
|
||||
gxx_version=`$CXX -v 2>&1 | grep "^.*g.. version" | \
|
||||
sed -e 's/^.*g.. version *//' -e 's/cygnus-//' -e 's/egcs-//'`
|
||||
|
||||
case "$gxx_version" in
|
||||
1.* | 2.[[0123456789]].*)
|
||||
AC_MSG_ERROR([g++ version $gxx_version will probably fail to compile tvmet])
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
icc) # Intel C++ compiler http://www.intel.com/
|
||||
AC_MSG_RESULT([Intel C++])
|
||||
AC_SET_COMPILER($withval,"icc","")
|
||||
CXX_OPTIMIZE_FLAGS="-DTVMET_OPTIMIZE -O2 -fp_port -Qoption,c,-ip_ninl_max_total_stats=3000"
|
||||
CXX_DEBUG_FLAGS="-g -O0 -DTVMET_DEBUG"
|
||||
CXX_WARN_FLAGS="-Wall"
|
||||
;;
|
||||
pgCC*) # Portland group http://www.pgroup.com/
|
||||
AC_MSG_RESULT([Portland Group C++])
|
||||
AC_SET_COMPILER($withval,"pgCC","")
|
||||
CXX_OPTIMIZE_FLAGS="-DTVMET_OPTIMIZE -O4 -Mnoframe -Mnodepchk -Minline=levels:25"
|
||||
CXX_DEBUG_FLAGS="-g -O0 -DTVMET_DEBUG"
|
||||
CXX_WARN_FLAGS=""
|
||||
;;
|
||||
*)
|
||||
AC_MSG_WARN([--with-cxx: unknown c++ compiler $withval])
|
||||
;;
|
||||
esac],[
|
||||
AC_MSG_RESULT([GNU C++ (default)])
|
||||
AC_SET_COMPILER($withval,"g++","")
|
||||
CXX_OPTIMIZE_FLAGS="-DTVMET_OPTIMIZE -O2 -finline-limit=5000 -ftemplate-depth-200 -fomit-frame-pointer"
|
||||
CXX_DEBUG_FLAGS="-g -O1 -DTVMET_DEBUG"
|
||||
CXX_WARN_FLAGS="-W -Wall -Winline"
|
||||
])
|
||||
|
||||
|
||||
dnl Check if the script was called with --enable-optimize, and if so
|
||||
dnl modify the compilation flags.
|
||||
AC_MSG_CHECKING([for compiler optimizations])
|
||||
tvmet_optimize=0
|
||||
AC_ARG_ENABLE(optimize,
|
||||
[ --enable-optimize enable compiler optimization flags],
|
||||
[if test "$enableval" = yes; then
|
||||
AC_MSG_RESULT([yes])
|
||||
CXXFLAGS="$CXXFLAGS $CXX_OPTIMIZE_FLAGS"
|
||||
tvmet_optimize=1
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi], [
|
||||
AC_MSG_RESULT([no])
|
||||
])
|
||||
|
||||
|
||||
dnl Set platform-specific optimization settings
|
||||
if test $tvmet_optimize -eq 1; then
|
||||
AC_MSG_CHECKING([for compiler platform-specific optimizations])
|
||||
case "$build_os" in
|
||||
*linux*)
|
||||
case "$CXX" in
|
||||
g++)
|
||||
AC_MSG_RESULT([GNU/Linux (CPU=$build_cpu) using GNU GCC])
|
||||
# specifying -march=cpu-type implies -mcpu=cpu-type.
|
||||
case "$build_cpu" in
|
||||
i386|i486)
|
||||
CXXFLAGS="$CXXFLAGS -malign-double -march=i386"
|
||||
;;
|
||||
i586)
|
||||
CXXFLAGS="$CXXFLAGS -malign-double -march=i586 -msse"
|
||||
;;
|
||||
i686)
|
||||
CXXFLAGS="$CXXFLAGS -malign-double -march=i686 -msse2"
|
||||
;;
|
||||
k6*)
|
||||
CXXFLAGS="$CXXFLAGS -malign-double -march=k6 -m3dnow"
|
||||
esac
|
||||
;;
|
||||
icc)
|
||||
AC_MSG_RESULT([GNU/Linux (CPU=$build_cpu) using Intel CC])
|
||||
case "$build_cpu" in
|
||||
i586)
|
||||
# Intel Pentium Pro, Intel Pentium II, and Intel Pentium III processors
|
||||
CXXFLAGS="$CXXFLAGS -tpp6"
|
||||
;;
|
||||
i686)
|
||||
# Intel Pentium 4 processors
|
||||
CXXFLAGS="$CXXFLAGS -tpp7"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
AC_MSG_RESULT([tvmet has not been tuned for this platform])
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
|
||||
dnl Check if the script was called with --enable-debug, and if so
|
||||
dnl modify the compilation flags.
|
||||
AC_MSG_CHECKING([for compiler debug flags])
|
||||
AC_ARG_ENABLE(debug,
|
||||
[ --enable-debug enable compiler debug flags],
|
||||
[if test "$enableval" = yes; then
|
||||
AC_MSG_RESULT([yes])
|
||||
CXXFLAGS="$CXXFLAGS $CXX_DEBUG_FLAGS"
|
||||
fi], [
|
||||
AC_MSG_RESULT([no])
|
||||
])
|
||||
|
||||
|
||||
dnl Check if the script was called with --enable-warnings, and if so
|
||||
dnl modify the compilation flags.
|
||||
AC_MSG_CHECKING([for compiler warn flags])
|
||||
AC_ARG_ENABLE(warnings,
|
||||
[ --enable-warnings enable compiler warning flags],
|
||||
[if test "$enableval" = yes; then
|
||||
AC_MSG_RESULT([yes])
|
||||
CXXFLAGS="$CXXFLAGS $CXX_WARN_FLAGS"
|
||||
fi], [
|
||||
AC_MSG_RESULT([no])
|
||||
])
|
||||
|
||||
|
||||
dnl doxygen docs
|
||||
OP_DOXYGEN_DOC
|
||||
|
||||
|
||||
dnl cppunit support
|
||||
oopattern_config_cppunit=yes
|
||||
AC_ARG_ENABLE(cppunit,
|
||||
[ --disable-cppunit disable unit tests using cppunit],
|
||||
oopattern_config_cppunit=$enableval)
|
||||
|
||||
|
||||
dnl check for cppunit for unit tests
|
||||
if test x"$oopattern_config_cppunit" = xyes; then
|
||||
|
||||
dnl Check if we have libcppunit
|
||||
AM_PATH_CPPUNIT(1.8.0)
|
||||
|
||||
if test "x$no_cppunit" = xyes; then
|
||||
CONFIG_CPPUNIT=no
|
||||
else
|
||||
CONFIG_CPPUNIT=yes
|
||||
fi
|
||||
|
||||
fi
|
||||
AC_MSG_CHECKING(for libcppunit support)
|
||||
if test "x${oopattern_config_cppunit}" = xyes -a "x$CONFIG_CPPUNIT" = xyes; then
|
||||
CONFIG_CPPUNIT=yes
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
CONFIG_CPPUNIT=no
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
AM_CONDITIONAL(CONFIG_CPPUNIT,[test x"$CONFIG_CPPUNIT" = xyes])
|
||||
|
||||
|
||||
dnl Checks for programs.
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_MAKE_SET
|
||||
AC_LANG([C++])
|
||||
AC_PROG_CXX
|
||||
AC_PROG_LN_S
|
||||
|
||||
|
||||
dnl don't be confused, we don't build shared/static libs; it's
|
||||
dnl for the head install process only (for build and install
|
||||
dnl process from separate build directory)
|
||||
AC_PROG_LIBTOOL
|
||||
|
||||
|
||||
dnl Checks for libraries.
|
||||
AC_CHECK_LIB(dl, main)
|
||||
|
||||
|
||||
dnl Checks for header files.
|
||||
AC_HEADER_STDC
|
||||
AC_HEADER_STDBOOL dnl for unit tests
|
||||
AC_CHECK_HEADERS([sys/time.h unistd.h])
|
||||
|
||||
|
||||
# Checks for library functions.
|
||||
AC_CHECK_FUNCS([floor pow rint sqrt])
|
||||
|
||||
|
||||
dnl Checks for typedefs, structures, and compiler characteristics.
|
||||
AC_C_CONST
|
||||
AC_C_INLINE
|
||||
AC_TYPE_SIZE_T
|
||||
AC_STRUCT_TM
|
||||
|
||||
AC_C_LONG_DOUBLE
|
||||
AC_C_LONG_LONG
|
||||
AC_C_RESTRICT
|
||||
AC_CXX_HAVE_MUTABLE
|
||||
AC_CXX_TYPENAME
|
||||
AC_CXX_PARTIAL_SPECIALIZATION
|
||||
AC_CXX_NAMESPACES
|
||||
AC_CXX_HAVE_IEEE_MATH
|
||||
AC_CXX_HAVE_SYSV_MATH
|
||||
AC_CXX_HAVE_COMPLEX
|
||||
AC_CXX_HAVE_COMPLEX_MATH1
|
||||
AC_CXX_HAVE_COMPLEX_MATH2
|
||||
|
||||
|
||||
dnl create makefiles
|
||||
AC_CONFIG_FILES([
|
||||
Makefile
|
||||
tvmet-config
|
||||
tvmet.spec
|
||||
include/Makefile
|
||||
include/tvmet/Makefile
|
||||
include/tvmet/config/Makefile
|
||||
include/tvmet/meta/Makefile
|
||||
include/tvmet/loop/Makefile
|
||||
include/tvmet/util/Makefile
|
||||
include/tvmet/xpr/Makefile
|
||||
include/tvmet/config/config-vc71.h
|
||||
doc/Makefile
|
||||
doc/Doxyfile
|
||||
doc/footer.html
|
||||
doc/tvmet.sty
|
||||
testsuite/Makefile
|
||||
tests/Makefile
|
||||
examples/Makefile
|
||||
benchmark/Makefile
|
||||
])
|
||||
AC_CONFIG_COMMANDS([default],[[chmod a+x tvmet-config]],[[]])
|
||||
AC_OUTPUT
|
||||
|
||||
|
||||
dnl prefixed config header
|
||||
AC_CREATE_PREFIX_CONFIG_H([include/tvmet/config.h], $PACKAGE, [config/config.h])
|
||||
|
||||
|
||||
dnl -------------------
|
||||
dnl tvmet's user epilog
|
||||
dnl -------------------
|
||||
echo "
|
||||
Configuration for $PACKAGE $VERSION:
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The following optional features are enabled:
|
||||
|
||||
Source code location : $srcdir
|
||||
tvmet's unit-tests available : `if test "x$CONFIG_CPPUNIT" = xyes; then echo yes; else echo no; fi`
|
||||
build documentation : `if test "x$CONFIG_DOC" = xyes; then echo yes; else echo no; fi`
|
||||
using LaTeX non-stop mode : `if test "x$CONFIG_DOC_LATEX_NONSTOP" = xyes; then echo yes; else echo no; fi`
|
||||
graphs and diagrams : `if test "x$DOXYGEN_HAVE_DOT" = xyes; then echo -n yes; else echo no; fi`
|
||||
Install path : $prefix
|
||||
|
||||
Compiler Flags used:
|
||||
|
||||
CXX : $CXX
|
||||
CXXFLAGS : $CXXFLAGS
|
||||
|
||||
The configure script has generated makefiles for your platform.
|
||||
You have several options now:
|
||||
|
||||
make Depends on configure's flags given, build the docs,
|
||||
build $PACKAGE $VERSION and run the regression tests.
|
||||
make docs Makes the docs using doxygen (if enabled).
|
||||
make check Make the unit tests (if CppUnit available).
|
||||
make install Install tvmet.
|
||||
make uninstall Uninstall tvmet.
|
||||
"
|
1120
tvmet-1.7.1/doc/Doxyfile.in
Normal file
1120
tvmet-1.7.1/doc/Doxyfile.in
Normal file
File diff suppressed because it is too large
Load Diff
218
tvmet-1.7.1/doc/Makefile.am
Normal file
218
tvmet-1.7.1/doc/Makefile.am
Normal file
@ -0,0 +1,218 @@
|
||||
# $Id: Makefile.am,v 1.22 2004/09/16 08:12:13 opetzold Exp $
|
||||
|
||||
AM_CXXFLAGS = -O \
|
||||
-I@top_srcdir@/include -I@top_builddir@/include
|
||||
|
||||
DOXY_DOC = \
|
||||
benchmark.dox \
|
||||
build.dox \
|
||||
compiler.dox \
|
||||
faq.dox \
|
||||
intro.dox \
|
||||
license.dox \
|
||||
links.dox \
|
||||
misc.dox \
|
||||
notes.dox \
|
||||
projects.dox \
|
||||
usage.dox \
|
||||
works.dox
|
||||
|
||||
HTML_MISC = \
|
||||
tvmet.css \
|
||||
header.html footer.html.in
|
||||
|
||||
LTEX_MISC = \
|
||||
tvmet.sty.in
|
||||
|
||||
BENCH_FIG = \
|
||||
axpy.png \
|
||||
matrix_matrix.png \
|
||||
matrix_vector.png \
|
||||
aat.png \
|
||||
ata.png
|
||||
|
||||
EXTRA_DIST = \
|
||||
$(DOXY_DOC) \
|
||||
$(HTML_MISC) \
|
||||
$(LTEX_MISC) \
|
||||
$(BENCH_FIG)
|
||||
|
||||
DISTCLEANFILES = \
|
||||
Doxyfile doxygen-warning \
|
||||
footer.html tvmet.sty
|
||||
|
||||
# some depencies
|
||||
Doxyfile: Doxyfile.in
|
||||
footer.html: footer.html.in
|
||||
tvmet.sty: tvmet.sty.in
|
||||
|
||||
# non-install programs for generating doxygen files
|
||||
noinst_PROGRAMS = dox_operators dox_functions
|
||||
dox_operators_SOURCES = dox_operators.cc Util.h
|
||||
dox_functions_SOURCES = dox_functions.cc Util.h
|
||||
|
||||
#
|
||||
# rules for documentation, if ordered
|
||||
#
|
||||
if CONFIG_DOC
|
||||
|
||||
#
|
||||
# file created on the fly
|
||||
#
|
||||
DOXY_BUILD = \
|
||||
changelog.dox \
|
||||
news.dox \
|
||||
credits.dox \
|
||||
install.dox \
|
||||
operators.dox \
|
||||
functions.dox
|
||||
|
||||
DOXY_HTML_SRC = \
|
||||
$(DOXY_DOC) \
|
||||
$(DOXY_BUILD) \
|
||||
$(patsubst %.in, %, $(HTML_MISC))
|
||||
|
||||
DOXY_LTEX_SRC = \
|
||||
$(patsubst %.in, %, $(LTEX_MISC))
|
||||
|
||||
# file creating rules; not needed every time
|
||||
operators.dox: dox_operators
|
||||
./dox_operators > operators.dox
|
||||
|
||||
functions.dox: dox_functions
|
||||
./dox_functions > functions.dox
|
||||
|
||||
# file creating rules
|
||||
changelog.dox: @top_srcdir@/ChangeLog
|
||||
@echo "/** \page changelog ChangeLog" > $@
|
||||
@echo "\verbatim" >> $@
|
||||
cat $< >> $@
|
||||
@echo "\endverbatim" >> $@
|
||||
@echo "*/" >> $@
|
||||
|
||||
news.dox: @top_srcdir@/NEWS
|
||||
@echo "/** \page news News" > $@
|
||||
@echo "\verbatim" >> $@
|
||||
cat $< >> $@
|
||||
@echo "\endverbatim" >> $@
|
||||
@echo "*/" >> $@
|
||||
|
||||
credits.dox: @top_srcdir@/THANKS
|
||||
@echo "/** \page credits Credits" > $@
|
||||
@echo "\verbatim" >> $@
|
||||
cat $< >> $@
|
||||
@echo "\endverbatim" >> $@
|
||||
@echo "*/" >> $@
|
||||
|
||||
install.dox: @top_srcdir@/INSTALL
|
||||
@echo "/** \page basic_install INSTALL" > $@
|
||||
@echo "\verbatim" >> $@
|
||||
cat $< >> $@
|
||||
@echo "\endverbatim" >> $@
|
||||
@echo "*/" >> $@
|
||||
|
||||
|
||||
#
|
||||
# doxygen API
|
||||
#
|
||||
DOC_API_PDF = $(PACKAGE)-$(VERSION).pdf
|
||||
|
||||
all-local: doxygen-api
|
||||
|
||||
# need's LaTeX style, since we use an own style for LaTeX
|
||||
# which is required for generating formulas in HTML too.
|
||||
# Doxygen LaTeX batchmode doesn't solves the problem right here.
|
||||
doxygen-html-dir:
|
||||
@if test ! -d ./html; then mkdir ./html; fi
|
||||
|
||||
doxygen-api: doxygen-html-dir Doxyfile $(DOXY_HTML_SRC)
|
||||
@echo "Making HTML manual"
|
||||
@cp @builddir@/tvmet.sty ./html/
|
||||
@DOXYGEN@ $(DOXYGEN_OPTS)
|
||||
@$(RM) -f ./html/tvmet.sty
|
||||
|
||||
#
|
||||
# doxygen LaTeX API
|
||||
#
|
||||
TEXINPUTS_PATH=$(TEXINPUTS):$(top_builddir)
|
||||
|
||||
noinst_DATA = $(DOC_API_PDF)
|
||||
|
||||
all-local: $(noinst_DATA)
|
||||
|
||||
dvi-local:
|
||||
ps-local:
|
||||
pdf-local: $(DOC_API_PDF)
|
||||
|
||||
$(DOC_API_PDF): Doxyfile $(DOXY_LTEX_SRC)
|
||||
@if test -d ./latex; then \
|
||||
echo "Making PDF manual"; \
|
||||
if test -f $@; then \
|
||||
$(RM) $@; \
|
||||
fi; \
|
||||
TEXINPUTS=$(TEXINPUTS_PATH) $(MAKE) -C ./latex refman.pdf; \
|
||||
$(LN_S) ./latex/refman.pdf $@; \
|
||||
fi
|
||||
|
||||
|
||||
#
|
||||
# misc hooks
|
||||
#
|
||||
distclean-local:
|
||||
@rm -f $(DOXY_BUILD)
|
||||
@if test -f $(DOC_API_PDF); then \
|
||||
$(RM) -f $(DOC_API_PDF); \
|
||||
fi
|
||||
@if test -d html; then \
|
||||
$(RM) -rf html; \
|
||||
fi
|
||||
@if test -d latex; then \
|
||||
$(RM) -rf latex; \
|
||||
fi
|
||||
@if test -d rtf; then \
|
||||
$(RM) -rf rtf; \
|
||||
fi
|
||||
@if test -d man; then \
|
||||
$(RM) -rf man; \
|
||||
fi
|
||||
|
||||
doc-dist: doxygen-api
|
||||
echo "please wait while archiving the html docs."; \
|
||||
tar cf - -C ./html . | bzip2 --best -c > $(PACKAGE)-docs-$(VERSION).tar.bz2
|
||||
|
||||
# where to install all html documents
|
||||
TVMET_DOC_DIR = $(datadir)/doc/$(PACKAGE)-$(VERSION)
|
||||
|
||||
# Automake's "distcheck" is sensitive to having files left over
|
||||
# after "make uninstall", so we have to clean up the install hook.
|
||||
uninstall-local:
|
||||
@if test -d $(TVMET_DOC_DIR); then \
|
||||
rm -rf $(TVMET_DOC_DIR); \
|
||||
fi
|
||||
|
||||
# Install hooks
|
||||
make-install-dirs:
|
||||
@if test '!' -d $(TVMET_DOC_DIR); then \
|
||||
$(mkinstalldirs) $(TVMET_DOC_DIR); \
|
||||
fi
|
||||
|
||||
install-data-hook: make-install-dirs
|
||||
@echo Installing documentations into $(TVMET_DOC_DIR)
|
||||
@echo "install html"
|
||||
@$(INSTALL_DATA) @top_builddir@/doc/html/* $(TVMET_DOC_DIR)
|
||||
|
||||
else
|
||||
doc-dist:
|
||||
install-data-hook:
|
||||
endif # CONFIG_DOC
|
||||
|
||||
|
||||
# --------------------------------------------------------
|
||||
# in progress:
|
||||
# make refman twoside
|
||||
twoside:
|
||||
class=`cat latex/refman.tex | grep documentclass`
|
||||
newclass=`echo $$class | sed -e 's/twoside,//' -e 's/\[/\[twoside,/'`
|
||||
@echo "class:" $$class
|
||||
@echo "newclass:" $$newclass
|
||||
cat latex/refman.tex | sed 's/$$class/$$newclass/' >foo
|
687
tvmet-1.7.1/doc/Makefile.in
Normal file
687
tvmet-1.7.1/doc/Makefile.in
Normal file
@ -0,0 +1,687 @@
|
||||
# Makefile.in generated by automake 1.8.3 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# $Id: Makefile.am,v 1.22 2004/09/16 08:12:13 opetzold Exp $
|
||||
|
||||
|
||||
SOURCES = $(dox_functions_SOURCES) $(dox_operators_SOURCES)
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = ..
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = @INSTALL@
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
host_triplet = @host@
|
||||
noinst_PROGRAMS = dox_operators$(EXEEXT) dox_functions$(EXEEXT)
|
||||
subdir = doc
|
||||
DIST_COMMON = $(srcdir)/Doxyfile.in $(srcdir)/Makefile.am \
|
||||
$(srcdir)/Makefile.in $(srcdir)/footer.html.in \
|
||||
$(srcdir)/tvmet.sty.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/config/ac_c_long_long.m4 \
|
||||
$(top_srcdir)/config/ac_create_prefix_config_h.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_complex.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_complex_math1.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_complex_math2.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_ieee_math.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_mutable.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_namespaces.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_sysv_math.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_partial_specialization.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_typename.m4 \
|
||||
$(top_srcdir)/config/ac_set_compiler.m4 \
|
||||
$(top_srcdir)/config/op_doxygen_doc.m4 \
|
||||
$(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(mkdir_p)
|
||||
CONFIG_HEADER = $(top_builddir)/config/config.h
|
||||
CONFIG_CLEAN_FILES = Doxyfile footer.html tvmet.sty
|
||||
PROGRAMS = $(noinst_PROGRAMS)
|
||||
am_dox_functions_OBJECTS = dox_functions.$(OBJEXT)
|
||||
dox_functions_OBJECTS = $(am_dox_functions_OBJECTS)
|
||||
dox_functions_LDADD = $(LDADD)
|
||||
am_dox_operators_OBJECTS = dox_operators.$(OBJEXT)
|
||||
dox_operators_OBJECTS = $(am_dox_operators_OBJECTS)
|
||||
dox_operators_LDADD = $(LDADD)
|
||||
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/config
|
||||
depcomp = $(SHELL) $(top_srcdir)/config/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/dox_functions.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/dox_operators.Po
|
||||
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
|
||||
LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \
|
||||
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||
$(AM_CXXFLAGS) $(CXXFLAGS)
|
||||
CXXLD = $(CXX)
|
||||
CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \
|
||||
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) \
|
||||
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||
$(AM_CFLAGS) $(CFLAGS)
|
||||
CCLD = $(CC)
|
||||
LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
SOURCES = $(dox_functions_SOURCES) $(dox_operators_SOURCES)
|
||||
DIST_SOURCES = $(dox_functions_SOURCES) $(dox_operators_SOURCES)
|
||||
DATA = $(noinst_DATA)
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CONFIG_CPPUNIT_FALSE = @CONFIG_CPPUNIT_FALSE@
|
||||
CONFIG_CPPUNIT_TRUE = @CONFIG_CPPUNIT_TRUE@
|
||||
CONFIG_DOC_FALSE = @CONFIG_DOC_FALSE@
|
||||
CONFIG_DOC_TRUE = @CONFIG_DOC_TRUE@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@
|
||||
CPPUNIT_CONFIG = @CPPUNIT_CONFIG@
|
||||
CPPUNIT_LIBS = @CPPUNIT_LIBS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CXX_DEBUG_FLAGS = @CXX_DEBUG_FLAGS@
|
||||
CXX_OPTIMIZE_FLAGS = @CXX_OPTIMIZE_FLAGS@
|
||||
CXX_WARN_FLAGS = @CXX_WARN_FLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DOXYGEN = @DOXYGEN@
|
||||
DOXYGEN_HAVE_DOT = @DOXYGEN_HAVE_DOT@
|
||||
ECHO = @ECHO@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
F77 = @F77@
|
||||
FFLAGS = @FFLAGS@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LATEX_BATCHMODE = @LATEX_BATCHMODE@
|
||||
LATEX_MODE = @LATEX_MODE@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
RANLIB = @RANLIB@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_F77 = @ac_ct_F77@
|
||||
ac_ct_RANLIB = @ac_ct_RANLIB@
|
||||
ac_ct_STRIP = @ac_ct_STRIP@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
|
||||
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
datadir = @datadir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
AM_CXXFLAGS = -O \
|
||||
-I@top_srcdir@/include -I@top_builddir@/include
|
||||
|
||||
DOXY_DOC = \
|
||||
benchmark.dox \
|
||||
build.dox \
|
||||
compiler.dox \
|
||||
faq.dox \
|
||||
intro.dox \
|
||||
license.dox \
|
||||
links.dox \
|
||||
misc.dox \
|
||||
notes.dox \
|
||||
projects.dox \
|
||||
usage.dox \
|
||||
works.dox
|
||||
|
||||
HTML_MISC = \
|
||||
tvmet.css \
|
||||
header.html footer.html.in
|
||||
|
||||
LTEX_MISC = \
|
||||
tvmet.sty.in
|
||||
|
||||
BENCH_FIG = \
|
||||
axpy.png \
|
||||
matrix_matrix.png \
|
||||
matrix_vector.png \
|
||||
aat.png \
|
||||
ata.png
|
||||
|
||||
EXTRA_DIST = \
|
||||
$(DOXY_DOC) \
|
||||
$(HTML_MISC) \
|
||||
$(LTEX_MISC) \
|
||||
$(BENCH_FIG)
|
||||
|
||||
DISTCLEANFILES = \
|
||||
Doxyfile doxygen-warning \
|
||||
footer.html tvmet.sty
|
||||
|
||||
dox_operators_SOURCES = dox_operators.cc Util.h
|
||||
dox_functions_SOURCES = dox_functions.cc Util.h
|
||||
|
||||
#
|
||||
# rules for documentation, if ordered
|
||||
#
|
||||
|
||||
#
|
||||
# file created on the fly
|
||||
#
|
||||
@CONFIG_DOC_TRUE@DOXY_BUILD = \
|
||||
@CONFIG_DOC_TRUE@ changelog.dox \
|
||||
@CONFIG_DOC_TRUE@ news.dox \
|
||||
@CONFIG_DOC_TRUE@ credits.dox \
|
||||
@CONFIG_DOC_TRUE@ install.dox \
|
||||
@CONFIG_DOC_TRUE@ operators.dox \
|
||||
@CONFIG_DOC_TRUE@ functions.dox
|
||||
|
||||
@CONFIG_DOC_TRUE@DOXY_HTML_SRC = \
|
||||
@CONFIG_DOC_TRUE@ $(DOXY_DOC) \
|
||||
@CONFIG_DOC_TRUE@ $(DOXY_BUILD) \
|
||||
@CONFIG_DOC_TRUE@ $(patsubst %.in, %, $(HTML_MISC))
|
||||
|
||||
@CONFIG_DOC_TRUE@DOXY_LTEX_SRC = \
|
||||
@CONFIG_DOC_TRUE@ $(patsubst %.in, %, $(LTEX_MISC))
|
||||
|
||||
|
||||
#
|
||||
# doxygen API
|
||||
#
|
||||
@CONFIG_DOC_TRUE@DOC_API_PDF = $(PACKAGE)-$(VERSION).pdf
|
||||
|
||||
#
|
||||
# doxygen LaTeX API
|
||||
#
|
||||
@CONFIG_DOC_TRUE@TEXINPUTS_PATH = $(TEXINPUTS):$(top_builddir)
|
||||
@CONFIG_DOC_TRUE@noinst_DATA = $(DOC_API_PDF)
|
||||
|
||||
# where to install all html documents
|
||||
@CONFIG_DOC_TRUE@TVMET_DOC_DIR = $(datadir)/doc/$(PACKAGE)-$(VERSION)
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .cc .lo .o .obj
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu doc/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
Doxyfile: $(top_builddir)/config.status $(srcdir)/Doxyfile.in
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
|
||||
footer.html: $(top_builddir)/config.status $(srcdir)/footer.html.in
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
|
||||
tvmet.sty: $(top_builddir)/config.status $(srcdir)/tvmet.sty.in
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
|
||||
|
||||
clean-noinstPROGRAMS:
|
||||
@list='$(noinst_PROGRAMS)'; for p in $$list; do \
|
||||
f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
|
||||
echo " rm -f $$p $$f"; \
|
||||
rm -f $$p $$f ; \
|
||||
done
|
||||
dox_functions$(EXEEXT): $(dox_functions_OBJECTS) $(dox_functions_DEPENDENCIES)
|
||||
@rm -f dox_functions$(EXEEXT)
|
||||
$(CXXLINK) $(dox_functions_LDFLAGS) $(dox_functions_OBJECTS) $(dox_functions_LDADD) $(LIBS)
|
||||
dox_operators$(EXEEXT): $(dox_operators_OBJECTS) $(dox_operators_DEPENDENCIES)
|
||||
@rm -f dox_operators$(EXEEXT)
|
||||
$(CXXLINK) $(dox_operators_LDFLAGS) $(dox_operators_OBJECTS) $(dox_operators_LDADD) $(LIBS)
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dox_functions.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dox_operators.Po@am__quote@
|
||||
|
||||
.cc.o:
|
||||
@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
|
||||
|
||||
.cc.obj:
|
||||
@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
|
||||
.cc.lo:
|
||||
@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
distclean-libtool:
|
||||
-rm -f libtool
|
||||
uninstall-info-am:
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(ETAGS_ARGS)$$tags$$unique" \
|
||||
|| $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkdir_p) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(PROGRAMS) $(DATA) all-local
|
||||
installdirs:
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
|
||||
mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-libtool distclean-local distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am: dvi-local
|
||||
|
||||
html: html-am
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
@$(NORMAL_INSTALL)
|
||||
$(MAKE) $(AM_MAKEFLAGS) install-data-hook
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-man:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||
mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am: pdf-local
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am: ps-local
|
||||
|
||||
uninstall-am: uninstall-info-am uninstall-local
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
|
||||
clean-generic clean-libtool clean-noinstPROGRAMS ctags \
|
||||
distclean distclean-compile distclean-generic \
|
||||
distclean-libtool distclean-local distclean-tags distdir dvi \
|
||||
dvi-am dvi-local html html-am info info-am install install-am \
|
||||
install-data install-data-am install-exec install-exec-am \
|
||||
install-info install-info-am install-man install-strip \
|
||||
installcheck installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am pdf-local \
|
||||
ps ps-am ps-local tags uninstall uninstall-am \
|
||||
uninstall-info-am uninstall-local
|
||||
|
||||
|
||||
# some depencies
|
||||
Doxyfile: Doxyfile.in
|
||||
footer.html: footer.html.in
|
||||
tvmet.sty: tvmet.sty.in
|
||||
|
||||
# file creating rules; not needed every time
|
||||
@CONFIG_DOC_TRUE@operators.dox: dox_operators
|
||||
@CONFIG_DOC_TRUE@ ./dox_operators > operators.dox
|
||||
|
||||
@CONFIG_DOC_TRUE@functions.dox: dox_functions
|
||||
@CONFIG_DOC_TRUE@ ./dox_functions > functions.dox
|
||||
|
||||
# file creating rules
|
||||
@CONFIG_DOC_TRUE@changelog.dox: @top_srcdir@/ChangeLog
|
||||
@CONFIG_DOC_TRUE@ @echo "/** \page changelog ChangeLog" > $@
|
||||
@CONFIG_DOC_TRUE@ @echo "\verbatim" >> $@
|
||||
@CONFIG_DOC_TRUE@ cat $< >> $@
|
||||
@CONFIG_DOC_TRUE@ @echo "\endverbatim" >> $@
|
||||
@CONFIG_DOC_TRUE@ @echo "*/" >> $@
|
||||
|
||||
@CONFIG_DOC_TRUE@news.dox: @top_srcdir@/NEWS
|
||||
@CONFIG_DOC_TRUE@ @echo "/** \page news News" > $@
|
||||
@CONFIG_DOC_TRUE@ @echo "\verbatim" >> $@
|
||||
@CONFIG_DOC_TRUE@ cat $< >> $@
|
||||
@CONFIG_DOC_TRUE@ @echo "\endverbatim" >> $@
|
||||
@CONFIG_DOC_TRUE@ @echo "*/" >> $@
|
||||
|
||||
@CONFIG_DOC_TRUE@credits.dox: @top_srcdir@/THANKS
|
||||
@CONFIG_DOC_TRUE@ @echo "/** \page credits Credits" > $@
|
||||
@CONFIG_DOC_TRUE@ @echo "\verbatim" >> $@
|
||||
@CONFIG_DOC_TRUE@ cat $< >> $@
|
||||
@CONFIG_DOC_TRUE@ @echo "\endverbatim" >> $@
|
||||
@CONFIG_DOC_TRUE@ @echo "*/" >> $@
|
||||
|
||||
@CONFIG_DOC_TRUE@install.dox: @top_srcdir@/INSTALL
|
||||
@CONFIG_DOC_TRUE@ @echo "/** \page basic_install INSTALL" > $@
|
||||
@CONFIG_DOC_TRUE@ @echo "\verbatim" >> $@
|
||||
@CONFIG_DOC_TRUE@ cat $< >> $@
|
||||
@CONFIG_DOC_TRUE@ @echo "\endverbatim" >> $@
|
||||
@CONFIG_DOC_TRUE@ @echo "*/" >> $@
|
||||
|
||||
@CONFIG_DOC_TRUE@all-local: doxygen-api
|
||||
|
||||
# need's LaTeX style, since we use an own style for LaTeX
|
||||
# which is required for generating formulas in HTML too.
|
||||
# Doxygen LaTeX batchmode doesn't solves the problem right here.
|
||||
@CONFIG_DOC_TRUE@doxygen-html-dir:
|
||||
@CONFIG_DOC_TRUE@ @if test ! -d ./html; then mkdir ./html; fi
|
||||
|
||||
@CONFIG_DOC_TRUE@doxygen-api: doxygen-html-dir Doxyfile $(DOXY_HTML_SRC)
|
||||
@CONFIG_DOC_TRUE@ @echo "Making HTML manual"
|
||||
@CONFIG_DOC_TRUE@ @cp @builddir@/tvmet.sty ./html/
|
||||
@CONFIG_DOC_TRUE@ @DOXYGEN@ $(DOXYGEN_OPTS)
|
||||
@CONFIG_DOC_TRUE@ @$(RM) -f ./html/tvmet.sty
|
||||
|
||||
@CONFIG_DOC_TRUE@all-local: $(noinst_DATA)
|
||||
|
||||
@CONFIG_DOC_TRUE@dvi-local:
|
||||
@CONFIG_DOC_TRUE@ps-local:
|
||||
@CONFIG_DOC_TRUE@pdf-local: $(DOC_API_PDF)
|
||||
|
||||
@CONFIG_DOC_TRUE@$(DOC_API_PDF): Doxyfile $(DOXY_LTEX_SRC)
|
||||
@CONFIG_DOC_TRUE@ @if test -d ./latex; then \
|
||||
@CONFIG_DOC_TRUE@ echo "Making PDF manual"; \
|
||||
@CONFIG_DOC_TRUE@ if test -f $@; then \
|
||||
@CONFIG_DOC_TRUE@ $(RM) $@; \
|
||||
@CONFIG_DOC_TRUE@ fi; \
|
||||
@CONFIG_DOC_TRUE@ TEXINPUTS=$(TEXINPUTS_PATH) $(MAKE) -C ./latex refman.pdf; \
|
||||
@CONFIG_DOC_TRUE@ $(LN_S) ./latex/refman.pdf $@; \
|
||||
@CONFIG_DOC_TRUE@ fi
|
||||
|
||||
#
|
||||
# misc hooks
|
||||
#
|
||||
@CONFIG_DOC_TRUE@distclean-local:
|
||||
@CONFIG_DOC_TRUE@ @rm -f $(DOXY_BUILD)
|
||||
@CONFIG_DOC_TRUE@ @if test -f $(DOC_API_PDF); then \
|
||||
@CONFIG_DOC_TRUE@ $(RM) -f $(DOC_API_PDF); \
|
||||
@CONFIG_DOC_TRUE@ fi
|
||||
@CONFIG_DOC_TRUE@ @if test -d html; then \
|
||||
@CONFIG_DOC_TRUE@ $(RM) -rf html; \
|
||||
@CONFIG_DOC_TRUE@ fi
|
||||
@CONFIG_DOC_TRUE@ @if test -d latex; then \
|
||||
@CONFIG_DOC_TRUE@ $(RM) -rf latex; \
|
||||
@CONFIG_DOC_TRUE@ fi
|
||||
@CONFIG_DOC_TRUE@ @if test -d rtf; then \
|
||||
@CONFIG_DOC_TRUE@ $(RM) -rf rtf; \
|
||||
@CONFIG_DOC_TRUE@ fi
|
||||
@CONFIG_DOC_TRUE@ @if test -d man; then \
|
||||
@CONFIG_DOC_TRUE@ $(RM) -rf man; \
|
||||
@CONFIG_DOC_TRUE@ fi
|
||||
|
||||
@CONFIG_DOC_TRUE@doc-dist: doxygen-api
|
||||
@CONFIG_DOC_TRUE@ echo "please wait while archiving the html docs."; \
|
||||
@CONFIG_DOC_TRUE@ tar cf - -C ./html . | bzip2 --best -c > $(PACKAGE)-docs-$(VERSION).tar.bz2
|
||||
|
||||
# Automake's "distcheck" is sensitive to having files left over
|
||||
# after "make uninstall", so we have to clean up the install hook.
|
||||
@CONFIG_DOC_TRUE@uninstall-local:
|
||||
@CONFIG_DOC_TRUE@ @if test -d $(TVMET_DOC_DIR); then \
|
||||
@CONFIG_DOC_TRUE@ rm -rf $(TVMET_DOC_DIR); \
|
||||
@CONFIG_DOC_TRUE@ fi
|
||||
|
||||
# Install hooks
|
||||
@CONFIG_DOC_TRUE@make-install-dirs:
|
||||
@CONFIG_DOC_TRUE@ @if test '!' -d $(TVMET_DOC_DIR); then \
|
||||
@CONFIG_DOC_TRUE@ $(mkinstalldirs) $(TVMET_DOC_DIR); \
|
||||
@CONFIG_DOC_TRUE@ fi
|
||||
|
||||
@CONFIG_DOC_TRUE@install-data-hook: make-install-dirs
|
||||
@CONFIG_DOC_TRUE@ @echo Installing documentations into $(TVMET_DOC_DIR)
|
||||
@CONFIG_DOC_TRUE@ @echo "install html"
|
||||
@CONFIG_DOC_TRUE@ @$(INSTALL_DATA) @top_builddir@/doc/html/* $(TVMET_DOC_DIR)
|
||||
|
||||
@CONFIG_DOC_FALSE@doc-dist:
|
||||
@CONFIG_DOC_FALSE@install-data-hook:
|
||||
|
||||
# --------------------------------------------------------
|
||||
# in progress:
|
||||
# make refman twoside
|
||||
twoside:
|
||||
class=`cat latex/refman.tex | grep documentclass`
|
||||
newclass=`echo $$class | sed -e 's/twoside,//' -e 's/\[/\[twoside,/'`
|
||||
@echo "class:" $$class
|
||||
@echo "newclass:" $$newclass
|
||||
cat latex/refman.tex | sed 's/$$class/$$newclass/' >foo
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
202
tvmet-1.7.1/doc/Util.h
Normal file
202
tvmet-1.7.1/doc/Util.h
Normal file
@ -0,0 +1,202 @@
|
||||
/*
|
||||
* Tiny Vector Matrix Library
|
||||
* Dense Vector Matrix Libary of Tiny size using Expression Templates
|
||||
*
|
||||
* Copyright (C) 2001 - 2003 Olaf Petzold <opetzold@users.sourceforge.net>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* $Id: Util.h,v 1.5 2003/12/19 18:01:37 opetzold Exp $
|
||||
*/
|
||||
|
||||
#ifndef TVMET_DOC_UTIL_H
|
||||
#define TVMET_DOC_UTIL_H
|
||||
|
||||
#include <vector>
|
||||
#include <tvmet/config.h>
|
||||
|
||||
struct Function {
|
||||
Function() { }
|
||||
virtual ~Function() { }
|
||||
virtual const char* name() const = 0;
|
||||
virtual const char* description() const = 0;
|
||||
virtual bool int_only() const = 0;
|
||||
static const char* group() { return "_function"; }
|
||||
static const char* group_unary() { return "_unary_function"; }
|
||||
static const char* group_binary() { return "_binary_function"; }
|
||||
template<class Stream> static Stream& doxy_groups(Stream& os) {
|
||||
os << "/**\n"
|
||||
<< " * \\defgroup " << group() << " Global Functions\n"
|
||||
<< " */\n\n";
|
||||
os << "/**\n"
|
||||
<< " * \\defgroup " << group_unary() << " Global Unary Functions\n"
|
||||
<< " * \\ingroup " << group() << "\n"
|
||||
<< " */\n\n";
|
||||
os << "/**\n"
|
||||
<< " * \\defgroup " << group_binary() << " Global Binary Functions\n"
|
||||
<< " * \\ingroup " << group() << "\n"
|
||||
<< " */\n\n";
|
||||
os << "/**\n"
|
||||
<< " * \\defgroup " << "_trinary_function" << " Global Trinary Functions\n"
|
||||
<< " * \\ingroup " << group() << "\n"
|
||||
<< " */\n\n";
|
||||
return os;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
class BinaryFunction : public Function {
|
||||
public:
|
||||
BinaryFunction(const char* s, const char* d, bool i = false)
|
||||
: m_name(s), m_description(d), m_int_only(i) { }
|
||||
const char* name() const { return m_name; }
|
||||
const char* description() const { return m_description; }
|
||||
const char* group() const { return group_binary(); }
|
||||
bool int_only() const { return m_int_only; }
|
||||
private:
|
||||
const char* m_name;
|
||||
const char* m_description;
|
||||
bool m_int_only;
|
||||
};
|
||||
|
||||
class UnaryFunction : public Function {
|
||||
public:
|
||||
UnaryFunction(const char* s, const char* d, bool i = false)
|
||||
: m_name(s), m_description(d), m_int_only(i) { }
|
||||
virtual ~UnaryFunction() { }
|
||||
const char* name() const { return m_name; }
|
||||
const char* description() const { return m_description; }
|
||||
const char* group() const { return group_unary(); }
|
||||
bool int_only() const { return m_int_only; }
|
||||
private:
|
||||
const char* m_name;
|
||||
const char* m_description;
|
||||
bool m_int_only;
|
||||
};
|
||||
|
||||
struct Operator {
|
||||
Operator() { }
|
||||
virtual ~Operator() { }
|
||||
virtual const char* symbol() const = 0;
|
||||
virtual const char* description() const = 0;
|
||||
virtual bool int_only() const = 0;
|
||||
static const char* group() { return "_operator"; }
|
||||
static const char* group_unary() { return "_unary_operator"; }
|
||||
static const char* group_binary() { return "_binary_operator"; }
|
||||
template<class Stream> static Stream& doxy_groups(Stream& os) {
|
||||
os << "/**\n"
|
||||
<< " * \\defgroup " << group() << " Global Operators\n"
|
||||
<< " */\n\n";
|
||||
os << "/**\n"
|
||||
<< " * \\defgroup " << group_binary() << " Global Binary Operators\n"
|
||||
<< " * \\ingroup " << group() << "\n"
|
||||
<< " */\n\n";
|
||||
os << "/**\n"
|
||||
<< " * \\defgroup " << group_unary() << " Global Unary Operators\n"
|
||||
<< " * \\ingroup " << group() << "\n"
|
||||
<< " */\n\n";
|
||||
return os;
|
||||
}
|
||||
};
|
||||
|
||||
class BinaryOperator : public Operator {
|
||||
public:
|
||||
BinaryOperator(const char* s, const char* d, bool i = false)
|
||||
: m_symbol(s), m_description(d), m_int_only(i) { }
|
||||
virtual ~BinaryOperator() { }
|
||||
const char* symbol() const { return m_symbol; }
|
||||
const char* description() const { return m_description; }
|
||||
const char* group() const { return group_binary(); }
|
||||
bool int_only() const { return m_int_only; }
|
||||
private:
|
||||
const char* m_symbol;
|
||||
const char* m_description;
|
||||
bool m_int_only;
|
||||
};
|
||||
|
||||
class UnaryOperator : public Operator {
|
||||
public:
|
||||
UnaryOperator(const char* s, const char* d, bool i = false)
|
||||
: m_symbol(s), m_description(d), m_int_only(i) { }
|
||||
virtual ~UnaryOperator() { }
|
||||
const char* symbol() const { return m_symbol; }
|
||||
const char* description() const { return m_description; }
|
||||
const char* group() const { return group_unary(); }
|
||||
bool int_only() const { return m_int_only; }
|
||||
private:
|
||||
const char* m_symbol;
|
||||
const char* m_description;
|
||||
bool m_int_only;
|
||||
};
|
||||
|
||||
class DataType {
|
||||
public:
|
||||
DataType(const char* s, const char* d, bool i = false)
|
||||
: m_name(s), m_description(d), m_is_int(i){ }
|
||||
const char* name() const { return m_name; }
|
||||
const char* description() const { return m_description; }
|
||||
bool is_int() const { return m_is_int; }
|
||||
private:
|
||||
const char* m_name;
|
||||
const char* m_description;
|
||||
bool m_is_int;
|
||||
};
|
||||
|
||||
class Type
|
||||
{
|
||||
public:
|
||||
Type() {
|
||||
datatypes.push_back( DataType("int", "int", true) );
|
||||
datatypes.push_back( DataType("float", "float") );
|
||||
datatypes.push_back( DataType("double", "double") );
|
||||
#ifdef TVMET_HAVE_LONG_DOUBLE
|
||||
datatypes.push_back( DataType("long double", "long double") );
|
||||
#endif // HAVE_LONG_DOUBLE
|
||||
#ifdef TVMET_HAVE_COMPLEX
|
||||
datatypes.push_back( DataType("const std::complex<T>&", "std::complex<T>") );
|
||||
#endif // HAVE_COMPLEX
|
||||
}
|
||||
|
||||
virtual ~Type() { }
|
||||
|
||||
public:
|
||||
template<class Stream>
|
||||
Stream& header(Stream& os) const {
|
||||
os << "namespace tvmet {\n\n";
|
||||
return os;
|
||||
}
|
||||
|
||||
template<class Stream>
|
||||
Stream& footer(Stream& os) const {
|
||||
os << "\n} // namespace tvmet\n\n";
|
||||
return os;
|
||||
}
|
||||
|
||||
public:
|
||||
typedef std::vector< DataType >::const_iterator const_iterator;
|
||||
|
||||
public:
|
||||
const_iterator begin() const { return datatypes.begin(); }
|
||||
const_iterator end() const { return datatypes.end(); }
|
||||
|
||||
private:
|
||||
std::vector< DataType > datatypes;
|
||||
};
|
||||
|
||||
#endif // TVMET_DOC_UTIL_H
|
||||
|
||||
// Local Variables:
|
||||
// mode:C++
|
||||
// End:
|
BIN
tvmet-1.7.1/doc/aat.png
Normal file
BIN
tvmet-1.7.1/doc/aat.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 19 KiB |
BIN
tvmet-1.7.1/doc/ata.png
Normal file
BIN
tvmet-1.7.1/doc/ata.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
BIN
tvmet-1.7.1/doc/axpy.png
Normal file
BIN
tvmet-1.7.1/doc/axpy.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 23 KiB |
52
tvmet-1.7.1/doc/benchmark.dox
Normal file
52
tvmet-1.7.1/doc/benchmark.dox
Normal file
@ -0,0 +1,52 @@
|
||||
/*
|
||||
* $Id: benchmark.dox,v 1.8 2004/04/10 04:58:35 opetzold Exp $
|
||||
*/
|
||||
|
||||
/**
|
||||
|
||||
\page benchmark Benchmark
|
||||
|
||||
Prior to version 0.8.0, tvmet had benchmark results listed here. Benchmarking
|
||||
isn't as easy as had been thought. The compiler's optimizer is very tricky -
|
||||
even more than I am. 8( To outwit the optimizer takes time - I would rather
|
||||
put the time into tvmet, itself.
|
||||
|
||||
Laurent Plagne has created some benchmarks using tvmet and other libraries,
|
||||
please have a look at
|
||||
<a href="http://www.opencascade.org/upload/87">opencascade</a>.
|
||||
|
||||
The following benchmarks are done on my
|
||||
Intel(R) Pentium(R) 4 CPU 2.40GHz
|
||||
Linux box:
|
||||
- \ref bench_axpy
|
||||
- \ref bench_matrix_matrix
|
||||
- \ref bench_matrix_vector
|
||||
- \ref bench_aat
|
||||
- \ref bench_ata
|
||||
|
||||
using a patched version of BTL 20030124. The patch is necessary to be able
|
||||
to compile tvmet due to the high inline level used here. The patch is
|
||||
distributed with the package.
|
||||
|
||||
\section bench_axpy axpy
|
||||
\image html axpy.png "axpy"
|
||||
|
||||
\section bench_matrix_matrix Matrix-Matrix
|
||||
\image html matrix_matrix.png "Matrix-Matrix"
|
||||
|
||||
\section bench_matrix_vector Matrix-Vector
|
||||
\image html matrix_vector.png "Matrix-Vector"
|
||||
|
||||
\section bench_aat MMt
|
||||
\image html aat.png "M M^t"
|
||||
|
||||
\section bench_ata MtM
|
||||
\image html ata.png "M^t M"
|
||||
|
||||
*/
|
||||
|
||||
|
||||
// Local Variables:
|
||||
// mode:c++
|
||||
// End:
|
||||
// LocalWords: BTL GHz Plagne
|
199
tvmet-1.7.1/doc/build.dox
Normal file
199
tvmet-1.7.1/doc/build.dox
Normal file
@ -0,0 +1,199 @@
|
||||
/*
|
||||
* $Id: build.dox,v 1.14 2005/04/07 15:59:19 opetzold Exp $
|
||||
*/
|
||||
|
||||
/**
|
||||
\page build Download, Configuration, Build and Installation of the library
|
||||
|
||||
<p>Contents:</p>
|
||||
- \ref download
|
||||
- \ref configure_unix
|
||||
- \ref install_unix
|
||||
- \ref install_win
|
||||
|
||||
|
||||
|
||||
|
||||
\section download Download tvmet
|
||||
|
||||
<p>
|
||||
You can download %tvmet <a href=http://sourceforge.net/project/showfiles.php?group_id=39733>here</a>.
|
||||
For the regression tests you will need <a href=http://sourceforge.net/projects/cppunit>CppUnit</a>.
|
||||
While these tests are not mandatory, they are recommended.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
For the API documentation you will also need <a href=http://www.doxygen.org>doxygen</a>,
|
||||
maybe you want a graphical class hierarchy, class graph etc you need
|
||||
the 'dot' tool of <a href="http://www.graphviz.org/">GraphViz</a>
|
||||
to draw the miscellaneous graphs.
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\section configure_unix Configure tvmet on unix
|
||||
|
||||
See the \ref basic_install file for general informations.
|
||||
|
||||
<b>NEW</b> Starting with tvmet version 1.5.0 the configuration options
|
||||
has been changed!
|
||||
|
||||
<dl>
|
||||
<dt><tt>--enable-optimize</tt></dt>
|
||||
<dd>This affects the compiler optimization options. Machine specific
|
||||
compiler flags are switched on as well. The <code>TVMET_OPTIMIZE</code>
|
||||
symbol is defined, which uses the gcc's
|
||||
<code>__attribute__((always_inline))</code>.
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<dl>
|
||||
<dt><tt>--enable-debug</tt></dt>
|
||||
<dd>Enables debugging mode for %tvmet. This affects the compiler
|
||||
options and preprocessor definitions. The <code>TVMET_DEBUG</code>
|
||||
symbol is defined. If you compile %tvmet from another source directory
|
||||
which defines <code>DEBUG</code>, then <code>TVMET_DEBUG</code> will be
|
||||
<b>not</b> defined (This behavior differs from release less than 0.6.0).
|
||||
Please have a look at the \ref debug section of the \ref faq.
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<dl>
|
||||
<dt><tt>--enable-warnings</tt></dt>
|
||||
<dd>This affects the compiler warning options. The warning level is on
|
||||
a high level for default!</dd>
|
||||
</dl>
|
||||
|
||||
<dl>
|
||||
<dt><tt>--enable-docs</tt></dt>
|
||||
<dd>Enables generation of API documentation using <a href=http://www.doxygen.org>doxygen</a>.
|
||||
If the configure scripts founds the <a href="http://www.graphviz.org/">GraphViz</a>
|
||||
'dot' tool it will be used. Further more an PDF file of the API
|
||||
will be generated using doxygen too.
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<dl>
|
||||
<dt><tt>--enable-verbose-latex</tt></dt>
|
||||
<dd>Uses LaTeX non-stop mode for generating the PDF file of tvmet's
|
||||
API documentation.
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<dl>
|
||||
<dt><tt>--disable-cppunit</tt></dt>
|
||||
<dd>Disables the regression/unit test. For these tests you need an installed
|
||||
<a href="http://www.sourceforge.net/projects/cppunit">CppUnit</a>.
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<dl>
|
||||
<dt><tt>--with-cxx=compiler</tt></dt>
|
||||
<dd>Set the C++ compiler to compiler and options. The known compiler are
|
||||
the GNU g++ (default), Intel icc, Kai C++ KCC, Portland Group C++ pgCC.
|
||||
Please have a look at the \ref compiler page.
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\section install_unix Build and Installation of tvmet on unix
|
||||
|
||||
The build target for make are:
|
||||
|
||||
<dl>
|
||||
<dt><tt>all</tt></dt>
|
||||
<dd>Makes tvmet ready for installation.</dd>
|
||||
</dl>
|
||||
|
||||
<dl>
|
||||
<dt><tt>docs</tt></dt>
|
||||
<dd>Makes the documentation using doxygen. Depends on the options given
|
||||
to the configure script, the documentation are HTML and PDF/LaTeX.</dd>
|
||||
</dl>
|
||||
|
||||
<dl>
|
||||
<dt><tt>check</tt></dt>
|
||||
<dd>Build and run the regression tests (needs CppUnit).</dd>
|
||||
</dl>
|
||||
|
||||
<dl>
|
||||
<dt><tt>install</tt></dt>
|
||||
<dd>Installs tvmet.</dd>
|
||||
</dl>
|
||||
|
||||
<dl>
|
||||
<dt><tt>uninstall</tt></dt>
|
||||
<dd>Do you really want this? :-)</dd>
|
||||
</dl>
|
||||
|
||||
Further more inside the <tt>examples</tt> directory there is the target:
|
||||
|
||||
<dl>
|
||||
<dt><tt>examples</tt></dt>
|
||||
<dd>Build tvmet's examples.
|
||||
|
||||
At this date the example directory contains simple examples
|
||||
for matrix, vector and matrix-vector operations. Further more
|
||||
some sources which shows the use for expression tree printing
|
||||
(expands the expression tree used).
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
Files will be installed in the following directories:
|
||||
|
||||
<ul>
|
||||
<li><tt>Executables -> ${prefix}/bin</tt></li>
|
||||
<li><tt>Docs -> ${prefix}/share/doc/tvmet-${version}</tt></li>
|
||||
<li><tt>Man pages -> ${prefix}/man</tt></li>
|
||||
<li><tt>Header file -> ${prefix}/include/tvmet</tt></li>
|
||||
</ul>
|
||||
|
||||
Default value for prefix is <tt>/usr/local</tt> but you may change it
|
||||
with <tt>--prefix</tt> option to the <tt>configure</tt> script (see above).
|
||||
|
||||
|
||||
|
||||
|
||||
\section install_win Build and Installation of tvmet on MS Windows
|
||||
|
||||
First, the windows version used doesn't matter - the compiler is your
|
||||
tool. The compiler has to understand the high level C++ style of
|
||||
tvmet.
|
||||
|
||||
Second, tvmet comes with pre-configured files for the windows compiler.
|
||||
Therefore you don't need to follow the configure and build procedure. An
|
||||
exception is the <a href="http://www.cygwin.com">cygwin</a> and
|
||||
<a href="http://www.mingw.org/">MinGW</a> environment
|
||||
since they emulate the unix environment on windows - they follow the
|
||||
unix style process therefore.
|
||||
|
||||
Well, simply copy the tvmet source tree complete or only the include
|
||||
directory to a location of your choice and include the path to your
|
||||
compiler environment. Thats all.
|
||||
|
||||
To build the regression tests it's on your own to build support for
|
||||
<a href="http://cppunit.sourceforge.net">cppunit</a> and create the
|
||||
appropriate sub-project. tvmet does not deliver Microsoft Visual Studio
|
||||
project files.
|
||||
|
||||
If of interest the config file for Visual Studio can be found on
|
||||
<tt>tvmet/config/config-vc71.h</tt>. There are all compiler quirks and
|
||||
defines needed.
|
||||
|
||||
|
||||
\sa \ref vc71
|
||||
|
||||
|
||||
*/
|
||||
|
||||
|
||||
// Local Variables:
|
||||
// mode:c++
|
||||
// End:
|
||||
// LocalWords: CppUnit GraphViz doxygen
|
375
tvmet-1.7.1/doc/compiler.dox
Normal file
375
tvmet-1.7.1/doc/compiler.dox
Normal file
@ -0,0 +1,375 @@
|
||||
/*
|
||||
* $Id: compiler.dox,v 1.24 2005/03/09 12:05:19 opetzold Exp $
|
||||
*/
|
||||
|
||||
/**
|
||||
\page compiler Compiler Support
|
||||
|
||||
<p>Contents:</p>
|
||||
- \ref requirements
|
||||
- \ref gcc
|
||||
- \ref kcc
|
||||
- \ref pgCC
|
||||
- \ref intel
|
||||
- \ref vc71
|
||||
|
||||
\section requirements General compiler Requirements
|
||||
|
||||
This library is designed for portability - no compiler specific extensions
|
||||
are used. Nevertheless, there are a few requirements: (These are all a part
|
||||
of the C++ standard.)
|
||||
|
||||
- Support for the <tt>mutable</tt> keyword is required. This is used by the
|
||||
CommaInitializer only.
|
||||
|
||||
- The <tt>typename</tt> keyword is used exhaustively here.
|
||||
|
||||
- The namespace concept is required. The tvmet library is itself is a
|
||||
namespace. To avoid collisions of operators, there is also an element_wise
|
||||
namespace within tvmet.
|
||||
|
||||
- Partial specialization is needed for the extrema functions min and max
|
||||
to distinguish between vectors and matrices. This allows tvmet to return
|
||||
an object with a specific behavior. (The location of an extremum in a
|
||||
matrix has a (row, column) position whereas a vector extremum has only a
|
||||
single index for its position).
|
||||
|
||||
\section gcc The GNU Compiler Collection
|
||||
|
||||
The <a href=http://gcc.gnu.org>GNU compiler</a> collection is mainly used for
|
||||
developing this library. Moreover, it does compile the library the fastest.
|
||||
|
||||
\subsection gcc2953 GNU C++ Compiler v2.95.3
|
||||
|
||||
Gcc v2.95.3 is the last official release of the version 2 series from gnu.org.
|
||||
Since this compiler features the \ref requirements it does work, but only
|
||||
partial.
|
||||
|
||||
There are certain difficulties - see \ref ambiguous_overload (also, please
|
||||
read about \ref gcc296). Furthermore, there are problems with functions and
|
||||
operators declared in the namespace <code>element_wise</code> - the
|
||||
compiler doesn't seem to find them--even though the compiler does know
|
||||
about namespace tvmet. It appears to be a problem with nested namespaces and
|
||||
the compiler's ability to perform function/operator lookup, especially during
|
||||
regression tests: <code> matrix /= matrix </code> compiles inside a single
|
||||
file but not at the regression tests--which is a contradiction in terms.
|
||||
|
||||
Porting to gcc v2.95.3 requires a lot of knowledge and effort--unfortunately,
|
||||
I don't have enough of either. The examples do compile and the regression
|
||||
tests build partially.
|
||||
|
||||
Matrix and vector operators are working, but don't expect too much.
|
||||
|
||||
\subsection gcc296 GNU C++ Compiler v2.96 (Rh7.x, MD8.x)
|
||||
|
||||
This compiler isn't an official release of the GNU Compiler group but shipped
|
||||
by <a href=http://www.redhat.com>Red Hat</a> and Co.
|
||||
|
||||
Blitz++ is using a hasFastAccess() flag to perform a check for the use of
|
||||
_bz_meta_vecAssign::fastAssign (without bounds checking) or
|
||||
_bz_meta_vecAssign::assign (with bounds checking). This
|
||||
isn't really necessary for operations on blitz::TinyVector, since it's
|
||||
always true. Nevertheless, it is important for the produced asm code using
|
||||
the gcc-c++-2.96-0.48mdk. Generally the code for Blitz++ using the gcc-2.96
|
||||
is better than tvmet because of this (tested!).
|
||||
|
||||
I got into trouble with stl_relops.h where miscellaneous operators are defined. A
|
||||
simple define of __SGI_STL_INTERNAL_RELOPS in the config header doesn't solve
|
||||
the problem, only the commented out header version, see \ref
|
||||
ambiguous_overload. Because of this problem, the regression tests don't
|
||||
compile with this version. Projects with do not use the relational
|
||||
operators are not affected.
|
||||
|
||||
It seems that the inlining performed by this compiler collection isn't very
|
||||
smart. I got a lot of warnings: can't inline call to ... So, it would be
|
||||
best to use the \ref gcc30x and later compilers.
|
||||
|
||||
\subsection gcc30x GNU C++ Compiler v3.0.x
|
||||
|
||||
These compiler produce better code than the \ref gcc296! Even the problems
|
||||
with blitz++ fastAssign have vanished. And this compiler conforms to the
|
||||
standard. The regression tests does compile and run successfully.
|
||||
|
||||
Due to the nature of ET and MT there is a need for a high level of inlining.
|
||||
The v3.0.x seems to do this well as compared to the v2.9x compilers which
|
||||
produce inline warnings.
|
||||
|
||||
This compiler works great with the
|
||||
<a href=http://www.stlport.org">STLPort-4.5.3</a>
|
||||
implementation of the STL/C++ Library, Tiny Vector and Matrix template library
|
||||
and <a href=http://cppunit.sourceforge.net>cpp-unit</a>.
|
||||
|
||||
\subsection gcc31x GNU C++ Compiler v3.1
|
||||
|
||||
%tvmet does compile with this new GNU C++ compiler. The produced code looks
|
||||
as good as the code created by \ref gcc30x. (Does anyone have time to make
|
||||
a benchmark?)
|
||||
|
||||
The primary goal is conformance to the standard ISO/IEC 14882:1998.
|
||||
|
||||
\subsection gcc32x GNU C++ Compiler v3.2.x
|
||||
|
||||
The once again changed Application Binary Interface (ABI) doesn't affect
|
||||
tvmet since it isn't a binary library--it's only compiled templates inside
|
||||
the client code.
|
||||
|
||||
There are some problems with the GNU C++ compiler collection on the
|
||||
regression test due to some bugs (IMO), \sa \ref regressiontest_failed.
|
||||
|
||||
\subsection gcc33x GNU C++ Compiler v3.3
|
||||
|
||||
Tested and works fine. Only some warnings on failed inlining which doesn't
|
||||
concern tvmet directly.
|
||||
|
||||
Anyway, here the code from <tt>examples/ray.cc</tt> on gcc 3.3.3 using
|
||||
<tt>-O2 -DTVMET_OPTIMIZE</tt>
|
||||
|
||||
\par Assembler (IA-32 Intel® Architecture):
|
||||
\code
|
||||
movl 16(%ebp), %edx
|
||||
movl 12(%ebp), %ebx
|
||||
movl 8(%ebp), %esi
|
||||
fldl 8(%edx)
|
||||
fldl 16(%edx)
|
||||
fmull 16(%ebx)
|
||||
fxch %st(1)
|
||||
movl %ebx, -24(%ebp)
|
||||
fmull 8(%ebx)
|
||||
movl %edx, -32(%ebp)
|
||||
fldl (%edx)
|
||||
fmull (%ebx)
|
||||
fxch %st(1)
|
||||
movl %edx, -60(%ebp)
|
||||
movl %edx, -12(%ebp)
|
||||
faddp %st, %st(2)
|
||||
faddp %st, %st(1)
|
||||
fadd %st(0), %st
|
||||
fstpl -56(%ebp)
|
||||
movl -56(%ebp), %ecx
|
||||
movl -52(%ebp), %eax
|
||||
movl %ecx, -20(%ebp)
|
||||
movl %eax, -16(%ebp)
|
||||
movl %ecx, -40(%ebp)
|
||||
movl %eax, -36(%ebp)
|
||||
movl %ecx, -68(%ebp)
|
||||
movl %eax, -64(%ebp)
|
||||
fldl (%edx)
|
||||
fmull -20(%ebp)
|
||||
fsubrl (%ebx)
|
||||
fstpl (%esi)
|
||||
fldl 8(%edx)
|
||||
fmull -20(%ebp)
|
||||
fsubrl 8(%ebx)
|
||||
fstpl 8(%esi)
|
||||
fldl 16(%edx)
|
||||
fmull -20(%ebp)
|
||||
fsubrl 16(%ebx)
|
||||
fstpl 16(%esi)
|
||||
addl $64, %esp
|
||||
popl %ebx
|
||||
popl %esi
|
||||
popl %ebp
|
||||
ret
|
||||
\endcode
|
||||
|
||||
\subsection gcc34x GNU C++ Compiler v3.4.x
|
||||
|
||||
The compiler 3.4.3 works fine, starting with tvmet release 1.7.1. The problem is
|
||||
the correct syntax for the CommaInitializer template declaration and
|
||||
implementation.
|
||||
|
||||
There is no assembler output for our <tt>examples/ray.cc</tt>, since I don't
|
||||
have this compiler yet (yes, I need to update my linux system ;-)
|
||||
|
||||
|
||||
\section kcc Kai C++
|
||||
|
||||
This has not been tested. Unfortunately Kai's compiler is no longer shipped
|
||||
-- one should use the Intel compiler instead
|
||||
(see <a href=http://www.kai.com>here</a>).
|
||||
|
||||
If you have used it successfully including regression and/or benchmark tests,
|
||||
please give me an answer.
|
||||
|
||||
\section pgCC Portland Group Compiler Technology
|
||||
|
||||
\subsection pgCC32 Portland Group C++ 3.2
|
||||
|
||||
The <a href=http://www.pgroup.com>Portland Group</a> C++ compiler is shipped
|
||||
with the RogueWave Standard C++ Library which provides conformance to the
|
||||
standard. Unfortunately, the <cname> C library wrapper headers and the C++
|
||||
overloads of the math functions are not provided on all platforms, see
|
||||
<http://www.cug.com/roundup>. The download evaluation version 3.2-4 for
|
||||
Linux is affected for example. At first glance, it does compile with pgCC
|
||||
since it has has the great <a href=http://www.edg.com>EDG</a> front-end.
|
||||
|
||||
Maybe there is a solution with other standard library implementations like
|
||||
<a href=http://www.stlport.org>STLPort</a> (On a quick try the STL Port
|
||||
doesn't recognize the pgCC). If you know more about this, please let me know.
|
||||
|
||||
Anyway, the code produced is very poor even if I use high inlining levels
|
||||
like the command line option -Minline=levels:100 which increases the compile
|
||||
time dramatically! The benchmark tests have not been done. Unfortunately,
|
||||
my trial period has expired. I haven't any idea if this compiler will pass
|
||||
the regression tests.
|
||||
|
||||
\subsection pgCC51 Portland Group C++ 5.1
|
||||
|
||||
The <a href=http://www.pgroup.com>Portland Group</a> C++ compiler is shipped
|
||||
with the <a href=http://www.stlport.org>STLport</a> Standard C++ Library, cool!
|
||||
|
||||
The code produced isn't very compact compared with the intel or gnu compiler.
|
||||
Anyway it works, but the compiler time increases dramatically
|
||||
even on higher inline levels.
|
||||
|
||||
|
||||
\section intel Intel Compiler
|
||||
|
||||
\subsection icc5 Intel Compiler v5.0.1
|
||||
|
||||
This compiler complains even more than gcc-3.0.x regarding template
|
||||
specifiers (e.g. correct spaces for template arguments to std::complex are
|
||||
needed even when not instanced).
|
||||
|
||||
The produced code looks good but, I haven't done a benchmark to compare it
|
||||
with the gcc-3.0.x since the compile time increases for the benchmark test
|
||||
dramatically.
|
||||
|
||||
I have not run any regression tests due to the compile time needed by my
|
||||
AMD K6/400 Linux box ...
|
||||
|
||||
\subsection icc6 Intel Compiler v6.0.x
|
||||
|
||||
Should work, but I haven't tested it.
|
||||
|
||||
\subsection icc7 Intel Compiler v7.x
|
||||
|
||||
This compiler is well supported by tvmet and passes the regression tests
|
||||
without any failure - as opposed to the GNU C++ compiler collection.
|
||||
|
||||
\subsection icc8 Intel Compiler v8.x
|
||||
|
||||
No regression tests are done - reports are welcome. I'm not expecting
|
||||
problems. Anyway, this versions uses pure macros for IEEE math isnan and
|
||||
isinf. This prevents overwriting with tvmet's functions. Therefore
|
||||
this functions are disabled after tvmet release 1.4.1. The code produced
|
||||
is even on <tt>examples/ray.cc</tt> more compact than the \ref gcc33x.
|
||||
|
||||
Anyway, here the code from <tt>examples/ray.cc</tt> using
|
||||
<tt>-O2 -DTVMET_OPTIMIZE</tt>
|
||||
|
||||
\par Assembler (IA-32 Intel® Architecture):
|
||||
\code
|
||||
movl 4(%esp), %ecx
|
||||
movl 8(%esp), %edx
|
||||
movl 12(%esp), %eax
|
||||
fldl (%edx)
|
||||
fmull (%eax)
|
||||
fldl 8(%edx)
|
||||
fmull 8(%eax)
|
||||
fldl 16(%edx)
|
||||
fmull 16(%eax)
|
||||
faddp %st, %st(1)
|
||||
faddp %st, %st(1)
|
||||
fldl (%eax)
|
||||
fxch %st(1)
|
||||
fadd %st(0), %st
|
||||
fmul %st, %st(1)
|
||||
fxch %st(1)
|
||||
fsubrl (%edx)
|
||||
fstpl (%ecx)
|
||||
fldl 8(%eax)
|
||||
fmul %st(1), %st
|
||||
fsubrl 8(%edx)
|
||||
fstpl 8(%ecx)
|
||||
fldl 16(%eax)
|
||||
fmulp %st, %st(1)
|
||||
fsubrl 16(%edx)
|
||||
fstpl 16(%ecx)
|
||||
ret
|
||||
\endcode
|
||||
|
||||
|
||||
|
||||
|
||||
\section vc71 Microsoft Visual C++ v7.1
|
||||
|
||||
\htmlonly
|
||||
<script language="JavaScript">
|
||||
var m_name="blbounnejapny";
|
||||
var m_domain="hotmail.com";
|
||||
var m_text='<a href="mailto:'+m_name+'@'+m_domain+'?subject=tvmet and Microsoft VC++">';
|
||||
m_text+='Robi Carnecky</a>';
|
||||
document.write(m_text);
|
||||
</script>
|
||||
\endhtmlonly
|
||||
\latexonly
|
||||
Robi Carnecky <blbounnejapny@hotmail.com>
|
||||
\endlatexonly
|
||||
has reported the success on tvmet using Visual C++ v7.1. At this
|
||||
release of tvmet there are some warnings left - the work is on
|
||||
progress.
|
||||
|
||||
The <a href="http://msdn.microsoft.com/visualc/vctoolkit2003/">Microsoft Visual C++ Toolkit 2003</a>
|
||||
and Visual C++ prior 7.1 do not compile - you will get an undefined
|
||||
internal error unfortunally.
|
||||
|
||||
Anyway, here the code from <tt>examples/ray.cc</tt>:
|
||||
|
||||
\par Assembler (IA-32 Intel® Architecture, no SSE2):
|
||||
\code
|
||||
push ebp
|
||||
mov ebp, esp
|
||||
and esp, -8 ; fffffff8H
|
||||
sub esp, 28 ; 0000001cH
|
||||
mov eax, DWORD PTR _ray$[ebp]
|
||||
mov ecx, DWORD PTR _surfaceNormal$[ebp]
|
||||
fld QWORD PTR [eax+16]
|
||||
fmul QWORD PTR [ecx+16]
|
||||
push ebx
|
||||
fld QWORD PTR [eax+8]
|
||||
push esi
|
||||
fmul QWORD PTR [ecx+8]
|
||||
push edi
|
||||
mov edi, DWORD PTR $T35206[esp+52]
|
||||
faddp ST(1), ST(0)
|
||||
mov DWORD PTR $T35027[esp+60], edi
|
||||
fld QWORD PTR [eax]
|
||||
pop edi
|
||||
fmul QWORD PTR [ecx]
|
||||
faddp ST(1), ST(0)
|
||||
fadd ST(0), ST(0)
|
||||
fstp QWORD PTR $T35206[esp+36]
|
||||
mov esi, DWORD PTR $T35206[esp+40]
|
||||
mov edx, DWORD PTR $T35206[esp+36]
|
||||
mov ebx, DWORD PTR $T35265[esp+40]
|
||||
mov DWORD PTR $T35027[esp+44], edx
|
||||
mov edx, DWORD PTR _reflection$[ebp]
|
||||
mov DWORD PTR $T35027[esp+48], esi
|
||||
fld QWORD PTR $T35027[esp+44]
|
||||
fmul QWORD PTR [ecx]
|
||||
pop esi
|
||||
mov DWORD PTR $T35027[esp+36], ebx
|
||||
pop ebx
|
||||
fsubr QWORD PTR [eax]
|
||||
fstp QWORD PTR [edx]
|
||||
fld QWORD PTR $T35027[esp+36]
|
||||
fmul QWORD PTR [ecx+8]
|
||||
fsubr QWORD PTR [eax+8]
|
||||
fstp QWORD PTR [edx+8]
|
||||
fld QWORD PTR $T35027[esp+36]
|
||||
fmul QWORD PTR [ecx+16]
|
||||
fsubr QWORD PTR [eax+16]
|
||||
fstp QWORD PTR [edx+16]
|
||||
mov esp, ebp
|
||||
pop ebp
|
||||
\endcode
|
||||
|
||||
\sa \ref regressiontest_failed
|
||||
\sa \ref install_win
|
||||
*/
|
||||
|
||||
|
||||
// Local Variables:
|
||||
// mode:c++
|
||||
// End:
|
448
tvmet-1.7.1/doc/dox_functions.cc
Normal file
448
tvmet-1.7.1/doc/dox_functions.cc
Normal file
@ -0,0 +1,448 @@
|
||||
/*
|
||||
* Tiny Vector Matrix Library
|
||||
* Dense Vector Matrix Libary of Tiny size using Expression Templates
|
||||
*
|
||||
* Copyright (C) 2001 - 2003 Olaf Petzold <opetzold@users.sourceforge.net>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* $Id: dox_functions.cc,v 1.8 2003/12/19 18:01:37 opetzold Exp $
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include <tvmet/config.h>
|
||||
|
||||
#include "Util.h"
|
||||
|
||||
class FunctionBase
|
||||
{
|
||||
public:
|
||||
FunctionBase() {
|
||||
m_binary_functions.push_back( BinaryFunction("atan2", "arcus tangent of two variables") );
|
||||
m_binary_functions.push_back( BinaryFunction("drem", "floating-point remainder") );
|
||||
m_binary_functions.push_back( BinaryFunction("fmod", "floating-point remainder") );
|
||||
m_binary_functions.push_back( BinaryFunction("hypot", "Euclidean distance") );
|
||||
m_binary_functions.push_back( BinaryFunction("jn", "Bessel") );
|
||||
m_binary_functions.push_back( BinaryFunction("yn", "Bessel") );
|
||||
m_binary_functions.push_back( BinaryFunction("pow", "power") );
|
||||
|
||||
m_unary_functions.push_back( UnaryFunction("abs", "absolute value") );
|
||||
m_unary_functions.push_back( UnaryFunction("cbrt", "cube root") );
|
||||
m_unary_functions.push_back( UnaryFunction("floor", "round") );
|
||||
m_unary_functions.push_back( UnaryFunction("rint", "round") );
|
||||
m_unary_functions.push_back( UnaryFunction("sin", "sin") );
|
||||
m_unary_functions.push_back( UnaryFunction("sinh", "sinh") );
|
||||
m_unary_functions.push_back( UnaryFunction("cos", "cos") );
|
||||
m_unary_functions.push_back( UnaryFunction("cosh", "cosh") );
|
||||
m_unary_functions.push_back( UnaryFunction("asin", "asin") );
|
||||
m_unary_functions.push_back( UnaryFunction("acos", "acos") );
|
||||
m_unary_functions.push_back( UnaryFunction("atan", "atan") );
|
||||
m_unary_functions.push_back( UnaryFunction("exp", "exponential") );
|
||||
m_unary_functions.push_back( UnaryFunction("log", "logarithmic") );
|
||||
m_unary_functions.push_back( UnaryFunction("log10", "logarithmic") );
|
||||
m_unary_functions.push_back( UnaryFunction("sqrt", "sqrt") );
|
||||
#ifdef TVMET_HAVE_IEEE_MATH
|
||||
m_unary_functions.push_back( UnaryFunction("asinh", "IEEE Math asinh") );
|
||||
m_unary_functions.push_back( UnaryFunction("acosh", "IEEE Math acosh") );
|
||||
m_unary_functions.push_back( UnaryFunction("atanh", "IEEE Math atanh") );
|
||||
m_unary_functions.push_back( UnaryFunction("expm1", "IEEE Math expm1") );
|
||||
m_unary_functions.push_back( UnaryFunction("log1p", "IEEE Math log1p") );
|
||||
m_unary_functions.push_back( UnaryFunction("erf", "IEEE Math erf") );
|
||||
m_unary_functions.push_back( UnaryFunction("erfc", "IEEE Math erfc") );
|
||||
m_unary_functions.push_back( UnaryFunction("isnan", "IEEE Math isnan. "
|
||||
"Return nonzero value if X is a NaN.") );
|
||||
m_unary_functions.push_back( UnaryFunction("isinf", "IEEE Math isinf. "
|
||||
"Return nonzero value if X is positive or negative infinity.") );
|
||||
m_unary_functions.push_back( UnaryFunction("isfinite", "fIEEE Math isfinite. "
|
||||
"Return nonzero value if X is not +-Inf or NaN.") );
|
||||
m_unary_functions.push_back( UnaryFunction("j0", "IEEE Math Bessel") );
|
||||
m_unary_functions.push_back( UnaryFunction("j1", "IEEE Math Bessel") );
|
||||
m_unary_functions.push_back( UnaryFunction("y0", "IEEE Math Bessel") );
|
||||
m_unary_functions.push_back( UnaryFunction("y1", "IEEE Math Bessel") );
|
||||
m_unary_functions.push_back( UnaryFunction("lgamma", "IEEE Math lgamma") );
|
||||
#endif
|
||||
}
|
||||
|
||||
virtual ~FunctionBase() { }
|
||||
|
||||
public:
|
||||
template<class Stream>
|
||||
Stream& header(Stream& os) const {
|
||||
m_type.header(os);
|
||||
return os;
|
||||
}
|
||||
|
||||
template<class Stream>
|
||||
Stream& footer(Stream& os) const {
|
||||
m_type.footer(os);
|
||||
return os;
|
||||
}
|
||||
|
||||
template<class Stream>
|
||||
Stream& binary(Stream& os) const {
|
||||
return os;
|
||||
}
|
||||
|
||||
template<class Stream>
|
||||
Stream& unary(Stream& os) const {
|
||||
return os;
|
||||
}
|
||||
|
||||
public:
|
||||
typedef std::vector< BinaryFunction >::const_iterator bfun_iterator;
|
||||
typedef std::vector< UnaryFunction >::const_iterator ufun_iterator;
|
||||
|
||||
public:
|
||||
virtual const std::vector< BinaryFunction >& bfun() const { return m_binary_functions; }
|
||||
virtual const std::vector< UnaryFunction >& ufun() const { return m_unary_functions; }
|
||||
|
||||
protected:
|
||||
std::vector< BinaryFunction > m_binary_functions;
|
||||
std::vector< UnaryFunction > m_unary_functions;
|
||||
Type m_type;
|
||||
};
|
||||
|
||||
|
||||
|
||||
class XprFunctions : public FunctionBase
|
||||
{
|
||||
public:
|
||||
XprFunctions() { }
|
||||
|
||||
public:
|
||||
template<class Stream>
|
||||
Stream& operator()(Stream& os) const {
|
||||
header(os);
|
||||
|
||||
binary(os);
|
||||
binary2(os);
|
||||
unary(os);
|
||||
|
||||
footer(os);
|
||||
|
||||
return os;
|
||||
}
|
||||
|
||||
public:
|
||||
template<class Stream>
|
||||
Stream& header(Stream& os) const {
|
||||
FunctionBase::header(os);
|
||||
os << "//\n"
|
||||
<< "// XprFunctions.h\n"
|
||||
<< "//\n\n";
|
||||
return os;
|
||||
}
|
||||
|
||||
// binary functions
|
||||
template<class Stream>
|
||||
Stream& binary(Stream& os) const {
|
||||
FunctionBase::binary(os);
|
||||
|
||||
for(bfun_iterator fun = bfun().begin(); fun != bfun().end(); ++fun) {
|
||||
os << "/**\n"
|
||||
<< " * \\fn " << fun->name() << "(const XprVector<E1, Sz>& lhs, const XprVector<E2, Sz>& rhs)\n"
|
||||
<< " * \\brief " << fun->description() << " function for two XprVector.\n"
|
||||
<< " * \\ingroup " << fun->group() << "\n"
|
||||
<< " */\n\n";
|
||||
|
||||
os << "/**\n"
|
||||
<< " * \\fn " << fun->name() << "(const XprMatrix<E1, Rows, Cols>& lhs, const XprMatrix<E2, Rows, Cols>& rhs)\n"
|
||||
<< " * \\brief " << fun->description() << " function for two XprMatrix.\n"
|
||||
<< " * \\ingroup " << fun->group() << "\n"
|
||||
<< " */\n\n";
|
||||
}
|
||||
return os;
|
||||
}
|
||||
|
||||
// binary functions with pod and std::complex<>
|
||||
template<class Stream>
|
||||
Stream& binary2(Stream& os) const {
|
||||
for(Type::const_iterator tp = m_type.begin(); tp != m_type.end(); ++tp) {
|
||||
for(bfun_iterator fun = bfun().begin(); fun != bfun().end(); ++fun) {
|
||||
os << "/**\n"
|
||||
<< " * \\fn " << fun->name() << "(const XprVector<E, Sz>& lhs, " << tp->name() << " rhs)\n"
|
||||
<< " * \\brief " << fun->description() << " function between XprVector and " << tp->description() << ".\n"
|
||||
<< " * \\ingroup " << fun->group() << "\n"
|
||||
<< " */\n\n";
|
||||
|
||||
// os << "/**\n"
|
||||
// << " * \\fn " << fun->name() << "(" << tp->name() << " lhs, const XprVector<E, Sz>& rhs)\n"
|
||||
// << " * \\brief " << fun->description() << " function between " << tp->description() << " and XprVector.\n"
|
||||
// << " * \\ingroup " << fun->group() << "\n"
|
||||
// << " */\n\n";
|
||||
|
||||
os << "/**\n"
|
||||
<< " * \\fn " << fun->name() << "(const XprMatrix<E, Rows, Cols>& lhs, " << tp->name() << " rhs)\n"
|
||||
<< " * \\brief " << fun->description() << " function between XprMatrix and " << tp->description() << ".\n"
|
||||
<< " * \\ingroup " << fun->group() << "\n"
|
||||
<< " */\n\n";
|
||||
|
||||
// os << "/**\n"
|
||||
// << " * \\fn " << fun->name() << "(" << tp->name() << " lhs, const XprMatrix<E, Rows, Cols>& rhs)\n"
|
||||
// << " * \\brief " << fun->description() << " function between " << tp->description() << " and XprMatrix.\n"
|
||||
// << " * \\ingroup " << fun->group() << "\n"
|
||||
// << " */\n\n";
|
||||
}
|
||||
}
|
||||
return os;
|
||||
}
|
||||
|
||||
// unary functions
|
||||
template<class Stream>
|
||||
Stream& unary(Stream& os) const {
|
||||
FunctionBase::unary(os);
|
||||
|
||||
for(ufun_iterator fun = ufun().begin(); fun != ufun().end(); ++fun) {
|
||||
os << "/**\n"
|
||||
<< " * \\fn " << fun->name() << "(const XprVector<E, Sz>& rhs)\n"
|
||||
<< " * \\brief " << fun->description() << " function for XprVector\n"
|
||||
<< " * \\ingroup " << fun->group() << "\n"
|
||||
<< " */\n\n";
|
||||
|
||||
os << "/**\n"
|
||||
<< " * \\fn " << fun->name() << "(const XprMatrix<E, Rows, Cols>& rhs)\n"
|
||||
<< " * \\brief " << fun->description() << " function for XprMatrix.\n"
|
||||
<< " * \\ingroup " << fun->group() << "\n"
|
||||
<< " */\n\n";
|
||||
}
|
||||
return os;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
class VectorFunctions : public FunctionBase
|
||||
{
|
||||
public:
|
||||
VectorFunctions() { }
|
||||
|
||||
public:
|
||||
template<class Stream>
|
||||
Stream& operator()(Stream& os) const {
|
||||
header(os);
|
||||
|
||||
binary(os);
|
||||
binary2(os);
|
||||
binary3(os);
|
||||
unary(os);
|
||||
|
||||
footer(os);
|
||||
|
||||
return os;
|
||||
}
|
||||
|
||||
public:
|
||||
template<class Stream>
|
||||
Stream& header(Stream& os) const {
|
||||
FunctionBase::header(os);
|
||||
|
||||
os << "//\n"
|
||||
<< "// VectorFunctions.h\n"
|
||||
<< "//\n\n";
|
||||
return os;
|
||||
}
|
||||
|
||||
// binary functions
|
||||
template<class Stream>
|
||||
Stream& binary(Stream& os) const {
|
||||
FunctionBase::binary(os);
|
||||
|
||||
for(bfun_iterator fun = bfun().begin(); fun != bfun().end(); ++fun) {
|
||||
os << "/**\n"
|
||||
<< " * \\fn " << fun->name() << "(const Vector<T1, Sz>& lhs, const Vector<T2, Sz>& rhs)\n"
|
||||
<< " * \\brief " << fun->description() << " function for two Vector.\n"
|
||||
<< " * \\ingroup " << fun->group() << "\n"
|
||||
<< " */\n\n";
|
||||
}
|
||||
return os;
|
||||
}
|
||||
|
||||
// binary functions with pod and std::complex<>
|
||||
template<class Stream>
|
||||
Stream& binary2(Stream& os) const {
|
||||
for(Type::const_iterator tp = m_type.begin(); tp != m_type.end(); ++tp) {
|
||||
for(bfun_iterator fun = bfun().begin(); fun != bfun().end(); ++fun) {
|
||||
os << "/**\n"
|
||||
<< " * \\fn " << fun->name() << "(const Vector<T, Sz>& lhs, " << tp->name() << " rhs)\n"
|
||||
<< " * \\brief " << fun->description() << " function on Vector and " << tp->description() << ".\n"
|
||||
<< " * \\ingroup " << fun->group() << "\n"
|
||||
<< " */\n\n";
|
||||
|
||||
// os << "/**\n"
|
||||
// << " * \\fn " << fun->name() << "(" << tp->name() << " lhs, const Vector<T, Sz>& rhs)\n"
|
||||
// << " * \\brief " << fun->description() << " function on " << tp->description() << " and Vector.\n"
|
||||
// << " * \\ingroup " << fun->group() << "\n"
|
||||
// << " */\n\n";
|
||||
}
|
||||
}
|
||||
return os;
|
||||
}
|
||||
|
||||
// binary functions with expressions
|
||||
template<class Stream>
|
||||
Stream& binary3(Stream& os) const {
|
||||
for(bfun_iterator fun = bfun().begin(); fun != bfun().end(); ++fun) {
|
||||
os << "/**\n"
|
||||
<< " * \\fn " << fun->name() << "(const XprVector<E, Sz>& lhs, const Vector<T, Sz>& rhs)\n"
|
||||
<< " * \\brief " << fun->description() << " function on XprVector and Vector.\n"
|
||||
<< " * \\ingroup " << fun->group() << "\n"
|
||||
<< " */\n\n";
|
||||
|
||||
os << "/**\n"
|
||||
<< " * \\fn " << fun->name() << "(const Vector<T, Sz>& lhs, const XprVector<E, Sz>& rhs)\n"
|
||||
<< " * \\brief " << fun->description() << " function on Vector and XprVector.\n"
|
||||
<< " * \\ingroup " << fun->group() << "\n"
|
||||
<< " */\n\n";
|
||||
}
|
||||
return os;
|
||||
}
|
||||
|
||||
// unary functions
|
||||
template<class Stream>
|
||||
Stream& unary(Stream& os) const {
|
||||
FunctionBase::unary(os);
|
||||
|
||||
for(ufun_iterator fun = ufun().begin(); fun != ufun().end(); ++fun) {
|
||||
os << "/**\n"
|
||||
<< " * \\fn " << fun->name() << "(const Vector<T, Sz>& rhs)\n"
|
||||
<< " * \\brief " << fun->description() << " function on Vector.\n"
|
||||
<< " * \\ingroup " << fun->group() << "\n"
|
||||
<< " */\n\n";
|
||||
}
|
||||
return os;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
class MatrixFunctions : public FunctionBase
|
||||
{
|
||||
public:
|
||||
MatrixFunctions() { }
|
||||
|
||||
public:
|
||||
template<class Stream>
|
||||
Stream& operator()(Stream& os) const {
|
||||
header(os);
|
||||
|
||||
binary(os);
|
||||
binary2(os);
|
||||
binary3(os);
|
||||
unary(os);
|
||||
|
||||
footer(os);
|
||||
|
||||
return os;
|
||||
}
|
||||
|
||||
public:
|
||||
template<class Stream>
|
||||
Stream& header(Stream& os) const {
|
||||
FunctionBase::header(os);
|
||||
|
||||
os << "//\n"
|
||||
<< "// MatrixFunctions.h\n"
|
||||
<< "//\n\n";
|
||||
return os;
|
||||
}
|
||||
|
||||
// binary functions
|
||||
template<class Stream>
|
||||
Stream& binary(Stream& os) const {
|
||||
FunctionBase::binary(os);
|
||||
|
||||
for(bfun_iterator fun = bfun().begin(); fun != bfun().end(); ++fun) {
|
||||
os << "/**\n"
|
||||
<< " * \\fn " << fun->name() << "(const Matrix<T1, Rows, Cols>& lhs, const Matrix<T2, Cols, Cols>& rhs)\n"
|
||||
<< " * \\brief " << fun->description() << " function for two Matrizes.\n"
|
||||
<< " * \\ingroup " << fun->group() << "\n"
|
||||
<< " */\n\n";
|
||||
}
|
||||
return os;
|
||||
}
|
||||
|
||||
// binary functions with pod and std::complex<>
|
||||
template<class Stream>
|
||||
Stream& binary2(Stream& os) const {
|
||||
for(Type::const_iterator tp = m_type.begin(); tp != m_type.end(); ++tp) {
|
||||
for(bfun_iterator fun = bfun().begin(); fun != bfun().end(); ++fun) {
|
||||
os << "/**\n"
|
||||
<< " * \\fn " << fun->name() << "(const Matrix<T, Rows, Cols>& lhs, " << tp->name() << " rhs)\n"
|
||||
<< " * \\brief " << fun->description() << " function on Matrix and " << tp->description() << ".\n"
|
||||
<< " * \\ingroup " << fun->group() << "\n"
|
||||
<< " */\n\n";
|
||||
|
||||
// os << "/**\n"
|
||||
// << " * \\fn " << fun->name() << "(" << tp->name() << " lhs, const Matrix<T, Rows, Cols>& rhs)\n"
|
||||
// << " * \\brief " << fun->description() << " function on " << tp->description() << " and Matrix.\n"
|
||||
// << " * \\ingroup " << fun->group() << "\n"
|
||||
// << " */\n\n";
|
||||
}
|
||||
}
|
||||
return os;
|
||||
}
|
||||
|
||||
// binary functions with expressions
|
||||
template<class Stream>
|
||||
Stream& binary3(Stream& os) const {
|
||||
for(bfun_iterator fun = bfun().begin(); fun != bfun().end(); ++fun) {
|
||||
os << "/**\n"
|
||||
<< " * \\fn " << fun->name() << "(const XprMatrix<E, Rows, Cols>& lhs, const Matrix<T, Rows, Cols>& rhs)\n"
|
||||
<< " * \\brief " << fun->description() << " function on XprMatrix and Matrix.\n"
|
||||
<< " * \\ingroup " << fun->group() << "\n"
|
||||
<< " */\n\n";
|
||||
|
||||
os << "/**\n"
|
||||
<< " * \\fn " << fun->name() << "(const Matrix<T, Rows, Cols>& lhs, const XprMatrix<E, Rows, Cols>& rhs)\n"
|
||||
<< " * \\brief " << fun->description() << " function on Matrix and XprMatrix.\n"
|
||||
<< " * \\ingroup " << fun->group() << "\n"
|
||||
<< " */\n\n";
|
||||
}
|
||||
return os;
|
||||
}
|
||||
|
||||
// unary functions
|
||||
template<class Stream>
|
||||
Stream& unary(Stream& os) const {
|
||||
FunctionBase::unary(os);
|
||||
|
||||
for(ufun_iterator fun = ufun().begin(); fun != ufun().end(); ++fun) {
|
||||
os << "/**\n"
|
||||
<< " * \\fn " << fun->name() << "(const Matrix<T, Rows, Cols>& rhs)\n"
|
||||
<< " * \\brief " << fun->description() << " function on Matrix.\n"
|
||||
<< " * \\ingroup " << fun->group() << "\n"
|
||||
<< " */\n\n";
|
||||
}
|
||||
return os;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
XprFunctions xpr_fun;
|
||||
VectorFunctions vec_fun;
|
||||
MatrixFunctions mtx_fun;
|
||||
|
||||
Function::doxy_groups(std::cout);
|
||||
|
||||
xpr_fun(std::cout);
|
||||
vec_fun(std::cout);
|
||||
mtx_fun(std::cout);
|
||||
}
|
425
tvmet-1.7.1/doc/dox_operators.cc
Normal file
425
tvmet-1.7.1/doc/dox_operators.cc
Normal file
@ -0,0 +1,425 @@
|
||||
/*
|
||||
* Tiny Vector Matrix Library
|
||||
* Dense Vector Matrix Libary of Tiny size using Expression Templates
|
||||
*
|
||||
* Copyright (C) 2001 - 2003 Olaf Petzold <opetzold@users.sourceforge.net>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* $Id: dox_operators.cc,v 1.6 2003/11/30 08:26:25 opetzold Exp $
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
#include <tvmet/config.h>
|
||||
|
||||
#include "Util.h"
|
||||
|
||||
class OperatorBase
|
||||
{
|
||||
public:
|
||||
OperatorBase() {
|
||||
m_binary_operators.push_back( BinaryOperator("+", "Addition") );
|
||||
m_binary_operators.push_back( BinaryOperator("-", "Subtraction") );
|
||||
m_binary_operators.push_back( BinaryOperator("*", "Multliply") );
|
||||
m_binary_operators.push_back( BinaryOperator("/", "Division") );
|
||||
m_binary_operators.push_back( BinaryOperator("%", "Modulo", true) );
|
||||
m_binary_operators.push_back( BinaryOperator("^", "Exclusive OR", true) );
|
||||
m_binary_operators.push_back( BinaryOperator("&", "AND", true) );
|
||||
m_binary_operators.push_back( BinaryOperator("|", "OR", true) );
|
||||
m_binary_operators.push_back( BinaryOperator("<<", "Left Shift", true) );
|
||||
m_binary_operators.push_back( BinaryOperator(">>", "Right Shift", true) );
|
||||
m_binary_operators.push_back( BinaryOperator(">", "Bigger") );
|
||||
m_binary_operators.push_back( BinaryOperator("<", "Lesser") );
|
||||
m_binary_operators.push_back( BinaryOperator(">=", "Bigger Equal") );
|
||||
m_binary_operators.push_back( BinaryOperator("<=", "Less Equal") );
|
||||
m_binary_operators.push_back( BinaryOperator("==", "Equal") );
|
||||
m_binary_operators.push_back( BinaryOperator("!=", "Not Equal") );
|
||||
m_binary_operators.push_back( BinaryOperator("&&", "Logical AND", true) );
|
||||
m_binary_operators.push_back( BinaryOperator("||", "Logical OR", true) );
|
||||
|
||||
m_unary_operators.push_back( UnaryOperator("!", "Logical Not", true) );
|
||||
m_unary_operators.push_back( UnaryOperator("~", "Bitwise Not", true) );
|
||||
m_unary_operators.push_back( UnaryOperator("-", "Negate") );
|
||||
}
|
||||
|
||||
virtual ~OperatorBase() { }
|
||||
|
||||
public:
|
||||
template<class Stream>
|
||||
Stream& header(Stream& os) const {
|
||||
m_type.header(os);
|
||||
return os;
|
||||
}
|
||||
|
||||
template<class Stream>
|
||||
Stream& footer(Stream& os) const {
|
||||
m_type.footer(os);
|
||||
return os;
|
||||
}
|
||||
|
||||
template<class Stream>
|
||||
Stream& binary(Stream& os) const {
|
||||
return os;
|
||||
}
|
||||
|
||||
template<class Stream>
|
||||
Stream& unary(Stream& os) const {
|
||||
return os;
|
||||
}
|
||||
|
||||
public:
|
||||
typedef std::vector< BinaryOperator >::const_iterator bop_iterator;
|
||||
typedef std::vector< UnaryOperator >::const_iterator uop_iterator;
|
||||
|
||||
public:
|
||||
virtual const std::vector< BinaryOperator >& bop() const { return m_binary_operators; }
|
||||
virtual const std::vector< UnaryOperator >& uop() const { return m_unary_operators; }
|
||||
|
||||
protected:
|
||||
std::vector< BinaryOperator > m_binary_operators;
|
||||
std::vector< UnaryOperator > m_unary_operators;
|
||||
Type m_type;
|
||||
};
|
||||
|
||||
|
||||
class XprOperators : public OperatorBase
|
||||
{
|
||||
public:
|
||||
XprOperators() { }
|
||||
|
||||
public:
|
||||
template<class Stream>
|
||||
Stream& operator()(Stream& os) const {
|
||||
header(os);
|
||||
|
||||
binary(os);
|
||||
binary2(os);
|
||||
unary(os);
|
||||
|
||||
footer(os);
|
||||
return os;
|
||||
}
|
||||
|
||||
public:
|
||||
template<class Stream>
|
||||
Stream& header(Stream& os) const {
|
||||
OperatorBase::header(os);
|
||||
|
||||
os << "//\n"
|
||||
<< "// XprOperators.h\n"
|
||||
<< "//\n\n";
|
||||
return os;
|
||||
}
|
||||
|
||||
// global binary math, bitops and logical operators
|
||||
template<class Stream>
|
||||
Stream& binary(Stream& os) const {
|
||||
OperatorBase::binary(os);
|
||||
|
||||
for(bop_iterator op = bop().begin(); op != bop().end(); ++op) {
|
||||
os << "/**\n"
|
||||
<< " * \\fn operator" << op->symbol() << "(const XprVector<E1, Sz>& lhs, const XprVector<E2, Sz>& rhs)\n"
|
||||
<< " * \\brief " << op->description() << " operator for two XprVector\n"
|
||||
<< " * \\ingroup " << op->group() << "\n"
|
||||
<< " */\n\n";
|
||||
|
||||
os << "/**\n"
|
||||
<< " * \\fn operator" << op->symbol() << "(const XprMatrix<E1, Rows1, Cols1>& lhs, const XprMatrix<E2, Cols1, Cols2>& rhs)\n"
|
||||
<< " * \\brief " << op->description() << " operator for two XprMatrix.\n"
|
||||
<< " * \\ingroup " << op->group() << "\n"
|
||||
<< " */\n\n";
|
||||
}
|
||||
return os;
|
||||
}
|
||||
|
||||
// global binary math, bitops and logical operators with pod and std::complex<>
|
||||
template<class Stream>
|
||||
Stream& binary2(Stream& os) const {
|
||||
for(Type::const_iterator tp = m_type.begin(); tp != m_type.end(); ++tp) {
|
||||
for(bop_iterator op = bop().begin(); op != bop().end(); ++op) {
|
||||
if(tp->is_int() && op->int_only()) {
|
||||
os << "/**\n"
|
||||
<< " * \\fn operator" << op->symbol() << "(const XprVector<E, Sz>& lhs, " << tp->name() << " rhs)\n"
|
||||
<< " * \\brief " << op->description() << " operator between XprVector and " << tp->description() << ".\n"
|
||||
<< " * \\ingroup " << op->group() << "\n"
|
||||
<< " */\n\n";
|
||||
|
||||
os << "/**\n"
|
||||
<< " * \\fn operator" << op->symbol() << "(" << tp->name() << " lhs, const XprVector<E, Sz>& rhs)\n"
|
||||
<< " * \\brief " << op->description() << " operator between " << tp->description() << " and XprVector.\n"
|
||||
<< " * \\ingroup " << op->group() << "\n"
|
||||
<< " */\n\n";
|
||||
|
||||
os << "/**\n"
|
||||
<< " * \\fn operator" << op->symbol() << "(const XprMatrix<E, Rows, Cols>& lhs, " << tp->name() << " rhs)\n"
|
||||
<< " * \\brief " << op->description() << " operator between XprMatrix and " << tp->description() << ".\n"
|
||||
<< " * \\ingroup " << op->group() << "\n"
|
||||
<< " */\n\n";
|
||||
|
||||
os << "/**\n"
|
||||
<< " * \\fn operator" << op->symbol() << "(" << tp->name() << " lhs, const XprMatrix<E, Rows, Cols>& rhs)\n"
|
||||
<< " * \\brief " << op->description() << " operator between " << tp->description() << " and XprMatrix.\n"
|
||||
<< " * \\ingroup " << op->group() << "\n"
|
||||
<< " */\n\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
return os;
|
||||
}
|
||||
|
||||
// global unary operators
|
||||
template<class Stream>
|
||||
Stream& unary(Stream& os) const {
|
||||
OperatorBase::unary(os);
|
||||
|
||||
for(uop_iterator op = uop().begin(); op != uop().end(); ++op) {
|
||||
os << "/**\n"
|
||||
<< " * \\fn operator" << op->symbol() << "(const XprVector<E, Sz>& rhs)\n"
|
||||
<< " * \\brief " << op->description() << " operator for XprVector\n"
|
||||
<< " * \\ingroup " << op->group() << "\n"
|
||||
<< " */\n\n";
|
||||
|
||||
os << "/**\n"
|
||||
<< " * \\fn operator" << op->symbol() << "(const XprMatrix<E, Rows, Cols>& rhs)\n"
|
||||
<< " * \\brief " << op->description() << " operator for XprMatrix.\n"
|
||||
<< " * \\ingroup " << op->group() << "\n"
|
||||
<< " */\n\n";
|
||||
}
|
||||
return os;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
class VectorOperators : public OperatorBase
|
||||
{
|
||||
public:
|
||||
VectorOperators() { }
|
||||
|
||||
public:
|
||||
template<class Stream>
|
||||
Stream& operator()(Stream& os) const {
|
||||
header(os);
|
||||
|
||||
binary(os);
|
||||
binary2(os);
|
||||
binary3(os);
|
||||
unary(os);
|
||||
|
||||
footer(os);
|
||||
}
|
||||
|
||||
public:
|
||||
template<class Stream>
|
||||
Stream& header(Stream& os) const {
|
||||
OperatorBase::header(os);
|
||||
|
||||
os << "//\n"
|
||||
<< "// VectorOperators.h\n"
|
||||
<< "//\n\n";
|
||||
return os;
|
||||
}
|
||||
|
||||
// global binary math, bitops and logical operators
|
||||
template<class Stream>
|
||||
Stream& binary(Stream& os) const {
|
||||
OperatorBase::binary(os);
|
||||
|
||||
for(bop_iterator op = bop().begin(); op != bop().end(); ++op) {
|
||||
os << "/**\n"
|
||||
<< " * \\fn operator" << op->symbol() << "(const Vector<T1, Sz>& lhs, const Vector<T2, Sz>& rhs)\n"
|
||||
<< " * \\brief " << op->description() << " operator for two Vector\n"
|
||||
<< " * \\ingroup " << op->group() << "\n"
|
||||
<< " */\n\n";
|
||||
}
|
||||
return os;
|
||||
}
|
||||
|
||||
// global binary math, bitops and logical operators with pod and std::complex<>
|
||||
template<class Stream>
|
||||
Stream& binary2(Stream& os) const {
|
||||
for(Type::const_iterator tp = m_type.begin(); tp != m_type.end(); ++tp) {
|
||||
for(bop_iterator op = bop().begin(); op != bop().end(); ++op) {
|
||||
if(tp->is_int() && op->int_only()) {
|
||||
os << "/**\n"
|
||||
<< " * \\fn operator" << op->symbol() << "(const Vector<T, Sz>& lhs, " << tp->name() << " rhs)\n"
|
||||
<< " * \\brief " << op->description() << " operator between Vector and " << tp->description() << ".\n"
|
||||
<< " * \\ingroup _operators\n"
|
||||
<< " * \\ingroup " << op->group() << "\n";
|
||||
|
||||
os << "/**\n"
|
||||
<< " * \\fn operator" << op->symbol() << "(" << tp->name() << " lhs, const Vector<T, Sz>& rhs)\n"
|
||||
<< " * \\brief " << op->description() << " operator between " << tp->description() << " and Vector.\n"
|
||||
<< " * \\ingroup " << op->group() << "\n"
|
||||
<< " */\n\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
return os;
|
||||
}
|
||||
|
||||
// global binary operations with expressions
|
||||
template<class Stream>
|
||||
Stream& binary3(Stream& os) const {
|
||||
for(bop_iterator op = bop().begin(); op != bop().end(); ++op) {
|
||||
os << "/**\n"
|
||||
<< " * \\fn operator" << op->symbol() << "(const XprVector<E, Sz>& lhs, const Vector<T, Sz>& rhs)\n"
|
||||
<< " * \\brief " << op->description() << " operator between XprVector and Vector\n"
|
||||
<< " * \\ingroup " << op->group() << "\n"
|
||||
<< " */\n\n";
|
||||
|
||||
os << "/**\n"
|
||||
<< " * \\fn operator" << op->symbol() << "(const Vector<T, Sz>& lhs, const XprVector<E, Sz>& rhs)\n"
|
||||
<< " * \\brief " << op->description() << " operator between Vector and XprVector\n"
|
||||
<< " * \\ingroup " << op->group() << "\n"
|
||||
<< " */\n\n";
|
||||
}
|
||||
return os;
|
||||
}
|
||||
|
||||
// global unary operators
|
||||
template<class Stream>
|
||||
Stream& unary(Stream& os) const {
|
||||
OperatorBase::unary(os);
|
||||
|
||||
for(uop_iterator op = uop().begin(); op != uop().end(); ++op) {
|
||||
os << "/**\n"
|
||||
<< " * \\fn operator" << op->symbol() << "(const Vector<T, Sz>& rhs)\n"
|
||||
<< " * \\brief " << op->description() << " operator for Vector\n"
|
||||
<< " * \\ingroup " << op->group() << "\n"
|
||||
<< " */\n\n";
|
||||
}
|
||||
return os;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
class MatrixOperators : public OperatorBase
|
||||
{
|
||||
public:
|
||||
MatrixOperators() { }
|
||||
|
||||
public:
|
||||
template<class Stream>
|
||||
Stream& operator()(Stream& os) const {
|
||||
header(os);
|
||||
|
||||
binary(os);
|
||||
binary2(os);
|
||||
binary3(os);
|
||||
unary(os);
|
||||
|
||||
footer(os);
|
||||
}
|
||||
|
||||
public:
|
||||
template<class Stream>
|
||||
Stream& header(Stream& os) const {
|
||||
OperatorBase::header(os);
|
||||
|
||||
os << "//\n"
|
||||
<< "// MatrixOperators.h\n"
|
||||
<< "//\n\n";
|
||||
return os;
|
||||
}
|
||||
|
||||
// global binary math, bitops and logical operators
|
||||
template<class Stream>
|
||||
Stream& binary(Stream& os) const {
|
||||
OperatorBase::binary(os);
|
||||
|
||||
for(bop_iterator op = bop().begin(); op != bop().end(); ++op) {
|
||||
os << "/**\n"
|
||||
<< " * \\fn operator" << op->symbol() << "(const Matrix<T1, Rows1, Cols1>& lhs, const Matrix<T2, Cols1, Cols2>& rhs)\n"
|
||||
<< " * \\brief " << op->description() << " operator for two Matrizes\n"
|
||||
<< " * \\ingroup " << op->group() << "\n"
|
||||
<< " */\n\n";
|
||||
}
|
||||
return os;
|
||||
}
|
||||
|
||||
// global binary math, bitops and logical operators with pod and std::complex<>
|
||||
template<class Stream>
|
||||
Stream& binary2(Stream& os) const {
|
||||
for(Type::const_iterator tp = m_type.begin(); tp != m_type.end(); ++tp) {
|
||||
for(bop_iterator op = bop().begin(); op != bop().end(); ++op) {
|
||||
if(tp->is_int() && op->int_only()) {
|
||||
os << "/**\n"
|
||||
<< " * \\fn operator" << op->symbol() << "(const Matrix<T, Rows, Cols>& lhs, " << tp->name() << " rhs)\n"
|
||||
<< " * \\brief " << op->description() << " operator between Vector and " << tp->description() << ".\n"
|
||||
<< " * \\ingroup " << op->group() << "\n"
|
||||
<< " */\n\n";
|
||||
|
||||
os << "/**\n"
|
||||
<< " * \\fn operator" << op->symbol() << "(" << tp->name() << " lhs, const Matrix<T, Rows, Cols>& rhs)\n"
|
||||
<< " * \\brief " << op->description() << " operator between " << tp->description() << " and Vector.\n"
|
||||
<< " * \\ingroup " << op->group() << "\n"
|
||||
<< " */\n\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
return os;
|
||||
}
|
||||
|
||||
// global binary operations with expressions
|
||||
template<class Stream>
|
||||
Stream& binary3(Stream& os) const {
|
||||
for(bop_iterator op = bop().begin(); op != bop().end(); ++op) {
|
||||
os << "/**\n"
|
||||
<< " * \\fn operator" << op->symbol() << "(const XprMatrix<E, Rows, Cols>& lhs, const Matrix<T, Rows, Cols>& rhs)\n"
|
||||
<< " * \\brief " << op->description() << " operator between XprMatrix and Matrix\n"
|
||||
<< " * \\ingroup " << op->group() << "\n"
|
||||
<< " */\n\n";
|
||||
|
||||
os << "/**\n"
|
||||
<< " * \\fn operator" << op->symbol() << "(const Matrix<T, Rows, Cols>& lhs, const XprMatrix<E, Rows, Cols>& rhs)\n"
|
||||
<< " * \\brief " << op->description() << " operator between Matrix and XprMatrix\n"
|
||||
<< " * \\ingroup " << op->group() << "\n"
|
||||
<< " */\n\n";
|
||||
}
|
||||
return os;
|
||||
}
|
||||
|
||||
// global unary operators
|
||||
template<class Stream>
|
||||
Stream& unary(Stream& os) const {
|
||||
OperatorBase::unary(os);
|
||||
|
||||
for(uop_iterator op = uop().begin(); op != uop().end(); ++op) {
|
||||
os << "/**\n"
|
||||
<< " * \\fn operator" << op->symbol() << "(const Matrix<T, Rows, Cols>& rhs)\n"
|
||||
<< " * \\brief " << op->description() << " operator for Matrix\n"
|
||||
<< " * \\ingroup " << op->group() << "\n"
|
||||
<< " */\n\n";
|
||||
}
|
||||
return os;
|
||||
}
|
||||
};
|
||||
|
||||
int main()
|
||||
{
|
||||
XprOperators xpr_op;
|
||||
VectorOperators vec_op;
|
||||
MatrixOperators mtx_op;
|
||||
|
||||
Operator::doxy_groups(std::cout);
|
||||
|
||||
xpr_op(std::cout);
|
||||
//vec_op(std::cout);
|
||||
//mtx_op(std::cout);
|
||||
}
|
295
tvmet-1.7.1/doc/faq.dox
Normal file
295
tvmet-1.7.1/doc/faq.dox
Normal file
@ -0,0 +1,295 @@
|
||||
/**
|
||||
\page faq FAQ
|
||||
|
||||
<p>Contents:</p>
|
||||
-# \ref license_tvmet
|
||||
-# \ref commercial_tvmet
|
||||
-# \ref debug
|
||||
-# \ref optimize
|
||||
-# \ref ambiguous_overload
|
||||
-# \ref conversion_non_scalar
|
||||
-# \ref could_not_convert
|
||||
-# \ref assign_op
|
||||
-# \ref comma_initializer
|
||||
-# \ref no_match_operator
|
||||
-# \ref dimension_error
|
||||
-# \ref rtlx_kernel_crash
|
||||
-# \ref regressiontest_failed
|
||||
|
||||
Certain items on this page are also covered by the \ref usage and \ref notes
|
||||
pages!
|
||||
|
||||
|
||||
|
||||
\section license_tvmet How is tvmet licensed?
|
||||
|
||||
tvmet comes with completely free source code. tvmet is available under the
|
||||
terms of the GNU Lesser General Public License (LGPL).
|
||||
|
||||
I have amended the LGPL to explicitly allow statically linking tvmet (or any
|
||||
modified version of tvmet) to your software. The LGPL is not clear on this
|
||||
and I definitely want to allow it.
|
||||
|
||||
\sa \ref license
|
||||
|
||||
|
||||
|
||||
|
||||
\section commercial_tvmet Can I use it in commercial software products?
|
||||
|
||||
Yes, you can. The LGPL allows you to do this, and you do not need to release
|
||||
the source code to your software. You do need to release the source code for
|
||||
any modifications you make to tvmet itself. (We would hope you would send
|
||||
any improvements like these back to us anyways.)
|
||||
|
||||
|
||||
|
||||
|
||||
\section debug Debugging the code
|
||||
|
||||
Not all faults can be caught at compile time. Therefore, there is a need
|
||||
for runtime debugging by defining <code>TVMET_DEBUG</code> (e.g. index
|
||||
operators of <code>Vector::operator(i)</code> and
|
||||
<code>Matrix::operator(i,j)</code>). On defined TVMET_DEBUG a bounds checking
|
||||
is involved. Runtime errors are handled throwing an assertion failure using
|
||||
std::assert(). <code>TVMET_DEBUG</code> is <b>not</b> enabled by defining
|
||||
<code>DEBUG</code>. This behavior differs from release less than 0.6.0
|
||||
|
||||
If you don't get the expected result on certain operations you can try the
|
||||
\ref expr_print feature to check that the expression is being evaluated as
|
||||
you expect.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\section optimize Optimizing the code
|
||||
|
||||
Starting after tvmet 1.5.0 there is a new define <code>TVMET_OPTIMIZE</code>.
|
||||
|
||||
If this is defined tvmet uses some compiler specific keywords.
|
||||
Mainly, this declares the functions using gcc's
|
||||
<tt>__attribute__((always_inline))</tt>. This allows the
|
||||
compiler to produce high efficient code even on less
|
||||
optimization levels, like gcc's -O2 or even -O!
|
||||
This is known to work with gcc v3.3.3 (and higher).
|
||||
Using icc's v8 gnuc compatibility mode this may work, I've read
|
||||
that it's using as an hint, this means you can have static inline
|
||||
functions inside left so you can't get the full power of this feature
|
||||
for circumstances.
|
||||
|
||||
|
||||
|
||||
|
||||
\section ambiguous_overload ambiguous overload for ... Compiler Error
|
||||
|
||||
When using gcc-2.96 you can get a compiler error like:
|
||||
|
||||
\code
|
||||
ambiguous overload for ...
|
||||
/usr/include/g++-3/stl_relops.h:42: candidates are: bool operator>
|
||||
...
|
||||
\endcode
|
||||
|
||||
I haven't any solution for this--even if I don't use it in the tvmet library.
|
||||
A simple define __SGI_STL_INTERNAL_RELOPS in the config header doesn't solve
|
||||
the problem. The easiest way (brute force method) is to comment out all
|
||||
operators in stl_reops.h. (The better way is to use the gcc-3.0.x and later,
|
||||
see \ref compiler.)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\section conversion_non_scalar conversion from ... to non-scalar type ... Compiler Error
|
||||
|
||||
You get a compiler error like:
|
||||
|
||||
\code
|
||||
conversion from `tvmet::XprVector< ... >, Sz>' to non-scalar type
|
||||
`tvmet::Vector<T, Sz>' requested
|
||||
\endcode
|
||||
|
||||
Please read about \ref construct. You probably ignored or forgot the rules
|
||||
of using expression templates.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\section could_not_convert could not convert `tvmet::operatorXX(...)' to `bool' ... Compiler Error
|
||||
|
||||
You get a compiler error like:
|
||||
|
||||
\code
|
||||
could not convert `tvmet::operator==( ... , ... )' to `bool'
|
||||
\endcode
|
||||
|
||||
In the example above, you did try (or hoped) to use a global operator==
|
||||
which doesn't return a bool. Please read \ref compare.
|
||||
|
||||
|
||||
|
||||
|
||||
\section assign_op no match for ?= operator
|
||||
|
||||
You get a compiler error like:
|
||||
|
||||
\code
|
||||
no match for `tvmet::Vector<...>& /= tvmet::Vector<...>&' operator
|
||||
\endcode
|
||||
|
||||
For element-wise operations, you need to use the element_wise namespace
|
||||
(found within tvmet). As the name suggests, all these operators are
|
||||
performed in an element wise fashion. (e.g. division of two vectors--not
|
||||
allowed from a mathematical perspective--element by element.) The following
|
||||
code snippet shows how to use it:
|
||||
|
||||
\code
|
||||
using namespace tvmet;
|
||||
Vector<double,3> v1, v2;
|
||||
|
||||
v1 = 1,2,3;
|
||||
v2 = v1;
|
||||
|
||||
cout << v1 << endl;
|
||||
{
|
||||
using namespace tvmet::element_wise;
|
||||
v1 /= v2;
|
||||
}
|
||||
cout << v1 << endl;
|
||||
\endcode
|
||||
|
||||
\sa \ref operators
|
||||
\sa \ref alias
|
||||
|
||||
|
||||
|
||||
|
||||
\section comma_initializer storage size of `ERROR_CommaInitializerList_is_too_long' isn't known
|
||||
|
||||
You get a compiler error like:
|
||||
|
||||
\code
|
||||
In member function `tvmet::CommaInitializer<Obj, LEN>::Initializer<T, (N + 1)> ....
|
||||
storage size of `ERROR_CommaInitializerList_is_too_long' isn't known
|
||||
\endcode
|
||||
|
||||
You have caused a forced compile time error. tvmet prevents you from
|
||||
overwriting foreign memory! In other words, your comma separated initializer
|
||||
list is too long, e.g. you wrote something like:
|
||||
|
||||
\code
|
||||
using namespace tvmet;
|
||||
Vector<double,3> v0;
|
||||
|
||||
v0 = 1,2,3,4,5,6,7,8,9;
|
||||
\endcode
|
||||
|
||||
You just tried to fill a %Vector of length 3 with 9 values, which would
|
||||
normally result in values being written off the end of the vector. tvmet
|
||||
prevents this with the compile time error you just saw.
|
||||
|
||||
|
||||
|
||||
|
||||
\section no_match_operator no match for `...' operator
|
||||
|
||||
You get a compiler error like:
|
||||
|
||||
\code
|
||||
no match for `tvmet::Matrix<T, Sz, Sz>& * tvmet::XprVector<tvmet::MatrixColVectorReference<T, Sz, Sz>, Sz>' operator
|
||||
include/tvmet/xpr/VectorOperators.h:123: candidates are:
|
||||
// a lot of candidates....
|
||||
\endcode
|
||||
|
||||
Perhaps you wrote code like:
|
||||
|
||||
\code
|
||||
Matrix<float,3,3> eigenvecs;
|
||||
Matrix<float,3,3> M;
|
||||
...
|
||||
|
||||
Vector<float,3> ev0( M * col(eigenvecs, 0) );
|
||||
\endcode
|
||||
|
||||
Using %tvmet prior to release 1.2.0 in this case: Obviously an operator
|
||||
is missing... but which one? Well, all arithmetic operators have a
|
||||
functional equivalent, in this case, prod(). Rewriting the code above
|
||||
using the function syntax will give you a more descriptive error message:
|
||||
|
||||
\code
|
||||
no matching function for call to
|
||||
`prod(tvmet::Matrix<float, 3, 3>&, tvmet::XprVector<tvmet::MatrixColVectorReference<float, 3, 3>, 3>)'
|
||||
\endcode
|
||||
|
||||
This says, I forgot to write a function with the appropriate operator.
|
||||
In this case, please give me a hint by writing a short example, used compiler
|
||||
and tvmet release.
|
||||
|
||||
\sa \ref dimension_error.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\section dimension_error no match for `tvmet::Matrix<double, R, C>& * tvmet::Vector<double, Sz>&' operator
|
||||
|
||||
You get a compiler error like:
|
||||
|
||||
\code
|
||||
no match for `tvmet::Matrix<double, 4, 4>& * tvmet::Vector<double, 3>&' operator
|
||||
candidates are: T tvmet::operator*(const T&, ...) ...
|
||||
\endcode
|
||||
|
||||
This is a feature of tvmet. The compiler detects a mathematical problem:
|
||||
You tried call an operator between tvmet objects which had incompatible
|
||||
dimensions. For example, you attempted to multiply a matrix of dimension
|
||||
4x4 with a vector of size 3 - this isn't mathematically feasible.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\section rtlx_kernel_crash Using with Linux Real-time Extensions crashes in kernel mode
|
||||
|
||||
Normally there should not be a problem on using tvmet inside Linux kernel
|
||||
space as a C++ kernel module. Unfortunately, code working in normal
|
||||
environment (e.g. Linux user space) crashes the Linux box by using linux
|
||||
real-time extensions, definitely on <a href=http://www.rtai.org>RTAI</a>.
|
||||
|
||||
I haven't found the reason yet, my knowledge of assembler and debugging is
|
||||
too limited.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\section regressiontest_failed Failed regression tests
|
||||
|
||||
Well, this is a strange world. It can happen that some (especially the
|
||||
tan) regression test can fail. This is not a problem with the %tvmet library.
|
||||
After some hours I reduce the problem to:
|
||||
|
||||
\code
|
||||
cout << (std::tan(1.0) - std::tan(1.0)) << endl;
|
||||
\endcode
|
||||
|
||||
got <tt>6.17995e-17</tt> on my Linux Mandrake 8.2/9.1 box. It makes no
|
||||
difference if I take the tan function from namespace std or from the global
|
||||
namespace. This is especially a problem for g++ v3.2 and prior. The Intel
|
||||
compiler v7.0 isn't affected.
|
||||
|
||||
Especially on VC++ 7.1 you will get 2 failed tests for complex
|
||||
%Matrix and %Vector. The error is about <tt>8.88178e-016</tt> and
|
||||
<tt>1.77636e-015</tt>.
|
||||
|
||||
*/
|
||||
|
||||
|
||||
|
||||
// Local Variables:
|
||||
// mode:c++
|
||||
// End:
|
||||
// LocalWords: RTAI
|
17
tvmet-1.7.1/doc/footer.html.in
Normal file
17
tvmet-1.7.1/doc/footer.html.in
Normal file
@ -0,0 +1,17 @@
|
||||
<hr>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="20%" align="right" valign="center">
|
||||
Author:<br>
|
||||
<script language="JavaScript">
|
||||
var m_name="opetzold";
|
||||
var m_domain="users.sourceforge.net";
|
||||
var m_text='<a href="mailto:'+m_name+'@'+m_domain+'?subject=tvmet @VERSION@">';
|
||||
m_text+='Olaf Petzold</a>';
|
||||
document.write(m_text);
|
||||
</script>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
37
tvmet-1.7.1/doc/header.html
Normal file
37
tvmet-1.7.1/doc/header.html
Normal file
@ -0,0 +1,37 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
|
||||
<title>
|
||||
Tiny Vector Matrix library using Expression Templates
|
||||
</title>
|
||||
<!-- This Tiny Vector and Matrix C++ template libary uses Meta Templates and
|
||||
Expression Templates to evaluate results at compile time - to make it fast
|
||||
for low order (tiny) systems. -->
|
||||
<META name="description" content="This Tiny Vector and Matrix C++ template
|
||||
libary uses Meta Templates and Expression Templates to evaluate results
|
||||
at compile time - to make it fast for low order (tiny) systems.">
|
||||
<META name="keywords" content="tiny, vector, matrix, fast, C++, STL, template, library,
|
||||
expression templates, meta templates, fixed size, fixed dimension,
|
||||
matrix-matrix, matrix-vector, vector-matrix, binary, unary, operations, operators,
|
||||
product, transpose, linear algebra, cross product, dot product, type promotion,
|
||||
exception, linux, kernel, embedded system, regression test, gcc, g++,
|
||||
blitz, blitz++, TinyVector, TinyMatrix, MTL, TNT,
|
||||
gnu compiler suite, portland group c++, kai c++, intel compiler, LGPL">
|
||||
<link href="tvmet.css" rel="stylesheet" type="text/css">
|
||||
</head>
|
||||
<body bgcolor="#ffffff">
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="20%" align="left" valign="center">
|
||||
<a href="http://sourceforge.net/projects/tvmet">
|
||||
<img src="http://sourceforge.net/sflogo.php?group_id=39733&type=3" width="125" height="37" border="0" alt="SourceForge Logo"></a>
|
||||
</td>
|
||||
<td width="50%" align="center" valign="center">
|
||||
<b><big>T</big>iny <big>V</big>ector <big>M</big>atrix library using <big>E</big>xpression <big>T</big>emplates</b>
|
||||
</td>
|
||||
<td width="20%" align="right" valign="center">
|
||||
<a href="http://tvmet.sourceforge.net">Sourceforge Project Page</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr>
|
140
tvmet-1.7.1/doc/intro.dox
Normal file
140
tvmet-1.7.1/doc/intro.dox
Normal file
@ -0,0 +1,140 @@
|
||||
/*
|
||||
* $Id: intro.dox,v 1.12 2004/11/30 09:05:53 opetzold Exp $
|
||||
*/
|
||||
|
||||
/**
|
||||
\mainpage
|
||||
|
||||
\section intro_contents Contents
|
||||
- \ref introduction
|
||||
- \ref license
|
||||
- \ref news
|
||||
- \ref changelog
|
||||
- \ref benchmark
|
||||
- \ref build
|
||||
- \ref usage
|
||||
- \ref faq
|
||||
- \ref notes
|
||||
- \ref compiler
|
||||
- \ref works
|
||||
- \ref credits
|
||||
- \ref projects
|
||||
- \ref links
|
||||
|
||||
*/
|
||||
|
||||
/**
|
||||
\page introduction Introduction
|
||||
|
||||
This Tiny %Vector and %Matrix template library uses
|
||||
<a href=http://extreme.indiana.edu/~tveldhui/papers/Template-Metaprograms/meta-art.html>Meta Templates</a>
|
||||
(MT) and <a href=http://extreme.indiana.edu/~tveldhui/papers/Expression-Templates/exprtmpl.html>
|
||||
Expression Templates</a> (ET) to evaluate results at compile time -- which
|
||||
makes it fast for low order (tiny) systems. "Tiny" is a subjective term,
|
||||
but typically means vectors and matrices of size ten (10) or less.
|
||||
|
||||
The technique used internally by tvmet is described by Todd Veldhuizen:
|
||||
|
||||
- <a href=http://osl.iu.edu/~tveldhui/papers/techniques/>
|
||||
Techniques for Scientific C++</a>
|
||||
- <a href=http://osl.iu.edu/~tveldhui/papers/Expression-Templates/exprtmpl.html>
|
||||
Expression Templates</a>
|
||||
- <a href=http://osl.iu.edu/~tveldhui/papers/Template-Metaprograms/meta-art.html>
|
||||
Template Metaprograms</a>
|
||||
|
||||
and is used by his <a href=http://oonumerics.org/blitz/>blitz++</a>, too.
|
||||
Therefore, the speed achieved by tvmet is similar to the speed of blitz++.
|
||||
Unfortunately, blitz++ isn't developed any more (year 2001, 2002)
|
||||
because of other interests being pursued by Todd Veldhuizen (like his Ph.D.).
|
||||
Furthermore, blitz++'s TinyVector is mainly developed for use by the blitz++
|
||||
Array class -- and not for minimalistic/tiny fast math support for which
|
||||
tvmet <b>is</b> designed. Because of this, the operators and functions are
|
||||
incomplete or not supported well. blitz::TinyMatrix supports a few lesser
|
||||
operators and functions (as with blitz::TinyVector). blitz++ doesn't conform
|
||||
to STL (e.g. Container<>::value_type isn't defined), it defines a T_numtype
|
||||
or, for blitz::TinyVector, it does have an iterator begin() - but the end()
|
||||
is missing (blitz::TinyMatrix doesn't have anything).
|
||||
|
||||
These were reasons why I developed tvmet. Still, tvmet is designed to be more
|
||||
than a mere rehashing of blitz++. The primary design goals are:
|
||||
|
||||
-# mathematical notation and correctness,
|
||||
-# high efficiency for small/tiny vector and matrices,
|
||||
-# functionality and wide range of supported operators and functions, and
|
||||
-# compatibility and portability.
|
||||
|
||||
The dimensions for vectors and matrices are statically bound at compile
|
||||
time using template arguments. The bounded dimensions feature a <b>compile
|
||||
time dimension check</b> to force adherence to proper dimensional sizes
|
||||
between operands (even in the night if you are sleepy). For example, you
|
||||
can't assign a %Vector or %Matrix with dimension = 3 to a %Vector or %Matrix
|
||||
of dimension = 4; nor can you create an expression using a binary operation
|
||||
between arguments with incompatible dimensions. This is a major difference
|
||||
between tvmet (which features this) and blitz++ (which does not prevent
|
||||
from this). Nevertheless, tvmet isn't a matlab, maple or octave for C++.
|
||||
|
||||
tvmet is a general purpose library and is not (yet) a linear algebra library.
|
||||
It does not have an interface to other numerical libraries as BLAS or LAPACK.
|
||||
<a href="http://sourceforge.net/projects/tvmet">Tiny Vector Matrix template
|
||||
library</a> offers these features:
|
||||
|
||||
-# Matrices and Vectors with fixed sizes (of course), the data is stored in
|
||||
a static array.
|
||||
-# compile time dimension check for Vectors and Matrices to preserve the
|
||||
mathematical meaning.
|
||||
-# vector, matrix, matrix-matrix and matrix-vector fast operations:
|
||||
- complete set of standard arithmetic operations for Vectors and Matrices
|
||||
(<a href=http://oonumerics.org/blitz/>blitz++</a> supports this only for
|
||||
TinyVector).
|
||||
- complete set of standard compare operations for Vectors and Matrices
|
||||
as well as ternary functions like <tt>a ? b : c</tt> (see eval for use).
|
||||
- binary and unary operations.
|
||||
- meta template use for %Matrix-Matrix-Product \f$M\,M\f$,
|
||||
%Matrix-Transpose \f$M^T\f$ and %Matrix-Vector-Product \f$M\,x\f$
|
||||
functions and operators.
|
||||
- meta template for special functions like
|
||||
\f$M^T\, x\f$, \f$M^T\,M\f$, \f$M\,M^T\f$ and \f$(M\,M)^T\f$
|
||||
functions, see \ref spec_meta_func.
|
||||
- simple %Matrix rows and column access as a %Vector.
|
||||
- chaining of matrix and vector expressions is possible and working.
|
||||
- %Vector inner and outer product (dot and cross product).
|
||||
-# special handling for the aliasing problem - see \ref alias.
|
||||
-# STL iterator interface. This opens the door to all sorts of great STL
|
||||
applications.
|
||||
-# type promotion (for handling Matrices and Vectors of differing types).
|
||||
-# works on self defined types such as the std::complex<> type.
|
||||
-# makes no use of exceptions. Therefore you can use it for embedded systems
|
||||
or in Linux kernel space.
|
||||
-# nice expression level printing for debugging purposes (print the expanded
|
||||
expression tree).
|
||||
-# good documentation with examples.
|
||||
-# regression tests for nearly all operations and functions.
|
||||
-# support for several compilers (see \ref compiler).
|
||||
-# written as a pure class and template library, no binary libraries and
|
||||
versioning are needed - designed to avoid code blot due to the use of
|
||||
templates.
|
||||
-# ISO/IEC 14882:1998 compliant.
|
||||
|
||||
Although there are many advantages and features, tvmet has some limitations.
|
||||
Due to the expression template and meta template programming, the compilation
|
||||
time increases for higher dimensional constructs. This can cause resource
|
||||
limitations, especially for memory (during compilation). On the other hand,
|
||||
the runtime performance will also decrease on higher order. Therefore only
|
||||
use tvmet only tiny (typically less than 10) sizes. (The maximum useful
|
||||
size/dimension depends on the operation, of course.) The \ref benchmark
|
||||
gives a good entry point about these problem.
|
||||
<a href=http://www.oonumerics.org/oon/#libraries>Other</a>
|
||||
general purpose libraries and linear algebra libraries will do a better job
|
||||
for larger matrix/vector problems.
|
||||
|
||||
|
||||
*/
|
||||
|
||||
/**
|
||||
\bugs regression test TestUnFunc::Arc and TestUnFunc::Log fails due to
|
||||
precision errors.
|
||||
*/
|
||||
|
||||
// Local Variables:
|
||||
// mode:c++
|
||||
// End:
|
677
tvmet-1.7.1/doc/license.dox
Normal file
677
tvmet-1.7.1/doc/license.dox
Normal file
@ -0,0 +1,677 @@
|
||||
/*
|
||||
* $Id: license.dox,v 1.7 2004/06/08 12:11:15 opetzold Exp $
|
||||
*/
|
||||
|
||||
/**
|
||||
\page license License
|
||||
|
||||
<p>Contents:</p>
|
||||
- \ref tvmet_license
|
||||
- \ref addendum
|
||||
- \ref rationale
|
||||
|
||||
|
||||
|
||||
\section license tvmet's License
|
||||
|
||||
Copyright (C) 2001-2003 Olaf Petzold.
|
||||
|
||||
tvmet basically follows the standard GNU Lesser General Public License (LGPL).
|
||||
Because of repeated questions on this topic, it has become apparent that many
|
||||
people still had a number of uncertainties about licensing issues. Also, a
|
||||
number of stipulations in the GNU Lesser Public License statement have
|
||||
evidently been an impediment to truely wide-spread adoption of the tvmet
|
||||
Library.
|
||||
|
||||
Thus, the intent of the License Addendum has been to provide clarification
|
||||
of a number of obscure issues in the GNU Lesser General Public License, and
|
||||
to relax a few of its stipulations with an eye to solving a couple of
|
||||
practical issues.
|
||||
|
||||
Below follows the GNU Lesser Public License, followed by the tvmet Library
|
||||
License addendum.
|
||||
|
||||
Finally, detailed rationale behind the License Addendum is presented.
|
||||
|
||||
|
||||
|
||||
|
||||
\section tvmet_license The License
|
||||
<pre>
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the Lesser GPL. It also counts
|
||||
as the successor of the GNU Library Public License, version 2, hence
|
||||
the version number 2.1.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Lesser General Public License, applies to some
|
||||
specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
not price. Our General Public Licenses are designed to make sure that
|
||||
you have the freedom to distribute copies of free software (and charge
|
||||
for this service if you wish); that you receive source code or can get
|
||||
it if you want it; that you can change the software and use pieces of
|
||||
it in new free programs; and that you are informed that you can do
|
||||
these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
distributors to deny you these rights or to ask you to surrender these
|
||||
rights. These restrictions translate to certain responsibilities for
|
||||
you if you distribute copies of the library or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link other code with the library, you must provide
|
||||
complete object files to the recipients, so that they can relink them
|
||||
with the library after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the
|
||||
library, and (2) we offer you this license, which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that
|
||||
there is no warranty for the free library. Also, if the library is
|
||||
modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
restrictive license from a patent holder. Therefore, we insist that
|
||||
any patent license obtained for a version of the library must be
|
||||
consistent with the full freedom of use specified in this license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the
|
||||
ordinary GNU General Public License. This license, the GNU Lesser
|
||||
General Public License, applies to certain designated libraries, and
|
||||
is quite different from the ordinary General Public License. We use
|
||||
this license for certain libraries in order to permit linking those
|
||||
libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using
|
||||
a shared library, the combination of the two is legally speaking a
|
||||
combined work, a derivative of the original library. The ordinary
|
||||
General Public License therefore permits such linking only if the
|
||||
entire combination fits its criteria of freedom. The Lesser General
|
||||
Public License permits more lax criteria for linking other code with
|
||||
the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it
|
||||
does Less to protect the user's freedom than the ordinary General
|
||||
Public License. It also provides other free software developers Less
|
||||
of an advantage over competing non-free programs. These disadvantages
|
||||
are the reason we use the ordinary General Public License for many
|
||||
libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free
|
||||
programs enables a greater number of people to use a large body of
|
||||
free software. For example, permission to use the GNU C Library in
|
||||
non-free programs enables many more people to use the whole GNU
|
||||
operating system, as well as its variant, the GNU/Linux operating
|
||||
system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the
|
||||
users' freedom, it does ensure that the user of a program that is
|
||||
linked with the Library has the freedom and the wherewithal to run
|
||||
that program using a modified version of the Library.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser General Public License (also called "this License").
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Section 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Section 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the materials to be distributed need not include anything that is
|
||||
normally distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
||||
|
||||
</pre>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\section addendum Addendum to License
|
||||
|
||||
<pre>
|
||||
|
||||
ADDENDUM TO LICENSE
|
||||
February 2003
|
||||
|
||||
Copyright (C) 2003 Olaf Petzold
|
||||
|
||||
Everyone is permitted to create and distribute verbatim copies
|
||||
of this license addendum document, but changing it is not allowed.
|
||||
|
||||
|
||||
tvmet License Agreement:
|
||||
|
||||
|
||||
0. tvmet ("The Library") is licensed under GNU Lesser General Public License
|
||||
as published by the Free Software Foundation, version 2.1 of the License, or
|
||||
(at your option) any later version, with the following additional conditions.
|
||||
The following conditions take precedence over any conditions or restrictions
|
||||
stipulated by the Lesser General Public License insofar as a conflict exists.
|
||||
|
||||
1. The tvmet License Agreement ("License") covers only tvmet ("The Library").
|
||||
Other libraries which the Library may use are covered by their own respective
|
||||
licenses.
|
||||
|
||||
2. Modification of the configure scripts, makefiles, or installation tools of
|
||||
the Library to support a specific platform does not constitute creating a
|
||||
modified or derivative work based on the Library.
|
||||
|
||||
3. Statically linking of a copy of the Library against any work using the
|
||||
Library, i.e. the inclusion of (parts of) the Library into a program or
|
||||
binary, is functionally equivalent to a work using the Library by linking to
|
||||
it dynamically, and therefore does not constitute creating a modified or
|
||||
derivative work based on the Library.
|
||||
|
||||
4. Otherwise, if the work is a derivative of the Library, you may distribute
|
||||
the object code for the work under the terms of the GNU Lesser General Public
|
||||
License. Any executables containing that work also may be distributed under
|
||||
the Lesser General Public License whether or not they are linked directly
|
||||
with the Library itself.
|
||||
|
||||
5. Programs or binaries linked with the Library must be identified as such by
|
||||
including, in the Documentation or by other means (for example in the About
|
||||
Box or Online Help), the following statement:
|
||||
|
||||
"This software uses tvmet (http://tvmet.sourceforge.net)."
|
||||
|
||||
|
||||
|
||||
|
||||
END OF ADDENDUM
|
||||
</pre>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\section rationale Rationale
|
||||
|
||||
We now launch into a point by point discussion of the License Addendum:
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
Point 0 says that whereever LGPL and tvmet License Addendum disagree, the tvmet
|
||||
License Addendum holds. In points not covered in the tvmet License Addendum,
|
||||
LGPL shall hold.
|
||||
</li>
|
||||
<li>
|
||||
Point 1 says we can not make any statements about anyone else's code; if your
|
||||
application must use other libraries (jpeg, png, tiff, glibc, and so on), then
|
||||
you must observe the licenses of these other libraries.
|
||||
</li>
|
||||
<li>
|
||||
Point 2 clarifies that when we're talking about derived works, we're not talking
|
||||
about making some minor changes to Makefiles or configuration scripts. However,
|
||||
it would still be nice to communicate them with the tvmet community so as to be
|
||||
able to support new platforms.
|
||||
</li>
|
||||
<li>
|
||||
Point 3 addresses the practical problem of linking tvmet statically into an
|
||||
application program or combined work. LGPL insists that the recipient of a
|
||||
distribution of a combined work i.e. a program linked with the Library, be
|
||||
allowed to relink; linking a program dynamically is usually the easiest way to
|
||||
comply with this stipulation. However, there are sometimes practical or
|
||||
logistical problems which make it difficult to comply with this requirement. We
|
||||
have taken the position that static linking is functionally equivalent to
|
||||
linking dynamically, and we're not really denying the recipient of a statically
|
||||
linked program any source code he or she wouldn't be able to obtain otherwise.
|
||||
</li>
|
||||
<li>
|
||||
Point 4 says that if you make a work based on the Library, then you may
|
||||
distribute this under the Lesser General Public License:- in other words, point
|
||||
4 applies only to a work using the Library being linked (statically or
|
||||
dynamically) to the Library. It is in the spirit of LGPL that the recipient of
|
||||
the combined work not be denied anything he or she would be able to receive with
|
||||
the regular LGPL. However, statically linking an application program with a work
|
||||
based on the Library, i.e. a modified copy would do just that! Point 5 says that
|
||||
the regular Lesser General Public License applies in that case.
|
||||
</li>
|
||||
<li>
|
||||
Point 5 requires you to identify your program as using the tvmet library. With
|
||||
static linking, there would be no way for a normal user to tell otherwise. We
|
||||
request that you include the given statement, and preferably a version number
|
||||
also. The motivation is two-fold:
|
||||
|
||||
-# A certain amount of publicity for tvmet :-)
|
||||
-# Some way for recipients of your program to know that (a) your program is
|
||||
linked to the tvmet Library, and (b) for them to verify that they have in fact
|
||||
not been denied anything they would have been able to obtain under LGPL, by
|
||||
visiting this page which details the license information (there are many GPL-
|
||||
vigilantes out there, and this might appease them).
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
This concludes our remarks on the License revision; please feel free to contact
|
||||
me if you have additional questions. The rationale section will likely be
|
||||
expanded when there are still questions left unanswered.
|
||||
|
||||
*/
|
||||
|
||||
|
||||
// Local Variables:
|
||||
// mode:c++
|
||||
// End:
|
41
tvmet-1.7.1/doc/links.dox
Normal file
41
tvmet-1.7.1/doc/links.dox
Normal file
@ -0,0 +1,41 @@
|
||||
/*
|
||||
* $Id: links.dox,v 1.3 2003/12/05 19:08:59 opetzold Exp $
|
||||
*/
|
||||
|
||||
/**
|
||||
\page links Links of Interest or Related Links
|
||||
|
||||
|
||||
|
||||
\section generell General Information on Numeric C++
|
||||
- <a href=http://osl.iu.edu/~tveldhui/papers/techniques/>Techniques for Scientific C++</a>
|
||||
- <a href=http://osl.iu.edu/~tveldhui/papers/Expression-Templates/exprtmpl.html>Expression Templates</a>
|
||||
- <a href=http://osl.iu.edu/~tveldhui/papers/Template-Metaprograms/meta-art.html>Template Metaprograms</a>
|
||||
- <a href=http://oonumerics.org/oon/>The Object-Oriented Numerics Page</a> - a very good entry point
|
||||
- <a href=http://www.openscience.org/links.php?section=103>The OpenScience Project > Mathematics > Linear Algebra</a>
|
||||
- <a href=http://sal.kachinatech.com/B/0/>SAL- Numerical Analysis - Miscellaneous Software</a>
|
||||
|
||||
\section numlibs Other ET and MT Vector and Matrix Libraries
|
||||
|
||||
- <a href=http://oonumerics.org/blitz/>blitz++</a>
|
||||
- <a href=http://www.genesys-e.org/ublas/>uBlas</a>
|
||||
- <a href=http://www.lsc.nd.edu/research/mtl>MTL</a>
|
||||
- <a href=http://sourceforge.net/projects/etsmo/>ETSMO</a> - no files released since over one year
|
||||
- <a href=http://met.sourceforge.net/>MET</a>
|
||||
- <a href=http://sourceforge.net/projects/metaet/>meta::Expr{T_emplate}</a>
|
||||
- <a href=http://www.acl.lanl.gov/pete/>PETE</a>
|
||||
- <a href=http://www.acl.lanl.gov/pooma/>POOMA</a>
|
||||
- <a href=http://math.nist.gov/tnt/>TNT</a> - Template Numerical Toolkit
|
||||
|
||||
This list isn't complete. For more freely available libraries please have
|
||||
a look <a href=http://www.oonumerics.org/oon/#libraries>here</a>.
|
||||
*/
|
||||
|
||||
|
||||
// Local Variables:
|
||||
// mode:c++
|
||||
// End:
|
||||
|
||||
// Local Variables:
|
||||
// mode:c++
|
||||
// End:
|
BIN
tvmet-1.7.1/doc/matrix_matrix.png
Normal file
BIN
tvmet-1.7.1/doc/matrix_matrix.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 22 KiB |
BIN
tvmet-1.7.1/doc/matrix_vector.png
Normal file
BIN
tvmet-1.7.1/doc/matrix_vector.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 24 KiB |
8
tvmet-1.7.1/doc/misc.dox
Normal file
8
tvmet-1.7.1/doc/misc.dox
Normal file
@ -0,0 +1,8 @@
|
||||
/*
|
||||
* $Id: misc.dox,v 1.1.1.1 2003/02/08 19:32:50 opetzold Exp $
|
||||
*/
|
||||
|
||||
|
||||
// Local Variables:
|
||||
// mode:c++
|
||||
// End:
|
325
tvmet-1.7.1/doc/notes.dox
Normal file
325
tvmet-1.7.1/doc/notes.dox
Normal file
@ -0,0 +1,325 @@
|
||||
/*
|
||||
* $Id: notes.dox,v 1.20 2004/04/11 01:29:41 opetzold Exp $
|
||||
*/
|
||||
|
||||
/**
|
||||
\page notes Some Notes ...
|
||||
|
||||
<p>Contents:</p>
|
||||
-# \ref optimizing
|
||||
-# \ref temporaries
|
||||
-# \ref operators
|
||||
-# \ref threads
|
||||
-# \ref expressions
|
||||
-# \ref adl
|
||||
-# \ref alias
|
||||
-# \ref spec_meta_func
|
||||
-# \ref mmv
|
||||
|
||||
|
||||
|
||||
|
||||
\section optimizing ... on optimizing
|
||||
|
||||
This depends heavily on compiler and the flags used. The code produced with
|
||||
-O could be better than with -O2 even on gcc-2.9x suite. To get the best
|
||||
results, you should examine the assembler code generated by your compiler.
|
||||
Maybe I will write a benchmark suite for different compiler options one day.
|
||||
(Maybe you could contribute?)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\section temporaries ... on temporaries
|
||||
|
||||
The use of expression templates (ET) and meta templates (MT) allows the
|
||||
generated code to avoid the creation of many temporaries -- especially with
|
||||
standard mathematical and assignment operations. There are times that you
|
||||
have to use actual temporaries e.g. when swapping variables of type
|
||||
double -- with integer values you can use the XOR operator.
|
||||
|
||||
Some implementations are using a loop with temporaries even if there is a
|
||||
solution with ET. Than the loops are faster than MT.
|
||||
|
||||
\sa \ref mmv
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\section operators ... on operators and namespace element_wise
|
||||
|
||||
Some operations on matrices and vectors are not available at first glance.
|
||||
These are defined in the namespace <code>element_wise</code> because they
|
||||
are element wise (and not strictly mathematical) operations.
|
||||
|
||||
But there is more: some functions do element wise operations per se (e.g.
|
||||
vector addition) and are NOT inside namespace element_wise. Furthermore,
|
||||
all comparison operators perform element wise operations.
|
||||
|
||||
\sa \ref compare
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\section threads ... about Threads
|
||||
|
||||
This library is not thread safe. It's designed for small math operations where
|
||||
the overhead for locking policies is too great. If you require locking for
|
||||
a multi-threaded application, you will need to write a wrapper.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\section expressions ... on expressions
|
||||
|
||||
The first versions of %tvmet had only one expression (Xpr) which was shared
|
||||
for both vectors and matrices. This was working fine, but limited tvmet's
|
||||
use for arithmetic expressions expressions on complex values. For this
|
||||
reason, I had to separate expression types for vectors and matrices. The
|
||||
same problem appeared when using the eval() function for evaluating these
|
||||
expressions. (Which index operator should handle it?) Unfortunately, the
|
||||
use of separate expression types vastly increases the number of operators
|
||||
and functions needed to make the library viable. Fortunately, most boundary
|
||||
checks are not necessary since they are done at compile time (such as those
|
||||
needed by the assignment operator, etc).
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\section adl ... on namespaces and Koenig Lookup
|
||||
|
||||
IMO, the cleanest way would be to put all functions into their own
|
||||
namespace <code>Functional</code> instead of naming them with the
|
||||
<code>fncl_</code> prefix they currently have. (I did beforehand, and
|
||||
have thought better since). Unfortunately, this technique doesn't work well.
|
||||
I got compiler errors like:
|
||||
|
||||
\code
|
||||
template <class T> Functional::xyt<T>' is not a function
|
||||
conflict with `template <class E> xyz(Xpr<E>)' in call to `xyz'
|
||||
\endcode
|
||||
|
||||
when trying:
|
||||
|
||||
\code
|
||||
typedef Vector<double, 3> vector3d;
|
||||
vector3d t1(1,2,3);
|
||||
vector3d t2(t1);
|
||||
vector3d r;
|
||||
r = sqrt( t1 * t2 );
|
||||
\endcode
|
||||
|
||||
ADL (argument dependent lookup), aka Koenig Lookup, is causing the
|
||||
compiler to check for a match in namespace Functional, since the
|
||||
template instantiation is part of Functional (the Xpr stuff), it matches
|
||||
before the global namespace (the Vector stuff) is checked. Writing:
|
||||
|
||||
\code
|
||||
r = ::sqrt( t1 * t2 );
|
||||
\endcode
|
||||
|
||||
seems to solve the problem at first glance. However, to force the user of
|
||||
the library into this syntax is painful and could probably run cause other
|
||||
problems with other namespaces (I haven't checked this). Therefore, all
|
||||
"Functionals" have the prefix fncl_.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\section alias ... about aliasing
|
||||
|
||||
tvmet assumes that all matrices and vectors are alias free. These means that
|
||||
source and destination memory layout of matrices and vectors never overlaps
|
||||
(during an operation).
|
||||
|
||||
This is very easy to understood if you see a matrix-vector product. Both
|
||||
contain different data in different (unique, non-overlapping) memory
|
||||
regions -- hence, they are alias free. Contrast this with a matrix-matrix
|
||||
multiply which maybe can have an aliasing, e.g. \f$A = A * B\f$.
|
||||
When source and destination memory regions are the same, the computed results
|
||||
may be wrong. (Probably they will be.) But, \f$C = A * B\f$ is alias free.
|
||||
|
||||
Let's see an example in detail:
|
||||
|
||||
\par Example:
|
||||
\code
|
||||
Matrix<double,3,3> M1;
|
||||
M1 = 1,2,3,4,5,6,7,8,9;
|
||||
|
||||
cout << "M1 = " << M1 << endl;
|
||||
M1 = trans(M1);
|
||||
cout << "M1 = " << M1 << endl;
|
||||
\endcode
|
||||
|
||||
\par Output:
|
||||
\code
|
||||
M1 = Matrix<d, 3, 3> = [
|
||||
[1, 2, 3],
|
||||
[4, 5, 6],
|
||||
[7, 8, 9]
|
||||
]
|
||||
M1 = Matrix<d, 3, 3> = [
|
||||
[1, 4, 7],
|
||||
[4, 5, 8],
|
||||
[7, 8, 9]
|
||||
]
|
||||
\endcode
|
||||
|
||||
As you can see, the lower triangular matrix isn't what you expected due to
|
||||
the aliasing. These results depends on the compiler optimizations, too.
|
||||
|
||||
Unfortunately, to avoid the aliasing problem, you must use temporaries
|
||||
as shown here:
|
||||
|
||||
\par Example:
|
||||
\code
|
||||
matrix_type temp_A(A);
|
||||
A = temp_A * B;
|
||||
cout << "matrix_type temp_A(A);\n"
|
||||
<< "A = temp_A * B = " << A << endl;
|
||||
\endcode
|
||||
|
||||
Anyway, it seems there is a small exception (no guarantee, since it's
|
||||
compiler dependent I assume) for element wise operations with matrices
|
||||
or vectors on right hand side.
|
||||
|
||||
Starting with tvmet release 1.4.1 there is a new function alias. These
|
||||
function use a proxy to call special member functions of the %Matrix/Vector
|
||||
class. These member functions introduce the temporary for you.
|
||||
|
||||
\par Example:
|
||||
\code
|
||||
typedef tvmet::Matrix<double, 3, 3> matrix_type;
|
||||
matrix_type M;
|
||||
std::generate(M.begin(), M.end(),
|
||||
tvmet::util::Incrementor<matrix_type::value_type>());
|
||||
std::cout << "M = " << M << std::endl;
|
||||
|
||||
alias(M) = trans(M);
|
||||
std::cout << "M = " << M << std::endl;
|
||||
\endcode
|
||||
|
||||
with the expected
|
||||
|
||||
\par Output:
|
||||
\code
|
||||
M = [
|
||||
[1, 4, 7],
|
||||
[2, 5, 8],
|
||||
[3, 6, 9]
|
||||
]
|
||||
\endcode
|
||||
|
||||
These function/proxy will work for the element wise operators +=, -=, *= and /=
|
||||
with expressions, e.g. as trans() returns.
|
||||
|
||||
\sa \ref assign_op
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\section spec_meta_func ... special Meta-Template Functions
|
||||
|
||||
From a principle point of view, there is no need for some special functions
|
||||
for %Matrix and %Vector functions, namely \f$M^T\, x\f$, \f$M^T\,M\f$,
|
||||
\f$M\,M^T\f$, and \f$(M\,M)^T\f$.
|
||||
|
||||
Unfortunately, the g++ compiler throws in the towel sometimes even on
|
||||
transposing matrices. Because of this, %tvmet offers specialized functions
|
||||
which speed up at runtime (about factor 2 ... 3) using meta templates.
|
||||
|
||||
\par Example:
|
||||
\code
|
||||
using namespace tvmet;
|
||||
|
||||
Matrix<double, 6, 3> M1(0); // will be transposed to be conform to vector size
|
||||
Vector<double, 6> v1(0);
|
||||
Vector<double, 3> v2(0);
|
||||
|
||||
M1 = ...
|
||||
v1 = ...
|
||||
|
||||
v2 = Mtx_prod(M1, v1); // equal to: v2 = trans(M1)*v1;
|
||||
\endcode
|
||||
|
||||
BTW, the %Matrix-%Matrix \f$M\,M\f$ and %Matrix-%Vector \f$M\,x\f$
|
||||
products use Meta-Templates, too.
|
||||
|
||||
\sa \ref Mtx_prod
|
||||
\sa \ref MMt_prod
|
||||
\sa \ref MtM_prod
|
||||
\sa \ref trans_prod
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\section mmv ... about Matrix-Matrix-Vector and Matrix-Matrix-Matrix-operations
|
||||
|
||||
The problem is related to the optimizer - due to the expression and meta
|
||||
templates used.
|
||||
|
||||
Internally, an expression template may contain other expression templates
|
||||
(meta templates inside as well as) too - the compiler will unroll all of
|
||||
these expression into a single resultant expression (which is a hard job).
|
||||
Sometimes the code generated from this is worse (from a performance point
|
||||
of view) than just using simple temporaries.
|
||||
|
||||
You can chain matrix-matrix and matrix-vector operations without writing
|
||||
temporaries by yourself (if this is what you want).
|
||||
|
||||
\par from examples/hspiess.cc:
|
||||
\code
|
||||
tvmet::Matrix<double,3,2> B;
|
||||
tvmet::Matrix<double,3,3> D;
|
||||
tvmet::Matrix<double,2,2> K;
|
||||
|
||||
B =
|
||||
-0.05, 0,
|
||||
0, 0.05,
|
||||
0.05, -0.05;
|
||||
D =
|
||||
2000, 1000, 0,
|
||||
1000, 2000, 0,
|
||||
0, 0, 500;
|
||||
|
||||
K = trans(B) * D * B;
|
||||
\endcode
|
||||
|
||||
The performance can be sub optimal due to the increasing complexity
|
||||
of operations. This can be reduced by a user specified temporary:
|
||||
|
||||
\par from examples/hspiess.cc:
|
||||
\code
|
||||
// as before
|
||||
|
||||
K = tvmet::Matrix<double,2,3>(trans(B) * D) * B;
|
||||
\endcode
|
||||
|
||||
or
|
||||
\code
|
||||
K = prod(tvmet::Matrix<double,2,3>(prod(trans(B), D)), B);
|
||||
\endcode
|
||||
|
||||
At this moment an intelligent cache and pre-evaluating strategy is
|
||||
missing by %tvmet.
|
||||
|
||||
\sa \ref spec_meta_func
|
||||
\sa some notes \ref temporaries
|
||||
|
||||
|
||||
|
||||
*/
|
||||
|
||||
|
||||
// Local Variables:
|
||||
// mode:c++
|
||||
// End:
|
21
tvmet-1.7.1/doc/projects.dox
Normal file
21
tvmet-1.7.1/doc/projects.dox
Normal file
@ -0,0 +1,21 @@
|
||||
/*
|
||||
* $Id: projects.dox,v 1.6 2004/04/09 05:48:16 opetzold Exp $
|
||||
*/
|
||||
|
||||
/**
|
||||
\page projects Projects using tvmet
|
||||
|
||||
|
||||
Please write me about projects using tvmet - I'm highly interested in !
|
||||
|
||||
-# Not really a project but, an interesting application is
|
||||
<a href=http://www.radiumsoftware.com/files/pathtrace.cxx.1.12.txt>here</a>.
|
||||
-# <a href=http://www.iplt.org>IPLT</a>, an image processing libary
|
||||
and toolbox for the electron microscopy community.
|
||||
|
||||
*/
|
||||
|
||||
|
||||
// Local Variables:
|
||||
// mode:c++
|
||||
// End:
|
225
tvmet-1.7.1/doc/tvmet.css
Normal file
225
tvmet-1.7.1/doc/tvmet.css
Normal file
@ -0,0 +1,225 @@
|
||||
BODY {
|
||||
background: white;
|
||||
color: black;
|
||||
margin-right: 20px;
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
H1 {
|
||||
text-align: center;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
H2 {
|
||||
color: white;
|
||||
font-family: Geneva, Arial, Helvetica, sans-serif;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
background-color: black;
|
||||
}
|
||||
|
||||
H3 {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
CAPTION {
|
||||
font-weight: bold
|
||||
}
|
||||
|
||||
DIV.qindex {
|
||||
width: 100%;
|
||||
background-color: #eeeeff;
|
||||
border: 4px solid #eeeeff;
|
||||
text-align: center;
|
||||
margin-bottom: 2px
|
||||
}
|
||||
|
||||
A.qindex {
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
color: #0000ee
|
||||
}
|
||||
|
||||
A.qindex:visited {
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
color: #0000ee
|
||||
}
|
||||
|
||||
A.qindex:hover {
|
||||
text-decoration: none;
|
||||
background-color: #ddddff
|
||||
}
|
||||
|
||||
A.qindexHL {
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
background-color: #6666cc;
|
||||
color: #ffffff
|
||||
}
|
||||
|
||||
A.qindexHL:hover { text-decoration: none; background-color: #6666cc; color: #ffffff }
|
||||
A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff }
|
||||
A.el { text-decoration: none; font-weight: bold }
|
||||
A.elRef { font-weight: bold }
|
||||
A.code { text-decoration: none; font-weight: normal; color: #4444ee }
|
||||
A.codeRef { font-weight: normal; color: #4444ee }
|
||||
A:hover { text-decoration: none; background-color: #f2f2ff }
|
||||
|
||||
DL.el { margin-left: -1cm }
|
||||
|
||||
DIV.fragment {
|
||||
width: 98%;
|
||||
border: 1px solid #CCCCCC;
|
||||
background-color: #f5f5f5;
|
||||
padding-left: 4px;
|
||||
margin: 4px;
|
||||
}
|
||||
|
||||
DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
|
||||
|
||||
TD.md { background-color: #f2f2ff; font-weight: bold; }
|
||||
TD.mdname1 { background-color: #f2f2ff; font-weight: bold; color: #602020; }
|
||||
TD.mdname { background-color: #f2f2ff; font-weight: bold; color: #602020; width: 600px; }
|
||||
|
||||
DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold }
|
||||
DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller }
|
||||
|
||||
TD.indexkey {
|
||||
background-color: #eeeeff;
|
||||
font-weight: bold;
|
||||
padding-right : 10px;
|
||||
padding-top : 2px;
|
||||
padding-left : 10px;
|
||||
padding-bottom : 2px;
|
||||
margin-left : 0px;
|
||||
margin-right : 0px;
|
||||
margin-top : 2px;
|
||||
margin-bottom : 2px
|
||||
}
|
||||
|
||||
TD.indexvalue {
|
||||
background-color: #eeeeff;
|
||||
font-style: italic;
|
||||
padding-right : 10px;
|
||||
padding-top : 2px;
|
||||
padding-left : 10px;
|
||||
padding-bottom : 2px;
|
||||
margin-left : 0px;
|
||||
margin-right : 0px;
|
||||
margin-top : 2px;
|
||||
margin-bottom : 2px
|
||||
}
|
||||
|
||||
TR.memlist { background-color: #f0f0f0;}
|
||||
P.formulaDsp { text-align: center; }
|
||||
|
||||
IMG.formulaDsp { }
|
||||
IMG.formulaInl { vertical-align: middle; }
|
||||
|
||||
SPAN.keyword { color: #008000 }
|
||||
SPAN.keywordtype { color: #604020 }
|
||||
SPAN.keywordflow { color: #e08000 }
|
||||
SPAN.comment { color: #800000 }
|
||||
SPAN.preprocessor { color: #806020 }
|
||||
SPAN.stringliteral { color: #002080 }
|
||||
SPAN.charliteral { color: #008080 }
|
||||
|
||||
.mdTable {
|
||||
border: 1px solid #868686;
|
||||
background-color: #f2f2ff;
|
||||
}
|
||||
|
||||
.mdRow {
|
||||
padding: 8px 20px;
|
||||
}
|
||||
|
||||
.mdescLeft {
|
||||
font-size: smaller;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
background-color: #FAFAFA;
|
||||
padding-left: 8px;
|
||||
border-top: 1px none #E0E0E0;
|
||||
border-right: 1px none #E0E0E0;
|
||||
border-bottom: 1px none #E0E0E0;
|
||||
border-left: 1px none #E0E0E0;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.mdescRight {
|
||||
font-size: smaller;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
font-style: italic;
|
||||
background-color: #FAFAFA;
|
||||
padding-left: 4px;
|
||||
border-top: 1px none #E0E0E0;
|
||||
border-right: 1px none #E0E0E0;
|
||||
border-bottom: 1px none #E0E0E0;
|
||||
border-left: 1px none #E0E0E0;
|
||||
margin: 0px;
|
||||
padding-bottom: 0px;
|
||||
padding-right: 8px;
|
||||
}
|
||||
|
||||
.memItemLeft {
|
||||
padding: 1px 0px 0px 8px;
|
||||
margin: 4px;
|
||||
border-top-width: 1px;
|
||||
border-right-width: 1px;
|
||||
border-bottom-width: 1px;
|
||||
border-left-width: 1px;
|
||||
border-top-style: solid;
|
||||
border-top-color: #E0E0E0;
|
||||
border-right-color: #E0E0E0;
|
||||
border-bottom-color: #E0E0E0;
|
||||
border-left-color: #E0E0E0;
|
||||
border-right-style: none;
|
||||
border-bottom-style: none;
|
||||
border-left-style: none;
|
||||
background-color: #FAFAFA;
|
||||
font-family: Geneva, Arial, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.memItemRight {
|
||||
padding: 1px 0px 0px 8px;
|
||||
margin: 4px;
|
||||
border-top-width: 1px;
|
||||
border-right-width: 1px;
|
||||
border-bottom-width: 1px;
|
||||
border-left-width: 1px;
|
||||
border-top-style: solid;
|
||||
border-top-color: #E0E0E0;
|
||||
border-right-color: #E0E0E0;
|
||||
border-bottom-color: #E0E0E0;
|
||||
border-left-color: #E0E0E0;
|
||||
border-right-style: none;
|
||||
border-bottom-style: none;
|
||||
border-left-style: none;
|
||||
background-color: #FAFAFA;
|
||||
font-family: Geneva, Arial, Helvetica, sans-serif;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.search {
|
||||
color: #0000ee;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
FORM.search {
|
||||
margin-bottom: 0px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
INPUT.search {
|
||||
font-size: 75%;
|
||||
color: #000080;
|
||||
font-weight: normal;
|
||||
background-color: #eeeeff;
|
||||
}
|
||||
|
||||
TD.tiny {
|
||||
font-size: 75%;
|
||||
}
|
111
tvmet-1.7.1/doc/tvmet.sty.in
Normal file
111
tvmet-1.7.1/doc/tvmet.sty.in
Normal file
@ -0,0 +1,111 @@
|
||||
%% Version: $Id: tvmet.sty.in,v 1.2 2004/03/27 14:00:33 opetzold Exp $
|
||||
|
||||
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
|
||||
\def\@rcs@ $#1Date: #2 #3$$#4Revision: #5$ {
|
||||
\ProvidesPackage{tvmet}[#2 v#5tvmet doxygen latex style]}
|
||||
\@rcs@ $Date: 2004/03/27 14:00:33 $$Revision: 1.2 $
|
||||
|
||||
\DeclareOption{}{%%%
|
||||
}
|
||||
|
||||
%%\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{}}
|
||||
\ExecuteOptions{}
|
||||
\ProcessOptions
|
||||
|
||||
% elementary for pdflatex
|
||||
\newif\ifpdf
|
||||
\ifx\pdfoutput\undefined
|
||||
\pdffalse % no pdftex
|
||||
\else
|
||||
\pdfoutput=1 % running pdftex
|
||||
\pdftrue
|
||||
\fi
|
||||
|
||||
% Postscript fonts
|
||||
\RequirePackage[scaled=0.92]{helvet}
|
||||
\RequirePackage{courier}
|
||||
\RequirePackage{typearea} % from KOMA script
|
||||
|
||||
% doxygen need this; it includes the style for formulas too
|
||||
\RequirePackage{fancyhdr}
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%% tvmet style %%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
%%
|
||||
%% page borders
|
||||
%%
|
||||
\areaset[2cm]% % binding border
|
||||
{16cm}{26cm} % text width and height
|
||||
|
||||
%%
|
||||
%% sans serif is default font
|
||||
%%
|
||||
\renewcommand{\familydefault}{\sfdefault}
|
||||
|
||||
%%
|
||||
%% overwrite doxygen's hyperref setup
|
||||
%%
|
||||
\ifpdf\hypersetup{
|
||||
baseurl={http://tvmet.sourceforge.net},
|
||||
pdftitle={@PACKAGE@ @VERSION@ Reference Manual},
|
||||
pdfauthor={\textcopyright\,Olaf Petzold},
|
||||
pdfsubject={%
|
||||
This Tiny Vector and Matrix C++ template
|
||||
libary uses Meta Templates and Expression Templates to evaluate results
|
||||
at compile time - to make it fast for low order (tiny) systems.
|
||||
},
|
||||
pdfkeywords={%
|
||||
tiny vector matrix fast C++ STL template library
|
||||
expression templates meta templates fixed size fixed dimension
|
||||
matrix-matrix matrix-vector vector-matrix binary unary operations operators
|
||||
product transpose linear algebra cross product dot product type promotion
|
||||
exception linux kernel embedded system regression test gcc g++
|
||||
blitz blitz++ TinyVector TinyMatrix MTL TNT
|
||||
gnu compiler suite portland group c++ kai c++ intel compiler LGPL
|
||||
},
|
||||
%
|
||||
bookmarks={true},
|
||||
bookmarksnumbered={true},
|
||||
bookmarksopen={true},
|
||||
pdfpagelabels={true},
|
||||
pdfmenubar={true},
|
||||
pdftoolbar={true},
|
||||
plainpages={false},
|
||||
pdfstartview={FitH},
|
||||
pdfpagemode={UseOutlines},
|
||||
pdfhighlight={/I}
|
||||
}
|
||||
\fi
|
||||
|
||||
%%
|
||||
%% overwrite fancyheadings
|
||||
%%
|
||||
\makeatletter
|
||||
\def\cleardoublepage{\clearpage\if@twoside \ifodd\c@page\else
|
||||
\hbox{}\vspace*{\fill}
|
||||
\thispagestyle{empty}
|
||||
\newpage
|
||||
\if@twocolumn\hbox{}\newpage\fi\fi\fi}
|
||||
\makeatother
|
||||
\renewcommand{\sectionmark}[1]{%
|
||||
\markright{\thesection.\ #1}}
|
||||
\makeatletter
|
||||
\lhead[\textbf{@PACKAGE@ @VERSION@}]{\fancyplain{}{\bfseries\rightmark}}
|
||||
\rhead[\fancyplain{}{\bfseries\leftmark}]{\textbf{@PACKAGE@ @VERSION@}}
|
||||
\makeatother
|
||||
\chead{}
|
||||
\lfoot{}
|
||||
\cfoot{\bfseries --\ \thepage\ --}
|
||||
\rfoot{}
|
||||
\setlength{\headwidth}{0.0cm}
|
||||
\setlength{\headwidth}{\textwidth}
|
||||
|
||||
\endinput
|
||||
|
||||
%%% Local Variables:
|
||||
%%% mode: latex
|
||||
%%% TeX-auto-save: nil
|
||||
%%% TeX-auto-parse-length: 99999
|
||||
%%% ispell-local-dictionary: "american"
|
||||
%%% End:
|
407
tvmet-1.7.1/doc/usage.dox
Normal file
407
tvmet-1.7.1/doc/usage.dox
Normal file
@ -0,0 +1,407 @@
|
||||
/*
|
||||
* $Id: usage.dox,v 1.14 2004/07/03 17:09:23 opetzold Exp $
|
||||
*/
|
||||
|
||||
/**
|
||||
\page usage Usage
|
||||
|
||||
<p>Contents:</p>
|
||||
-# \ref include
|
||||
-# \ref construct
|
||||
-# \ref c_arrays
|
||||
-# \ref compare
|
||||
-# \ref pod
|
||||
-# \ref stl
|
||||
-# \ref matrix_access
|
||||
-# \ref expr_print
|
||||
|
||||
|
||||
|
||||
|
||||
\section include Include files
|
||||
|
||||
The Tiny %Vector and %Matrix template library has many include files spread
|
||||
throughout the %tvmet include directory. As a user, you need only include
|
||||
<tt><%tvmet/Vector></tt> for vector operations and/or
|
||||
<tt><%tvmet/Matrix></tt> for matrix operations.
|
||||
|
||||
\par Example:
|
||||
\code
|
||||
#include <tvmet/Matrix.h>
|
||||
#include <tvmet/Vector.h>
|
||||
|
||||
using namespace tvmet;
|
||||
\endcode
|
||||
|
||||
Simple, isn't it? Don't forget to use the namespace tvmet, but keep in mind
|
||||
that using the using directive inside headers will pollute the namespace. If
|
||||
you write this in a header file, the namespace for all subsequent header
|
||||
files (those which include the one you're writing) will also be polluted.
|
||||
(This is not a %tvmet specific phenomenon.) Therefore, write the using
|
||||
statement in the C++ file.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\section construct Construction and Initializing
|
||||
|
||||
Due to the nature of
|
||||
<a href=http://extreme.indiana.edu/~tveldhui/papers/Expression-Templates/exprtmpl.html>
|
||||
Expression Templates</a> (ET) you can't write code like
|
||||
|
||||
\par Example:
|
||||
\code
|
||||
tvmet::Vector<double, 3> v1(1,2,3); // OK
|
||||
tvmet::Vector<double, 3> v2 = v1; // not possible
|
||||
\endcode
|
||||
|
||||
The operator= function assigns an expression to the Vector which means that
|
||||
the object must be constructed before you may assign something to it. The
|
||||
solution is to write this as:
|
||||
|
||||
\par Example:
|
||||
\code
|
||||
using namespace tvmet;
|
||||
|
||||
Vector<double, 3> v1(1,2,3);
|
||||
Vector<double, 3> v2; // construct the Vector<T,Sz> object at first
|
||||
v2 = v1; // ... and assign the contents of v1 to v2
|
||||
Vector<double, 3> v3(v1); // ... or simple use the copy constructor
|
||||
|
||||
std::cout << v3 << std::endl;
|
||||
\endcode
|
||||
|
||||
since the object v2 needs to be constructed before the object's operator=()
|
||||
can be called.
|
||||
|
||||
The same rule applies to the Matrix class. You can only assign vectors and
|
||||
matrices of the same dimension or you will get a compile error. This also
|
||||
applies to the argument list for the constructor of the classes.
|
||||
|
||||
Initializing can be done as shown above or by using a comma separated list:
|
||||
|
||||
\par Example:
|
||||
\code
|
||||
using namespace tvmet;
|
||||
|
||||
Matrix<double, 3, 2> m1; // yes, non-square matrices are possible as well
|
||||
m1 = 1, 4,
|
||||
2, 5,
|
||||
3, 6;
|
||||
\endcode
|
||||
|
||||
Matrix element initialization always performed column wise! If the length
|
||||
of the comma separated list is longer than the storage size, you will get
|
||||
a compile time error. (tvmet is designed to prevent this -- it will prevent
|
||||
you from accidentally overwriting memory which does not belong to the
|
||||
matrix you are initializing.) You can use a comma separated list to
|
||||
initialize vectors as well.
|
||||
|
||||
If you want a clean (zero-valued) vector or matrix you can simple write:
|
||||
|
||||
\par Example:
|
||||
\code
|
||||
using namespace tvmet;
|
||||
|
||||
Vector<double, 3> v4(0);
|
||||
Matrix<double, 3, 4> m2(0);
|
||||
\endcode
|
||||
|
||||
All elements of v4 and m2 are initialized with zero (or whatever value you
|
||||
provide at construction time). Keep in mind that the uninitialized %Matrix
|
||||
and %Vector classes will have random data when the are created (since they
|
||||
use a static array for internal storage) unless you initialize them!
|
||||
|
||||
Another way to initialize a vector or matrix follows:
|
||||
|
||||
\par Example:
|
||||
\code
|
||||
using namespace tvmet;
|
||||
|
||||
Vector<double, 3> v5(1,2,3);
|
||||
Vector<double, 3> v6(v5);
|
||||
Vector<double, 3> v7(v5+v6);
|
||||
\endcode
|
||||
|
||||
This is useful for temporary results. The result will be immediately
|
||||
assigned to the new vector elements using the expression passed to the
|
||||
constructor.
|
||||
|
||||
Yet another way of initializing a vector or matrix is similar to the above.
|
||||
We assign an expression to it:
|
||||
|
||||
\par Example:
|
||||
\code
|
||||
using namespace tvmet;
|
||||
|
||||
Matrix<double, 3, 3> m3, m4, m5;
|
||||
m3 = 1, 2, 3,
|
||||
4, 5, 6,
|
||||
7, 8, 9;
|
||||
m4 = m3;
|
||||
m5 = m3 + m4;
|
||||
\endcode
|
||||
|
||||
If you have your data inside arrays you can use tvmet's iterator interface
|
||||
to initialize a vector or matrix with it:
|
||||
|
||||
\par Example:
|
||||
\code
|
||||
T data[] = { 1,4,7,
|
||||
2,5,8,
|
||||
3,6,9 };
|
||||
|
||||
std::size_t sz = sizeof(data)/sizeof(T);
|
||||
T* first = data;
|
||||
T* last = data + sz;
|
||||
|
||||
tvmet::Matrix<double, 3, 3> m(first, last);
|
||||
\endcode
|
||||
|
||||
The data will be copied into the matrix itself. When the constructor has
|
||||
finished, there will be no stored reference to the array pointer.
|
||||
|
||||
Starting with tvmet release 1.6.0 you can create an identity matrix
|
||||
simply by using the function identity(). Note, we have to specify the
|
||||
matrix type, since ADL can't work here.
|
||||
|
||||
\par Example:
|
||||
\code
|
||||
typedef Matrix<double,3,3> matrix_type;
|
||||
...
|
||||
matrix_type E( identity<matrix_type>() );
|
||||
\endcode
|
||||
|
||||
|
||||
|
||||
|
||||
\section c_arrays Use of C style Arrays with tvmet
|
||||
|
||||
Sometimes you have some data arranged in a C style array for matrices
|
||||
and vectors. As with tvmet release 1.6.0 you can wrap an expression
|
||||
around using the functions vector_ref(const T* mem) and
|
||||
matrix_ref(const T* mem) where mem is the pointer to the C array.
|
||||
|
||||
The returned expressions (XprVector or XprMatrix) can be used
|
||||
as usual like tvmet's vectors and matrices. This means, you
|
||||
can use all mathematical functions on it.
|
||||
|
||||
\par Example:
|
||||
\code
|
||||
static float lhs[3][3] = {
|
||||
{-1, 0, 1}, { 1, 0, 1}, {-1, 0, -1}
|
||||
};
|
||||
static float rhs[3][3] = {
|
||||
{ 0, 1, 1}, { 0, 1, -1}, { 0, -1, 1}
|
||||
};
|
||||
...
|
||||
|
||||
typedef Matrix<float, 3, 3> matrix_type;
|
||||
|
||||
matrix_type M( prod(matrix_ref<float, 3, 3>(&lhs[0][0]),
|
||||
matrix_ref<float, 3, 3>(&rhs[0][0])) );
|
||||
\endcode
|
||||
|
||||
This allows to initialize tvmet's vectors and matrices by
|
||||
an alternative way as described at \ref construct.
|
||||
|
||||
|
||||
\section compare Compare Vectors and Matrices
|
||||
|
||||
If you expect to find global comparison operators for comparing Vectors
|
||||
and Matrices, you are right -- these are provided. But, the return
|
||||
value probably isn't what you expect: a boolean value. Instead, the operator
|
||||
returns an expression (e.g. XprVector<>). The contents of this expression
|
||||
type is a element wise logical operation (depends on the given operator
|
||||
like ==, <, >, etc...)! To get a boolean value you need to evaluate the
|
||||
expression using all_elements() or any_elements(), as follows:
|
||||
|
||||
\par Example:
|
||||
\code
|
||||
using namespace tvmet;
|
||||
using namespace std;
|
||||
|
||||
Vector<double, 3> v1, v2, bv;
|
||||
|
||||
v1 = 1,2,3;
|
||||
v2 = 1,3,3;
|
||||
|
||||
bv = v1 == v2;
|
||||
|
||||
cout << bv << endl;
|
||||
cout << "v1 == v2 is "
|
||||
<< ( all_elements( v1 == v2 ) ? "true" : "false" )
|
||||
<< endl;
|
||||
\endcode
|
||||
|
||||
This gives
|
||||
|
||||
\par [continued]
|
||||
\code
|
||||
Vector<d, 3>[1, 0, 1]
|
||||
v1 == v2 is false
|
||||
\endcode
|
||||
|
||||
The reason for this is the element wise operation on all elements (for both
|
||||
Vectors and Matrices). Comparing two vectors will result in a "boolean Vector"
|
||||
expression. Using all_elements/any_elements evaluates the result into a
|
||||
single boolean by repeatedly applying the comparison for each element.
|
||||
|
||||
An other example on comparing is shown below:
|
||||
|
||||
\par Example:
|
||||
\code
|
||||
if(all_elements(X == Y)) { cout << "matrices are identical" << endl; }
|
||||
if(any_elements(X == Y)) { cout << "at least one element is equal" << endl; }
|
||||
if(any_elements(X != Y)) { cout << "not all elements are equal" << endl; }
|
||||
\endcode
|
||||
|
||||
%tvmet prior release 1.2.1 did have a boolean version eval for comparing.
|
||||
The functional and semantic meaning were not clear at all. Therefore I
|
||||
decided to remove it.
|
||||
|
||||
\sa \ref operators
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\section pod Data Types like std::complex<>
|
||||
|
||||
As we can see above we can use POD (plain old data) types like <tt>double</tt> and
|
||||
<tt>int</tt> as data type of a %Vector or %Matrix. However, we are not limited to
|
||||
this - we can use e.g. <tt>std::complex<></tt> as well:
|
||||
|
||||
\par Example:
|
||||
\code
|
||||
using namespace tvmet;
|
||||
|
||||
Vector<std::complex<double>,3> v1, v2;
|
||||
Matrix<std::complex<double>,3,3> m1;
|
||||
\endcode
|
||||
|
||||
And operate on these...
|
||||
|
||||
\par [continued]
|
||||
\code
|
||||
v1 = 1,2,3;
|
||||
m1 = 1,4,7,
|
||||
2,5,8,
|
||||
3,6,9;
|
||||
v2 = m1 * v1;
|
||||
\endcode
|
||||
|
||||
Be careful. <tt>std::complex<></tt> isn't tested well on regression tests.
|
||||
|
||||
|
||||
|
||||
|
||||
\section stl STL support
|
||||
|
||||
Since version 0.2.0 %tvmet has supported an iterator interface conform to
|
||||
the STL and since version 0.5.0 reverse STL iterators have been supported,
|
||||
too.
|
||||
|
||||
With these, you can mix the %tvmet Vector and Matrix containers with the
|
||||
STL algorithms.
|
||||
|
||||
For example, if you don't like %tvmet's ostream operator, you can create
|
||||
your own implementation like this:
|
||||
|
||||
\par Example:
|
||||
\code
|
||||
tvmet::Vector<double, 6> v(1,2,3,4,5,6);
|
||||
std::cout << v << std::endl;
|
||||
|
||||
std::cout << "The Vector is:" << std::endl;
|
||||
std::copy(v.begin(), v.end(), std::ostream_iterator<double>(std::cout, "\n"));
|
||||
\endcode
|
||||
|
||||
Or, you create a random matrix and print it as shown here:
|
||||
|
||||
\par Example:
|
||||
\code
|
||||
tvmet::Matrix<double,6,6> m;
|
||||
|
||||
std::generate(m.begin(), m.end(), rand);
|
||||
std::cout << m << std::endl;
|
||||
\endcode
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\section matrix_access Matrix access by rows and columns
|
||||
|
||||
If you need a specific row or column of a given matrix you can get access to
|
||||
it by using the functions row and col. They will return an XprVector<T>.
|
||||
Unfortunately, you do not get any write access to the vector elements - only
|
||||
reading is permitted due to the expression template concept used here. For
|
||||
write access, you have to use matrix indexing with the parentheses operator.
|
||||
|
||||
\par Example:
|
||||
\code
|
||||
using namespace tvmet;
|
||||
|
||||
typedef Matrix<double 5, 3> matrix_type;
|
||||
typedef Vector<double, 5> matrix_rowvector;
|
||||
typedef Vector<double, 3> matrix_colvector;
|
||||
|
||||
matrix_type M;
|
||||
M = ....
|
||||
|
||||
matrix_rowvector row2 = row(M, 2);
|
||||
matrix_colvector col3 = col(M, 3);
|
||||
...
|
||||
\endcode
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\section expr_print Expression printing
|
||||
|
||||
Expression printing is a nice feature for debugging expressions. (For more
|
||||
about expression templates and expression tree please have a look
|
||||
<a href=http://extreme.indiana.edu/~tveldhui/papers/Expression-Templates/exprtmpl.html>here</a>).
|
||||
|
||||
You can write out a simple matrix-vector multiplication of a vector
|
||||
<tt>v1</tt> and a matrix <tt>m1</tt> of the dimension of 3 as follows:
|
||||
|
||||
\par Example:
|
||||
\code
|
||||
std::cout << m1 * v1 << std::endl;
|
||||
\endcode
|
||||
|
||||
which will be expanded to:
|
||||
|
||||
\par [continued]
|
||||
\code
|
||||
XprVector<
|
||||
XprMVProduct<
|
||||
d, 3, 3, 3, 1, d, 1
|
||||
>
|
||||
3
|
||||
>
|
||||
\endcode
|
||||
|
||||
The "d" is a g++ placeholder for double. (This may vary from compiler to
|
||||
compiler since it is an implementation detail of runtime type information
|
||||
[rtti] determined by the compiler's manufacturer). The purpose of this
|
||||
feature is to check the right evaluation of expressions into the tree on
|
||||
complicated mathematical expressions.
|
||||
|
||||
A rich source of examples are the regression tests. They show all of the
|
||||
supported operations and functions (if there is a regression test for this
|
||||
of course). Some examples are in the examples directory.
|
||||
|
||||
|
||||
|
||||
|
||||
*/
|
||||
|
||||
|
||||
// Local Variables:
|
||||
// mode:c++
|
||||
// End:
|
40
tvmet-1.7.1/doc/works.dox
Normal file
40
tvmet-1.7.1/doc/works.dox
Normal file
@ -0,0 +1,40 @@
|
||||
/*
|
||||
* $Id: works.dox,v 1.5 2005/03/09 12:33:00 opetzold Exp $
|
||||
*/
|
||||
|
||||
/**
|
||||
\page works Future works
|
||||
|
||||
A good library is never complete. Here are some points which I hope to cover
|
||||
in the future:
|
||||
|
||||
-# more regression tests (bit operations are missing, not all functions and type
|
||||
promotion are tested) and examples (temporary the regression test can act
|
||||
as examples). The problems with the regression tests actually used is,
|
||||
that they does not follow mathematical, strong logical guide lines to cover all
|
||||
possible cases.
|
||||
-# write more examples, the regression test should not act as examples.
|
||||
-# better support for std::complex type.
|
||||
-# add functions like
|
||||
- matrix inverse using LUdecomposition and other matrix vector functions
|
||||
- meta functions for sin, cos etc.
|
||||
-# System V math support on linux seems to be incomplete
|
||||
-# better compiler support
|
||||
-# Interface to other numerical libraries as uBlas, BLAS, and LAPACK.
|
||||
|
||||
|
||||
Maybe, there will be a tvmet2. Some of the features mentioned above will
|
||||
require a redesign of tvmet. With this new design tvmet can better handle
|
||||
special matrices, like banded, symmetric or triangular matrices etc.
|
||||
Furthermore, sparse tiny vectors and matrices are easy to implement, as well
|
||||
as an allocator concept for re-sizable containers.
|
||||
|
||||
The priority depends on the \ref projects as well as the support from the
|
||||
community - please support %tvmet.
|
||||
|
||||
*/
|
||||
|
||||
|
||||
// Local Variables:
|
||||
// mode:c++
|
||||
// End:
|
59
tvmet-1.7.1/examples/Makefile.am
Normal file
59
tvmet-1.7.1/examples/Makefile.am
Normal file
@ -0,0 +1,59 @@
|
||||
# $Id: Makefile.am,v 1.12 2004/04/28 21:59:40 opetzold Exp $
|
||||
|
||||
AM_CXXFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include
|
||||
|
||||
EXTRA_PROGRAMS = \
|
||||
xpr_print_v1 \
|
||||
xpr_print_v2 \
|
||||
xpr_print_v3 \
|
||||
xpr_print_v4 \
|
||||
xpr_print_m1 \
|
||||
xpr_print_m2 \
|
||||
xpr_print_m3 \
|
||||
xpr_print_m4 \
|
||||
xpr_print_mv1 \
|
||||
xpr_print_mv2 \
|
||||
mv \
|
||||
mm \
|
||||
cmv \
|
||||
cmm \
|
||||
matrix_col \
|
||||
diag \
|
||||
ray \
|
||||
hspiess \
|
||||
redwards \
|
||||
frob_matrix_norm \
|
||||
alias \
|
||||
aliasing
|
||||
|
||||
DISTCLEANFILES = $(EXTRA_PROGRAMS)
|
||||
|
||||
xpr_print_v1_SOURCES = xpr_print_v1.cc
|
||||
xpr_print_v2_SOURCES = xpr_print_v2.cc
|
||||
xpr_print_v3_SOURCES = xpr_print_v3.cc
|
||||
xpr_print_v4_SOURCES = xpr_print_v4.cc
|
||||
xpr_print_m1_SOURCES = xpr_print_m1.cc
|
||||
xpr_print_m2_SOURCES = xpr_print_m2.cc
|
||||
xpr_print_m3_SOURCES = xpr_print_m3.cc
|
||||
xpr_print_m4_SOURCES = xpr_print_m4.cc
|
||||
xpr_print_mv1_SOURCES = xpr_print_mv1.cc
|
||||
xpr_print_mv2_SOURCES = xpr_print_mv2.cc
|
||||
|
||||
mv_SOURCES = mv.cc
|
||||
mm_SOURCES = mm.cc
|
||||
cmv_SOURCES = cmv.cc
|
||||
cmm_SOURCES = cmm.cc
|
||||
matrix_col_SOURCES = matrix_col.cc
|
||||
diag_SOURCES = diag.cc
|
||||
|
||||
ray_SOURCES = ray.cc
|
||||
|
||||
redwards_SOURCES = redwards.cc
|
||||
hspiess_SOURCES = hspiess.cc
|
||||
|
||||
frob_matrix_norm_SOURCES = frob_matrix_norm.cc
|
||||
|
||||
alias_SOURCES = alias.cc
|
||||
aliasing_SOURCES = aliasing.cc
|
||||
|
||||
examples: $(EXTRA_PROGRAMS)
|
651
tvmet-1.7.1/examples/Makefile.in
Normal file
651
tvmet-1.7.1/examples/Makefile.in
Normal file
@ -0,0 +1,651 @@
|
||||
# Makefile.in generated by automake 1.8.3 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# $Id: Makefile.am,v 1.12 2004/04/28 21:59:40 opetzold Exp $
|
||||
SOURCES = $(alias_SOURCES) $(aliasing_SOURCES) $(cmm_SOURCES) $(cmv_SOURCES) $(diag_SOURCES) $(frob_matrix_norm_SOURCES) $(hspiess_SOURCES) $(matrix_col_SOURCES) $(mm_SOURCES) $(mv_SOURCES) $(ray_SOURCES) $(redwards_SOURCES) $(xpr_print_m1_SOURCES) $(xpr_print_m2_SOURCES) $(xpr_print_m3_SOURCES) $(xpr_print_m4_SOURCES) $(xpr_print_mv1_SOURCES) $(xpr_print_mv2_SOURCES) $(xpr_print_v1_SOURCES) $(xpr_print_v2_SOURCES) $(xpr_print_v3_SOURCES) $(xpr_print_v4_SOURCES)
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = ..
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = @INSTALL@
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
host_triplet = @host@
|
||||
EXTRA_PROGRAMS = xpr_print_v1$(EXEEXT) xpr_print_v2$(EXEEXT) \
|
||||
xpr_print_v3$(EXEEXT) xpr_print_v4$(EXEEXT) \
|
||||
xpr_print_m1$(EXEEXT) xpr_print_m2$(EXEEXT) \
|
||||
xpr_print_m3$(EXEEXT) xpr_print_m4$(EXEEXT) \
|
||||
xpr_print_mv1$(EXEEXT) xpr_print_mv2$(EXEEXT) mv$(EXEEXT) \
|
||||
mm$(EXEEXT) cmv$(EXEEXT) cmm$(EXEEXT) matrix_col$(EXEEXT) \
|
||||
diag$(EXEEXT) ray$(EXEEXT) hspiess$(EXEEXT) redwards$(EXEEXT) \
|
||||
frob_matrix_norm$(EXEEXT) alias$(EXEEXT) aliasing$(EXEEXT)
|
||||
subdir = examples
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/config/ac_c_long_long.m4 \
|
||||
$(top_srcdir)/config/ac_create_prefix_config_h.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_complex.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_complex_math1.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_complex_math2.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_ieee_math.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_mutable.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_namespaces.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_sysv_math.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_partial_specialization.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_typename.m4 \
|
||||
$(top_srcdir)/config/ac_set_compiler.m4 \
|
||||
$(top_srcdir)/config/op_doxygen_doc.m4 \
|
||||
$(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(mkdir_p)
|
||||
CONFIG_HEADER = $(top_builddir)/config/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
am_alias_OBJECTS = alias.$(OBJEXT)
|
||||
alias_OBJECTS = $(am_alias_OBJECTS)
|
||||
alias_LDADD = $(LDADD)
|
||||
am_aliasing_OBJECTS = aliasing.$(OBJEXT)
|
||||
aliasing_OBJECTS = $(am_aliasing_OBJECTS)
|
||||
aliasing_LDADD = $(LDADD)
|
||||
am_cmm_OBJECTS = cmm.$(OBJEXT)
|
||||
cmm_OBJECTS = $(am_cmm_OBJECTS)
|
||||
cmm_LDADD = $(LDADD)
|
||||
am_cmv_OBJECTS = cmv.$(OBJEXT)
|
||||
cmv_OBJECTS = $(am_cmv_OBJECTS)
|
||||
cmv_LDADD = $(LDADD)
|
||||
am_diag_OBJECTS = diag.$(OBJEXT)
|
||||
diag_OBJECTS = $(am_diag_OBJECTS)
|
||||
diag_LDADD = $(LDADD)
|
||||
am_frob_matrix_norm_OBJECTS = frob_matrix_norm.$(OBJEXT)
|
||||
frob_matrix_norm_OBJECTS = $(am_frob_matrix_norm_OBJECTS)
|
||||
frob_matrix_norm_LDADD = $(LDADD)
|
||||
am_hspiess_OBJECTS = hspiess.$(OBJEXT)
|
||||
hspiess_OBJECTS = $(am_hspiess_OBJECTS)
|
||||
hspiess_LDADD = $(LDADD)
|
||||
am_matrix_col_OBJECTS = matrix_col.$(OBJEXT)
|
||||
matrix_col_OBJECTS = $(am_matrix_col_OBJECTS)
|
||||
matrix_col_LDADD = $(LDADD)
|
||||
am_mm_OBJECTS = mm.$(OBJEXT)
|
||||
mm_OBJECTS = $(am_mm_OBJECTS)
|
||||
mm_LDADD = $(LDADD)
|
||||
am_mv_OBJECTS = mv.$(OBJEXT)
|
||||
mv_OBJECTS = $(am_mv_OBJECTS)
|
||||
mv_LDADD = $(LDADD)
|
||||
am_ray_OBJECTS = ray.$(OBJEXT)
|
||||
ray_OBJECTS = $(am_ray_OBJECTS)
|
||||
ray_LDADD = $(LDADD)
|
||||
am_redwards_OBJECTS = redwards.$(OBJEXT)
|
||||
redwards_OBJECTS = $(am_redwards_OBJECTS)
|
||||
redwards_LDADD = $(LDADD)
|
||||
am_xpr_print_m1_OBJECTS = xpr_print_m1.$(OBJEXT)
|
||||
xpr_print_m1_OBJECTS = $(am_xpr_print_m1_OBJECTS)
|
||||
xpr_print_m1_LDADD = $(LDADD)
|
||||
am_xpr_print_m2_OBJECTS = xpr_print_m2.$(OBJEXT)
|
||||
xpr_print_m2_OBJECTS = $(am_xpr_print_m2_OBJECTS)
|
||||
xpr_print_m2_LDADD = $(LDADD)
|
||||
am_xpr_print_m3_OBJECTS = xpr_print_m3.$(OBJEXT)
|
||||
xpr_print_m3_OBJECTS = $(am_xpr_print_m3_OBJECTS)
|
||||
xpr_print_m3_LDADD = $(LDADD)
|
||||
am_xpr_print_m4_OBJECTS = xpr_print_m4.$(OBJEXT)
|
||||
xpr_print_m4_OBJECTS = $(am_xpr_print_m4_OBJECTS)
|
||||
xpr_print_m4_LDADD = $(LDADD)
|
||||
am_xpr_print_mv1_OBJECTS = xpr_print_mv1.$(OBJEXT)
|
||||
xpr_print_mv1_OBJECTS = $(am_xpr_print_mv1_OBJECTS)
|
||||
xpr_print_mv1_LDADD = $(LDADD)
|
||||
am_xpr_print_mv2_OBJECTS = xpr_print_mv2.$(OBJEXT)
|
||||
xpr_print_mv2_OBJECTS = $(am_xpr_print_mv2_OBJECTS)
|
||||
xpr_print_mv2_LDADD = $(LDADD)
|
||||
am_xpr_print_v1_OBJECTS = xpr_print_v1.$(OBJEXT)
|
||||
xpr_print_v1_OBJECTS = $(am_xpr_print_v1_OBJECTS)
|
||||
xpr_print_v1_LDADD = $(LDADD)
|
||||
am_xpr_print_v2_OBJECTS = xpr_print_v2.$(OBJEXT)
|
||||
xpr_print_v2_OBJECTS = $(am_xpr_print_v2_OBJECTS)
|
||||
xpr_print_v2_LDADD = $(LDADD)
|
||||
am_xpr_print_v3_OBJECTS = xpr_print_v3.$(OBJEXT)
|
||||
xpr_print_v3_OBJECTS = $(am_xpr_print_v3_OBJECTS)
|
||||
xpr_print_v3_LDADD = $(LDADD)
|
||||
am_xpr_print_v4_OBJECTS = xpr_print_v4.$(OBJEXT)
|
||||
xpr_print_v4_OBJECTS = $(am_xpr_print_v4_OBJECTS)
|
||||
xpr_print_v4_LDADD = $(LDADD)
|
||||
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/config
|
||||
depcomp = $(SHELL) $(top_srcdir)/config/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/alias.Po ./$(DEPDIR)/aliasing.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/cmm.Po ./$(DEPDIR)/cmv.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/diag.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/frob_matrix_norm.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/hspiess.Po ./$(DEPDIR)/matrix_col.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/mm.Po ./$(DEPDIR)/mv.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/ray.Po ./$(DEPDIR)/redwards.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/xpr_print_m1.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/xpr_print_m2.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/xpr_print_m3.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/xpr_print_m4.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/xpr_print_mv1.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/xpr_print_mv2.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/xpr_print_v1.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/xpr_print_v2.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/xpr_print_v3.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/xpr_print_v4.Po
|
||||
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
|
||||
LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \
|
||||
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||
$(AM_CXXFLAGS) $(CXXFLAGS)
|
||||
CXXLD = $(CXX)
|
||||
CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \
|
||||
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
SOURCES = $(alias_SOURCES) $(aliasing_SOURCES) $(cmm_SOURCES) \
|
||||
$(cmv_SOURCES) $(diag_SOURCES) $(frob_matrix_norm_SOURCES) \
|
||||
$(hspiess_SOURCES) $(matrix_col_SOURCES) $(mm_SOURCES) \
|
||||
$(mv_SOURCES) $(ray_SOURCES) $(redwards_SOURCES) \
|
||||
$(xpr_print_m1_SOURCES) $(xpr_print_m2_SOURCES) \
|
||||
$(xpr_print_m3_SOURCES) $(xpr_print_m4_SOURCES) \
|
||||
$(xpr_print_mv1_SOURCES) $(xpr_print_mv2_SOURCES) \
|
||||
$(xpr_print_v1_SOURCES) $(xpr_print_v2_SOURCES) \
|
||||
$(xpr_print_v3_SOURCES) $(xpr_print_v4_SOURCES)
|
||||
DIST_SOURCES = $(alias_SOURCES) $(aliasing_SOURCES) $(cmm_SOURCES) \
|
||||
$(cmv_SOURCES) $(diag_SOURCES) $(frob_matrix_norm_SOURCES) \
|
||||
$(hspiess_SOURCES) $(matrix_col_SOURCES) $(mm_SOURCES) \
|
||||
$(mv_SOURCES) $(ray_SOURCES) $(redwards_SOURCES) \
|
||||
$(xpr_print_m1_SOURCES) $(xpr_print_m2_SOURCES) \
|
||||
$(xpr_print_m3_SOURCES) $(xpr_print_m4_SOURCES) \
|
||||
$(xpr_print_mv1_SOURCES) $(xpr_print_mv2_SOURCES) \
|
||||
$(xpr_print_v1_SOURCES) $(xpr_print_v2_SOURCES) \
|
||||
$(xpr_print_v3_SOURCES) $(xpr_print_v4_SOURCES)
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CONFIG_CPPUNIT_FALSE = @CONFIG_CPPUNIT_FALSE@
|
||||
CONFIG_CPPUNIT_TRUE = @CONFIG_CPPUNIT_TRUE@
|
||||
CONFIG_DOC_FALSE = @CONFIG_DOC_FALSE@
|
||||
CONFIG_DOC_TRUE = @CONFIG_DOC_TRUE@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@
|
||||
CPPUNIT_CONFIG = @CPPUNIT_CONFIG@
|
||||
CPPUNIT_LIBS = @CPPUNIT_LIBS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CXX_DEBUG_FLAGS = @CXX_DEBUG_FLAGS@
|
||||
CXX_OPTIMIZE_FLAGS = @CXX_OPTIMIZE_FLAGS@
|
||||
CXX_WARN_FLAGS = @CXX_WARN_FLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DOXYGEN = @DOXYGEN@
|
||||
DOXYGEN_HAVE_DOT = @DOXYGEN_HAVE_DOT@
|
||||
ECHO = @ECHO@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
F77 = @F77@
|
||||
FFLAGS = @FFLAGS@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LATEX_BATCHMODE = @LATEX_BATCHMODE@
|
||||
LATEX_MODE = @LATEX_MODE@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
RANLIB = @RANLIB@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_F77 = @ac_ct_F77@
|
||||
ac_ct_RANLIB = @ac_ct_RANLIB@
|
||||
ac_ct_STRIP = @ac_ct_STRIP@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
|
||||
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
datadir = @datadir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
AM_CXXFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include
|
||||
DISTCLEANFILES = $(EXTRA_PROGRAMS)
|
||||
xpr_print_v1_SOURCES = xpr_print_v1.cc
|
||||
xpr_print_v2_SOURCES = xpr_print_v2.cc
|
||||
xpr_print_v3_SOURCES = xpr_print_v3.cc
|
||||
xpr_print_v4_SOURCES = xpr_print_v4.cc
|
||||
xpr_print_m1_SOURCES = xpr_print_m1.cc
|
||||
xpr_print_m2_SOURCES = xpr_print_m2.cc
|
||||
xpr_print_m3_SOURCES = xpr_print_m3.cc
|
||||
xpr_print_m4_SOURCES = xpr_print_m4.cc
|
||||
xpr_print_mv1_SOURCES = xpr_print_mv1.cc
|
||||
xpr_print_mv2_SOURCES = xpr_print_mv2.cc
|
||||
mv_SOURCES = mv.cc
|
||||
mm_SOURCES = mm.cc
|
||||
cmv_SOURCES = cmv.cc
|
||||
cmm_SOURCES = cmm.cc
|
||||
matrix_col_SOURCES = matrix_col.cc
|
||||
diag_SOURCES = diag.cc
|
||||
ray_SOURCES = ray.cc
|
||||
redwards_SOURCES = redwards.cc
|
||||
hspiess_SOURCES = hspiess.cc
|
||||
frob_matrix_norm_SOURCES = frob_matrix_norm.cc
|
||||
alias_SOURCES = alias.cc
|
||||
aliasing_SOURCES = aliasing.cc
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .cc .lo .o .obj
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu examples/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
alias$(EXEEXT): $(alias_OBJECTS) $(alias_DEPENDENCIES)
|
||||
@rm -f alias$(EXEEXT)
|
||||
$(CXXLINK) $(alias_LDFLAGS) $(alias_OBJECTS) $(alias_LDADD) $(LIBS)
|
||||
aliasing$(EXEEXT): $(aliasing_OBJECTS) $(aliasing_DEPENDENCIES)
|
||||
@rm -f aliasing$(EXEEXT)
|
||||
$(CXXLINK) $(aliasing_LDFLAGS) $(aliasing_OBJECTS) $(aliasing_LDADD) $(LIBS)
|
||||
cmm$(EXEEXT): $(cmm_OBJECTS) $(cmm_DEPENDENCIES)
|
||||
@rm -f cmm$(EXEEXT)
|
||||
$(CXXLINK) $(cmm_LDFLAGS) $(cmm_OBJECTS) $(cmm_LDADD) $(LIBS)
|
||||
cmv$(EXEEXT): $(cmv_OBJECTS) $(cmv_DEPENDENCIES)
|
||||
@rm -f cmv$(EXEEXT)
|
||||
$(CXXLINK) $(cmv_LDFLAGS) $(cmv_OBJECTS) $(cmv_LDADD) $(LIBS)
|
||||
diag$(EXEEXT): $(diag_OBJECTS) $(diag_DEPENDENCIES)
|
||||
@rm -f diag$(EXEEXT)
|
||||
$(CXXLINK) $(diag_LDFLAGS) $(diag_OBJECTS) $(diag_LDADD) $(LIBS)
|
||||
frob_matrix_norm$(EXEEXT): $(frob_matrix_norm_OBJECTS) $(frob_matrix_norm_DEPENDENCIES)
|
||||
@rm -f frob_matrix_norm$(EXEEXT)
|
||||
$(CXXLINK) $(frob_matrix_norm_LDFLAGS) $(frob_matrix_norm_OBJECTS) $(frob_matrix_norm_LDADD) $(LIBS)
|
||||
hspiess$(EXEEXT): $(hspiess_OBJECTS) $(hspiess_DEPENDENCIES)
|
||||
@rm -f hspiess$(EXEEXT)
|
||||
$(CXXLINK) $(hspiess_LDFLAGS) $(hspiess_OBJECTS) $(hspiess_LDADD) $(LIBS)
|
||||
matrix_col$(EXEEXT): $(matrix_col_OBJECTS) $(matrix_col_DEPENDENCIES)
|
||||
@rm -f matrix_col$(EXEEXT)
|
||||
$(CXXLINK) $(matrix_col_LDFLAGS) $(matrix_col_OBJECTS) $(matrix_col_LDADD) $(LIBS)
|
||||
mm$(EXEEXT): $(mm_OBJECTS) $(mm_DEPENDENCIES)
|
||||
@rm -f mm$(EXEEXT)
|
||||
$(CXXLINK) $(mm_LDFLAGS) $(mm_OBJECTS) $(mm_LDADD) $(LIBS)
|
||||
mv$(EXEEXT): $(mv_OBJECTS) $(mv_DEPENDENCIES)
|
||||
@rm -f mv$(EXEEXT)
|
||||
$(CXXLINK) $(mv_LDFLAGS) $(mv_OBJECTS) $(mv_LDADD) $(LIBS)
|
||||
ray$(EXEEXT): $(ray_OBJECTS) $(ray_DEPENDENCIES)
|
||||
@rm -f ray$(EXEEXT)
|
||||
$(CXXLINK) $(ray_LDFLAGS) $(ray_OBJECTS) $(ray_LDADD) $(LIBS)
|
||||
redwards$(EXEEXT): $(redwards_OBJECTS) $(redwards_DEPENDENCIES)
|
||||
@rm -f redwards$(EXEEXT)
|
||||
$(CXXLINK) $(redwards_LDFLAGS) $(redwards_OBJECTS) $(redwards_LDADD) $(LIBS)
|
||||
xpr_print_m1$(EXEEXT): $(xpr_print_m1_OBJECTS) $(xpr_print_m1_DEPENDENCIES)
|
||||
@rm -f xpr_print_m1$(EXEEXT)
|
||||
$(CXXLINK) $(xpr_print_m1_LDFLAGS) $(xpr_print_m1_OBJECTS) $(xpr_print_m1_LDADD) $(LIBS)
|
||||
xpr_print_m2$(EXEEXT): $(xpr_print_m2_OBJECTS) $(xpr_print_m2_DEPENDENCIES)
|
||||
@rm -f xpr_print_m2$(EXEEXT)
|
||||
$(CXXLINK) $(xpr_print_m2_LDFLAGS) $(xpr_print_m2_OBJECTS) $(xpr_print_m2_LDADD) $(LIBS)
|
||||
xpr_print_m3$(EXEEXT): $(xpr_print_m3_OBJECTS) $(xpr_print_m3_DEPENDENCIES)
|
||||
@rm -f xpr_print_m3$(EXEEXT)
|
||||
$(CXXLINK) $(xpr_print_m3_LDFLAGS) $(xpr_print_m3_OBJECTS) $(xpr_print_m3_LDADD) $(LIBS)
|
||||
xpr_print_m4$(EXEEXT): $(xpr_print_m4_OBJECTS) $(xpr_print_m4_DEPENDENCIES)
|
||||
@rm -f xpr_print_m4$(EXEEXT)
|
||||
$(CXXLINK) $(xpr_print_m4_LDFLAGS) $(xpr_print_m4_OBJECTS) $(xpr_print_m4_LDADD) $(LIBS)
|
||||
xpr_print_mv1$(EXEEXT): $(xpr_print_mv1_OBJECTS) $(xpr_print_mv1_DEPENDENCIES)
|
||||
@rm -f xpr_print_mv1$(EXEEXT)
|
||||
$(CXXLINK) $(xpr_print_mv1_LDFLAGS) $(xpr_print_mv1_OBJECTS) $(xpr_print_mv1_LDADD) $(LIBS)
|
||||
xpr_print_mv2$(EXEEXT): $(xpr_print_mv2_OBJECTS) $(xpr_print_mv2_DEPENDENCIES)
|
||||
@rm -f xpr_print_mv2$(EXEEXT)
|
||||
$(CXXLINK) $(xpr_print_mv2_LDFLAGS) $(xpr_print_mv2_OBJECTS) $(xpr_print_mv2_LDADD) $(LIBS)
|
||||
xpr_print_v1$(EXEEXT): $(xpr_print_v1_OBJECTS) $(xpr_print_v1_DEPENDENCIES)
|
||||
@rm -f xpr_print_v1$(EXEEXT)
|
||||
$(CXXLINK) $(xpr_print_v1_LDFLAGS) $(xpr_print_v1_OBJECTS) $(xpr_print_v1_LDADD) $(LIBS)
|
||||
xpr_print_v2$(EXEEXT): $(xpr_print_v2_OBJECTS) $(xpr_print_v2_DEPENDENCIES)
|
||||
@rm -f xpr_print_v2$(EXEEXT)
|
||||
$(CXXLINK) $(xpr_print_v2_LDFLAGS) $(xpr_print_v2_OBJECTS) $(xpr_print_v2_LDADD) $(LIBS)
|
||||
xpr_print_v3$(EXEEXT): $(xpr_print_v3_OBJECTS) $(xpr_print_v3_DEPENDENCIES)
|
||||
@rm -f xpr_print_v3$(EXEEXT)
|
||||
$(CXXLINK) $(xpr_print_v3_LDFLAGS) $(xpr_print_v3_OBJECTS) $(xpr_print_v3_LDADD) $(LIBS)
|
||||
xpr_print_v4$(EXEEXT): $(xpr_print_v4_OBJECTS) $(xpr_print_v4_DEPENDENCIES)
|
||||
@rm -f xpr_print_v4$(EXEEXT)
|
||||
$(CXXLINK) $(xpr_print_v4_LDFLAGS) $(xpr_print_v4_OBJECTS) $(xpr_print_v4_LDADD) $(LIBS)
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alias.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aliasing.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmm.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmv.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diag.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/frob_matrix_norm.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hspiess.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/matrix_col.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mm.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mv.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ray.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/redwards.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xpr_print_m1.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xpr_print_m2.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xpr_print_m3.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xpr_print_m4.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xpr_print_mv1.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xpr_print_mv2.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xpr_print_v1.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xpr_print_v2.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xpr_print_v3.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xpr_print_v4.Po@am__quote@
|
||||
|
||||
.cc.o:
|
||||
@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
|
||||
|
||||
.cc.obj:
|
||||
@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
|
||||
.cc.lo:
|
||||
@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
distclean-libtool:
|
||||
-rm -f libtool
|
||||
uninstall-info-am:
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(ETAGS_ARGS)$$tags$$unique" \
|
||||
|| $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkdir_p) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile
|
||||
installdirs:
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-libtool distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-man:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||
mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-info-am
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||
clean-libtool ctags distclean distclean-compile \
|
||||
distclean-generic distclean-libtool distclean-tags distdir dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-data install-data-am install-exec install-exec-am \
|
||||
install-info install-info-am install-man install-strip \
|
||||
installcheck installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags uninstall uninstall-am uninstall-info-am
|
||||
|
||||
|
||||
examples: $(EXTRA_PROGRAMS)
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
33
tvmet-1.7.1/examples/alias.cc
Normal file
33
tvmet-1.7.1/examples/alias.cc
Normal file
@ -0,0 +1,33 @@
|
||||
/*
|
||||
* $Id: alias.cc,v 1.1 2004/03/26 07:56:32 opetzold Exp $
|
||||
*
|
||||
* This example shows the solution of the problem with aliasing
|
||||
* mentioned at
|
||||
* http://tvmet.sourceforge.net/notes.html#alias
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
#include <algorithm>
|
||||
#include <tvmet/Matrix.h>
|
||||
#include <tvmet/Vector.h>
|
||||
#include <tvmet/util/Incrementor.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
typedef tvmet::Matrix<double, 3, 3> matrix_type;
|
||||
|
||||
matrix_type M;
|
||||
|
||||
std::generate(M.begin(), M.end(),
|
||||
tvmet::util::Incrementor<matrix_type::value_type>());
|
||||
|
||||
std::cout << "M = " << M << std::endl;
|
||||
|
||||
alias(M) = M * trans(M);
|
||||
|
||||
std::cout << M << std::endl;
|
||||
|
||||
}
|
44
tvmet-1.7.1/examples/aliasing.cc
Normal file
44
tvmet-1.7.1/examples/aliasing.cc
Normal file
@ -0,0 +1,44 @@
|
||||
/*
|
||||
* $Id: aliasing.cc,v 1.2 2004/03/26 07:58:06 opetzold Exp $
|
||||
*
|
||||
* This example shows the problem with aliasing mentioned at
|
||||
* http://tvmet.sourceforge.net/notes.html#alias
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
#include <algorithm>
|
||||
#include <tvmet/Matrix.h>
|
||||
#include <tvmet/util/Incrementor.h>
|
||||
|
||||
using std::cout; using std::endl;
|
||||
using namespace tvmet;
|
||||
|
||||
typedef Matrix<double,3,3> matrix_type;
|
||||
|
||||
int main()
|
||||
{
|
||||
matrix_type A, B;
|
||||
matrix_type C;
|
||||
|
||||
std::generate(A.begin(), A.end(),
|
||||
tvmet::util::Incrementor<matrix_type::value_type>());
|
||||
std::generate(B.begin(), B.end(),
|
||||
tvmet::util::Incrementor<matrix_type::value_type>());
|
||||
|
||||
cout << "A = " << A << endl;
|
||||
cout << "B = " << B << endl;
|
||||
|
||||
// matrix prod without aliasing
|
||||
C = A * B;
|
||||
cout << "C = A * B = " << C << endl;
|
||||
|
||||
// work around for aliasing
|
||||
matrix_type temp_A(A);
|
||||
A = temp_A * B;
|
||||
cout << "matrix_type temp_A(A);\n"
|
||||
<< "A = temp_A * B = " << A << endl;
|
||||
|
||||
// this shows the aliasing problem
|
||||
A = A * B;
|
||||
cout << "A = A * B = " << A << endl;
|
||||
}
|
29
tvmet-1.7.1/examples/cmm.cc
Normal file
29
tvmet-1.7.1/examples/cmm.cc
Normal file
@ -0,0 +1,29 @@
|
||||
#include <iostream>
|
||||
#include <complex>
|
||||
|
||||
#include <tvmet/Matrix.h>
|
||||
|
||||
using namespace tvmet;
|
||||
using std::cout;
|
||||
using std::endl;
|
||||
|
||||
typedef Matrix<std::complex<double>,3,3> matrix33d;
|
||||
|
||||
void testMM(matrix33d& res, const matrix33d& m1, const matrix33d& m2) {
|
||||
res = m1 * m2;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
matrix33d m1, m2, m3;
|
||||
|
||||
m1 = 1,4,7,
|
||||
2,5,8,
|
||||
3,6,9;
|
||||
m2 = m1;
|
||||
|
||||
testMM(m3, m1, m2);
|
||||
|
||||
cout << m1 << "\n*\n" << m2 << "\n=";
|
||||
cout << m3 << endl;
|
||||
}
|
36
tvmet-1.7.1/examples/cmv.cc
Normal file
36
tvmet-1.7.1/examples/cmv.cc
Normal file
@ -0,0 +1,36 @@
|
||||
#include <iostream>
|
||||
#include <complex>
|
||||
|
||||
#include <tvmet/Matrix.h>
|
||||
#include <tvmet/Vector.h>
|
||||
|
||||
using namespace tvmet;
|
||||
using std::cout;
|
||||
using std::endl;
|
||||
|
||||
typedef Vector<std::complex<double>,3> vector3d;
|
||||
typedef Matrix<std::complex<double>,3,3> matrix33d;
|
||||
|
||||
#if (defined __ICC )
|
||||
#pragma warning(disable:1418) // external definition with no prior declaration
|
||||
#endif
|
||||
|
||||
void testMV(vector3d& res, const matrix33d& m, const vector3d& v) {
|
||||
res = m * v;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
vector3d v1, vr;
|
||||
matrix33d m1;
|
||||
|
||||
v1 = 1,2,3;
|
||||
m1 = 1,4,7,
|
||||
2,5,8,
|
||||
3,6,9;
|
||||
|
||||
testMV(vr, m1, v1);
|
||||
|
||||
cout << m1 << " * " << v1 << " =\n";
|
||||
cout << vr << endl;
|
||||
}
|
32
tvmet-1.7.1/examples/diag.cc
Normal file
32
tvmet-1.7.1/examples/diag.cc
Normal file
@ -0,0 +1,32 @@
|
||||
/* Version: $Id: diag.cc,v 1.1 2003/02/12 19:03:48 opetzold Exp $ */
|
||||
|
||||
|
||||
#include <iostream>
|
||||
#include <tvmet/Matrix.h>
|
||||
#include <tvmet/Vector.h>
|
||||
|
||||
|
||||
using namespace std;
|
||||
using namespace tvmet;
|
||||
|
||||
typedef Matrix<double,3,3> matrix33d;
|
||||
typedef Vector<double,3> vector3d;
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
matrix33d m1, m2(0);
|
||||
vector3d v1, v2;
|
||||
|
||||
m1 = 1,4,7,
|
||||
2,5,8,
|
||||
3,6,9;
|
||||
v1 = diag(m1);
|
||||
|
||||
// not yet, since we need to assign an expression/scalar to an expression
|
||||
// diag(m2) = 1.0;
|
||||
|
||||
cout << "M1 = " << m1 << endl;
|
||||
cout << "diag(M1) = " << v1 << endl;
|
||||
cout << "identity(M2) = " << m2 << endl;
|
||||
}
|
191
tvmet-1.7.1/examples/frob_matrix_norm.cc
Normal file
191
tvmet-1.7.1/examples/frob_matrix_norm.cc
Normal file
@ -0,0 +1,191 @@
|
||||
/*
|
||||
* Tiny Vector Matrix Library
|
||||
* Dense Vector Matrix Libary of Tiny size using Expression Templates
|
||||
*
|
||||
* Copyright (C) 2001 - 2003 Olaf Petzold <opetzold@users.sourceforge.net>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* $Id: frob_matrix_norm.cc,v 1.3 2003/11/30 08:26:25 opetzold Exp $
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
#include <tvmet/Matrix.h>
|
||||
#include <tvmet/xpr/Vector.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
template<class T, std::size_t Rows, std::size_t Cols>
|
||||
double
|
||||
frob_norm(const tvmet::Matrix<T, Rows, Cols>& M) {
|
||||
return std::sqrt(M(0,0)*M(0,0) + M(1,0)*M(1,0) + M(2,0)*M(2,0)
|
||||
+ M(0,1)*M(0,1) + M(1,1)*M(1,1) + M(2,1)*M(2,1)
|
||||
+ M(0,2)*M(0,2) + M(1,2)*M(1,2) + M(2,2)*M(2,2));
|
||||
}
|
||||
|
||||
namespace tvmet {
|
||||
template<class T, std::size_t Rows, std::size_t Cols>
|
||||
typename NumericTraits<T>::float_type
|
||||
norm(const Matrix<T, Rows, Cols>& M) {
|
||||
return std::sqrt( sum( diag( MtM_prod(M,M) ) ) );
|
||||
}
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
typedef tvmet::Matrix<double,3,3> matrix_type;
|
||||
|
||||
matrix_type M;
|
||||
|
||||
M = 1,2,3,4,5,6,7,8,9;
|
||||
cout << M << endl;
|
||||
|
||||
cout << "handopt norm = " << frob_norm(M) << endl;
|
||||
cout << "tvmet::norm = " << tvmet::norm(M) << endl;
|
||||
}
|
||||
|
||||
/*
|
||||
gcc 3.3 produce for the hand optimized frob_norm:
|
||||
|
||||
_Z9frob_normIdLj3ELj3EEdRKN5tvmet6MatrixIT_XT0_EXT1_EEE:
|
||||
.LFB3210:
|
||||
pushl %ebp
|
||||
.LCFI6:
|
||||
movl %esp, %ebp
|
||||
.LCFI7:
|
||||
subl $8, %esp
|
||||
.LCFI8:
|
||||
movl 8(%ebp), %eax
|
||||
fldl (%eax)
|
||||
fldl 24(%eax)
|
||||
fxch %st(1)
|
||||
fmul %st(0), %st
|
||||
fxch %st(1)
|
||||
fmul %st(0), %st
|
||||
faddp %st, %st(1)
|
||||
fldl 48(%eax)
|
||||
fmul %st(0), %st
|
||||
faddp %st, %st(1)
|
||||
fldl 8(%eax)
|
||||
fmul %st(0), %st
|
||||
faddp %st, %st(1)
|
||||
fldl 32(%eax)
|
||||
fmul %st(0), %st
|
||||
faddp %st, %st(1)
|
||||
fldl 56(%eax)
|
||||
fmul %st(0), %st
|
||||
faddp %st, %st(1)
|
||||
fldl 16(%eax)
|
||||
fmul %st(0), %st
|
||||
faddp %st, %st(1)
|
||||
fldl 40(%eax)
|
||||
fmul %st(0), %st
|
||||
faddp %st, %st(1)
|
||||
fldl 64(%eax)
|
||||
fmul %st(0), %st
|
||||
faddp %st, %st(1)
|
||||
fld %st(0)
|
||||
fsqrt
|
||||
fucom %st(0)
|
||||
fnstsw %ax
|
||||
sahf
|
||||
jp .L189
|
||||
jne .L189
|
||||
fstp %st(1)
|
||||
.L186:
|
||||
leave
|
||||
ret
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
gcc 3.3 produce the norm function using tvmet 1.3.0:
|
||||
|
||||
_ZN5tvmet4normIdLj3ELj3EEENS_13NumericTraitsIT_E10float_typeERKNS_6MatrixIS2_XT0_EXT1_EEE:
|
||||
.LFB3252:
|
||||
.L194:
|
||||
.L198:
|
||||
.L203:
|
||||
.L207:
|
||||
.L212:
|
||||
.L225:
|
||||
.L238:
|
||||
.L251:
|
||||
pushl %ebp
|
||||
.LCFI9:
|
||||
movl %esp, %ebp
|
||||
.LCFI10:
|
||||
subl $56, %esp
|
||||
.LCFI11:
|
||||
movl 8(%ebp), %edx
|
||||
leal -24(%ebp), %eax
|
||||
movl %eax, -12(%ebp)
|
||||
leal -12(%ebp), %eax
|
||||
fldl 24(%edx)
|
||||
fldl 48(%edx)
|
||||
fldl (%edx)
|
||||
fxch %st(2)
|
||||
fmul %st(0), %st
|
||||
fxch %st(1)
|
||||
movl %eax, -28(%ebp)
|
||||
fmul %st(0), %st
|
||||
fxch %st(2)
|
||||
movl %edx, -24(%ebp)
|
||||
movl %edx, -20(%ebp)
|
||||
fmul %st(0), %st
|
||||
fldl 8(%edx)
|
||||
fxch %st(2)
|
||||
faddp %st, %st(3)
|
||||
fldl 56(%edx)
|
||||
fxch %st(2)
|
||||
fmul %st(0), %st
|
||||
fxch %st(1)
|
||||
faddp %st, %st(3)
|
||||
fldl 32(%edx)
|
||||
fxch %st(2)
|
||||
fmul %st(0), %st
|
||||
fxch %st(2)
|
||||
fmul %st(0), %st
|
||||
fldl 16(%edx)
|
||||
fxch %st(1)
|
||||
faddp %st, %st(3)
|
||||
fmul %st(0), %st
|
||||
fldl 64(%edx)
|
||||
fxch %st(2)
|
||||
faddp %st, %st(3)
|
||||
fldl 40(%edx)
|
||||
fxch %st(2)
|
||||
fmul %st(0), %st
|
||||
fxch %st(2)
|
||||
fmul %st(0), %st
|
||||
faddp %st, %st(2)
|
||||
faddp %st, %st(1)
|
||||
faddp %st, %st(1)
|
||||
faddp %st, %st(1)
|
||||
fld %st(0)
|
||||
fsqrt
|
||||
fucom %st(0)
|
||||
fnstsw %ax
|
||||
sahf
|
||||
jp .L265
|
||||
jne .L265
|
||||
fstp %st(1)
|
||||
.L261:
|
||||
fstpl -8(%ebp)
|
||||
fldl -8(%ebp)
|
||||
leave
|
||||
ret
|
||||
|
||||
*/
|
37
tvmet-1.7.1/examples/hspiess.cc
Normal file
37
tvmet-1.7.1/examples/hspiess.cc
Normal file
@ -0,0 +1,37 @@
|
||||
#include <iostream>
|
||||
|
||||
#include <tvmet/Matrix.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
int main()
|
||||
{
|
||||
tvmet::Matrix<double,3,2> B;
|
||||
tvmet::Matrix<double,3,3> D;
|
||||
|
||||
B =
|
||||
-0.05, 0,
|
||||
0, 0.05,
|
||||
0.05, -0.05;
|
||||
D =
|
||||
2000, 1000, 0,
|
||||
1000, 2000, 0,
|
||||
0, 0, 500;
|
||||
|
||||
cout << "B = " << B << endl;
|
||||
cout << "D = " << D << endl;
|
||||
|
||||
{
|
||||
tvmet::Matrix<double,2,2> K;
|
||||
|
||||
K = trans(B) * D * B;
|
||||
cout << "K = " << K << endl;
|
||||
}
|
||||
|
||||
{
|
||||
tvmet::Matrix<double,2,2> K;
|
||||
|
||||
K = tvmet::Matrix<double,2,3>(trans(B) * D) * B;
|
||||
cout << "K = " << K << endl;
|
||||
}
|
||||
}
|
44
tvmet-1.7.1/examples/matrix_col.cc
Normal file
44
tvmet-1.7.1/examples/matrix_col.cc
Normal file
@ -0,0 +1,44 @@
|
||||
#include <iostream>
|
||||
#include <iomanip>
|
||||
#include <algorithm>
|
||||
|
||||
#include <cstdlib>
|
||||
|
||||
#include <tvmet/Matrix.h>
|
||||
#include <tvmet/Vector.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace tvmet;
|
||||
|
||||
typedef Vector<double,3> vector3d;
|
||||
typedef Matrix<double,3,3> matrix33d;
|
||||
|
||||
int main()
|
||||
{
|
||||
matrix33d m1;
|
||||
|
||||
std::generate(m1.begin(), m1.end(), std::rand);
|
||||
|
||||
vector3d vc0( col(m1, 0) );
|
||||
vector3d vc1( col(m1, 1) );
|
||||
vector3d vc2( col(m1, 2) );
|
||||
|
||||
vector3d vr0( row(m1, 0) );
|
||||
vector3d vr1( row(m1, 1) );
|
||||
vector3d vr2( row(m1, 2) );
|
||||
|
||||
|
||||
cout << std::setw(12) << m1 << endl;
|
||||
|
||||
cout << "col vectors:" << endl;
|
||||
cout << vc0 << endl;
|
||||
cout << vc1 << endl;
|
||||
cout << vc2 << endl;
|
||||
|
||||
cout << "row vectors:" << endl;
|
||||
cout << vr0 << endl;
|
||||
cout << vr1 << endl;
|
||||
cout << vr2 << endl;
|
||||
|
||||
}
|
||||
|
30
tvmet-1.7.1/examples/mm.cc
Normal file
30
tvmet-1.7.1/examples/mm.cc
Normal file
@ -0,0 +1,30 @@
|
||||
#include <iostream>
|
||||
#include <tvmet/Matrix.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace tvmet;
|
||||
|
||||
typedef Matrix<double,3,3> matrix33d;
|
||||
|
||||
#if (defined __ICC )
|
||||
#pragma warning(disable:1418) // external definition with no prior declaration
|
||||
#endif
|
||||
|
||||
void testMM(matrix33d& res, const matrix33d& m1, const matrix33d& m2) {
|
||||
res = m1 * m2;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
matrix33d m1, m2, m3;
|
||||
|
||||
m1 = 1,4,7,
|
||||
2,5,8,
|
||||
3,6,9;
|
||||
m2 = m1;
|
||||
|
||||
testMM(m3, m1, m2);
|
||||
|
||||
cout << m1 << "\n*\n" << m2 << "\n=";
|
||||
cout << m3 << endl;
|
||||
}
|
36
tvmet-1.7.1/examples/mv.cc
Normal file
36
tvmet-1.7.1/examples/mv.cc
Normal file
@ -0,0 +1,36 @@
|
||||
#include <iostream>
|
||||
#include <iomanip>
|
||||
#include <algorithm>
|
||||
|
||||
#include <cstdlib>
|
||||
|
||||
#include <tvmet/Matrix.h>
|
||||
#include <tvmet/Vector.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace tvmet;
|
||||
|
||||
typedef Vector<double,3> vector3d;
|
||||
typedef Matrix<double,3,3> matrix33d;
|
||||
|
||||
#if (defined __ICC )
|
||||
#pragma warning(disable:1418) // external definition with no prior declaration
|
||||
#endif
|
||||
|
||||
void testMV(vector3d& res, const matrix33d& m, const vector3d& v) {
|
||||
res = m * v;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
vector3d v1, vr;
|
||||
matrix33d m1;
|
||||
|
||||
std::generate(v1.begin(), v1.end(), std::rand);
|
||||
std::generate(m1.begin(), m1.end(), std::rand);
|
||||
|
||||
testMV(vr, m1, v1);
|
||||
|
||||
cout << std::setw(12) << m1 << " * " << std::setw(12) << v1 << " =\n";
|
||||
cout << std::setw(12) << vr << endl;
|
||||
}
|
103
tvmet-1.7.1/examples/ray.cc
Normal file
103
tvmet-1.7.1/examples/ray.cc
Normal file
@ -0,0 +1,103 @@
|
||||
#include <iostream>
|
||||
#include <cmath>
|
||||
|
||||
#include <tvmet/Vector.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace tvmet;
|
||||
|
||||
typedef Vector<double,3> vector3d;
|
||||
|
||||
void reflect(vector3d& reflection, const vector3d& ray, const vector3d& surfaceNormal)
|
||||
{
|
||||
// The surface normal must be unit length to use this equation.
|
||||
reflection = ray - 2 * dot(ray,surfaceNormal) * surfaceNormal;
|
||||
|
||||
// expression printing
|
||||
// cout << (ray - 2 * dot(ray,surfaceNormal) * surfaceNormal) << endl;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
vector3d x, y, z;
|
||||
|
||||
// y will be the incident ray
|
||||
y[0] = 1;
|
||||
y[1] = 0;
|
||||
y[2] = -1;
|
||||
|
||||
// z is the surface normal
|
||||
z[0] = 0;
|
||||
z[1] = 0;
|
||||
z[2] = 1;
|
||||
|
||||
reflect(x, y, z);
|
||||
|
||||
cout << "Reflected ray is: [ " << x[0] << " " << x[1] << " " << x[2]
|
||||
<< " ]" << endl;
|
||||
}
|
||||
|
||||
/*****************************************************************************************
|
||||
gcc 3.2.0 produce this code (i586) using tvmet 1.3.0:
|
||||
|
||||
_Z7reflectRN5tvmet6VectorIdLj3EEERKS1_S4_:
|
||||
.LFB2757:
|
||||
.L8:
|
||||
.L18:
|
||||
.L22:
|
||||
.L28:
|
||||
.L32:
|
||||
.L38:
|
||||
.L44:
|
||||
.L48:
|
||||
pushl %ebp
|
||||
.LCFI0:
|
||||
movl %esp, %ebp
|
||||
.LCFI1:
|
||||
leal -32(%ebp), %eax
|
||||
pushl %ebx
|
||||
.LCFI2:
|
||||
subl $52, %esp
|
||||
.LCFI3:
|
||||
movl 16(%ebp), %edx
|
||||
movl %eax, -24(%ebp)
|
||||
movl 12(%ebp), %ecx
|
||||
leal -36(%ebp), %eax
|
||||
movl %eax, -20(%ebp)
|
||||
movl 8(%ebp), %ebx
|
||||
leal -24(%ebp), %eax
|
||||
fldl 8(%edx)
|
||||
fldl 16(%edx)
|
||||
fmull 16(%ecx)
|
||||
fxch %st(1)
|
||||
movl %eax, -12(%ebp)
|
||||
leal -52(%ebp), %eax
|
||||
fmull 8(%ecx)
|
||||
movl %eax, -48(%ebp)
|
||||
leal -12(%ebp), %eax
|
||||
fldl (%edx)
|
||||
fmull (%ecx)
|
||||
fxch %st(1)
|
||||
movl %eax, -44(%ebp)
|
||||
faddp %st, %st(2)
|
||||
faddp %st, %st(1)
|
||||
fadd %st(0), %st
|
||||
fld %st(0)
|
||||
fstl -32(%ebp)
|
||||
fxch %st(1)
|
||||
fmull (%edx)
|
||||
fsubrl (%ecx)
|
||||
fstpl (%ebx)
|
||||
fld %st(0)
|
||||
fmull 8(%edx)
|
||||
fsubrl 8(%ecx)
|
||||
fstpl 8(%ebx)
|
||||
fmull 16(%edx)
|
||||
fsubrl 16(%ecx)
|
||||
fstpl 16(%ebx)
|
||||
addl $52, %esp
|
||||
popl %ebx
|
||||
popl %ebp
|
||||
ret
|
||||
|
||||
*****************************************************************************************/
|
25
tvmet-1.7.1/examples/redwards.cc
Normal file
25
tvmet-1.7.1/examples/redwards.cc
Normal file
@ -0,0 +1,25 @@
|
||||
/*
|
||||
* This is a reused case study used as example from Rusell Edwards.
|
||||
* Works only with > release-1-2-0 due to a missed
|
||||
* product/operator*(Matrix,XprVector) on releases prior.
|
||||
* It shows a possible use of chained expressions.
|
||||
*/
|
||||
#include <iostream>
|
||||
|
||||
#include <tvmet/Matrix.h>
|
||||
#include <tvmet/Vector.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace tvmet;
|
||||
|
||||
int main() {
|
||||
Matrix<float,3,3> eigenvecs;
|
||||
Matrix<float,3,3> M;
|
||||
|
||||
eigenvecs = 1,2,3,4,5,6,7,8,9;
|
||||
M = 10,20,30,40,50,60,70,80,90;
|
||||
|
||||
Vector<float,3> ev0( M * col(eigenvecs, 0));
|
||||
|
||||
cout << "ev0 = " << ev0 << endl;
|
||||
}
|
21
tvmet-1.7.1/examples/xpr_print_m1.cc
Normal file
21
tvmet-1.7.1/examples/xpr_print_m1.cc
Normal file
@ -0,0 +1,21 @@
|
||||
#include <iostream>
|
||||
#include <tvmet/Matrix.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace tvmet;
|
||||
|
||||
int main() {
|
||||
// Matrix stuff I
|
||||
Matrix<double,3,3> m1, m2, m3;
|
||||
m1 = 1,2,3,
|
||||
4,5,6,
|
||||
7,8,9;
|
||||
m2 = trans(m1);
|
||||
|
||||
cout << "Xpr Level printing of "
|
||||
<< m1 << "\n*\n" << m2 <<"\nresults into:\n";
|
||||
cout << m1*m2 << endl;
|
||||
cout << "The result =\n";
|
||||
m3 = m1*m2;
|
||||
cout << m3 << endl << endl;
|
||||
}
|
21
tvmet-1.7.1/examples/xpr_print_m2.cc
Normal file
21
tvmet-1.7.1/examples/xpr_print_m2.cc
Normal file
@ -0,0 +1,21 @@
|
||||
#include <iostream>
|
||||
#include <tvmet/Matrix.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace tvmet;
|
||||
|
||||
int main() {
|
||||
// Matrix stuff II (unary functions)
|
||||
Matrix<double,3,3> m1, m2, m3;
|
||||
m1 = 1,2,3,
|
||||
4,5,6,
|
||||
7,8,9;
|
||||
m2 = trans(m1);
|
||||
|
||||
cout << "Xpr Level printing of "
|
||||
<< "sqrt(\n" << m1 <<"):\n";
|
||||
cout << sqrt(m1) << endl;
|
||||
cout << "The result = \n";
|
||||
m3 = sqrt(m1);
|
||||
cout << m3 << endl << endl;
|
||||
}
|
21
tvmet-1.7.1/examples/xpr_print_m3.cc
Normal file
21
tvmet-1.7.1/examples/xpr_print_m3.cc
Normal file
@ -0,0 +1,21 @@
|
||||
#include <iostream>
|
||||
#include <tvmet/Matrix.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace tvmet;
|
||||
|
||||
int main() {
|
||||
// Matrix stuff III (binary functions)
|
||||
Matrix<double,3,3> m1, m2, m3;
|
||||
m1 = 1,2,3,
|
||||
4,5,6,
|
||||
7,8,9;
|
||||
m2 = trans(m1);
|
||||
|
||||
cout << "Xpr Level printing of "
|
||||
<< "pow(\n" << m1 << ", " << m2 << "):\n";
|
||||
cout << pow(m1, m2) << endl;
|
||||
cout << "The result = \n";
|
||||
m3 = pow(m1, m2);
|
||||
cout << m3 << endl << endl;
|
||||
}
|
21
tvmet-1.7.1/examples/xpr_print_m4.cc
Normal file
21
tvmet-1.7.1/examples/xpr_print_m4.cc
Normal file
@ -0,0 +1,21 @@
|
||||
#include <iostream>
|
||||
#include <tvmet/Matrix.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace tvmet;
|
||||
|
||||
int main() {
|
||||
// Matrix stuff IV (binary functions with pod)
|
||||
Matrix<double,3,3> m1, m2, m3;
|
||||
m1 = 1,2,3,
|
||||
4,5,6,
|
||||
7,8,9;
|
||||
m2 = trans(m1);
|
||||
|
||||
cout << "Xpr Level printing of "
|
||||
<< "pow(\n" << m1 << ", " << 3 << "):\n";
|
||||
cout << pow(m1, 3) << endl;
|
||||
cout << "The result = \n";
|
||||
m3 = pow(m1, 3);
|
||||
cout << m3 << endl << endl;
|
||||
}
|
26
tvmet-1.7.1/examples/xpr_print_mv1.cc
Normal file
26
tvmet-1.7.1/examples/xpr_print_mv1.cc
Normal file
@ -0,0 +1,26 @@
|
||||
#include <iostream>
|
||||
#include <tvmet/Vector.h>
|
||||
#include <tvmet/Matrix.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace tvmet;
|
||||
|
||||
int main() {
|
||||
// Matrix Vector stuff I
|
||||
Vector<double,3> v1(1,2,3), v2(v1);
|
||||
Vector<double,3> v3(0);
|
||||
|
||||
Matrix<double,3,3> m1, m2, m3;
|
||||
m1 = 1,2,3,
|
||||
4,5,6,
|
||||
7,8,9;
|
||||
m2 = trans(m1);
|
||||
|
||||
cout << "Xpr Level printing of "
|
||||
<< m1 << "\n* " << v1 <<"\nresults into:\n";
|
||||
cout << m1*v1 << endl;
|
||||
cout << "The result =\n";
|
||||
v3 = m1*v1;
|
||||
cout << v3 << endl << endl;
|
||||
|
||||
}
|
26
tvmet-1.7.1/examples/xpr_print_mv2.cc
Normal file
26
tvmet-1.7.1/examples/xpr_print_mv2.cc
Normal file
@ -0,0 +1,26 @@
|
||||
#include <iostream>
|
||||
#include <tvmet/Vector.h>
|
||||
#include <tvmet/Matrix.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace tvmet;
|
||||
|
||||
int main() {
|
||||
// Matrix Vector stuff II
|
||||
Vector<double,3> v1(1,2,3), v2(v1);
|
||||
Vector<double,3> v3(0);
|
||||
|
||||
Matrix<double,3,3> m1, m2, m3;
|
||||
m1 = 1,2,3,
|
||||
4,5,6,
|
||||
7,8,9;
|
||||
m2 = trans(m1);
|
||||
|
||||
cout << "Xpr Level printing of "
|
||||
<< "sqrt(\n" << m1 << "\n* " << v1 << ")\nresults into:\n";
|
||||
cout << sqrt(m1*v1) << endl;
|
||||
cout << "The result =\n";
|
||||
v3 = sqrt(m1*v1);
|
||||
cout << v3 << endl << endl;
|
||||
|
||||
}
|
19
tvmet-1.7.1/examples/xpr_print_v1.cc
Normal file
19
tvmet-1.7.1/examples/xpr_print_v1.cc
Normal file
@ -0,0 +1,19 @@
|
||||
#include <iostream>
|
||||
#include <tvmet/Vector.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace tvmet;
|
||||
|
||||
int main() {
|
||||
// Vector stuff I
|
||||
Vector<double,3> v1(1,2,3), v2(v1);
|
||||
Vector<double,3> v3(0);
|
||||
|
||||
cout << "Xpr Level printing of "
|
||||
<< v1 << " * " << v2 <<":\n";
|
||||
cout << v1*v2 << endl;
|
||||
cout << "The result = \n";
|
||||
v3 = v1*v2;
|
||||
cout << v3 << endl << endl;
|
||||
}
|
||||
|
19
tvmet-1.7.1/examples/xpr_print_v2.cc
Normal file
19
tvmet-1.7.1/examples/xpr_print_v2.cc
Normal file
@ -0,0 +1,19 @@
|
||||
#include <iostream>
|
||||
#include <tvmet/Vector.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace tvmet;
|
||||
|
||||
int main() {
|
||||
// Vector stuff II (unary functions)
|
||||
Vector<double,3> v1(1,2,3), v2(v1);
|
||||
Vector<double,3> v3(0);
|
||||
|
||||
cout << "Xpr Level printing of "
|
||||
<< "sqrt(" << v1 <<"):\n";
|
||||
cout << sqrt(v1) << endl;
|
||||
cout << "The result = \n";
|
||||
v3 = sqrt(v1);
|
||||
cout << v3 << endl << endl;
|
||||
}
|
||||
|
19
tvmet-1.7.1/examples/xpr_print_v3.cc
Normal file
19
tvmet-1.7.1/examples/xpr_print_v3.cc
Normal file
@ -0,0 +1,19 @@
|
||||
#include <iostream>
|
||||
#include <tvmet/Vector.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace tvmet;
|
||||
|
||||
int main() {
|
||||
// Vector stuff III (binary functions)
|
||||
Vector<double,3> v1(1,2,3), v2(v1);
|
||||
Vector<double,3> v3(0);
|
||||
|
||||
cout << "Xpr Level printing of "
|
||||
<< "pow(" << v1 << ", " << v2 << "):\n";
|
||||
cout << pow(v1, v2) << endl;
|
||||
cout << "The result = \n";
|
||||
v3 = pow(v1, v2);
|
||||
cout << v3 << endl << endl;
|
||||
}
|
||||
|
19
tvmet-1.7.1/examples/xpr_print_v4.cc
Normal file
19
tvmet-1.7.1/examples/xpr_print_v4.cc
Normal file
@ -0,0 +1,19 @@
|
||||
#include <iostream>
|
||||
#include <tvmet/Vector.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace tvmet;
|
||||
|
||||
int main() {
|
||||
// Vector stuff IV (binary functions with pod)
|
||||
Vector<double,3> v1(1,2,3), v2(v1);
|
||||
Vector<double,3> v3(0);
|
||||
|
||||
cout << "Xpr Level printing of "
|
||||
<< "pow(" << v1 << ", " << 3 << "):\n";
|
||||
cout << pow(v1, 3) << endl;
|
||||
cout << "The result = \n";
|
||||
v3 = pow(v1, 3);
|
||||
cout << v3 << endl << endl;
|
||||
}
|
||||
|
3
tvmet-1.7.1/include/Makefile.am
Normal file
3
tvmet-1.7.1/include/Makefile.am
Normal file
@ -0,0 +1,3 @@
|
||||
# $Id: Makefile.am,v 1.2 2004/04/12 21:50:35 opetzold Exp $
|
||||
|
||||
SUBDIRS = $(PACKAGE)
|
477
tvmet-1.7.1/include/Makefile.in
Normal file
477
tvmet-1.7.1/include/Makefile.in
Normal file
@ -0,0 +1,477 @@
|
||||
# Makefile.in generated by automake 1.8.3 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# $Id: Makefile.am,v 1.2 2004/04/12 21:50:35 opetzold Exp $
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = ..
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = @INSTALL@
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
host_triplet = @host@
|
||||
subdir = include
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/config/ac_c_long_long.m4 \
|
||||
$(top_srcdir)/config/ac_create_prefix_config_h.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_complex.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_complex_math1.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_complex_math2.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_ieee_math.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_mutable.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_namespaces.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_have_sysv_math.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_partial_specialization.m4 \
|
||||
$(top_srcdir)/config/ac_cxx_typename.m4 \
|
||||
$(top_srcdir)/config/ac_set_compiler.m4 \
|
||||
$(top_srcdir)/config/op_doxygen_doc.m4 \
|
||||
$(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(mkdir_p)
|
||||
CONFIG_HEADER = $(top_builddir)/config/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||
html-recursive info-recursive install-data-recursive \
|
||||
install-exec-recursive install-info-recursive \
|
||||
install-recursive installcheck-recursive installdirs-recursive \
|
||||
pdf-recursive ps-recursive uninstall-info-recursive \
|
||||
uninstall-recursive
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CONFIG_CPPUNIT_FALSE = @CONFIG_CPPUNIT_FALSE@
|
||||
CONFIG_CPPUNIT_TRUE = @CONFIG_CPPUNIT_TRUE@
|
||||
CONFIG_DOC_FALSE = @CONFIG_DOC_FALSE@
|
||||
CONFIG_DOC_TRUE = @CONFIG_DOC_TRUE@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@
|
||||
CPPUNIT_CONFIG = @CPPUNIT_CONFIG@
|
||||
CPPUNIT_LIBS = @CPPUNIT_LIBS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CXX_DEBUG_FLAGS = @CXX_DEBUG_FLAGS@
|
||||
CXX_OPTIMIZE_FLAGS = @CXX_OPTIMIZE_FLAGS@
|
||||
CXX_WARN_FLAGS = @CXX_WARN_FLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DOXYGEN = @DOXYGEN@
|
||||
DOXYGEN_HAVE_DOT = @DOXYGEN_HAVE_DOT@
|
||||
ECHO = @ECHO@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
F77 = @F77@
|
||||
FFLAGS = @FFLAGS@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LATEX_BATCHMODE = @LATEX_BATCHMODE@
|
||||
LATEX_MODE = @LATEX_MODE@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
RANLIB = @RANLIB@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_F77 = @ac_ct_F77@
|
||||
ac_ct_RANLIB = @ac_ct_RANLIB@
|
||||
ac_ct_STRIP = @ac_ct_STRIP@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
|
||||
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
datadir = @datadir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
SUBDIRS = $(PACKAGE)
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu include/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
distclean-libtool:
|
||||
-rm -f libtool
|
||||
uninstall-info-am:
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run `make' without going through this Makefile.
|
||||
# To change the values of `make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in `config.status', edit `config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||
# (2) otherwise, pass the desired values on the `make' command line.
|
||||
$(RECURSIVE_TARGETS):
|
||||
@set fnord $$MAKEFLAGS; amf=$$2; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
mostlyclean-recursive clean-recursive distclean-recursive \
|
||||
maintainer-clean-recursive:
|
||||
@set fnord $$MAKEFLAGS; amf=$$2; \
|
||||
dot_seen=no; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
rev=''; for subdir in $$list; do \
|
||||
if test "$$subdir" = "."; then :; else \
|
||||
rev="$$subdir $$rev"; \
|
||||
fi; \
|
||||
done; \
|
||||
rev="$$rev ."; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
for subdir in $$rev; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
||||
done && test -z "$$fail"
|
||||
tags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||
done
|
||||
ctags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||
done
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
if (etags --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -f $$subdir/TAGS && \
|
||||
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(ETAGS_ARGS)$$tags$$unique" \
|
||||
|| $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
ctags: CTAGS
|
||||
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkdir_p) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -d "$(distdir)/$$subdir" \
|
||||
|| mkdir "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
(cd $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="../$(top_distdir)" \
|
||||
distdir="../$(distdir)/$$subdir" \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-libtool \
|
||||
distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-man:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-info-am
|
||||
|
||||
uninstall-info: uninstall-info-recursive
|
||||
|
||||
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
|
||||
clean clean-generic clean-libtool clean-recursive ctags \
|
||||
ctags-recursive distclean distclean-generic distclean-libtool \
|
||||
distclean-recursive distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-exec install-exec-am install-info \
|
||||
install-info-am install-man install-strip installcheck \
|
||||
installcheck-am installdirs installdirs-am maintainer-clean \
|
||||
maintainer-clean-generic maintainer-clean-recursive \
|
||||
mostlyclean mostlyclean-generic mostlyclean-libtool \
|
||||
mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
|
||||
uninstall uninstall-am uninstall-info-am
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
127
tvmet-1.7.1/include/tvmet/AliasProxy.h
Normal file
127
tvmet-1.7.1/include/tvmet/AliasProxy.h
Normal file
@ -0,0 +1,127 @@
|
||||
/*
|
||||
* Tiny Vector Matrix Library
|
||||
* Dense Vector Matrix Libary of Tiny size using Expression Templates
|
||||
*
|
||||
* Copyright (C) 2001 - 2003 Olaf Petzold <opetzold@users.sourceforge.net>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* $Id: AliasProxy.h,v 1.4 2004/06/10 16:36:55 opetzold Exp $
|
||||
*/
|
||||
|
||||
#ifndef TVMET_ALIAS_PROXY_H
|
||||
#define TVMET_ALIAS_PROXY_H
|
||||
|
||||
namespace tvmet {
|
||||
|
||||
|
||||
/** forwards */
|
||||
template<class E> class AliasProxy;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Simplify syntax for alias Matrices and Vectors,
|
||||
* where aliasing left hand values appear in the
|
||||
* expression.
|
||||
* \par Example:
|
||||
* \code
|
||||
* typedef tvmet::Matrix<double, 10, 10> matrix_type;
|
||||
* matrix_type m;
|
||||
* ...
|
||||
* alias(m) += trans(m);
|
||||
* \endcode
|
||||
* \sa AliasProxy
|
||||
* \sa Some Notes \ref alias
|
||||
*/
|
||||
template<class E>
|
||||
AliasProxy<E> alias(E& expr) { return AliasProxy<E>(expr); }
|
||||
|
||||
|
||||
/**
|
||||
* \class AliasProxy AliasProxy.h "tvmet/AliasProxy.h"
|
||||
* \brief Assign proxy for alias Matrices and Vectors.
|
||||
*
|
||||
* A short lived object to provide simplified alias syntax.
|
||||
* Only the friend function alias is allowed to create
|
||||
* such a object. The proxy calls the appropriate member
|
||||
* alias_xyz() which have to use temporaries to avoid
|
||||
* overlapping memory regions.
|
||||
* \sa alias
|
||||
* \sa Some Notes \ref alias
|
||||
* \note Thanks to ublas-dev group, where the principle idea
|
||||
* comes from.
|
||||
*/
|
||||
template<class E>
|
||||
class AliasProxy
|
||||
{
|
||||
AliasProxy(const AliasProxy&);
|
||||
AliasProxy& operator=(const AliasProxy&);
|
||||
|
||||
friend AliasProxy<E> alias<>(E& expr);
|
||||
|
||||
public:
|
||||
AliasProxy(E& expr) : m_expr(expr) { }
|
||||
|
||||
|
||||
template<class E2>
|
||||
E& operator=(const E2& expr) {
|
||||
return m_expr.alias_assign(expr);
|
||||
}
|
||||
|
||||
template<class E2>
|
||||
E& operator+=(const E2& expr) {
|
||||
return m_expr.alias_add_eq(expr);
|
||||
}
|
||||
|
||||
template<class E2>
|
||||
E& operator-=(const E2& expr) {
|
||||
return m_expr.alias_sub_eq(expr);
|
||||
}
|
||||
|
||||
template<class E2>
|
||||
E& operator*=(const E2& expr) {
|
||||
return m_expr.alias_mul_eq(expr);
|
||||
}
|
||||
|
||||
template<class E2>
|
||||
E& operator/=(const E2& expr) {
|
||||
return m_expr.alias_div_eq(expr);
|
||||
}
|
||||
|
||||
private:
|
||||
E& m_expr;
|
||||
};
|
||||
|
||||
|
||||
#if 0
|
||||
namespace element_wise {
|
||||
// \todo to write
|
||||
template<class E, class E2>
|
||||
E& operator/=(AliasProxy<E>& proxy, const E2& rhs) {
|
||||
return proxy.div_upd(rhs);
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
} // namespace tvmet
|
||||
|
||||
|
||||
#endif /* TVMET_ALIAS_PROXY_H */
|
||||
|
||||
// Local Variables:
|
||||
// mode:C++
|
||||
// End:
|
303
tvmet-1.7.1/include/tvmet/BinaryFunctionals.h
Normal file
303
tvmet-1.7.1/include/tvmet/BinaryFunctionals.h
Normal file
@ -0,0 +1,303 @@
|
||||
/*
|
||||
* Tiny Vector Matrix Library
|
||||
* Dense Vector Matrix Libary of Tiny size using Expression Templates
|
||||
*
|
||||
* Copyright (C) 2001 - 2003 Olaf Petzold <opetzold@users.sourceforge.net>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* $Id: BinaryFunctionals.h,v 1.19 2004/10/04 11:40:46 opetzold Exp $
|
||||
*/
|
||||
|
||||
#ifndef TVMET_BINARY_FUNCTIONAL_H
|
||||
#define TVMET_BINARY_FUNCTIONAL_H
|
||||
|
||||
namespace tvmet {
|
||||
|
||||
|
||||
/**
|
||||
* \class Fcnl_assign BinaryFunctionals.h "tvmet/BinaryFunctionals.h"
|
||||
* \brief Binary operator for assign operations.
|
||||
*
|
||||
* Unfortunally we have sometimes to cast on assign operations e.g.,
|
||||
* on assign on different POD. So we avoid warnings.
|
||||
*/
|
||||
template <class T1, class T2>
|
||||
struct Fcnl_assign : public BinaryFunctional {
|
||||
static inline
|
||||
void apply_on(T1& _tvmet_restrict lhs, T2 rhs) {
|
||||
lhs = static_cast<T1>(rhs);
|
||||
}
|
||||
|
||||
static
|
||||
void print_xpr(std::ostream& os, std::size_t l=0) {
|
||||
os << IndentLevel(l) << "fcnl_assign<T1="
|
||||
<< typeid(T1).name() << ", T2=" << typeid(T2).name() << ">,"
|
||||
<< std::endl;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/** \class Fcnl_add_eq BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
/** \class Fcnl_sub_eq BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
/** \class Fcnl_mul_eq BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
/** \class Fcnl_div_eq BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
/** \class Fcnl_mod_eq BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
/** \class Fcnl_xor_eq BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
/** \class Fcnl_and_eq BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
/** \class Fcnl_or_eq BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
/** \class Fcnl_shl_eq BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
/** \class Fcnl_shr_eq BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
#define TVMET_IMPLEMENT_MACRO(NAME, OP) \
|
||||
template <class T1, class T2> \
|
||||
struct Fcnl_##NAME : public BinaryFunctional { \
|
||||
typedef void value_type; \
|
||||
\
|
||||
static inline \
|
||||
void apply_on(T1& _tvmet_restrict lhs, T2 rhs) { \
|
||||
lhs OP rhs; \
|
||||
} \
|
||||
\
|
||||
static \
|
||||
void print_xpr(std::ostream& os, std::size_t l=0) { \
|
||||
os << IndentLevel(l) \
|
||||
<< "Fcnl_" << #NAME << "<T1=" \
|
||||
<< typeid(T1).name() << ", T2=" << typeid(T2).name() << ">," \
|
||||
<< std::endl; \
|
||||
} \
|
||||
};
|
||||
|
||||
TVMET_IMPLEMENT_MACRO(add_eq, +=)
|
||||
TVMET_IMPLEMENT_MACRO(sub_eq, -=)
|
||||
TVMET_IMPLEMENT_MACRO(mul_eq, *=)
|
||||
TVMET_IMPLEMENT_MACRO(div_eq, /=)
|
||||
TVMET_IMPLEMENT_MACRO(mod_eq, %=)
|
||||
TVMET_IMPLEMENT_MACRO(xor_eq, ^=)
|
||||
TVMET_IMPLEMENT_MACRO(and_eq, &=)
|
||||
TVMET_IMPLEMENT_MACRO(or_eq, |=)
|
||||
TVMET_IMPLEMENT_MACRO(shl_eq, <<=)
|
||||
TVMET_IMPLEMENT_MACRO(shr_eq, >>=)
|
||||
|
||||
#undef TVMET_IMPLEMENT_MACRO
|
||||
|
||||
|
||||
/** \class Fcnl_add BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
/** \class Fcnl_sub BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
/** \class Fcnl_mul BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
/** \class Fcnl_div BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
/** \class Fcnl_mod BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
/** \class Fcnl_bitxor BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
/** \class Fcnl_bitand BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
/** \class Fcnl_bitor BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
/** \class Fcnl_shl BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
/** \class Fcnl_shr BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
#define TVMET_IMPLEMENT_MACRO(NAME, OP) \
|
||||
template <class T1, class T2> \
|
||||
struct Fcnl_##NAME : public BinaryFunctional { \
|
||||
typedef typename PromoteTraits<T1, T2>::value_type value_type; \
|
||||
\
|
||||
static inline \
|
||||
value_type apply_on(T1 lhs, T2 rhs) { \
|
||||
return lhs OP rhs; \
|
||||
} \
|
||||
\
|
||||
static \
|
||||
void print_xpr(std::ostream& os, std::size_t l=0) { \
|
||||
os << IndentLevel(l) \
|
||||
<< "Fcnl_" << #NAME << "<T1=" \
|
||||
<< typeid(T1).name() << ", T2=" << typeid(T2).name() << ">," \
|
||||
<< std::endl; \
|
||||
} \
|
||||
};
|
||||
|
||||
TVMET_IMPLEMENT_MACRO(add, +)
|
||||
TVMET_IMPLEMENT_MACRO(sub, -)
|
||||
TVMET_IMPLEMENT_MACRO(mul, *)
|
||||
TVMET_IMPLEMENT_MACRO(div, /)
|
||||
TVMET_IMPLEMENT_MACRO(mod, %)
|
||||
TVMET_IMPLEMENT_MACRO(bitxor, ^)
|
||||
TVMET_IMPLEMENT_MACRO(bitand, &)
|
||||
TVMET_IMPLEMENT_MACRO(bitor, |)
|
||||
TVMET_IMPLEMENT_MACRO(shl, <<)
|
||||
TVMET_IMPLEMENT_MACRO(shr, >>)
|
||||
|
||||
#undef TVMET_IMPLEMENT_MACRO
|
||||
|
||||
|
||||
/** \class Fcnl_greater BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
/** \class Fcnl_greater_eq BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
/** \class Fcnl_less BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
/** \class Fcnl_less_eq BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
/** \class Fcnl_eq BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
/** \class Fcnl_not_eq BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
/** \class Fcnl_and BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
/** \class Fcnl_or BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
#define TVMET_IMPLEMENT_MACRO(NAME, OP) \
|
||||
template <class T1, class T2> \
|
||||
struct Fcnl_##NAME : public BinaryFunctional { \
|
||||
typedef bool value_type; \
|
||||
\
|
||||
static inline \
|
||||
bool apply_on(T1 lhs, T2 rhs) { \
|
||||
return lhs OP rhs; \
|
||||
} \
|
||||
\
|
||||
static \
|
||||
void print_xpr(std::ostream& os, std::size_t l=0) { \
|
||||
os << IndentLevel(l) \
|
||||
<< "Fcnl_" << #NAME << "<T1=" \
|
||||
<< typeid(T1).name() << ", T2=" << typeid(T2).name() << ">," \
|
||||
<< std::endl; \
|
||||
} \
|
||||
};
|
||||
|
||||
TVMET_IMPLEMENT_MACRO(greater, >)
|
||||
TVMET_IMPLEMENT_MACRO(less, <)
|
||||
TVMET_IMPLEMENT_MACRO(greater_eq, >=)
|
||||
TVMET_IMPLEMENT_MACRO(less_eq, <=)
|
||||
TVMET_IMPLEMENT_MACRO(eq, ==)
|
||||
TVMET_IMPLEMENT_MACRO(not_eq, !=)
|
||||
TVMET_IMPLEMENT_MACRO(and, &&)
|
||||
TVMET_IMPLEMENT_MACRO(or, ||)
|
||||
|
||||
#undef TVMET_IMPLEMENT_MACRO
|
||||
|
||||
|
||||
/** \class Fcnl_atan2 BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
/** \class Fcnl_fmod BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
/** \class Fcnl_pow BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
#define TVMET_IMPLEMENT_MACRO(NAME) \
|
||||
template <class T1, class T2> \
|
||||
struct Fcnl_##NAME : public BinaryFunctional { \
|
||||
typedef typename PromoteTraits<T1, T2>::value_type value_type; \
|
||||
\
|
||||
static inline \
|
||||
value_type apply_on(T1 lhs, T2 rhs) { \
|
||||
return TVMET_STD_SCOPE(NAME)(lhs, rhs); \
|
||||
} \
|
||||
\
|
||||
static \
|
||||
void print_xpr(std::ostream& os, std::size_t l=0) { \
|
||||
os << IndentLevel(l) \
|
||||
<< "Fcnl_" << #NAME << "<T1=" \
|
||||
<< typeid(T1).name() << ", T2=" << typeid(T2).name() << ">," \
|
||||
<< std::endl; \
|
||||
} \
|
||||
};
|
||||
|
||||
TVMET_IMPLEMENT_MACRO(atan2)
|
||||
TVMET_IMPLEMENT_MACRO(fmod)
|
||||
TVMET_IMPLEMENT_MACRO(pow)
|
||||
|
||||
#undef TVMET_IMPLEMENT_MACRO
|
||||
|
||||
|
||||
/** \class Fcnl_drem BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
/** \class Fcnl_hypot BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
/** \class Fcnl_jn BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
/** \class Fcnl_yn BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
|
||||
#define TVMET_IMPLEMENT_MACRO(NAME) \
|
||||
template <class T1, class T2> \
|
||||
struct Fcnl_##NAME : public BinaryFunctional { \
|
||||
typedef typename PromoteTraits<T1, T2>::value_type value_type; \
|
||||
\
|
||||
static inline \
|
||||
value_type apply_on(T1 lhs, T2 rhs) { \
|
||||
return TVMET_GLOBAL_SCOPE(NAME)(lhs, rhs); \
|
||||
} \
|
||||
\
|
||||
static \
|
||||
void print_xpr(std::ostream& os, std::size_t l=0) { \
|
||||
os << IndentLevel(l) \
|
||||
<< "Fcnl_" << #NAME << "<T1=" \
|
||||
<< typeid(T1).name() << ", T2=" << typeid(T2).name() << ">," \
|
||||
<< std::endl; \
|
||||
} \
|
||||
};
|
||||
|
||||
TVMET_IMPLEMENT_MACRO(drem)
|
||||
TVMET_IMPLEMENT_MACRO(hypot)
|
||||
TVMET_IMPLEMENT_MACRO(jn)
|
||||
TVMET_IMPLEMENT_MACRO(yn)
|
||||
|
||||
#undef TVMET_IMPLEMENT_MACRO
|
||||
|
||||
|
||||
#if defined(TVMET_HAVE_COMPLEX)
|
||||
/**
|
||||
* \class Fcnl_polar BinaryFunctionals.h "tvmet/BinaryFunctionals.h"
|
||||
* \brief %Functional for polar.
|
||||
*/
|
||||
template <class T1, class T2> struct Fcnl_polar : public BinaryFunctional { };
|
||||
|
||||
|
||||
/**
|
||||
* \class Fcnl_polar<T,T> BinaryFunctionals.h "tvmet/BinaryFunctionals.h"
|
||||
* \brief %Functional for polar.
|
||||
* \note This functional is partialy specialized due to the declaration
|
||||
* of %polar in namespace std <tt>complex<T> polar(T, T)</tt>.
|
||||
* This means especially that type promotion isn't avaible here.
|
||||
*/
|
||||
template <class T>
|
||||
struct Fcnl_polar<T,T> : public BinaryFunctional {
|
||||
typedef std::complex<T> value_type;
|
||||
|
||||
static inline
|
||||
value_type apply_on(T lhs, T rhs) {
|
||||
return std::polar(lhs, rhs);
|
||||
}
|
||||
|
||||
static
|
||||
void print_xpr(std::ostream& os, std::size_t l=0) {
|
||||
os << IndentLevel(l) << "Fcnl_polar<T1="
|
||||
<< typeid(T).name() << ", T2=" << typeid(T).name() << ">,"
|
||||
<< std::endl;
|
||||
}
|
||||
};
|
||||
#endif // defined(TVMET_HAVE_COMPLEX)
|
||||
|
||||
|
||||
/**
|
||||
* \class Fcnl_swap BinaryFunctionals.h "tvmet/BinaryFunctionals.h"
|
||||
* \brief Binary operator for swapping values using temporaries.
|
||||
* \todo check for std::swap implementation; todo before LUdecomp
|
||||
*/
|
||||
template <class T1, class T2>
|
||||
struct Fcnl_swap : public BinaryFunctional {
|
||||
static inline
|
||||
void apply_on(T1& _tvmet_restrict lhs, T2& _tvmet_restrict rhs) {
|
||||
typedef typename PromoteTraits<T1, T2>::value_type temp_type;
|
||||
|
||||
temp_type temp(lhs);
|
||||
lhs = static_cast<T1>(rhs);
|
||||
rhs = static_cast<T2>(temp);
|
||||
}
|
||||
|
||||
static
|
||||
void print_xpr(std::ostream& os, std::size_t l=0) {
|
||||
os << IndentLevel(l) << "Fcnl_swap<T1="
|
||||
<< typeid(T1).name() << ", T2" << typeid(T2).name() << ">,"
|
||||
<< std::endl;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
} // namespace tvmet
|
||||
|
||||
#endif // TVMET_BINARY_FUNCTIONAL_H
|
||||
|
||||
// Local Variables:
|
||||
// mode:C++
|
||||
// End:
|
163
tvmet-1.7.1/include/tvmet/CommaInitializer.h
Normal file
163
tvmet-1.7.1/include/tvmet/CommaInitializer.h
Normal file
@ -0,0 +1,163 @@
|
||||
/*
|
||||
* Tiny Vector Matrix Library
|
||||
* Dense Vector Matrix Libary of Tiny size using Expression Templates
|
||||
*
|
||||
* Copyright (C) 2001 - 2003 Olaf Petzold <opetzold@users.sourceforge.net>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* $Id: CommaInitializer.h,v 1.14 2005/03/02 12:14:22 opetzold Exp $
|
||||
*/
|
||||
|
||||
#ifndef TVMET_COMMA_INITIALIZER_H
|
||||
#define TVMET_COMMA_INITIALIZER_H
|
||||
|
||||
#include <tvmet/CompileTimeError.h>
|
||||
|
||||
namespace tvmet {
|
||||
|
||||
|
||||
/**
|
||||
* \class CommaInitializer CommaInitializer.h "tvmet/CommaInitializer.h"
|
||||
* \brief Initialize classes using a comma separated lists.
|
||||
*
|
||||
* The comma operator is called when it appears next to an object of
|
||||
* the type the comma is defined for. However, "operator," is not called
|
||||
* for function argument lists, only for objects that are out in the open,
|
||||
* separated by commas (Thinking C++
|
||||
* <a href=http://www.ida.liu.se/~TDDA14/online/v1ticpp/Chapter12.html>
|
||||
* Ch.12: Operator comma</a>).
|
||||
*
|
||||
* This implementation uses the same technique as described in Todd Veldhuizen
|
||||
* Techniques for Scientific C++
|
||||
* <a href=http://extreme.indiana.edu/~tveldhui/papers/techniques/techniques01.html#l43>
|
||||
* chapter 1.11 Comma overloading</a>.
|
||||
*
|
||||
* The initializer list is avaible after instanciation of the object,
|
||||
* therefore use it like:
|
||||
* \code
|
||||
* vector3d t;
|
||||
* t = 1.0, 2.0, 3.0;
|
||||
* \endcode
|
||||
* It's evaluated to (((t = 1.0), 2.0), 3.0)
|
||||
*
|
||||
* For matrizes the initilization is done row wise.
|
||||
*
|
||||
* If the comma separted list of values longer then the size of the vector
|
||||
* or matrix a compile time error will occour. Otherwise the pending values
|
||||
* will be written random into the memory.
|
||||
*
|
||||
*/
|
||||
template<class Obj, std::size_t LEN>
|
||||
class CommaInitializer
|
||||
{
|
||||
CommaInitializer();
|
||||
CommaInitializer& operator=(const CommaInitializer&);
|
||||
|
||||
private:
|
||||
/**
|
||||
* \class Initializer
|
||||
* \brief Helper fo recursive overloaded comma operator.
|
||||
*/
|
||||
template<class T, std::size_t N> class Initializer
|
||||
{
|
||||
Initializer();
|
||||
Initializer& operator=(const Initializer&);
|
||||
|
||||
public:
|
||||
typedef T value_type;
|
||||
typedef T* iterator;
|
||||
|
||||
public:
|
||||
Initializer(iterator iter) : m_iter(iter) { }
|
||||
|
||||
/** Overloads the comma operator for recursive assign values from comma
|
||||
separated list. */
|
||||
Initializer<value_type, N+1> operator,(value_type rhs)
|
||||
{
|
||||
TVMET_CT_CONDITION(N < LEN, CommaInitializerList_is_too_long)
|
||||
*m_iter = rhs;
|
||||
return Initializer<value_type, N+1>(m_iter + 1);
|
||||
}
|
||||
|
||||
private:
|
||||
iterator m_iter;
|
||||
};
|
||||
|
||||
public:
|
||||
typedef typename Obj::value_type value_type;
|
||||
typedef value_type* iterator;
|
||||
|
||||
public:
|
||||
CommaInitializer(const CommaInitializer& rhs)
|
||||
: m_object(rhs.m_object),
|
||||
m_data(rhs.m_data),
|
||||
m_wipeout_on_destruct(true)
|
||||
{
|
||||
rhs.disable();
|
||||
}
|
||||
|
||||
/** Constructor used by Vector or Matrix operator(value_type rhs) */
|
||||
CommaInitializer(Obj& obj, value_type x)
|
||||
: m_object(obj),
|
||||
m_data(x),
|
||||
m_wipeout_on_destruct(true)
|
||||
{ }
|
||||
|
||||
/** Destructs and assigns the comma separated value. */
|
||||
~CommaInitializer() {
|
||||
if(m_wipeout_on_destruct) m_object.assign_value(m_data);
|
||||
}
|
||||
|
||||
/** Overloaded comma operator, called only once for the first occoured comma. This
|
||||
means the first value is assigned by %operator=() and the 2nd value after the
|
||||
comma. Therfore we call the %Initializer::operator,() for the list starting
|
||||
after the 2nd. */
|
||||
Initializer<value_type, 2> operator,(value_type rhs);
|
||||
|
||||
void disable() const { m_wipeout_on_destruct = false; }
|
||||
|
||||
private:
|
||||
Obj& m_object;
|
||||
value_type m_data;
|
||||
mutable bool m_wipeout_on_destruct;
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Implementation
|
||||
*/
|
||||
template<class Obj, std::size_t LEN>
|
||||
typename CommaInitializer<Obj, LEN>::template Initializer<typename Obj::value_type, 2>
|
||||
CommaInitializer<Obj, LEN>::operator,(typename Obj::value_type rhs)
|
||||
{
|
||||
m_wipeout_on_destruct = false;
|
||||
iterator iter1 = m_object.data();
|
||||
*iter1 = m_data;
|
||||
iterator iter2 = iter1 + 1;
|
||||
*iter2 = rhs;
|
||||
return Initializer<value_type, 2>(iter2 + 1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
} // namespace tvmet
|
||||
|
||||
|
||||
#endif // TVMET_COMMA_INITIALIZER_H
|
||||
|
||||
// Local Variables:
|
||||
// mode:C++
|
||||
// End:
|
59
tvmet-1.7.1/include/tvmet/CompileTimeError.h
Normal file
59
tvmet-1.7.1/include/tvmet/CompileTimeError.h
Normal file
@ -0,0 +1,59 @@
|
||||
/*
|
||||
* Tiny Vector Matrix Library
|
||||
* Dense Vector Matrix Libary of Tiny size using Expression Templates
|
||||
*
|
||||
* Copyright (C) 2001 - 2003 Olaf Petzold <opetzold@users.sourceforge.net>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* $Id: CompileTimeError.h,v 1.7 2003/11/30 08:26:25 opetzold Exp $
|
||||
*/
|
||||
|
||||
#ifndef TVMET_COMPILE_TIME_ERROR_H
|
||||
#define TVMET_COMPILE_TIME_ERROR_H
|
||||
|
||||
namespace tvmet {
|
||||
|
||||
/**
|
||||
* \class CompileTimeError CompileTimeError.h "tvmet/CompileTimeError.h"
|
||||
* \brief Compile Time Assertation classes.
|
||||
*/
|
||||
template<bool> struct CompileTimeError;
|
||||
|
||||
/**
|
||||
* \class CompileTimeError<true> CompileTimeError.h "tvmet/CompileTimeError.h"
|
||||
* \brief Specialized Compile Time Assertation for successfully condition.
|
||||
* This results in a compiler pass.
|
||||
*/
|
||||
template<> struct CompileTimeError<true> { };
|
||||
|
||||
|
||||
/**
|
||||
* \def TVMET_CT_CONDITION(XPR, MSG)
|
||||
* \brief Simplify the Compile Time Assertation by using an expression
|
||||
* Xpr and an error message MSG.
|
||||
*/
|
||||
#define TVMET_CT_CONDITION(XPR, MSG) { \
|
||||
CompileTimeError<(XPR)> tvmet_ERROR_##MSG; \
|
||||
(void)tvmet_ERROR_##MSG; \
|
||||
}
|
||||
|
||||
} // namespace tvmet
|
||||
|
||||
#endif // TVMET_COMPILE_TIME_ERROR_H
|
||||
|
||||
// Local Variables:
|
||||
// mode:C++
|
||||
// End:
|
107
tvmet-1.7.1/include/tvmet/Extremum.h
Normal file
107
tvmet-1.7.1/include/tvmet/Extremum.h
Normal file
@ -0,0 +1,107 @@
|
||||
/*
|
||||
* Tiny Vector Matrix Library
|
||||
* Dense Vector Matrix Libary of Tiny size using Expression Templates
|
||||
*
|
||||
* Copyright (C) 2001 - 2003 Olaf Petzold <opetzold@users.sourceforge.net>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* $Id: Extremum.h,v 1.6 2003/11/30 08:26:25 opetzold Exp $
|
||||
*/
|
||||
|
||||
#ifndef TVMET_EXTREMUM_H
|
||||
#define TVMET_EXTREMUM_H
|
||||
|
||||
namespace tvmet {
|
||||
|
||||
|
||||
/**
|
||||
* \class matrix_tag Extremum.h "tvmet/Extremum.h"
|
||||
* \brief For use with Extremum to simplify max handling.
|
||||
* This allows the min/max functions to return an Extremum object.
|
||||
*/
|
||||
struct matrix_tag { };
|
||||
|
||||
|
||||
/**
|
||||
* \class vector_tag Extremum.h "tvmet/Extremum.h"
|
||||
* \brief For use with Extremum to simplify max handling.
|
||||
* This allows the min/max functions to return an Extremum object.
|
||||
*/
|
||||
struct vector_tag { };
|
||||
|
||||
|
||||
/**
|
||||
* \class Extremum Extremum.h "tvmet/Extremum.h"
|
||||
* \brief Generell class for storing extremums determined by min/max.
|
||||
*/
|
||||
template<class T1, class T2, class Tag>
|
||||
class Extremum { };
|
||||
|
||||
|
||||
/**
|
||||
* \class Extremum<T1, T2, vector_tag> Extremum.h "tvmet/Extremum.h"
|
||||
* \brief Partial specialzed for vectors to store extremums by value and index.
|
||||
*/
|
||||
template<class T1, class T2>
|
||||
class Extremum<T1, T2, vector_tag>
|
||||
{
|
||||
public:
|
||||
typedef T1 value_type;
|
||||
typedef T2 index_type;
|
||||
|
||||
public:
|
||||
Extremum(value_type value, index_type index)
|
||||
: m_value(value), m_index(index) { }
|
||||
value_type value() const { return m_value; }
|
||||
index_type index() const { return m_index; }
|
||||
|
||||
private:
|
||||
value_type m_value;
|
||||
index_type m_index;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* \class Extremum<T1, T2, matrix_tag> Extremum.h "tvmet/Extremum.h"
|
||||
* \brief Partial specialzed for matrix to store extremums by value, row and column.
|
||||
*/
|
||||
template<class T1, class T2>
|
||||
class Extremum<T1, T2, matrix_tag>
|
||||
{
|
||||
public:
|
||||
typedef T1 value_type;
|
||||
typedef T2 index_type;
|
||||
|
||||
public:
|
||||
Extremum(value_type value, index_type row, index_type col)
|
||||
: m_value(value), m_row(row), m_col(col) { }
|
||||
value_type value() const { return m_value; }
|
||||
index_type row() const { return m_row; }
|
||||
index_type col() const { return m_col; }
|
||||
|
||||
private:
|
||||
value_type m_value;
|
||||
index_type m_row, m_col;
|
||||
};
|
||||
|
||||
|
||||
} // namespace tvmet
|
||||
|
||||
#endif // TVMET_EXTREMUM_H
|
||||
|
||||
// Local Variables:
|
||||
// mode:C++
|
||||
// End:
|
87
tvmet-1.7.1/include/tvmet/Functional.h
Normal file
87
tvmet-1.7.1/include/tvmet/Functional.h
Normal file
@ -0,0 +1,87 @@
|
||||
/*
|
||||
* Tiny Vector Matrix Library
|
||||
* Dense Vector Matrix Libary of Tiny size using Expression Templates
|
||||
*
|
||||
* Copyright (C) 2001 - 2003 Olaf Petzold <opetzold@users.sourceforge.net>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* $Id: Functional.h,v 1.7 2004/09/16 09:14:18 opetzold Exp $
|
||||
*/
|
||||
|
||||
#ifndef TVMET_FUNCTIONAL_H
|
||||
#define TVMET_FUNCTIONAL_H
|
||||
|
||||
#include <tvmet/TypePromotion.h>
|
||||
|
||||
namespace tvmet {
|
||||
|
||||
|
||||
/**
|
||||
* \class Functional Functional.h "tvmet/Functional.h"
|
||||
* \brief Base class for all binary und unary functionals.
|
||||
*
|
||||
* All functional operators and functions have a static apply
|
||||
* member function for evaluating the expressions inside.
|
||||
*/
|
||||
struct Functional { };
|
||||
|
||||
|
||||
/**
|
||||
* \class BinaryFunctional Functional.h "tvmet/Functional.h"
|
||||
* \brief Base class for all binary functions.
|
||||
* \note Used for collecting classes for doxygen.
|
||||
*/
|
||||
struct BinaryFunctional : public Functional { };
|
||||
|
||||
|
||||
/**
|
||||
* \class UnaryFunctional Functional.h "tvmet/Functional.h"
|
||||
* \brief Base class for all unary functions.
|
||||
* \note Used for collecting classes for doxygen.
|
||||
*/
|
||||
struct UnaryFunctional : public Functional { };
|
||||
|
||||
|
||||
/*
|
||||
* some macro magic need below
|
||||
*/
|
||||
|
||||
/**
|
||||
* \def TVMET_STD_SCOPE(x)
|
||||
* \brief Simple macro to allow using macros for namespace std functions.
|
||||
*/
|
||||
#define TVMET_STD_SCOPE(x) std::x
|
||||
|
||||
|
||||
/**
|
||||
* \def TVMET_GLOBAL_SCOPE(x)
|
||||
* \brief Simple macro to allow using macros for global namespace functions.
|
||||
*/
|
||||
#define TVMET_GLOBAL_SCOPE(x) ::x
|
||||
|
||||
|
||||
} // namespace tvmet
|
||||
|
||||
|
||||
#include <tvmet/BinaryFunctionals.h>
|
||||
#include <tvmet/UnaryFunctionals.h>
|
||||
|
||||
|
||||
#endif // TVMET_FUNCTIONAL_H
|
||||
|
||||
// Local Variables:
|
||||
// mode:C++
|
||||
// End:
|
68
tvmet-1.7.1/include/tvmet/Io.h
Normal file
68
tvmet-1.7.1/include/tvmet/Io.h
Normal file
@ -0,0 +1,68 @@
|
||||
/*
|
||||
* Tiny Vector Matrix Library
|
||||
* Dense Vector Matrix Libary of Tiny size using Expression Templates
|
||||
*
|
||||
* Copyright (C) 2001 - 2003 Olaf Petzold <opetzold@users.sourceforge.net>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* $Id: Io.h,v 1.3 2004/04/30 16:03:38 opetzold Exp $
|
||||
*/
|
||||
|
||||
#ifndef TVMET_IO_H
|
||||
#define TVMET_IO_H
|
||||
|
||||
namespace tvmet {
|
||||
|
||||
/**
|
||||
* \class IoPrintHelper Io.h "tvmet/Io.h"
|
||||
* \brief Determines the number of digits regarding the sign of the
|
||||
* container.
|
||||
* This class is nesessary due to the complex type and the
|
||||
* function min(), which are not defined for this type.
|
||||
* So we have to dispatch between pod and complex types
|
||||
* to get an information about the extra space for signs.
|
||||
*/
|
||||
template<class C>
|
||||
class IoPrintHelper {
|
||||
IoPrintHelper();
|
||||
IoPrintHelper(const IoPrintHelper&);
|
||||
IoPrintHelper& operator=(const IoPrintHelper&);
|
||||
|
||||
private:
|
||||
static std::streamsize width(const C& e) {
|
||||
std::streamsize w = static_cast<std::streamsize>(std::log10(max(abs(e)))+1);
|
||||
return w > 0 ? w : 0;
|
||||
}
|
||||
|
||||
public:
|
||||
static std::streamsize width(dispatch<true>, const C& e) {
|
||||
return width(e);
|
||||
}
|
||||
static std::streamsize width(dispatch<false>, const C& e) {
|
||||
std::streamsize w = width(e);
|
||||
if(min(e) < 0) return w+1;
|
||||
else return w;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif /* TVMET_IO_H */
|
||||
|
||||
// Local Variables:
|
||||
// mode:C++
|
||||
// End:
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user