From: <jpi...@us...> - 2011-09-26 21:15:37
|
Revision: 8607 http://octave.svn.sourceforge.net/octave/?rev=8607&view=rev Author: jpicarbajal Date: 2011-09-26 21:15:30 +0000 (Mon, 26 Sep 2011) Log Message: ----------- mechanics-1.0.0. First commit: Adding functions Added Paths: ----------- trunk/octave-forge/main/mechanics/ trunk/octave-forge/main/mechanics/COPYING trunk/octave-forge/main/mechanics/DESCRIPTION trunk/octave-forge/main/mechanics/INDEX trunk/octave-forge/main/mechanics/doc/ trunk/octave-forge/main/mechanics/inst/ trunk/octave-forge/main/mechanics/inst/area_poly2d.m trunk/octave-forge/main/mechanics/inst/center_mass_poly2d.m trunk/octave-forge/main/mechanics/inst/inertia_moment_ncpoly2d.m trunk/octave-forge/main/mechanics/inst/inertia_moment_poly2d.m trunk/octave-forge/main/mechanics/inst/private/ trunk/octave-forge/main/mechanics/inst/second_moment_poly2d.m Added: trunk/octave-forge/main/mechanics/COPYING =================================================================== --- trunk/octave-forge/main/mechanics/COPYING (rev 0) +++ trunk/octave-forge/main/mechanics/COPYING 2011-09-26 21:15:30 UTC (rev 8607) @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. Added: trunk/octave-forge/main/mechanics/DESCRIPTION =================================================================== --- trunk/octave-forge/main/mechanics/DESCRIPTION (rev 0) +++ trunk/octave-forge/main/mechanics/DESCRIPTION 2011-09-26 21:15:30 UTC (rev 8607) @@ -0,0 +1,11 @@ +Name: Mechanics +Version: 1.0.0 +Date: Monday, September 26 2011 +Author: Juan Pablo Carbajal <car...@if...> +Maintainer: Juan Pablo Carbajal <car...@if...> +Title: Classical Mechanics +Description: Library with functions useful for numerical computation in classical mechanics. +Depends: octave (>= 3.4.0) +Autoload: no +License: GPL version 3 or later +Url: http://octave.sf.net Added: trunk/octave-forge/main/mechanics/INDEX =================================================================== --- trunk/octave-forge/main/mechanics/INDEX (rev 0) +++ trunk/octave-forge/main/mechanics/INDEX 2011-09-26 21:15:30 UTC (rev 8607) @@ -0,0 +1,8 @@ +mechanics >> Classical Mechanics +1D Mechanics +2D Mechanics + area_poly2d + center_mass_poly2d + inertia_moment_poly2d + inertia_moment_ncpoly2d + second_moment_poly2d Added: trunk/octave-forge/main/mechanics/inst/area_poly2d.m =================================================================== --- trunk/octave-forge/main/mechanics/inst/area_poly2d.m (rev 0) +++ trunk/octave-forge/main/mechanics/inst/area_poly2d.m 2011-09-26 21:15:30 UTC (rev 8607) @@ -0,0 +1,52 @@ +%% Copyright (c) 2011 Juan Pablo Carbajal <car...@if...> +%% +%% This program is free software: you can redistribute it and/or modify +%% it under the terms of the GNU General Public License as published by +%% the Free Software Foundation, either version 3 of the License, or +%% any later version. +%% +%% This program is distributed in the hope that it will be useful, +%% but WITHOUT ANY WARRANTY; without even the implied warranty of +%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +%% GNU General Public License for more details. +%% +%% You should have received a copy of the GNU General Public License +%% along with this program. If not, see <http://www.gnu.org/licenses/>. + +%% -*- texinfo -*- +%% @deftypefn {Function File} @var{A} = area_poly2d (@var{p}) +%% Calculates the Area of a 2D polygon. +%% +%% The polygon is described in @var{p}, where each row is a different vertex. +%% The algorithm was adapted from P. Bourke web page +%% @uref{http://local.wasp.uwa.edu.au/~pbourke/geometry/polyarea/} +%% +%% @seealso{inertia_moment_poly2d, center_mass_poly2d} +%% @end deftypefn + +function A = area_poly2d(poly) + + N = size(poly,1); + nxt = [2:N 1]; + px = poly(:,1); + px_nxt = poly(nxt,1); + py = poly(:,2); + py_nxt = poly(nxt,2); + + A = sum(px.*py_nxt - px_nxt.*py)/2; + +end + +%!demo +%! % A parametrized arbitrary triagle and its area +%! +%! triangle = @(a,b,h) [0 0; b 0; a h]; +%! h = linspace(0.1,1,10); +%! b = pi; +%! for i=1:length(h); +%! P = triangle(0.1,b,h(i)); +%! area(i) = area_poly2d(P); +%! end +%! +%! % The area of the triangle is b*h/2 +%! plot(h,area,'o',h,b*h/2); Added: trunk/octave-forge/main/mechanics/inst/center_mass_poly2d.m =================================================================== --- trunk/octave-forge/main/mechanics/inst/center_mass_poly2d.m (rev 0) +++ trunk/octave-forge/main/mechanics/inst/center_mass_poly2d.m 2011-09-26 21:15:30 UTC (rev 8607) @@ -0,0 +1,60 @@ +%% Copyright (c) 2011 Juan Pablo Carbajal <car...@if...> +%% +%% This program is free software: you can redistribute it and/or modify +%% it under the terms of the GNU General Public License as published by +%% the Free Software Foundation, either version 3 of the License, or +%% any later version. +%% +%% This program is distributed in the hope that it will be useful, +%% but WITHOUT ANY WARRANTY; without even the implied warranty of +%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +%% GNU General Public License for more details. +%% +%% You should have received a copy of the GNU General Public License +%% along with this program. If not, see <http://www.gnu.org/licenses/>. + +%% -*- texinfo -*- +%% @deftypefn {Function File} @var{cm} = center_mass_poly2d (@var{p}) +%% Calculates the center of mass a 2D polygon. +%% +%% The polygon is described in @var{p}, where each row is a different vertex. +%% The algorithm was adapted from P. Bourke web page +%% @uref{http://local.wasp.uwa.edu.au/~pbourke/geometry/polyarea/} +%% +%% @seealso{inertia_moment_poly2d, area_poly2d} +%% @end deftypefn + +function cm = center_mass_poly2d(poly) + + N = size(poly,1); + nxt = [2:N 1]; + px = poly(:,1); + px_nxt = poly(nxt,1); + py = poly(:,2); + py_nxt = poly(nxt,2); + + cm = zeros(1,2); + cr_prod = (px.*py_nxt - px_nxt.*py); + + % Area + A = sum(cr_prod)/2; + + % Center of mass + cm(1) = sum( (px+px_nxt) .* cr_prod ); + cm(2) = sum( (py+py_nxt) .* cr_prod ); + cm = cm/(6*A); + +end + +%!demo +%! % The center of mass of this two triangles is the same +%! % since both describe the same figure. +%! +%! P = [0 0; 1 0; 0 1]; +%! P2=[0 0; 0.1 0; 0.2 0; 0.25 0; 1 0; 0 1]; +%! [center_mass_poly2d(P) center_mass_poly2d(P2)], +%! +%! % The centroid does not give the right answer +%! +%! [mean(P) mean(P2)], + Added: trunk/octave-forge/main/mechanics/inst/inertia_moment_ncpoly2d.m =================================================================== --- trunk/octave-forge/main/mechanics/inst/inertia_moment_ncpoly2d.m (rev 0) +++ trunk/octave-forge/main/mechanics/inst/inertia_moment_ncpoly2d.m 2011-09-26 21:15:30 UTC (rev 8607) @@ -0,0 +1,102 @@ +%% Copyright (c) 2011 Juan Pablo Carbajal <car...@if...> +%% +%% This program is free software: you can redistribute it and/or modify +%% it under the terms of the GNU General Public License as published by +%% the Free Software Foundation, either version 3 of the License, or +%% any later version. +%% +%% This program is distributed in the hope that it will be useful, +%% but WITHOUT ANY WARRANTY; without even the implied warranty of +%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +%% GNU General Public License for more details. +%% +%% You should have received a copy of the GNU General Public License +%% along with this program. If not, see <http://www.gnu.org/licenses/>. + +%% -*- texinfo -*- +%% @deftypefn {Function File} @var{I} = inertia_moment_ncpoly2d (@var{p}, @var{m}) +%% Calculates the moment of inertia of a simple 2D polygon. +%% +%% The polygon is described in @var{p}, where each row is a different vertex. +%% @var{m} is the total mass of the polygon, assumed uniformly distributed. +%% The polygon is triangulated using delaunay algorithm and then the +%% Superposition Principle and the Parallel axis theorem are applied to each +%% triangle. +%% +%% The position of the vertices is assumed to be given from the center of mass +%% of the polygon. +%% To change a general polygon to this description you can use: +%% @code{P = P - repmat(center_mass_poly2d(P),size(P,1))}. +%% +%% @seealso{} +%% @end deftypefn + +function I = inertia_moment_ncpoly2d (poly, M) + %% Get total area + A = area_poly2d (poly); + + %% triangulate + T = delaunay (poly(:,1), poly(:,2)); + nT = size(T,1); + +% debug +% triplot(T,poly(:,1),poly(:,2),'color',[0.8 0.8 0.8]) +% hold on +% drawPolygon(poly,'k'); +% hold off; + + I = 0; + for it = 1:nT + P = poly (T(it,:), :); + %% get centers of mass + cm = center_mass_poly2d (P); + + % Check if triangle CoM is inside polygon + if ~inpolygon (cm(1), cm(2), poly(:,1), poly(:,2)) + continue + end + + %% get the mass as fraction of total area + a = area_poly2d (P); + if a < 0 + aux = P(1,:); + P(1,:) = P(2,:); + P(2,:) = aux; + a = -a; + end + m = M*a/A; + +% debug +% patch(P(:,1),P(:,2),'facecolor','b','edgecolor','none'); +% pause + + + + %% get moment of inertia + mo = inertia_moment_poly2d (P, m, cm); + + %% Assemble: Superposition + parallel axis + I += mo + m * sumsq (cm); + end + +end + +%!demo +%! % C shape polygon +%! poly = [0 0; 1 0; 1 0.25; 0.25 0.25; 0.25 0.75; 1 0.75; 1 1; 0 1]; +%! +%! % Take to center of mass +%! poly = poly - repmat(center_mass_poly2d(poly),size(poly,1),1); +%! A = area_poly2d(poly); +%! +%! I = inertia_moment_ncpoly2d(poly,1) +%! +%! % It should give (breaking C in rectangles) +%! r1 = [poly(1:3,:); poly(1,1) poly(3,2)]; a1 = area_poly2d(r1); m1 = abs(a1/A); +%! c1 = center_mass_poly2d(r1); I1 = inertia_moment_poly2d(r1,m1,c1); +%! r2 = [r1(4,:); poly(4:5,:); poly(1,1) poly(5,2)]; a2 = area_poly2d(r2); m2 = abs(a2/A); +%! c2 = center_mass_poly2d(r2); I2 = inertia_moment_poly2d(r2,m2,c2); +%! r3 = [poly(5:8,:); r2(4,:)]; a3 = area_poly2d(r3); m3 = abs(a3/A); +%! c3 = center_mass_poly2d(r3); I3 = inertia_moment_poly2d(r3,m3,c3); +%! +%! I1 + m1*sumsq(c1) + I2 + m2*sumsq(c2) + I3 + m3*sumsq(c3) Added: trunk/octave-forge/main/mechanics/inst/inertia_moment_poly2d.m =================================================================== --- trunk/octave-forge/main/mechanics/inst/inertia_moment_poly2d.m (rev 0) +++ trunk/octave-forge/main/mechanics/inst/inertia_moment_poly2d.m 2011-09-26 21:15:30 UTC (rev 8607) @@ -0,0 +1,63 @@ +%% Copyright (c) 2011 Juan Pablo Carbajal <car...@if...> +%% +%% This program is free software: you can redistribute it and/or modify +%% it under the terms of the GNU General Public License as published by +%% the Free Software Foundation, either version 3 of the License, or +%% any later version. +%% +%% This program is distributed in the hope that it will be useful, +%% but WITHOUT ANY WARRANTY; without even the implied warranty of +%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +%% GNU General Public License for more details. +%% +%% You should have received a copy of the GNU General Public License +%% along with this program. If not, see <http://www.gnu.org/licenses/>. + +%% -*- texinfo -*- +%% @deftypefn {Function File} @var{I} = inertia_moment_poly2d (@var{p}, @var{m}, @var{offset}) +%% Calculates the moment of inertia of a 2D star-shaped polygon. +%% +%% The polygon is described in @var{p}, where each row is a different vertex. +%% @var{m} is the total mass of the polygon, assumed uniformly distributed. +%% The optinal argument @var{offset} is an origin translation vector. All vertex +%% are transformed to the reference frame with origin at @var{offset} respect to +%% the center of mass. +%% +%% This expression assumes that the polygon is star-shaped. The position of the +%% vertices is assumed to be given from the center of mass of the polygon. +%% To change a general polygon to this description you can use: +%% @code{P = P - repmat(center_mass_poly2d(P),size(P,1))}. +%% +%% @seealso{} +%% @end deftypefn + +function I = inertia_moment_poly2d(poly,mass,offset=[0 0]) + numVerts = size(poly,1); + R = repmat(offset,numVerts,1); + + V = poly - R; + Vnext = poly([2:numVerts 1],:) - R; + + %% Area of the parallelograms + A = sqrt(sumsq(cross([Vnext zeros(numVerts,1)],[V zeros(numVerts,1)],2),2)); + %% Distance between points + B = dot(V,V,2) + dot(V,Vnext,2) + dot(Vnext,Vnext,2); + + C = sum(A.*B); + + I = mass*C/(6*sum(A)); +end + +%!demo +%! +%! % The same triangle respect to one of its vertices described with two polygons +%! P = [0 0; 1 0; 0 1]; +%! P2=[0 0; 0.1 0; 0.2 0; 0.25 0; 1 0; 0 1]; +%! +%! % Now described from the center of mass of the triangle +%! Pc = P - repmat(center_mass_poly2d(P), 3, 1); +%! inertia_moment_poly2d(Pc,1) +%! +%! Pc = P2 -repmat(center_mass_poly2d(P2), size(P2,1), 1); +%! inertia_moment_poly2d(Pc,1) + Added: trunk/octave-forge/main/mechanics/inst/second_moment_poly2d.m =================================================================== --- trunk/octave-forge/main/mechanics/inst/second_moment_poly2d.m (rev 0) +++ trunk/octave-forge/main/mechanics/inst/second_moment_poly2d.m 2011-09-26 21:15:30 UTC (rev 8607) @@ -0,0 +1,48 @@ +%% Copyright (c) 2011 Juan Pablo Carbajal <car...@if...> +%% +%% This program is free software: you can redistribute it and/or modify +%% it under the terms of the GNU General Public License as published by +%% the Free Software Foundation, either version 3 of the License, or +%% any later version. +%% +%% This program is distributed in the hope that it will be useful, +%% but WITHOUT ANY WARRANTY; without even the implied warranty of +%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +%% GNU General Public License for more details. +%% +%% You should have received a copy of the GNU General Public License +%% along with this program. If not, see <http://www.gnu.org/licenses/>. + +%% -*- texinfo -*- +%% @deftypefn {Function File} @var{J} = second_moment_poly2d (@var{p}) +%% Calculates the second moment of area of a 2D polygon. +%% +%% The polygon is described in @var{p}, where each row is a different vertex. +%% The output @var{J} contains Ix, Iy and Ixy, in that order. +%% +%% The algorithm was adapted from P. Bourke web page +%% @uref{http://local.wasp.uwa.edu.au/~pbourke/geometry/polyarea/} +%% +%% @seealso{inertia_moment_poly2d, center_mass_poly2d} +%% @end deftypefn + +function J = second_moment_poly2d(poly) + + N = size(poly,1); + nxt = [2:N 1]; + px = poly(:,1); + px_nxt = poly(nxt,1); + py = poly(:,2); + py_nxt = poly(nxt,2); + + cm = zeros(1,2); + cr_prod = (px.*py_nxt - px_nxt.*py); + + J = zeros(1,3); + J(1) = sum((py.^2 + py.*py_nxt + py_nxt.^2).*cr_prod); + J(2) = sum((px.^2 + px.*px_nxt + py_nxt.^2).*cr_prod); + J(3) = 0.5*sum((px.*py_nxt + 2*px.*py + px_nxt.*py_nxt + px_nxt.*py).*cr_prod); + J = J/12; + +end + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jpi...@us...> - 2011-09-27 13:20:56
|
Revision: 8614 http://octave.svn.sourceforge.net/octave/?rev=8614&view=rev Author: jpicarbajal Date: 2011-09-27 13:20:45 +0000 (Tue, 27 Sep 2011) Log Message: ----------- geometry-1.0.0. docstring modifications Modified Paths: -------------- trunk/octave-forge/main/geometry/INDEX trunk/octave-forge/main/geometry/inst/svgload.m trunk/octave-forge/main/geometry/inst/svgpath2polygon.m trunk/octave-forge/main/mechanics/INDEX Modified: trunk/octave-forge/main/geometry/INDEX =================================================================== --- trunk/octave-forge/main/geometry/INDEX 2011-09-27 13:18:11 UTC (rev 8613) +++ trunk/octave-forge/main/geometry/INDEX 2011-09-27 13:20:45 UTC (rev 8614) @@ -5,10 +5,10 @@ svgpath2polygon Output data2geo -2D Geometry - -3D Geometry - +Geometry 2D + +Geometry 3D + Graphs Modified: trunk/octave-forge/main/geometry/inst/svgload.m =================================================================== --- trunk/octave-forge/main/geometry/inst/svgload.m 2011-09-27 13:18:11 UTC (rev 8613) +++ trunk/octave-forge/main/geometry/inst/svgload.m 2011-09-27 13:20:45 UTC (rev 8614) @@ -15,7 +15,7 @@ %% -*- texinfo -*- %% @deftypefn {Function File} @var{SVG} = loadSVG (@var{filename}) -%% Reads the plain SVG file @var{filename} and retunrs an SVG structure. +%% Reads the plain SVG file @var{filename} and returns an SVG structure. %% %% In the current version only SVG path elements are parsed and stored in the field %% path of the @var{SVG} structure. Modified: trunk/octave-forge/main/geometry/inst/svgpath2polygon.m =================================================================== --- trunk/octave-forge/main/geometry/inst/svgpath2polygon.m 2011-09-27 13:18:11 UTC (rev 8613) +++ trunk/octave-forge/main/geometry/inst/svgpath2polygon.m 2011-09-27 13:20:45 UTC (rev 8614) @@ -16,7 +16,7 @@ %% -*- texinfo -*- %% @deftypefn {Function File} @var{P} = SVGpath2polygon (@var{SVGpath}) %% Converts the SVG path structure @var{SVGpath} to an array of polygons -%% compatible with matGeom (@uref{https://sourceforge.net/projects/matgeom/}). +%% compatible with matGeom (@url{https://matgeom.sf.net}). %% %% @var{SVGpath} is a substructure of the SVG structure output by loadSVG. This %% function extracts the field named "coord" if there is only one path. If there Modified: trunk/octave-forge/main/mechanics/INDEX =================================================================== --- trunk/octave-forge/main/mechanics/INDEX 2011-09-27 13:18:11 UTC (rev 8613) +++ trunk/octave-forge/main/mechanics/INDEX 2011-09-27 13:20:45 UTC (rev 8614) @@ -1,5 +1,9 @@ mechanics >> Classical Mechanics 1D Mechanics + nloscilator + setnloscillator + pendulum + setpendulum 2D Mechanics area_poly2d center_mass_poly2d This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2011-09-27 13:25:15
|
Revision: 8611 http://octave.svn.sourceforge.net/octave/?rev=8611&view=rev Author: carandraug Date: 2011-09-27 12:34:58 +0000 (Tue, 27 Sep 2011) Log Message: ----------- main packages DESCRIPTION: added e-mail address of maintainers and contributors Modified Paths: -------------- trunk/octave-forge/main/audio/DESCRIPTION trunk/octave-forge/main/comm/DESCRIPTION trunk/octave-forge/main/database/DESCRIPTION trunk/octave-forge/main/fenv/DESCRIPTION trunk/octave-forge/main/fits/DESCRIPTION trunk/octave-forge/main/fixed/DESCRIPTION trunk/octave-forge/main/fl-core/DESCRIPTION trunk/octave-forge/main/ftp/DESCRIPTION trunk/octave-forge/main/galois/DESCRIPTION trunk/octave-forge/main/general/DESCRIPTION trunk/octave-forge/main/ident/DESCRIPTION trunk/octave-forge/main/image/DESCRIPTION trunk/octave-forge/main/info-theory/DESCRIPTION trunk/octave-forge/main/linear-algebra/DESCRIPTION trunk/octave-forge/main/nnet/DESCRIPTION trunk/octave-forge/main/octclip/DESCRIPTION trunk/octave-forge/main/octgpr/DESCRIPTION trunk/octave-forge/main/octproj/DESCRIPTION trunk/octave-forge/main/odebvp/DESCRIPTION trunk/octave-forge/main/odepkg/DESCRIPTION trunk/octave-forge/main/outliers/DESCRIPTION trunk/octave-forge/main/physical-constants/DESCRIPTION trunk/octave-forge/main/simp/DESCRIPTION trunk/octave-forge/main/splines/DESCRIPTION trunk/octave-forge/main/struct/DESCRIPTION trunk/octave-forge/main/video/DESCRIPTION trunk/octave-forge/main/vrml/DESCRIPTION trunk/octave-forge/main/zenity/DESCRIPTION Modified: trunk/octave-forge/main/audio/DESCRIPTION =================================================================== --- trunk/octave-forge/main/audio/DESCRIPTION 2011-09-27 11:24:27 UTC (rev 8610) +++ trunk/octave-forge/main/audio/DESCRIPTION 2011-09-27 12:34:58 UTC (rev 8611) @@ -1,8 +1,8 @@ Name: Audio Version: 1.1.4 Date: 2009-05-03 -Author: Paul Kienzle -Maintainer: Paul Kienzle +Author: Paul Kienzle <pki...@us...> +Maintainer: Paul Kienzle <pki...@us...> Title: Audio Description: Audio recording, processing and playing tools. Depends: octave (>= 2.9.7) Modified: trunk/octave-forge/main/comm/DESCRIPTION =================================================================== --- trunk/octave-forge/main/comm/DESCRIPTION 2011-09-27 11:24:27 UTC (rev 8610) +++ trunk/octave-forge/main/comm/DESCRIPTION 2011-09-27 12:34:58 UTC (rev 8611) @@ -1,8 +1,8 @@ Name: Communications Version: 1.0.11 Date: 2010-05-21 -Author: David Bateman -Maintainer: David Bateman +Author: David Bateman <ad...@gm...> +Maintainer: David Bateman <ad...@gm...> Title: Communications. Description: Digital Communications, Error Correcting Codes (Channel Code), Source Code functions, Modulation and Galois Fields Depends: octave (>= 3.4), signal (>= 1.0.0), image Modified: trunk/octave-forge/main/database/DESCRIPTION =================================================================== --- trunk/octave-forge/main/database/DESCRIPTION 2011-09-27 11:24:27 UTC (rev 8610) +++ trunk/octave-forge/main/database/DESCRIPTION 2011-09-27 12:34:58 UTC (rev 8611) @@ -1,12 +1,18 @@ Name: database Version: 1.0.4 Date: 2009-01-09 -Author: Xavier Delacour +Author: Xavier Delacour <xav...@gm...> Maintainer: The Octave Community Title: Bindings for postgres, mysql, sqlite, and standard ODBC -Description: These are bindings that allow SQL queries and other database operations on postgres, mysql, sqlite, and standard ODBC databases from within Octave. A simplified interface that is uniform across all database types is provided, as well as the entire C client API for each database (libpq, libmysqlclient, etc). +Description: These are bindings that allow SQL queries and other database + operations on postgres, mysql, sqlite, and standard ODBC databases from within + Octave. A simplified interface that is uniform across all database types is + provided, as well as the entire C client API for each database (libpq, + libmysqlclient, etc). Depends: octave (>= 2.9.12) Autoload: yes -SystemRequirements: swig, postgresql-8.2, postgresql-client-8.2, mysql-common, mysql-client-5.0, mysql-server-5.0, libmysqlclient15-dev, sqlite3, libsqlite3-dev, unixodbc-bin, unixodbc-dev, odbc-postgresql. +SystemRequirements: swig, postgresql-8.2, postgresql-client-8.2, mysql-common, + mysql-client-5.0, mysql-server-5.0, libmysqlclient15-dev, sqlite3, + libsqlite3-dev, unixodbc-bin, unixodbc-dev, odbc-postgresql. License: BSD, GPL2 Url: http://octave.sf.net Modified: trunk/octave-forge/main/fenv/DESCRIPTION =================================================================== --- trunk/octave-forge/main/fenv/DESCRIPTION 2011-09-27 11:24:27 UTC (rev 8610) +++ trunk/octave-forge/main/fenv/DESCRIPTION 2011-09-27 12:34:58 UTC (rev 8611) @@ -1,10 +1,13 @@ Name: fenv Version: 0.1.0 Date: 2008-10-10 -Author: Grzegorz Timoszuk (gti...@gm...) -Maintainer: Grzegorz Timoszuk (gti...@gm...) +Author: Grzegorz Timoszuk <gti...@gm...> +Maintainer: Grzegorz Timoszuk <gti...@gm...> Title: Floating point environment -Description: On supported architectures, change the rounding mode of the floating point arithmetics (to nearest, up, down, to zero) or change the precision of the arithmetical operations (single, double, double extended). Experimentally test the properties of the floating point arithmetics. +Description: On supported architectures, change the rounding mode of the + floating point arithmetics (to nearest, up, down, to zero) or change the + precision of the arithmetical operations (single, double, double extended). + Experimentally test the properties of the floating point arithmetics. Categories: floating point environment Depends: octave (>= 3.0.0) Autoload: yes Modified: trunk/octave-forge/main/fits/DESCRIPTION =================================================================== --- trunk/octave-forge/main/fits/DESCRIPTION 2011-09-27 11:24:27 UTC (rev 8610) +++ trunk/octave-forge/main/fits/DESCRIPTION 2011-09-27 12:34:58 UTC (rev 8611) @@ -1,8 +1,8 @@ Name: FITS Version: 1.0.1 Date: 2011-07-19 -Author: Dirk Schmidt -Maintainer: Dirk Schmidt +Author: Dirk Schmidt <fs@@dirk-schmidt.net> +Maintainer: Dirk Schmidt <fs@@dirk-schmidt.net> Title: Reading and writing FITS (Flexible Image Transport System) files. Description: The Octave-FITS package provides functions for reading, and writing FITS (Flexible Image Transport System) files. The package supports Modified: trunk/octave-forge/main/fixed/DESCRIPTION =================================================================== --- trunk/octave-forge/main/fixed/DESCRIPTION 2011-09-27 11:24:27 UTC (rev 8610) +++ trunk/octave-forge/main/fixed/DESCRIPTION 2011-09-27 12:34:58 UTC (rev 8611) @@ -1,8 +1,8 @@ Name: Fixed Version: 0.7.10 Date: 2009-05-18 -Author: David Bateman -Maintainer: David Bateman +Author: David Bateman <ad...@gm...> +Maintainer: David Bateman <ad...@gm...> Title: Fixed Point Computations Description: Fixed point real and complex matrix toolbox Depends: octave (>= 3.2) Modified: trunk/octave-forge/main/fl-core/DESCRIPTION =================================================================== --- trunk/octave-forge/main/fl-core/DESCRIPTION 2011-09-27 11:24:27 UTC (rev 8610) +++ trunk/octave-forge/main/fl-core/DESCRIPTION 2011-09-27 12:34:58 UTC (rev 8611) @@ -1,9 +1,9 @@ Name: fl-core Version: 1.0.0 Date: 2011-01-12 -Author: Gianvito Pio and Piero Molino +Author: Gianvito Pio <pio...@gm...> and Piero Molino <pie...@gm...> Title: Fuzzy Logic Core for Octave -Maintainer: Gianvito Pio (pio...@gm...) and Piero Molino (pie...@gm...) +Maintainer: Gianvito Pio <pio...@gm...> and Piero Molino <pie...@gm...> Description: The package contains code for basic functions in Fuzzy Logic for Octave. Autoload: yes License: LGPL v3 Modified: trunk/octave-forge/main/ftp/DESCRIPTION =================================================================== --- trunk/octave-forge/main/ftp/DESCRIPTION 2011-09-27 11:24:27 UTC (rev 8610) +++ trunk/octave-forge/main/ftp/DESCRIPTION 2011-09-27 12:34:58 UTC (rev 8611) @@ -1,7 +1,7 @@ Name: ftp Version: 1.0.3 Date: 2009-01-09 -Author: Xavier Delacour +Author: Xavier Delacour <xav...@gm...> Maintainer: The Octave Community Title: FTP functions Description: These are bindings for ftplib, and MATLAB compatible APIs. Superceded in Octave 3.4.0. Modified: trunk/octave-forge/main/galois/DESCRIPTION =================================================================== --- trunk/octave-forge/main/galois/DESCRIPTION 2011-09-27 11:24:27 UTC (rev 8610) +++ trunk/octave-forge/main/galois/DESCRIPTION 2011-09-27 12:34:58 UTC (rev 8611) @@ -1,8 +1,8 @@ Name: Galois Field Version: 0.0.1 Date: 2008-11-14 -Author: David Bateman -Maintainer: David Bateman +Author: David Bateman <ad...@gm...> +Maintainer: David Bateman <ad...@gm...> Title: Galois Field Test Package Description: Test package for new implementation galois field code. Depends: octave (>= 3.4.0) Modified: trunk/octave-forge/main/general/DESCRIPTION =================================================================== --- trunk/octave-forge/main/general/DESCRIPTION 2011-09-27 11:24:27 UTC (rev 8610) +++ trunk/octave-forge/main/general/DESCRIPTION 2011-09-27 12:34:58 UTC (rev 8611) @@ -1,8 +1,8 @@ Name: General Version: 1.2.2 Date: 2010-03-12 -Author: Jaroslav Hajek -Maintainer: Jaroslav Hajek +Author: Jaroslav Hajek <hi...@gm...> +Maintainer: Jaroslav Hajek <hi...@gm...> Title: General Description: General tools for octave. String dictionary, parallel computing. Categories: General Modified: trunk/octave-forge/main/ident/DESCRIPTION =================================================================== --- trunk/octave-forge/main/ident/DESCRIPTION 2011-09-27 11:24:27 UTC (rev 8610) +++ trunk/octave-forge/main/ident/DESCRIPTION 2011-09-27 12:34:58 UTC (rev 8611) @@ -1,8 +1,8 @@ Name: Ident Version: 1.0.7 Date: 2009-05-06 -Author: Paul Kienzle -Maintainer: Paul Kienzle +Author: Paul Kienzle <pki...@us...> +Maintainer: Paul Kienzle <pki...@us...> Title: System Indentification. Description: Addition System Indentification Control functions. Depends: octave (>= 2.9.7) Modified: trunk/octave-forge/main/image/DESCRIPTION =================================================================== --- trunk/octave-forge/main/image/DESCRIPTION 2011-09-27 11:24:27 UTC (rev 8610) +++ trunk/octave-forge/main/image/DESCRIPTION 2011-09-27 12:34:58 UTC (rev 8611) @@ -2,7 +2,7 @@ Version: 1.0.15 Date: 2011-09-26 Author: Various Authors -Maintainer: Soren Hauberg +Maintainer: Soren Hauberg <so...@ha...> Title: Image Processing Description: The Octave-forge Image package provides functions for processing images. Modified: trunk/octave-forge/main/info-theory/DESCRIPTION =================================================================== --- trunk/octave-forge/main/info-theory/DESCRIPTION 2011-09-27 11:24:27 UTC (rev 8610) +++ trunk/octave-forge/main/info-theory/DESCRIPTION 2011-09-27 12:34:58 UTC (rev 8611) @@ -1,8 +1,8 @@ Name: InformationTheory Version: 0.1.8 Date: 2009-05-03 -Author: Muthiah Annamalai -Maintainer: Muthiah Annamalai +Author: Muthiah Annamalai <mut...@ut...> +Maintainer: Muthiah Annamalai <mut...@ut...> Title: Information Theory Description: Functions and routines for basic Information Theory definitions, and source coding. Categories: Information Theory Modified: trunk/octave-forge/main/linear-algebra/DESCRIPTION =================================================================== --- trunk/octave-forge/main/linear-algebra/DESCRIPTION 2011-09-27 11:24:27 UTC (rev 8610) +++ trunk/octave-forge/main/linear-algebra/DESCRIPTION 2011-09-27 12:34:58 UTC (rev 8611) @@ -2,7 +2,7 @@ Version: 2.0.0 Date: 2009-05-18 Author: Various Authors -Maintainer: Jaroslav Hajek +Maintainer: Jaroslav Hajek <hi...@gm...> Title: Linear Algebra. Description: Additional linear algebra code, including general SVD and matrix functions. Categories: Linear-Algebra Modified: trunk/octave-forge/main/nnet/DESCRIPTION =================================================================== --- trunk/octave-forge/main/nnet/DESCRIPTION 2011-09-27 11:24:27 UTC (rev 8610) +++ trunk/octave-forge/main/nnet/DESCRIPTION 2011-09-27 12:34:58 UTC (rev 8611) @@ -1,8 +1,8 @@ Name: nnet Version: 0.1.13 Date: 2010-12-02 -Author: Michael Schmid -Maintainer: Michael Schmid +Author: Michael Schmid <mic...@us...> +Maintainer: Michael Schmid <mic...@us...> Title: Neural Networks Description: A feed forward multi-layer neural network. Depends: octave (>= 3.0.0) Modified: trunk/octave-forge/main/octclip/DESCRIPTION =================================================================== --- trunk/octave-forge/main/octclip/DESCRIPTION 2011-09-27 11:24:27 UTC (rev 8610) +++ trunk/octave-forge/main/octclip/DESCRIPTION 2011-09-27 12:34:58 UTC (rev 8611) @@ -1,8 +1,8 @@ Name: OctCLIP Version: 1.0.0 Date: 2011-03-01 -Author: José Luis García Pallero, <jgp...@gm...> -Maintainer: José Luis García Pallero, <jgp...@gm...> +Author: José Luis García Pallero <jgp...@gm...> +Maintainer: José Luis García Pallero <jgp...@gm...> Title: GNU Octave clipping polygons tool Description: This package allows to do boolean operations with polygons using the Greiner-Hormann algorithm. Modified: trunk/octave-forge/main/octgpr/DESCRIPTION =================================================================== --- trunk/octave-forge/main/octgpr/DESCRIPTION 2011-09-27 11:24:27 UTC (rev 8610) +++ trunk/octave-forge/main/octgpr/DESCRIPTION 2011-09-27 12:34:58 UTC (rev 8611) @@ -1,9 +1,9 @@ Name: OctGPR Version: 1.2.0 Date: 2009-08-06 -Author: Jaroslav Hajek (hi...@gm...) +Author: Jaroslav Hajek <hi...@gm...> Title: Package for full dense Gaussian Process Regression -Maintainer: Jaroslav Hajek (hi...@gm...) +Maintainer: Jaroslav Hajek <hi...@gm...> Description: The package allows interpolating and smoothing scattered multidimensional data using Gaussian Process Regression (also known as Kriging). Projected Gaussian Process regression is also Modified: trunk/octave-forge/main/octproj/DESCRIPTION =================================================================== --- trunk/octave-forge/main/octproj/DESCRIPTION 2011-09-27 11:24:27 UTC (rev 8610) +++ trunk/octave-forge/main/octproj/DESCRIPTION 2011-09-27 12:34:58 UTC (rev 8611) @@ -1,8 +1,8 @@ Name: OctPROJ Version: 1.0.2 Date: 2011-05-13 -Author: José Luis García Pallero, <jgp...@gm...> -Maintainer: José Luis García Pallero, <jgp...@gm...> +Author: José Luis García Pallero <jgp...@gm...> +Maintainer: José Luis García Pallero <jgp...@gm...> Title: GNU Octave bindings to PROJ.4 Description: This package allows to call functions of PROJ.4 library for cartographic projections transformations. Modified: trunk/octave-forge/main/odebvp/DESCRIPTION =================================================================== --- trunk/octave-forge/main/odebvp/DESCRIPTION 2011-09-27 11:24:27 UTC (rev 8610) +++ trunk/octave-forge/main/odebvp/DESCRIPTION 2011-09-27 12:34:58 UTC (rev 8611) @@ -1,12 +1,12 @@ Name: odebvp Version: 1.0.6 Date: 2009-05-06 -Author: Tiago Charters de Azevedo -Maintainer: Tiago Charters de Azevedo -Title: Linear-difference method for linear odes - boundary-value problem -Description: To approximate the solution of the boundary-value problem y''=p(x)*y' + q(x)*y + r(x), a<=x<=b, y(a)=alpha, y(b)=beta by the linear finite-diffence method. -Categories: Ordinary Differential Equations -Autoload: yes +Author: Tiago Charters de Azevedo <tc...@di...> +Maintainer: Tiago Charters de Azevedo <tc...@di...> +Title: Linear-difference method for linear odes - boundary-value problem +Description: To approximate the solution of the boundary-value problem y''=p(x)*y' + q(x)*y + r(x), a<=x<=b, y(a)=alpha, y(b)=beta by the linear finite-diffence method. +Categories: Ordinary Differential Equations +Autoload: yes Depends: octave (>= 2.9.9) License: GPL version 2 or later Url: http://octave.sf.net Modified: trunk/octave-forge/main/odepkg/DESCRIPTION =================================================================== --- trunk/octave-forge/main/odepkg/DESCRIPTION 2011-09-27 11:24:27 UTC (rev 8610) +++ trunk/octave-forge/main/odepkg/DESCRIPTION 2011-09-27 12:34:58 UTC (rev 8611) @@ -1,10 +1,10 @@ Name: OdePkg Version: 0.8.0 Date: 2011-06-16 -Author: Thomas Treichl -Maintainer: Thomas Treichl -Title: OdePkg. -Description: A package for solving ordinary differential equations and more. +Author: Thomas Treichl <tr...@us...> +Maintainer: Thomas Treichl <tr...@us...> +Title: OdePkg +Description: A package for solving ordinary differential equations and more. Categories: Differential Equations Depends: octave (>= 3.2.0) Autoload: yes Modified: trunk/octave-forge/main/outliers/DESCRIPTION =================================================================== --- trunk/octave-forge/main/outliers/DESCRIPTION 2011-09-27 11:24:27 UTC (rev 8610) +++ trunk/octave-forge/main/outliers/DESCRIPTION 2011-09-27 12:34:58 UTC (rev 8611) @@ -1,8 +1,8 @@ Name: Outliers Version: 0.13.9 Date: 2009-05-06 -Author: Lukasz Komsta -Maintainer: Lukasz Komsta +Author: Lukasz Komsta <lu...@ul...> +Maintainer: Lukasz Komsta <lu...@ul...> Title: Outlier Detection Description: Grubbs, Dixon and Cochran tests for outlier detection and p-value approximating routines. Modified: trunk/octave-forge/main/physical-constants/DESCRIPTION =================================================================== --- trunk/octave-forge/main/physical-constants/DESCRIPTION 2011-09-27 11:24:27 UTC (rev 8610) +++ trunk/octave-forge/main/physical-constants/DESCRIPTION 2011-09-27 12:34:58 UTC (rev 8611) @@ -1,8 +1,8 @@ Name: PhysicalConstants Version: 0.1.7 Date: 2009-05-06 -Author: Muthiah Annamalai -Maintainer: Muthiah Annamalai +Author: Muthiah Annamalai <mut...@ut...> +Maintainer: Muthiah Annamalai <mut...@ut...> Title: Physical Constants Description: Physical Constants from Atomic & Molecular Physics, taken from NIST database Categories: Physics Modified: trunk/octave-forge/main/simp/DESCRIPTION =================================================================== --- trunk/octave-forge/main/simp/DESCRIPTION 2011-09-27 11:24:27 UTC (rev 8610) +++ trunk/octave-forge/main/simp/DESCRIPTION 2011-09-27 12:34:58 UTC (rev 8611) @@ -1,12 +1,13 @@ -Name: simp -Version: 1.1.0 -Date: 2/1/2009 -Author: Simone Pernice -Maintainer: Simone Pernice -Title: Single Interval Mathematics Package for Octave -Description: This package define the basic operations on intervals. It is useful when some values for a computation are incerte. -Categories: Interval Mathematics -Url: simonepernice.freehostia.com -Autoload: yes -License: GPL version 3 +Name: simp +Version: 1.1.0 +Date: 2/1/2009 +Author: Simone Pernice <pe...@li...> +Maintainer: Simone Pernice <pe...@li...> +Title: Single Interval Mathematics Package for Octave +Description: This package define the basic operations on intervals. It is useful + when some values for a computation are incerte. +Categories: Interval Mathematics +Url: simonepernice.freehostia.com +Autoload: yes +License: GPL version 3 Modified: trunk/octave-forge/main/splines/DESCRIPTION =================================================================== --- trunk/octave-forge/main/splines/DESCRIPTION 2011-09-27 11:24:27 UTC (rev 8610) +++ trunk/octave-forge/main/splines/DESCRIPTION 2011-09-27 12:34:58 UTC (rev 8611) @@ -1,8 +1,8 @@ Name: splines Version: 1.0.7 Date: 2009-05-06 -Author: Kai Habel and Paul Kienzle -Maintainer: Kai Habel and Paul Kienzle +Author: Kai Habel <kai...@gm...> and Paul Kienzle <pki...@us...> +Maintainer: Kai Habel <kai...@gm...> and Paul Kienzle <pki...@us...> Title: Splines. Description: Additional Cubic spline functions. Categories: Splines Modified: trunk/octave-forge/main/struct/DESCRIPTION =================================================================== --- trunk/octave-forge/main/struct/DESCRIPTION 2011-09-27 11:24:27 UTC (rev 8610) +++ trunk/octave-forge/main/struct/DESCRIPTION 2011-09-27 12:34:58 UTC (rev 8611) @@ -1,8 +1,8 @@ Name: Struct Version: 1.0.9 Date: 2011-02-25 -Author: Etienne Grossmann and Olaf Till <ola...@un...> -Maintainer: Etienne Grossmann +Author: Etienne Grossmann <et...@cs...> and Olaf Till <ola...@un...> +Maintainer: Etienne Grossmann <et...@cs...> Title: Structure Handling. Description: Additional Structure manipulations functions. Categories: Structs Modified: trunk/octave-forge/main/video/DESCRIPTION =================================================================== --- trunk/octave-forge/main/video/DESCRIPTION 2011-09-27 11:24:27 UTC (rev 8610) +++ trunk/octave-forge/main/video/DESCRIPTION 2011-09-27 12:34:58 UTC (rev 8611) @@ -1,7 +1,7 @@ Name: video Version: 1.0.2 Date: 2009-05-03 -Author: Stefan van der Walt, Roman Stanchak +Author: Stefan van der Walt <st...@su...> and Roman Stanchak Maintainer: The Octave Community Title: Video functions Description: Implements addframe, avifile, aviinfo, and aviread, using ffmpeg. (and approximately conforms to Matlab interface) Modified: trunk/octave-forge/main/vrml/DESCRIPTION =================================================================== --- trunk/octave-forge/main/vrml/DESCRIPTION 2011-09-27 11:24:27 UTC (rev 8610) +++ trunk/octave-forge/main/vrml/DESCRIPTION 2011-09-27 12:34:58 UTC (rev 8611) @@ -1,8 +1,8 @@ Name: Vrml Version: 1.0.12 Date: 2010-04-11 -Author: Etienne Grossmann -Maintainer: Etienne Grossmann +Author: Etienne Grossmann <et...@cs...> +Maintainer: Etienne Grossmann <et...@cs...> Title: VRML. Description: 3D graphics using VRML Depends: octave (>= 2.9.7), miscellaneous, struct, statistics Modified: trunk/octave-forge/main/zenity/DESCRIPTION =================================================================== --- trunk/octave-forge/main/zenity/DESCRIPTION 2011-09-27 11:24:27 UTC (rev 8610) +++ trunk/octave-forge/main/zenity/DESCRIPTION 2011-09-27 12:34:58 UTC (rev 8611) @@ -1,8 +1,8 @@ Name: Zenity Version: 0.5.7 Date: 2009-05-06 -Author: S\xF8ren Hauberg -Maintainer: S\xF8ren Hauberg +Author: S\xF8ren Hauberg <ha...@gm...> +Maintainer: S\xF8ren Hauberg <ha...@gm...> Title: Zenity Description: A set of functions for creating simple graphical user interfaces. It is currently possible to create This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jpi...@us...> - 2011-09-27 16:05:26
|
Revision: 8619 http://octave.svn.sourceforge.net/octave/?rev=8619&view=rev Author: jpicarbajal Date: 2011-09-27 16:05:17 +0000 (Tue, 27 Sep 2011) Log Message: ----------- mechanics-1.0.0: adding test and improving docstring Modified Paths: -------------- trunk/octave-forge/main/geometry/inst/svgpath2polygon.m trunk/octave-forge/main/mechanics/INDEX trunk/octave-forge/main/mechanics/inst/inertia_moment_ncpoly2d.m Modified: trunk/octave-forge/main/geometry/inst/svgpath2polygon.m =================================================================== --- trunk/octave-forge/main/geometry/inst/svgpath2polygon.m 2011-09-27 14:38:46 UTC (rev 8618) +++ trunk/octave-forge/main/geometry/inst/svgpath2polygon.m 2011-09-27 16:05:17 UTC (rev 8619) @@ -14,9 +14,9 @@ %% along with this program. If not, see <http://www.gnu.org/licenses/>. %% -*- texinfo -*- -%% @deftypefn {Function File} @var{P} = SVGpath2polygon (@var{SVGpath}) +%% @deftypefn {Function File} @var{P} = svgpath2polygon (@var{SVGpath}) %% Converts the SVG path structure @var{SVGpath} to an array of polygons -%% compatible with matGeom (@url{https://matgeom.sf.net}). +%% compatible with the geometry package and matGeom (@url{https://matgeom.sf.net}). %% %% @var{SVGpath} is a substructure of the SVG structure output by loadSVG. This %% function extracts the field named "coord" if there is only one path. If there Modified: trunk/octave-forge/main/mechanics/INDEX =================================================================== --- trunk/octave-forge/main/mechanics/INDEX 2011-09-27 14:38:46 UTC (rev 8618) +++ trunk/octave-forge/main/mechanics/INDEX 2011-09-27 16:05:17 UTC (rev 8619) @@ -1,6 +1,6 @@ mechanics >> Classical Mechanics 1D Mechanics - nloscilator + nloscillator setnloscillator pendulum setpendulum @@ -10,3 +10,4 @@ inertia_moment_poly2d inertia_moment_ncpoly2d second_moment_poly2d + Modified: trunk/octave-forge/main/mechanics/inst/inertia_moment_ncpoly2d.m =================================================================== --- trunk/octave-forge/main/mechanics/inst/inertia_moment_ncpoly2d.m 2011-09-27 14:38:46 UTC (rev 8618) +++ trunk/octave-forge/main/mechanics/inst/inertia_moment_ncpoly2d.m 2011-09-27 16:05:17 UTC (rev 8619) @@ -100,3 +100,19 @@ %! c3 = center_mass_poly2d(r3); I3 = inertia_moment_poly2d(r3,m3,c3); %! %! I1 + m1*sumsq(c1) + I2 + m2*sumsq(c2) + I3 + m3*sumsq(c3) + +%!test +%! poly = [0 0; 1 0; 1 0.25; 0.25 0.25; 0.25 0.75; 1 0.75; 1 1; 0 1]; +%! poly = poly - repmat(center_mass_poly2d(poly),size(poly,1),1); +%! A = area_poly2d(poly); +%! I = inertia_moment_ncpoly2d(poly,1) +%! % It should give (breaking C in rectangles) +%! r1 = [poly(1:3,:); poly(1,1) poly(3,2)]; a1 = area_poly2d(r1); m1 = abs(a1/A); +%! c1 = center_mass_poly2d(r1); I1 = inertia_moment_poly2d(r1,m1,c1); +%! r2 = [r1(4,:); poly(4:5,:); poly(1,1) poly(5,2)]; a2 = area_poly2d(r2); m2 = abs(a2/A); +%! c2 = center_mass_poly2d(r2); I2 = inertia_moment_poly2d(r2,m2,c2); +%! r3 = [poly(5:8,:); r2(4,:)]; a3 = area_poly2d(r3); m3 = abs(a3/A); +%! c3 = center_mass_poly2d(r3); I3 = inertia_moment_poly2d(r3,m3,c3); +%! I_shouldbe = I1 + m1*sumsq(c1) + I2 + m2*sumsq(c2) + I3 + m3*sumsq(c3); +%! assert(I,I_shouldbe) + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jpi...@us...> - 2011-09-27 16:52:38
|
Revision: 8621 http://octave.svn.sourceforge.net/octave/?rev=8621&view=rev Author: jpicarbajal Date: 2011-09-27 16:52:31 +0000 (Tue, 27 Sep 2011) Log Message: ----------- mechanics & geomatry. Correcting docstrings Modified Paths: -------------- trunk/octave-forge/main/geometry/inst/svgpath2polygon.m trunk/octave-forge/main/mechanics/inst/area_poly2d.m trunk/octave-forge/main/mechanics/inst/center_mass_poly2d.m trunk/octave-forge/main/mechanics/inst/inertia_moment_ncpoly2d.m trunk/octave-forge/main/mechanics/inst/inertia_moment_poly2d.m trunk/octave-forge/main/mechanics/inst/nloscillator.m trunk/octave-forge/main/mechanics/inst/pendulum.m trunk/octave-forge/main/mechanics/inst/second_moment_poly2d.m trunk/octave-forge/main/mechanics/inst/setnloscillator.m trunk/octave-forge/main/mechanics/inst/setpendulum.m Modified: trunk/octave-forge/main/geometry/inst/svgpath2polygon.m =================================================================== --- trunk/octave-forge/main/geometry/inst/svgpath2polygon.m 2011-09-27 16:08:51 UTC (rev 8620) +++ trunk/octave-forge/main/geometry/inst/svgpath2polygon.m 2011-09-27 16:52:31 UTC (rev 8621) @@ -16,7 +16,7 @@ %% -*- texinfo -*- %% @deftypefn {Function File} @var{P} = svgpath2polygon (@var{SVGpath}) %% Converts the SVG path structure @var{SVGpath} to an array of polygons -%% compatible with the geometry package and matGeom (@url{https://matgeom.sf.net}). +%% compatible with the geometry package and matGeom (@url{http://matgeom.sf.net}). %% %% @var{SVGpath} is a substructure of the SVG structure output by loadSVG. This %% function extracts the field named "coord" if there is only one path. If there Modified: trunk/octave-forge/main/mechanics/inst/area_poly2d.m =================================================================== --- trunk/octave-forge/main/mechanics/inst/area_poly2d.m 2011-09-27 16:08:51 UTC (rev 8620) +++ trunk/octave-forge/main/mechanics/inst/area_poly2d.m 2011-09-27 16:52:31 UTC (rev 8621) @@ -38,7 +38,7 @@ end %!demo -%! % A parametrized arbitrary triagle and its area +%! % A parametrized arbitrary triangle and its area %! %! triangle = @(a,b,h) [0 0; b 0; a h]; %! h = linspace(0.1,1,10); Modified: trunk/octave-forge/main/mechanics/inst/center_mass_poly2d.m =================================================================== --- trunk/octave-forge/main/mechanics/inst/center_mass_poly2d.m 2011-09-27 16:08:51 UTC (rev 8620) +++ trunk/octave-forge/main/mechanics/inst/center_mass_poly2d.m 2011-09-27 16:52:31 UTC (rev 8621) @@ -19,7 +19,7 @@ %% %% The polygon is described in @var{p}, where each row is a different vertex. %% The algorithm was adapted from P. Bourke web page -%% @uref{http://local.wasp.uwa.edu.au/~pbourke/geometry/polyarea/} +%% @url{http://local.wasp.uwa.edu.au/~pbourke/geometry/polyarea/} %% %% @seealso{inertia_moment_poly2d, area_poly2d} %% @end deftypefn Modified: trunk/octave-forge/main/mechanics/inst/inertia_moment_ncpoly2d.m =================================================================== --- trunk/octave-forge/main/mechanics/inst/inertia_moment_ncpoly2d.m 2011-09-27 16:08:51 UTC (rev 8620) +++ trunk/octave-forge/main/mechanics/inst/inertia_moment_ncpoly2d.m 2011-09-27 16:52:31 UTC (rev 8621) @@ -28,7 +28,7 @@ %% To change a general polygon to this description you can use: %% @code{P = P - repmat(center_mass_poly2d(P),size(P,1))}. %% -%% @seealso{} +%% @seealso{inertia_moment_poly2d, center_mass_poly2d} %% @end deftypefn function I = inertia_moment_ncpoly2d (poly, M) Modified: trunk/octave-forge/main/mechanics/inst/inertia_moment_poly2d.m =================================================================== --- trunk/octave-forge/main/mechanics/inst/inertia_moment_poly2d.m 2011-09-27 16:08:51 UTC (rev 8620) +++ trunk/octave-forge/main/mechanics/inst/inertia_moment_poly2d.m 2011-09-27 16:52:31 UTC (rev 8621) @@ -19,7 +19,7 @@ %% %% The polygon is described in @var{p}, where each row is a different vertex. %% @var{m} is the total mass of the polygon, assumed uniformly distributed. -%% The optinal argument @var{offset} is an origin translation vector. All vertex +%% The optional argument @var{offset} is an origin translation vector. All vertex %% are transformed to the reference frame with origin at @var{offset} respect to %% the center of mass. %% @@ -28,7 +28,6 @@ %% To change a general polygon to this description you can use: %% @code{P = P - repmat(center_mass_poly2d(P),size(P,1))}. %% -%% @seealso{} %% @end deftypefn function I = inertia_moment_poly2d(poly,mass,offset=[0 0]) Modified: trunk/octave-forge/main/mechanics/inst/nloscillator.m =================================================================== --- trunk/octave-forge/main/mechanics/inst/nloscillator.m 2011-09-27 16:08:51 UTC (rev 8620) +++ trunk/octave-forge/main/mechanics/inst/nloscillator.m 2011-09-27 16:52:31 UTC (rev 8621) @@ -14,8 +14,8 @@ %% along with this program. If not, see <http://www.gnu.org/licenses/>. %% -*- texinfo -*- -%% @deftypefn {Function File} {[ @var{dotx}, @var{dotxdx}, @var{u}] =} nloscilator (@var{t}, @var{x}, @{opt}) -%% Implements a general nonlinear ocscilator. +%% @deftypefn {Function File} {[ @var{dotx}, @var{dotxdx}, @var{u}] =} nloscillator (@var{t}, @var{x}, @var{opt}) +%% Implements a general nonlinear oscillator. %% @tex %% $$ %% \ddot{q} + p(q) + g(\dot{q}) = f(t,q,\dot{q}) @@ -29,7 +29,7 @@ %% %% @end ifnottex %% @noindent -%% where q is the configuration of the system and p(q), g(q') are homogenous +%% where q is the configuration of the system and p(q), g(q') are homogeneous %% polynomials of arbitrary degree. %% @tex %% $$ @@ -61,24 +61,25 @@ %% the number of time values given. The first row corresponds to the configurations %% of the system and the second row to its derivatives with respect to time. %% -%% @var{opt}: An options strcuture. See the complementary function +%% @var{opt}: An options structure. See the complementary function %% @code{setnloscillator}. The structure containing the fields: %% %% @code{Coefficients}: Contains a vector of coefficients for p(x). It follows -%% the format used for function ppval @code{opt.Coefficients(i) = a_{P+1-i}}. +%% the format used for function ppval @code{opt.Coefficients(i) = a(P+1-i)}. %% -%% @code{Damping}: Containst a vector of the coefficients for g(x'). Same format +%% @code{Damping}: Contains a vector of the coefficients for g(x'). Same format %% as before. %% %% @code{Actuation}: An optional field of the structure. If it is present, it %% defines the function f(t,q,q'). It can be a handle to a function of the form f = -%% func(@var{t},@var{x},@var{opt}) or it can be a @code{1xnT} vector. +%% func(@var{t}, @var{x}, @var{opt}) or it can be a @code{1xnT} vector. %% %% @strong{OUTPUT} %% %% @var{dotx}: Derivative of the state space vector with respect to time. A @code{2xnT} array. %% -%% @var{dotxdx}: When requested, it contains the Jacobian of the system. It is a multidimensional array of size @code{2x2xnT}. +%% @var{dotxdx}: When requested, it contains the Jacobian of the system. It is a +%% multidimensional array of size @code{2x2xnT}. %% %% @var{u}: If present, the function returns the inputs that generate the %% sequence of state space vectors provided in @var{x}. To do this the functions Modified: trunk/octave-forge/main/mechanics/inst/pendulum.m =================================================================== --- trunk/octave-forge/main/mechanics/inst/pendulum.m 2011-09-27 16:08:51 UTC (rev 8620) +++ trunk/octave-forge/main/mechanics/inst/pendulum.m 2011-09-27 16:52:31 UTC (rev 8621) @@ -14,7 +14,7 @@ %% along with this program. If not, see <http://www.gnu.org/licenses/>. %% -*- texinfo -*- -%% @deftypefn {Function File} {[ @var{dotx}, @var{dotxdx}, @var{u}] =} pendulum (@var{t}, @var{x}, @{opt}) +%% @deftypefn {Function File} {[ @var{dotx}, @var{dotxdx}, @var{u}] =} pendulum (@var{t}, @var{x}, @var{opt}) %% Implements a general pendulum. %% @tex %% $$ @@ -31,8 +31,6 @@ %% @noindent %% where q is the angle of the pendulum and q' its angular velocity %% -%% @end ifnottex -%% %% This function can be used with the ODE integrators. %% %% @strong{INPUTS} @@ -43,12 +41,12 @@ %% the number of time values given. The first row corresponds to the configurations %% of the system and the second row to its derivatives with respect to time. %% -%% @var{opt}: An options strcuture. See the complementary function +%% @var{opt}: An options structure. See the complementary function %% @code{setpendulum}. The structure containing the fields: %% %% @code{Coefficients}: Contains the coefficients (g/l). %% -%% @code{Damping}: Containst the coefficient d. +%% @code{Damping}: Contains the coefficient d. %% %% @code{Actuation}: An optional field of the structure. If it is present, it %% defines the function f(t,q,q'). It can be a handle to a function of the form f = Modified: trunk/octave-forge/main/mechanics/inst/second_moment_poly2d.m =================================================================== --- trunk/octave-forge/main/mechanics/inst/second_moment_poly2d.m 2011-09-27 16:08:51 UTC (rev 8620) +++ trunk/octave-forge/main/mechanics/inst/second_moment_poly2d.m 2011-09-27 16:52:31 UTC (rev 8621) @@ -21,7 +21,7 @@ %% The output @var{J} contains Ix, Iy and Ixy, in that order. %% %% The algorithm was adapted from P. Bourke web page -%% @uref{http://local.wasp.uwa.edu.au/~pbourke/geometry/polyarea/} +%% @url{http://local.wasp.uwa.edu.au/~pbourke/geometry/polyarea/} %% %% @seealso{inertia_moment_poly2d, center_mass_poly2d} %% @end deftypefn Modified: trunk/octave-forge/main/mechanics/inst/setnloscillator.m =================================================================== --- trunk/octave-forge/main/mechanics/inst/setnloscillator.m 2011-09-27 16:08:51 UTC (rev 8620) +++ trunk/octave-forge/main/mechanics/inst/setnloscillator.m 2011-09-27 16:52:31 UTC (rev 8621) @@ -15,8 +15,8 @@ %% -*- texinfo -*- %% @deftypefn {Function File} {[ @var{opts}, @var{desc}] =} setnloscilator () -%% Returns the requiered options structure for the function nloscillator and a -%% description of the fileds in the structure. +%% Returns the required options structure for the function nloscillator and a +%% description of the fields in the structure. %% %% @seealso{nloscillator} %% @end deftypefn @@ -26,14 +26,14 @@ required_fields = {'Coefficients','Damping'}; reqf_default = {[0.5 0 1];0.01}; reqf_description = {['Coefficients for the spring polynomial without ' ... - 'homogenous part. The number of elements is the degree ' ... + 'homogeneous part. The number of elements is the degree ' ... 'of the polynomial. the first element is the leading coefficient.'];... ['Coefficients for the damping polynomial without ' ... - 'homogenous part. The number of elements is the degree ' ... + 'homogeneous part. The number of elements is the degree ' ... 'of the polynomial. the first element is the leading coefficient.']}; optional_fields = {'Actuation'}; -optf_description = {['Optinonal field. It defines the forcing function (source)'... +optf_description = {['Optional field. It defines the forcing function (source)'... 'f(t). It can be a handle to a function of the form f = func(t,x,opt)' ... 'or it can be a 1xnT array.']}; Modified: trunk/octave-forge/main/mechanics/inst/setpendulum.m =================================================================== --- trunk/octave-forge/main/mechanics/inst/setpendulum.m 2011-09-27 16:08:51 UTC (rev 8620) +++ trunk/octave-forge/main/mechanics/inst/setpendulum.m 2011-09-27 16:52:31 UTC (rev 8621) @@ -15,8 +15,8 @@ %% -*- texinfo -*- %% @deftypefn {Function File} {[ @var{opts}, @var{desc}] =} setpendulum () -%% Returns the requiered options structure for the function pendulum and a -%% description of the fileds in the structure. +%% Returns the required options structure for the function pendulum and a +%% description of the fields in the structure. %% %% @seealso{pendulum} %% @end deftypefn @@ -25,11 +25,11 @@ required_fields = {'Coefficients','Damping'}; reqf_default = {1;0}; -reqf_description = {['Ration (g/l), relation between gravity and legnth of the pendulum'];... +reqf_description = {['Ration (g/l), relation between gravity and length of the pendulum'];... ['Damping coefficient, damping is proportional to angular speed.']}; optional_fields = {'Actuation'}; -optf_description = {['Optinonal field. It defines the forcing function (source)'... +optf_description = {['Optional field. It defines the forcing function (source)'... "f(t,q,q'). It can be a handle to a function of the form f = func(t,x,opt)" ... 'or it can be a 1xnT array.']}; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jpi...@us...> - 2011-10-13 07:43:38
|
Revision: 8737 http://octave.svn.sourceforge.net/octave/?rev=8737&view=rev Author: jpicarbajal Date: 2011-10-13 07:43:26 +0000 (Thu, 13 Oct 2011) Log Message: ----------- geometry. continue adding points2d Modified Paths: -------------- trunk/octave-forge/main/mechanics/doc/matrixforce.svg trunk/octave-forge/main/mechanics/inst/forcematrix.m Added Paths: ----------- trunk/octave-forge/main/geometry/geom2d/inst/midPoint.m trunk/octave-forge/main/geometry/geom2d/inst/polarPoint.m Removed Paths: ------------- trunk/octave-forge/main/geometry/matGeom_raw/Tests/geom2d/testMidPoint.m trunk/octave-forge/main/geometry/matGeom_raw/geom2d/midPoint.m trunk/octave-forge/main/geometry/matGeom_raw/geom2d/polarPoint.m Copied: trunk/octave-forge/main/geometry/geom2d/inst/midPoint.m (from rev 8731, trunk/octave-forge/main/geometry/matGeom_raw/geom2d/midPoint.m) =================================================================== --- trunk/octave-forge/main/geometry/geom2d/inst/midPoint.m (rev 0) +++ trunk/octave-forge/main/geometry/geom2d/inst/midPoint.m 2011-10-13 07:43:26 UTC (rev 8737) @@ -0,0 +1,170 @@ +%% Copyright (c) 2011, INRA +%% 2010-2011, David Legland <dav...@gr...> +%% 2011 Adapted to Octave by Juan Pablo Carbajal <car...@if...> +%% +%% All rights reserved. +%% (simplified BSD License) +%% +%% Redistribution and use in source and binary forms, with or without +%% modification, are permitted provided that the following conditions are met: +%% +%% 1. Redistributions of source code must retain the above copyright notice, this +%% list of conditions and the following disclaimer. +%% +%% 2. Redistributions in binary form must reproduce the above copyright notice, +%% this list of conditions and the following disclaimer in the documentation +%% and/or other materials provided with the distribution. +%% +%% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +%% AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +%% IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +%% ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +%% LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +%% CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +%% SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +%% INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +%% CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +%% ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +%% POSSIBILITY OF SUCH DAMAGE. +%% +%% The views and conclusions contained in the software and documentation are +%% those of the authors and should not be interpreted as representing official +%% policies, either expressed or implied, of copyright holder. + +%% -*- texinfo -*- +%% @deftypefn {Function File} {@var{mid} = } midPoint (@var{p1}, @var{p2}) +%% @deftypefn {Function File} {@var{mid} = } midPoint (@var{edge}) +%% @deftypefn {Function File} {[@var{midx}, @var{midy}] = } midPoint (@var{edge}) +%% Middle point of two points or of an edge +%% +%% Computes the middle point of the two points @var{p1} and @var{p2}. +%% +%% If an edge is given, computes the middle point of the edge given by @var{edge}. +%% @var{edge} has the format: [X1 Y1 X2 Y2], and @var{mid} has the format [XMID YMID], +%% with XMID = (X1+X2)/2, and YMID = (Y1+Y2)/2. +%% +%% If two output arguments are given, it returns the result as two separate variables or arrays. +%% +%% Works also when @var{edge} is a N-by-4 array, in this case the result is a +%% N-by-2 array containing the midpoint of each edge. +%% +%% Example +%% +%% @example +%% p1 = [10 20]; +%% p2 = [30 40]; +%% midPoint([p1 p2]) +%% ans = +%% 20 30 +%% @end example +%% +%% @seealso{edges2d, points2d} +%% @end deftypefn + +function varargout = midPoint(varargin) + + if nargin == 1 + % input is an edge + edge = varargin{1}; + mid = [mean(edge(:, [1 3]), 2) mean(edge(:, [2 4]), 2)]; + + elseif nargin == 2 + % input are two points + p1 = varargin{1}; + p2 = varargin{2}; + + % assert inputs are equal + n1 = size(p1, 1); + n2 = size(p2, 1); + if n1 != n2 && min(n1, n2)>1 + error('geom2d:midPoint', ... + 'Inputs must have same size, or one must have length 1'); + end + + % compute middle point + mid = bsxfun(@plus, p1, p2) / 2; + end + + % process output arguments + if nargout<=1 + varargout{1} = mid; + else + varargout = {mid(:,1), mid(:,2)}; + end + +endfunction + +%!test +%! p1 = [10 20]; +%! p2 = [30 40]; +%! exp = [20 30]; +%! mid = midPoint(p1, p2); +%! assert (mid, exp); + +%!test +%! p1 = [ ... +%! 10 20 ; ... +%! 30 40 ; ... +%! 50 60 ; ... +%! ]; +%! p2 = [ ... +%! 30 40; ... +%! 50 60; ... +%! 70 80]; +%! exp = [... +%! 20 30; ... +%! 40 50; ... +%! 60 70]; +%! mid = midPoint(p1, p2); +%! assert (mid, exp); + +%!test +%! p1 = [30 40]; +%! p2 = [ ... +%! 30 40; ... +%! 50 60; ... +%! 70 80]; +%! exp = [... +%! 30 40; ... +%! 40 50; ... +%! 50 60]; +%! mid = midPoint(p1, p2); +%! assert (mid, exp); + +%!test +%! p1 = [ ... +%! 10 20 ; ... +%! 30 40 ; ... +%! 50 60 ; ... +%! ]; +%! p2 = [30 40]; +%! exp = [... +%! 20 30; ... +%! 30 40; ... +%! 40 50]; +%! mid = midPoint(p1, p2); +%! assert (mid, exp); + +%!test +%! p1 = [ ... +%! 10 20 ; ... +%! 30 40 ; ... +%! 50 60 ; ... +%! ]; +%! p2 = [30 40]; +%! expX = [20 ; 30 ; 40]; +%! expY = [30 ; 40 ; 50]; +%! [x y] = midPoint(p1, p2); +%! assert (x, expX); +%! assert (y, expY); + +%!test +%! edge = [10 20 30 40]; +%! exp = [20 30]; +%! mid = midPoint(edge); +%! assert (mid, exp); +%! edge = [10 20 30 40; 30 40 50 60; 50 60 70 80]; +%! exp = [20 30;40 50; 60 70]; +%! mid = midPoint(edge); +%! assert (mid, exp); + Copied: trunk/octave-forge/main/geometry/geom2d/inst/polarPoint.m (from rev 8731, trunk/octave-forge/main/geometry/matGeom_raw/geom2d/polarPoint.m) =================================================================== --- trunk/octave-forge/main/geometry/geom2d/inst/polarPoint.m (rev 0) +++ trunk/octave-forge/main/geometry/geom2d/inst/polarPoint.m 2011-10-13 07:43:26 UTC (rev 8737) @@ -0,0 +1,83 @@ +%% Copyright (c) 2011, INRA +%% 2004-2011, David Legland <dav...@gr...> +%% 2011 Adapted to Octave by Juan Pablo Carbajal <car...@if...> +%% +%% All rights reserved. +%% (simplified BSD License) +%% +%% Redistribution and use in source and binary forms, with or without +%% modification, are permitted provided that the following conditions are met: +%% +%% 1. Redistributions of source code must retain the above copyright notice, this +%% list of conditions and the following disclaimer. +%% +%% 2. Redistributions in binary form must reproduce the above copyright notice, +%% this list of conditions and the following disclaimer in the documentation +%% and/or other materials provided with the distribution. +%% +%% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +%% AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +%% IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +%% ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +%% LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +%% CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +%% SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +%% INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +%% CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +%% ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +%% POSSIBILITY OF SUCH DAMAGE. +%% +%% The views and conclusions contained in the software and documentation are +%% those of the authors and should not be interpreted as representing official +%% policies, either expressed or implied, of copyright holder. + +%% -*- texinfo -*- +%% @deftypefn {Function File} {@var{point} = } polarPoint (@var{rho}, @var{theta}) +%% @deftypefnx {Function File} {@var{point} = } polarPoint (@var{theta}) +%% @deftypefnx {Function File} {@var{point} = } polarPoint (@var{point}, @var{rho}, @var{theta}) +%% @deftypefnx {Function File} {@var{point} = } polarPoint (@var{x0}, @var{y0}, @var{rho}, @var{theta}) +%%Create a point from polar coordinates (rho + theta) +%% +%% Creates a point using polar coordinate. @var{theta} is angle with horizontal +%% (counted counter-clockwise, and in radians), and @var{rho} is the distance to +%% origin. If only angle is given radius @var{rho} is assumed to be 1. +%% +%% If a point is given, adds the coordinate of the point to the coordinate of the specified +%% point. For example, creating a point with : +%% P = polarPoint([10 20], 30, pi/2); +%% will give a result of [40 20]. +%% +%% @seealso{points2d} +%% @end deftypefn + +function point = polarPoint(varargin) + + % default values + x0 = 0; y0=0; + rho = 1; + theta =0; + + % process input parameters + if length(varargin)==1 + theta = varargin{1}; + elseif length(varargin)==2 + rho = varargin{1}; + theta = varargin{2}; + elseif length(varargin)==3 + var = varargin{1}; + x0 = var(:,1); + y0 = var(:,2); + rho = varargin{2}; + theta = varargin{3}; + elseif length(varargin)==4 + x0 = varargin{1}; + y0 = varargin{2}; + rho = varargin{3}; + theta = varargin{4}; + end + + point = [x0 + rho.*cos(theta) , y0+rho.*sin(theta)]; + +endfunction + + Deleted: trunk/octave-forge/main/geometry/matGeom_raw/Tests/geom2d/testMidPoint.m =================================================================== --- trunk/octave-forge/main/geometry/matGeom_raw/Tests/geom2d/testMidPoint.m 2011-10-13 07:42:00 UTC (rev 8736) +++ trunk/octave-forge/main/geometry/matGeom_raw/Tests/geom2d/testMidPoint.m 2011-10-13 07:43:26 UTC (rev 8737) @@ -1,111 +0,0 @@ -function test_suite = testMidPoint(varargin) %#ok<STOUT> -% One-line description here, please. -% output = testMidPoint(input) -% -% Example -% testMidPoint -% -% See also -% -% -% ------ -% Author: David Legland -% e-mail: dav...@gr... -% Created: 2009-04-22, using Matlab 7.7.0.471 (R2008b) -% Copyright 2009 INRA - Cepia Software Platform. - -initTestSuite; - -function test_twoPoints %#ok<*DEFNU> - -p1 = [10 20]; -p2 = [30 40]; -exp = [20 30]; -mid = midPoint(p1, p2); -assertEqual(exp, mid); - - -function test_twoPointArrays - -p1 = [ ... - 10 20 ; ... - 30 40 ; ... - 50 60 ; ... - ]; -p2 = [ ... - 30 40; ... - 50 60; ... - 70 80]; -exp = [... - 20 30; ... - 40 50; ... - 60 70]; - -mid = midPoint(p1, p2); -assertEqual(exp, mid); - -function test_pointArray - -p1 = [30 40]; -p2 = [ ... - 30 40; ... - 50 60; ... - 70 80]; -exp = [... - 30 40; ... - 40 50; ... - 50 60]; - -mid = midPoint(p1, p2); -assertEqual(exp, mid); - -function test_arrayPoint - -p1 = [ ... - 10 20 ; ... - 30 40 ; ... - 50 60 ; ... - ]; -p2 = [30 40]; -exp = [... - 20 30; ... - 30 40; ... - 40 50]; - -mid = midPoint(p1, p2); -assertEqual(exp, mid); - - -function test_returnTwoOutputs - -p1 = [ ... - 10 20 ; ... - 30 40 ; ... - 50 60 ; ... - ]; -p2 = [30 40]; - -expX = [20 ; 30 ; 40]; -expY = [30 ; 40 ; 50]; - -[x y] = midPoint(p1, p2); -assertEqual(expX, x); -assertEqual(expY, y); - - - -function test_edge - -edge = [10 20 30 40]; -exp = [20 30]; -mid = midPoint(edge); -assertEqual(exp, mid); - - -function test_edgeArray - -edge = [10 20 30 40; 30 40 50 60; 50 60 70 80]; -exp = [20 30;40 50; 60 70]; -mid = midPoint(edge); -assertEqual(exp, mid); - Deleted: trunk/octave-forge/main/geometry/matGeom_raw/geom2d/midPoint.m =================================================================== --- trunk/octave-forge/main/geometry/matGeom_raw/geom2d/midPoint.m 2011-10-13 07:42:00 UTC (rev 8736) +++ trunk/octave-forge/main/geometry/matGeom_raw/geom2d/midPoint.m 2011-10-13 07:43:26 UTC (rev 8737) @@ -1,96 +0,0 @@ -%% Copyright (c) 2011, INRA -%% 2007-2011, David Legland <dav...@gr...> -%% 2011 Adapted to Octave by Juan Pablo Carbajal <car...@if...> -%% -%% All rights reserved. -%% (simplified BSD License) -%% -%% Redistribution and use in source and binary forms, with or without -%% modification, are permitted provided that the following conditions are met: -%% -%% 1. Redistributions of source code must retain the above copyright notice, this -%% list of conditions and the following disclaimer. -%% -%% 2. Redistributions in binary form must reproduce the above copyright notice, -%% this list of conditions and the following disclaimer in the documentation -%% and/or other materials provided with the distribution. -%% -%% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -%% AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -%% IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -%% ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -%% LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -%% CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -%% SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -%% INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -%% CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -%% ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -%% POSSIBILITY OF SUCH DAMAGE. -%% -%% The views and conclusions contained in the software and documentation are -%% those of the authors and should not be interpreted as representing official -%% policies, either expressed or implied, of copyright holder. - - -function varargout = midPoint(varargin) -%MIDPOINT Middle point of two points or of an edge -% -% MID = midPoint(P1, P2) -% Compute the middle point of the two points P1 and P2. -% -% MID = midPoint(EDGE) -% Compute the middle point of the edge given by EDGE. -% EDGE has the format: [X1 Y1 X2 Y2], and MID has the format [XMID YMID], -% with XMID = (X1+X2)/2, and YMID = (Y1+Y2)/2. -% -% [MIDX MIDY] = midPoint(...) -% Return the result as two separate variables or arrays. -% -% Works also when EDGE is a N-by-4 array, in this case the result is a -% N-by-2 array containing the midpoint of each edge. -% -% -% Example -% P1 = [10 20]; -% P2 = [30 40]; -% midPoint([P1 P2]) -% ans = -% 20 30 -% -% See also -% edges2d, points2d -% -% ------ -% Author: David Legland -% e-mail: dav...@gr... -% Created: 2010-08-06, using Matlab 7.9.0.529 (R2009b) -% Copyright 2010 INRA - Cepia Software Platform. - -if nargin == 1 - % input is an edge - edge = varargin{1}; - mid = [mean(edge(:, [1 3]), 2) mean(edge(:, [2 4]), 2)]; - -elseif nargin == 2 - % input are two points - p1 = varargin{1}; - p2 = varargin{2}; - - % assert inputs are equal - n1 = size(p1, 1); - n2 = size(p2, 1); - if n1~=n2 && min(n1, n2)>1 - error('geom2d:midPoint', ... - 'Inputs must have same size, or one must have length 1'); - end - - % compute middle point - mid = bsxfun(@plus, p1, p2) / 2; -end - -% process output arguments -if nargout<=1 - varargout{1} = mid; -else - varargout = {mid(:,1), mid(:,2)}; -end Deleted: trunk/octave-forge/main/geometry/matGeom_raw/geom2d/polarPoint.m =================================================================== --- trunk/octave-forge/main/geometry/matGeom_raw/geom2d/polarPoint.m 2011-10-13 07:42:00 UTC (rev 8736) +++ trunk/octave-forge/main/geometry/matGeom_raw/geom2d/polarPoint.m 2011-10-13 07:43:26 UTC (rev 8737) @@ -1,90 +0,0 @@ -%% Copyright (c) 2011, INRA -%% 2007-2011, David Legland <dav...@gr...> -%% 2011 Adapted to Octave by Juan Pablo Carbajal <car...@if...> -%% -%% All rights reserved. -%% (simplified BSD License) -%% -%% Redistribution and use in source and binary forms, with or without -%% modification, are permitted provided that the following conditions are met: -%% -%% 1. Redistributions of source code must retain the above copyright notice, this -%% list of conditions and the following disclaimer. -%% -%% 2. Redistributions in binary form must reproduce the above copyright notice, -%% this list of conditions and the following disclaimer in the documentation -%% and/or other materials provided with the distribution. -%% -%% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -%% AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -%% IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -%% ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -%% LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -%% CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -%% SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -%% INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -%% CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -%% ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -%% POSSIBILITY OF SUCH DAMAGE. -%% -%% The views and conclusions contained in the software and documentation are -%% those of the authors and should not be interpreted as representing official -%% policies, either expressed or implied, of copyright holder. - - -function point = polarPoint(varargin) -%POLARPOINT Create a point from polar coordinates (rho + theta) -% -% POINT = polarPoint(RHO, THETA); -% Creates a point using polar coordinate. THETA is angle with horizontal -% (counted counter-clockwise, and in radians), and RHO is the distance to -% origin. -% -% POINT = polarPoint(THETA) -% Specify angle, radius RHO is assumed to be 1. -% -% POINT = polarPoint(POINT, RHO, THETA) -% POINT = polarPoint(X0, Y0, RHO, THETA) -% Adds the coordinate of the point to the coordinate of the specified -% point. For example, creating a point with : -% P = polarPoint([10 20], 30, pi/2); -% will give a result of [40 20]. -% -% -% See Also: -% points2d -% -% --------- -% -% author : David Legland -% INRA - TPV URPOI - BIA IMASTE -% created the 03/05/2004 -% - - -% default values -x0 = 0; y0=0; -rho = 1; -theta =0; - -% process input parameters -if length(varargin)==1 - theta = varargin{1}; -elseif length(varargin)==2 - rho = varargin{1}; - theta = varargin{2}; -elseif length(varargin)==3 - var = varargin{1}; - x0 = var(:,1); - y0 = var(:,2); - rho = varargin{2}; - theta = varargin{3}; -elseif length(varargin)==4 - x0 = varargin{1}; - y0 = varargin{2}; - rho = varargin{3}; - theta = varargin{4}; -end - - -point = [x0 + rho.*cos(theta) , y0+rho.*sin(theta)]; Modified: trunk/octave-forge/main/mechanics/doc/matrixforce.svg =================================================================== --- trunk/octave-forge/main/mechanics/doc/matrixforce.svg 2011-10-13 07:42:00 UTC (rev 8736) +++ trunk/octave-forge/main/mechanics/doc/matrixforce.svg 2011-10-13 07:43:26 UTC (rev 8737) @@ -43,23 +43,22 @@ transform="translate(-4.9874977,-691.71587)" id="layer1"> <g - transform="matrix(0.69847758,0,0,0.69847758,-57.947274,598.20354)" - id="g5703"> + id="g7118"> <path - d="m 581.93141,381.32609 -149.6069,-0.11204 0.24125,-127.94604 48.07011,0 0,39.63946 53.02389,0 0,44.11997 48.54829,0 z" + d="m 348.51877,864.55126 -104.49707,-0.0782 0.16851,-89.36744 33.5759,0 0,27.68727 37.03599,0 0,30.81681 33.9099,0 z" id="path4321" - style="fill:#f4d7d7;stroke:#ff0000;stroke-width:4.29505587;stroke-miterlimit:4;stroke-dasharray:none" /> + style="fill:#f4d7d7;stroke:#ff0000;stroke-width:3.00000024;stroke-miterlimit:4;stroke-dasharray:none" /> <path - d="m 288.57143,378.07647 0,-176.82982 M 82.857143,583.79075 288.57143,378.07647 596.14099,460.48948" + d="m 143.6134,862.28148 0,-123.51167 M 6.9976505,999.90738 143.6134,862.28148 358.44384,919.84512" id="path2987" - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.86337042;stroke-linecap:square;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> <path d="m -462.64987,201.81374 a 18.182745,18.182745 0 1 1 -36.36549,0 18.182745,18.182745 0 1 1 36.36549,0 z" - transform="translate(658.61946,131.31983)" + transform="matrix(0.69847758,0,0,0.69847758,402.08365,689.9275)" id="path3758" style="fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.86337042;stroke-linecap:square;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> <use - transform="translate(145.46197,169.70563)" + transform="translate(101.60192,118.53558)" id="use3760" x="0" y="0" @@ -67,11 +66,11 @@ height="1052.3622" xlink:href="#path3758" /> <path - d="M 181.42857,332.00504 380,206.6479" + d="M 68.776515,830.10162 207.47421,742.54247" id="path5550" - style="fill:#f4d7d7;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:2.86337042;stroke-miterlimit:4;stroke-dasharray:none" /> + style="fill:#f4d7d7;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" /> <use - transform="translate(202.03051,-125.25892)" + transform="translate(141.11378,-87.490547)" id="use3762" x="0" y="0" @@ -79,11 +78,11 @@ height="1052.3622" xlink:href="#path3758" /> <path - d="m 182.79259,331.64584 60.47566,-39.70589" + d="M 69.729252,829.85072 111.97014,802.11705" id="path3764" - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:5.72674084;stroke-linecap:square;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker-end:url(#Arrow1Mend)" /> + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:4;stroke-linecap:square;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker-end:url(#Arrow1Mend)" /> <use - transform="matrix(-1,0,0,-1,559.72439,539.55794)" + transform="matrix(-1,0,0,-1,275.06039,1573.2762)" id="use4210" x="0" y="0" @@ -91,11 +90,11 @@ height="1052.3622" xlink:href="#path3764" /> <path - d="M 180.00001,334.50504 322.5,504.1479" + d="M 67.778697,831.84781 167.31175,950.33955" id="path5550-3" - style="fill:#f4d7d7;fill-opacity:1;fill-rule:evenodd;stroke:#00ff00;stroke-width:2.86337042;stroke-miterlimit:4;stroke-dasharray:none" /> + style="fill:#f4d7d7;fill-opacity:1;fill-rule:evenodd;stroke:#00ff00;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" /> <use - transform="matrix(-0.12264843,-0.99245018,0.99245018,-0.12264843,15.281304,725.72055)" + transform="matrix(-0.12264843,-0.99245018,0.99245018,-0.12264843,-648.06798,1120.962)" id="use4212" x="0" y="0" @@ -103,7 +102,7 @@ height="1052.3622" xlink:href="#path3764" /> <use - transform="matrix(0.1175048,0.99307231,-0.99307231,0.1175048,488.86273,114.90074)" + transform="matrix(0.1175048,0.99307231,-0.99307231,0.1175048,884.38084,665.71318)" id="use4214" x="0" y="0" @@ -111,40 +110,40 @@ height="1052.3622" xlink:href="#path3764" /> <text - x="167.61383" - y="319.18619" + x="59.405006" + y="824.0293" transform="scale(1.0048167,0.99520638)" id="text4216" xml:space="preserve" - style="font-size:35.37379074px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;line-height:125%;writing-mode:lr-tb;text-anchor:end;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"><tspan - x="167.61383" - y="319.18619" + style="font-size:24.70779991px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;line-height:125%;writing-mode:lr-tb;text-anchor:end;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"><tspan + x="59.405006" + y="824.0293" id="tspan4218" style="fill:#000000;stroke:none">1</tspan></text> <text - x="358.59869" - y="496.20111" + x="192.80365" + y="947.67029" transform="scale(1.0048167,0.99520638)" id="text4220" xml:space="preserve" - style="font-size:35.37379074px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;line-height:125%;writing-mode:lr-tb;text-anchor:end;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"><tspan - x="358.59869" - y="496.20111" + style="font-size:24.70779991px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;line-height:125%;writing-mode:lr-tb;text-anchor:end;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"><tspan + x="192.80365" + y="947.67029" id="tspan4222" style="fill:#000000;stroke:none">2</tspan></text> <text - x="404.79578" - y="186.9458" + x="225.07127" + y="731.66235" transform="scale(1.0048167,0.99520638)" id="text4224" xml:space="preserve" - style="font-size:35.37379074px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;line-height:125%;writing-mode:lr-tb;text-anchor:end;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"><tspan - x="404.79578" - y="186.9458" + style="font-size:24.70779991px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;line-height:125%;writing-mode:lr-tb;text-anchor:end;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"><tspan + x="225.07127" + y="731.66235" id="tspan4226" style="fill:#000000;stroke:none">3</tspan></text> <g - transform="matrix(0.71085332,0,0,0.71085332,-343.31297,-8.4977897)" + transform="matrix(0.49651511,0,0,0.49651511,-297.74369,592.26802)" id="g4249"> <g transform="matrix(1.0629921,0,0,-1.0629921,-186.02362,789.27165)" @@ -154,16 +153,16 @@ d="m 1106.1,329.19 0.1,0.16 0,0.16 0,0.15 0.1,0.14 0,0.14 0.1,0.12 0,0.13 0.1,0.11 0,0.11 0.1,0.1 0,0.1 0.1,0.09 0.1,0.08 0,0.08 0.1,0.08 0.1,0.06 0.1,0.07 0.2,0.05 0.1,0.06 0.1,0.05 0.2,0.04 0.1,0.02 0.1,0.02 0,0.01 0.1,0.02 0.1,0.02 0.1,0.01 0.1,0.01 0.1,0.02 0.2,0.01 0.1,0.01 0.1,0.01 0.1,0.01 0.1,0.01 0.2,0 0.1,0.01 0.2,0 0.1,0.01 0.2,0 0.1,0 0.2,0.01 0.1,0 0.2,0 c 1.2,0 1.6,0 1.6,0.99 0,0.55 -0.5,0.55 -1.3,0.55 h -6.6 c -1.3,0 -1.4,0 -2,-0.95 l -18.1,-28.39 -3.9,28.2 c -0.2,1.14 -0.3,1.14 -1.6,1.14 h -6.8 c -0.9,0 -1.5,0 -1.5,-0.95 0,-0.59 0.5,-0.59 1.5,-0.59 0.6,0 1.5,-0.05 2.1,-0.1 0.8,-0.1 1.1,-0.25 1.1,-0.8 0,-0.2 -0.1,-0.35 -0.2,-0.94 l -6.3,-25.36 c -0.5,-1.99 -1.4,-3.58 -5.4,-3.74 -0.3,0 -0.9,-0.04 -0.9,-0.94 0,-0.45 0.3,-0.6 0.7,-0.6 h 10.1 c 0.3,0 0.9,0 0.9,1 0,0.54 -0.6,0.54 -0.9,0.54 -2.8,0.05 -3.4,1.05 -3.4,2.19 0,0.36 0.1,0.6 0.2,1.15 l 6.8,27.15 h 0 l 4.3,-30.89 c 0.1,-0.59 0.2,-1.14 0.8,-1.14 0.5,0 0.8,0.55 1.1,0.9 l 20.1,31.53 h 0 l -7.1,-28.54 c -0.5,-1.95 -0.6,-2.35 -4.5,-2.35 -0.9,0 -1.4,0 -1.4,-0.94 0,-0.6 0.6,-0.6 0.7,-0.6 h 12.4 c 0.3,0 1,0 1,1 0,0.54 -0.5,0.54 -1.4,0.54 -1.8,0 -3.3,0 -3.3,0.9 0,0.2 0,0.3 0.3,1.2 z" id="path4252" style="fill:#000000;stroke-width:0" /><path - d="m 1161.2,315.29 0.2,0 0.1,0 0.2,0.01 0,0 0.1,0 0.1,0.01 0,0.01 0.1,0.01 0.1,0.01 0.1,0.02 0,0.01 0.1,0.02 0,0.02 0.1,0.03 0.1,0.03 0,0.03 0.1,0.03 0,0.04 0.1,0.04 0,0.05 0.1,0.05 0,0.03 0,0.02 0,0.03 0,0.03 0,0.03 0,0.04 0.1,0.03 0,0.04 0,0.03 0,0.04 0,0.04 0,0.04 0,0.04 0,0.04 0,0.05 0,0.05 c 0,0.99 -0.9,0.99 -1.6,0.99 h -29.9 c -0.7,0 -1.6,0 -1.6,-0.99 0,-1 0.9,-1 1.7,-1 z" + d="m 1147.9178,315.29 0.2,0 0.1,0 0.2,0.01 0,0 0.1,0 0.1,0.01 0,0.01 0.1,0.01 0.1,0.01 0.1,0.02 0,0.01 0.1,0.02 0,0.02 0.1,0.03 0.1,0.03 0,0.03 0.1,0.03 0,0.04 0.1,0.04 0,0.05 0.1,0.05 0,0.03 0,0.02 0,0.03 0,0.03 0,0.03 0,0.04 0.1,0.03 0,0.04 0,0.03 0,0.04 0,0.04 0,0.04 0,0.04 0,0.04 0,0.05 0,0.05 c 0,0.99 -0.9,0.99 -1.6,0.99 h -29.9 c -0.7,0 -1.6,0 -1.6,-0.99 0,-1 0.9,-1 1.7,-1 z" id="path4254" style="fill:#000000;stroke-width:0" /><path - d="m 1161.3,305.62 0.1,0.01 0.1,0 0.2,0 0.1,0.01 0,0 0.1,0.01 0.1,0.01 0,0.01 0.1,0.01 0.1,0.01 0,0.02 0.1,0.02 0.1,0.02 0,0.02 0.1,0.03 0,0.03 0.1,0.04 0,0.04 0.1,0.04 0,0.04 0,0.03 0.1,0.03 0,0.02 0,0.03 0,0.03 0,0.03 0,0.03 0,0.03 0.1,0.04 0,0.03 0,0.04 0,0.04 0,0.04 0,0.04 0,0.04 0,0.04 0,0.05 0,0.04 c 0,1 -0.9,1 -1.7,1 h -29.7 c -0.8,0 -1.7,0 -1.7,-1 0,-1 0.9,-1 1.6,-1 z" + d="m 1148.0178,305.62 0.1,0.01 0.1,0 0.2,0 0.1,0.01 0,0 0.1,0.01 0.1,0.01 0,0.01 0.1,0.01 0.1,0.01 0,0.02 0.1,0.02 0.1,0.02 0,0.02 0.1,0.03 0,0.03 0.1,0.04 0,0.04 0.1,0.04 0,0.04 0,0.03 0.1,0.03 0,0.02 0,0.03 0,0.03 0,0.03 0,0.03 0,0.03 0.1,0.04 0,0.03 0,0.04 0,0.04 0,0.04 0,0.04 0,0.04 0,0.04 0,0.05 0,0.04 c 0,1 -0.9,1 -1.7,1 h -29.7 c -0.8,0 -1.7,0 -1.7,-1 0,-1 0.9,-1 1.6,-1 z" id="path4256" style="fill:#000000;stroke-width:0" /><polygon - points="1199.7,311.33 1199.7,397.5 1212.8,397.5 1212.8,400.94 1196.2,400.94 1196.2,311.33 " + points="1196.2,400.94 1196.2,311.33 1199.7,311.33 1199.7,397.5 1212.8,397.5 1212.8,400.94 " id="polygon4258" style="fill:#000000;stroke-width:0" /><polygon - points="1212.8,221.38 1212.8,224.82 1199.7,224.82 1199.7,310.99 1196.2,310.99 1196.2,221.38 " + points="1196.2,310.99 1196.2,221.38 1212.8,221.38 1212.8,224.82 1199.7,224.82 1199.7,310.99 " id="polygon4260" style="fill:#000000;stroke-width:0" /><path d="m 1235.9,374.94 0,0.75 0,0.74 0,0.75 -0.1,0.74 0,0.75 -0.1,0.74 0,0.74 -0.1,0.73 -0.1,0.73 -0.2,0.73 -0.1,0.72 -0.2,0.72 -0.3,0.71 -0.2,0.71 -0.3,0.7 -0.1,0.35 -0.2,0.35 c -2.3,4.78 -6.3,5.58 -8.5,5.58 -2.9,0 -6.6,-1.3 -8.6,-5.93 -1.6,-3.44 -1.9,-7.32 -1.9,-11.31 0,-3.74 0.2,-8.22 2.3,-12.01 2.1,-4.03 5.8,-5.03 8.2,-5.03 v 1.1 c -1.9,0 -4.9,1.25 -5.8,6.03 -0.5,2.99 -0.5,7.57 -0.5,10.51 0,3.19 0,6.47 0.4,9.16 0.9,5.93 4.7,6.38 5.9,6.38 1.7,0 4.9,-0.9 5.9,-5.83 0.5,-2.79 0.5,-6.57 0.5,-9.71 0,-3.74 0,-7.13 -0.6,-10.31 -0.7,-4.73 -3.6,-6.23 -5.8,-6.23 h 0 v -1.1 c 2.7,0 6.5,1.05 8.7,5.78 1.6,3.44 1.8,7.32 1.8,11.26 z" @@ -193,14 +192,14 @@ d="m 1384.9,255.94 0,0.75 0,0.74 0,0.75 -0.1,0.74 0,0.75 -0.1,0.74 0,0.74 -0.1,0.73 -0.1,0.73 -0.2,0.73 -0.1,0.72 -0.2,0.72 -0.3,0.71 -0.2,0.71 -0.3,0.7 -0.1,0.35 -0.2,0.35 c -2.3,4.78 -6.3,5.58 -8.5,5.58 -2.9,0 -6.6,-1.3 -8.6,-5.93 -1.6,-3.44 -1.9,-7.32 -1.9,-11.31 0,-3.74 0.2,-8.22 2.3,-12.01 2.1,-4.03 5.8,-5.03 8.2,-5.03 v 1.1 c -1.9,0 -4.9,1.25 -5.8,6.03 -0.5,2.99 -0.5,7.57 -0.5,10.51 0,3.19 0,6.47 0.4,9.16 0.9,5.93 4.7,6.38 5.9,6.38 1.7,0 4.9,-0.9 5.9,-5.83 0.5,-2.79 0.5,-6.57 0.5,-9.71 0,-3.74 0,-7.13 -0.6,-10.31 -0.7,-4.73 -3.6,-6.23 -5.8,-6.23 h 0 v -1.1 c 2.7,0 6.5,1.05 8.7,5.78 1.6,3.44 1.8,7.32 1.8,11.26 z" id="path4278" style="fill:#000000;stroke-width:0" /><polygon - points="1403.9,311.33 1403.9,400.94 1387.3,400.94 1387.3,397.5 1400.5,397.5 1400.5,311.33 " + points="1400.5,397.5 1400.5,311.33 1403.9,311.33 1403.9,400.94 1387.3,400.94 1387.3,397.5 " id="polygon4280" style="fill:#000000;stroke-width:0" /><polygon - points="1387.3,224.82 1387.3,221.38 1403.9,221.38 1403.9,310.99 1400.5,310.99 1400.5,224.82 " + points="1400.5,310.99 1400.5,224.82 1387.3,224.82 1387.3,221.38 1403.9,221.38 1403.9,310.99 " id="polygon4282" style="fill:#000000;stroke-width:0" /></g> </g> <g - transform="matrix(0.65136663,0,0,-0.65136663,-221.22307,568.03095)" + transform="matrix(0.45496499,0,0,-0.45496499,-212.46663,994.96042)" id="g4483" xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:#ff0000;stroke:none"><path @@ -213,7 +212,7 @@ d="m 1228.3,215.62 0.1,0.01 0.1,0 0.2,0 0.1,0.01 0,0 0.1,0.01 0.1,0.01 0,0.01 0.1,0.01 0.1,0.01 0,0.02 0.1,0.02 0.1,0.02 0,0.02 0.1,0.03 0,0.03 0.1,0.04 0,0.04 0.1,0.04 0,0.04 0,0.03 0.1,0.03 0,0.02 0,0.03 0,0.03 0,0.03 0,0.03 0,0.03 0.1,0.04 0,0.03 0,0.04 0,0.04 0,0.04 0,0.04 0,0.04 0,0.04 0,0.05 0,0.04 c 0,1 -0.9,1 -1.7,1 h -29.7 c -0.8,0 -1.7,0 -1.7,-1 0,-1 0.9,-1 1.6,-1 z" id="path4489" style="fill:#ff0000;stroke:none" /><polygon - points="1262.2,400.94 1262.2,311.33 1265.7,311.33 1265.7,397.5 1278.8,397.5 1278.8,400.94 " + points="1278.8,397.5 1278.8,400.94 1262.2,400.94 1262.2,311.33 1265.7,311.33 1265.7,397.5 " id="polygon4491" style="fill:#ff0000;stroke:none" /><polygon points="1262.2,312.05 1262.2,282.06 1265.7,282.06 1265.7,312.05 " @@ -234,7 +233,7 @@ points="1262.2,162.05 1262.2,132.06 1265.7,132.06 1265.7,162.05 " id="polygon4503" style="fill:#ff0000;stroke:none" /><polygon - points="1262.2,131.99 1262.2,42.379 1278.8,42.379 1278.8,45.816 1265.7,45.816 1265.7,131.99 " + points="1265.7,45.816 1265.7,131.99 1262.2,131.99 1262.2,42.379 1278.8,42.379 1278.8,45.816 " id="polygon4505" style="fill:#ff0000;stroke:none" /><path d="m 1302.9,374.94 0,0.75 0,0.74 0,0.75 -0.1,0.74 0,0.75 -0.1,0.74 0,0.74 -0.1,0.73 -0.1,0.73 -0.2,0.73 -0.1,0.72 -0.2,0.72 -0.3,0.71 -0.2,0.71 -0.3,0.7 -0.1,0.35 -0.2,0.35 c -2.3,4.78 -6.3,5.58 -8.5,5.58 -2.9,0 -6.6,-1.3 -8.6,-5.93 -1.6,-3.44 -1.9,-7.32 -1.9,-11.31 0,-3.74 0.2,-8.22 2.3,-12.01 2.1,-4.03 5.8,-5.03 8.2,-5.03 v 1.1 c -1.9,0 -4.9,1.25 -5.8,6.03 -0.5,2.99 -0.5,7.57 -0.5,10.51 0,3.19 0,6.47 0.4,9.16 0.9,5.93 4.7,6.38 5.9,6.38 1.7,0 4.9,-0.9 5.9,-5.83 0.5,-2.79 0.5,-6.57 0.5,-9.71 0,-3.74 0,-7.13 -0.6,-10.31 -0.7,-4.73 -3.6,-6.23 -5.8,-6.23 h 0 v -1.1 c 2.7,0 6.5,1.05 8.7,5.78 1.6,3.44 1.8,7.32 1.8,11.26 z" @@ -255,7 +254,7 @@ d="m 1302.9,75.941 0,0.747 0,0.747 0,0.746 -0.1,0.744 0,0.743 -0.1,0.74 0,0.738 -0.1,0.735 -0.1,0.731 -0.2,0.728 -0.1,0.723 -0.2,0.718 -0.3,0.713 -0.2,0.708 -0.3,0.701 -0.1,0.348 -0.2,0.347 c -2.3,4.781 -6.3,5.578 -8.5,5.578 -2.9,0 -6.6,-1.297 -8.6,-5.93 -1.6,-3.434 -1.9,-7.32 -1.9,-11.305 0,-3.738 0.2,-8.218 2.3,-12.007 2.1,-4.036 5.8,-5.032 8.2,-5.032 V 60 c -1.9,0 -4.9,1.246 -5.8,6.027 -0.5,2.989 -0.5,7.571 -0.5,10.512 0,3.188 0,6.473 0.4,9.164 0.9,5.93 4.7,6.375 5.9,6.375 1.7,0 4.9,-0.894 5.9,-5.828 0.5,-2.789 0.5,-6.574 0.5,-9.711 0,-3.738 0,-7.125 -0.6,-10.312 -0.7,-4.731 -3.6,-6.227 -5.8,-6.227 h 0 v -1.098 c 2.7,0 6.5,1.047 8.7,5.782 1.6,3.437 1.8,7.32 1.8,11.257 z" id="path4517" style="fill:#ff0000;stroke:none" /><polygon - points="1318.5,397.5 1318.5,311.33 1321.9,311.33 1321.9,400.94 1305.3,400.94 1305.3,397.5 " + points="1305.3,400.94 1305.3,397.5 1318.5,397.5 1318.5,311.33 1321.9,311.33 1321.9,400.94 " id="polygon4519" style="fill:#ff0000;stroke:none" /><polygon points="1318.5,312.05 1318.5,282.06 1321.9,282.06 1321.9,312.05 " @@ -276,10 +275,10 @@ points="1318.5,162.05 1318.5,132.06 1321.9,132.06 1321.9,162.05 " id="polygon4531" style="fill:#ff0000;stroke:none" /><polygon - points="1318.5,131.99 1318.5,45.816 1305.3,45.816 1305.3,42.379 1321.9,42.379 1321.9,131.99 " + points="1321.9,42.379 1321.9,131.99 1318.5,131.99 1318.5,45.816 1305.3,45.816 1305.3,42.379 " id="polygon4533" style="fill:#ff0000;stroke:none" /></g> <g - transform="matrix(0.41261274,-0.26302142,0.26302142,0.41261274,-119.37949,23.804011)" + transform="matrix(0.28820075,-0.18371456,0.18371456,0.28820075,-141.33117,614.83011)" id="g5236"> <path d="m 207.36078,666.15045 -0.0744,0.0638 -0.0744,0.0744 -0.085,0.0744 -0.085,0.0744 -0.0957,0.085 -0.0957,0.085 -0.0957,0.0957 -0.0957,0.0957 -0.1063,0.0957 -0.0957,0.0957 -0.2126,0.20197 -0.20197,0.20197 -0.20197,0.22323 -0.0957,0.1063 -0.0957,0.1063 -0.0957,0.1063 -0.085,0.11693 -0.085,0.1063 -0.085,0.10629 -0.0744,0.1063 -0.0638,0.1063 -0.0638,0.1063 -0.0531,0.1063 -0.0532,0.1063 -0.0425,0.0957 -0.0319,0.1063 -0.0213,0.0957 -0.0213,0.0957 0,0.085 c 0,0.53149 0.5315,1.06299 1.06299,1.06299 0.46772,0 0.73347,-0.37205 0.99921,-0.69095 0.6378,-0.79724 1.84961,-2.2748 4.17756,-3.44409 0.38268,-0.2126 0.90355,-0.47835 0.90355,-1.11614 0,-0.52087 -0.37205,-0.78662 -0.73347,-1.05236 -1.16929,-0.79725 -1.75393,-1.74331 -2.1685,-3.0189 -0.11693,-0.47835 -0.32953,-1.16929 -1.06299,-1.16929 -0.7441,0 -1.063,0.69094 -1.063,1.11614 0,0.26575 0.4252,1.9559 1.27559,3.07205 h -17.84763 c -0.90355,0 -1.84961,0 -1.84961,1.05236 0,1.06299 0.94606,1.06299 1.84961,1.06299 z" @@ -370,7 +369,7 @@ id="path4923" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:#000000;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> <polygon - points="1184.7,372.9 1190.4,377.98 1196.2,372.9 1197.1,373.8 1190.4,380.57 1183.8,373.8 " + points="1190.4,380.57 1183.8,373.8 1184.7,372.9 1190.4,377.98 1196.2,372.9 1197.1,373.8 " transform="matrix(1.0629921,0,0,-1.0629921,-637.45219,1079.2717)" id="polygon4925" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:#000000;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> @@ -388,7 +387,7 @@ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:#000000;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> </g> <g - transform="matrix(0.31870184,0.38926826,-0.38926826,0.31870184,163.41661,-132.23175)" + transform="matrix(0.22260609,0.27189515,-0.27189515,0.22260609,56.195564,505.84263)" id="g5208"> <path d="m 717.65014,666.15045 -0.1063,0.0638 -0.1063,0.0744 -0.1063,0.0744 -0.1063,0.0744 0,0.085 -0.1063,0.085 -0.1063,0.0957 -0.1063,0.0957 -0.10629,0.0957 -0.1063,0.0957 -0.2126,0.20197 -0.2126,0.20197 -0.2126,0.22323 -0.1063,0.1063 -0.1063,0.1063 -0.1063,0.1063 0,0.11693 -0.1063,0.1063 -0.1063,0.10629 -0.10629,0.1063 0,0.1063 -0.1063,0.1063 0,0.1063 -0.1063,0.1063 0,0.0957 0,0.1063 -0.1063,0.0957 0,0.0957 0,0.085 c 0,0.53149 0.53149,1.06299 1.06299,1.06299 0.4252,0 0.74409,-0.37205 0.95669,-0.69095 0.6378,-0.79724 1.91339,-2.2748 4.25197,-3.44409 0.3189,-0.2126 0.8504,-0.47835 0.8504,-1.11614 0,-0.52087 -0.3189,-0.78662 -0.7441,-1.05236 -1.16929,-0.79725 -1.70079,-1.74331 -2.12598,-3.0189 -0.1063,-0.47835 -0.3189,-1.16929 -1.063,-1.16929 -0.74409,0 -1.06299,0.69094 -1.06299,1.11614 0,0.26575 0.4252,1.9559 1.27559,3.07205 h -17.85826 c -0.8504,0 -1.80709,0 -1.80709,1.05236 0,1.06299 0.95669,1.06299 1.80709,1.06299 z" @@ -479,7 +478,7 @@ id="path4975" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:#000000;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> <polygon - points="1662.8,373.8 1663.7,372.9 1669.4,377.98 1675.2,372.9 1676.1,373.8 1669.4,380.57 " + points="1676.1,373.8 1669.4,380.57 1662.8,373.8 1663.7,372.9 1669.4,377.98 1675.2,372.9 " transform="matrix(1.0629921,0,0,-1.0629921,-637.45219,1079.2717)" id="polygon4977" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:#000000;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> @@ -497,7 +496,7 @@ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:#000000;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> </g> <g - transform="matrix(0.69844237,0,0,0.69844237,-323.23295,290.24978)" + transform="matrix(0.48784634,0,0,0.48784634,-283.71824,800.9365)" id="g5384"> <g transform="matrix(1.0629921,0,0,-1.0629921,-186.02362,789.27165)" @@ -546,6 +545,90 @@ d="m 1397.8,340.17 0,-0.19 -0.1,-0.19 0,-0.21 0,-0.2 0,-0.21 -0.1,-0.22 -0.1,-0.21 0,-0.22 -0.1,-0.22 -0.1,-0.22 -0.1,-0.22 -0.1,-0.22 -0.2,-0.22 -0.1,-0.21 -0.2,-0.21 -0.2,-0.21 -0.2,-0.2 -0.2,-0.2 -0.2,-0.19 -0.3,-0.18 -0.2,-0.17 -0.3,-0.17 -0.3,-0.16 -0.3,-0.15 -0.4,-0.13 -0.3,-0.13 -0.4,-0.11 -0.4,-0.1 -0.2,-0.04 -0.2,-0.05 -0.3,-0.03 -0.2,-0.04 -0.2,-0.03 -0.3,-0.02 -0.2,-0.03 -0.3,-0.02 c -0.2,-0.05 -0.4,-0.25 -0.4,-0.55 0,-0.54 0.5,-0.54 1,-0.54 4.8,0 9.5,2.44 9.5,6.22 v 11.36 c 0,1.94 0,3.54 2,5.18 1.7,1.45 3.6,1.55 4.7,1.6 0.3,0.05 0.5,0.25 0.5,0.54 0,0.5 -0.3,0.5 -0.8,0.55 -3.3,0.2 -5.7,1.99 -6.3,4.43 -0.1,0.55 -0.1,0.65 -0.1,2.45 v 9.86 c 0,2.09 0,3.69 -2.4,5.58 -2,1.54 -5.4,2.04 -7.1,2.04 -0.5,0 -1,0 -1,-0.55 0,-0.5 0.3,-0.5 0.8,-0.54 3.1,-0.2 5.6,-1.8 6.2,-4.34 0.2,-0.45 0.2,-0.55 0.2,-2.34 v -10.46 c 0,-2.29 0.4,-3.14 2,-4.74 1,-1.04 2.4,-1.54 3.8,-1.94 -4,-1.14 -5.8,-3.43 -5.8,-6.32 z" id="path5414" style="fill:#000000;stroke-width:0" /></g> </g> + <path + d="m 232.2757,779.16337 -0.0459,0.0275 -0.0459,0.0321 -0.0459,0.0321 -0.0459,0.0321 0,0.0367 -0.0459,0.0367 -0.0459,0.0413 -0.0459,0.0413 -0.0459,0.0413 -0.0459,0.0413 -0.0918,0.0872 -0.0918,0.0872 -0.0918,0.0964 -0.0459,0.0459 -0.0459,0.0459 -0.0459,0.0459 0,0.0505 -0.0459,0.0459 -0.0459,0.0459 -0.0459,0.0459 0,0.0459 -0.0459,0.0459 0,0.0459 -0.0459,0.0459 0,0.0413 0,0.0459 -0.0459,0.0413 0,0.0413 0,0.0367 c 0,0.2295 0.2295,0.45899 0.45899,0.45899 0.1836,0 0.32129,-0.16064 0.41309,-0.29834 0.2754,-0.34424 0.82618,-0.98224 1.83596,-1.48713 0.1377,-0.0918 0.36719,-0.20654 0.36719,-0.48193 0,-0.22491 -0.13769,-0.33966 -0.32129,-0.4544 -0.50489,-0.34425 -0.73438,-0.75275 -0.91798,-1.30353 -0.0459,-0.20655 -0.1377,-0.50489 -0.45899,-0.50489 -0.32129,0 -0.45899,0.29834 -0.45899,0.48194 0,0.11474 0.1836,0.84454 0.55079,1.32648 h -7.71102 c -0.3672,0 -0.78029,0 -0.78029,0.4544 0,0.45899 0.41309,0.45899 0.78029,0.45899 z" + id="path6315" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:#000000;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <path + d="m 222.91231,791.41838 0,0.0321 0,0.0367 -0.0459,0.0321 0,0.0367 0,0.0734 -0.0459,0.0734 0,0.0734 0,0.0734 -0.0459,0.0734 0,0.0734 0,0.0367 0,0.0321 -0.0459,0.0321 0,0.0321 0,0.0321 0,0.0321 0,0.0275 0,0.0275 0,0.0229 0,0.0275 0,0.0229 -0.0459,0.0184 0,0.0184 0,0.0184 0,0.0138 0,0.009 c 0,0.41309 0.32129,0.61964 0.68848,0.61964 0.2754,0 0.68849,-0.1836 0.82618,-0.64259 0.0459,-0.0918 0.82618,-3.19915 0.91798,-3.61224 0.1836,-0.75275 0.59669,-2.35462 0.73438,-2.96967 0.0918,-0.29834 0.73439,-1.37238 1.28518,-1.87726 0.18359,-0.15606 0.82618,-0.75275 1.83595,-0.75275 0.59669,0 0.91798,0.2754 0.96388,0.2754 -0.68848,0.11474 -1.19337,0.66094 -1.19337,1.25304 0,0.36719 0.22949,0.80323 0.87208,0.80323 0.59668,0 1.23927,-0.52325 1.23927,-1.34943 0,-0.79864 -0.73438,-1.48712 -1.88186,-1.48712 -1.51466,0 -2.47854,1.11993 -2.93753,1.76251 -0.1836,-1.02813 -1.00978,-1.76251 -2.06545,-1.76251 -1.05568,0 -1.51467,0.89502 -1.69826,1.30353 -0.41309,0.78028 -0.73439,2.14807 -0.73439,2.21691 0,0.2295 0.2295,0.2295 0.2754,0.2295 0.22949,0 0.27539,-0.0229 0.41309,-0.52325 0.36719,-1.62482 0.82618,-2.72181 1.65236,-2.72181 0.41309,0 0.73438,0.1836 0.73438,1.05109 0,0.47735 -0.0918,0.72979 -0.36719,1.91858 z" + id="path6317" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:#000000;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <path + d="m 236.3607,785.80035 0,-0.0184 0,-0.0184 0,-0.0184 0,-0.0184 0,-0.0183 0,-0.0184 0,-0.0138 0,-0.0184 0,-0.0138 0,-0.0138 0,-0.0184 0,-0.0138 0,-0.009 0,-0.0138 0,-0.0138 0,-0.0138 -0.0459,-0.009 0,-0.009 0,-0.0229 0,-0.0184 0,-0.0184 0,-0.0138 0,-0.0138 -0.0459,-0.0138 0,-0.0138 0,-0.009 0,-0.009 -0.0459,-0.009 0,-0.005 0,-0.005 -0.0459,-0.009 0,0 -0.0459,-0.005 0,0 0,-0.005 0,0 -0.0459,0 0,0 0,0 -0.0459,-0.005 0,0 0,0 -0.0459,0 0,0 0,0 -0.0459,0 0,0 -0.0459,0 0,0 -0.0459,0 c -1.00978,1.00519 -2.47855,1.02355 -3.12113,1.02355 v 0.57374 c 0.36719,0 1.42286,0 2.34084,-0.44522 v 8.16083 c 0,0.52784 0,0.73897 -1.60646,0.73897 h -0.64259 v 0.57374 h 5.73737 v -0.57374 h -0.59668 c -1.60647,0 -1.60647,-0.21113 -1.60647,-0.73897 z" + id="path6319" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:#000000;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <path + d="m 232.59101,810.01209 -0.0459,0.0275 -0.0459,0.0321 -0.0459,0.0321 -0.0459,0.0321 0,0.0367 -0.0459,0.0367 -0.0459,0.0413 -0.0459,0.0413 -0.0459,0.0413 -0.0459,0.0413 -0.0918,0.0872 -0.0918,0.0872 -0.0918,0.0964 -0.0459,0.0459 -0.0459,0.0459 -0.0459,0.0459 0,0.0505 -0.0459,0.0459 -0.0459,0.0459 -0.0459,0.0459 0,0.0459 -0.0459,0.0459 0,0.0459 -0.0459,0.0459 0,0.0413 0,0.0459 -0.0459,0.0413 0,0.0413 0,0.0367 c 0,0.2295 0.22949,0.45899 0.45899,0.45899 0.18359,0 0.32129,-0.16064 0.41309,-0.29834 0.27539,-0.34424 0.82618,-0.98224 1.83596,-1.48713 0.13769,-0.0918 0.36719,-0.20654 0.36719,-0.48193 0,-0.22491 -0.1377,-0.33966 -0.32129,-0.4544 -0.50489,-0.34425 -0.73439,-0.75275 -0.91798,-1.30353 -0.0459,-0.20655 -0.1377,-0.50489 -0.45899,-0.50489 -0.3213,0 -0.45899,0.29834 -0.45899,0.48194 0,0.11474 0.18359,0.84454 0.55078,1.32648 h -7.71102 c -0.36719,0 -0.78028,0 -0.78028,0.4544 0,0.45899 0.41309,0.45899 0.78028,0.45899 z" + id="path6321" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:#000000;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <path + d="m 223.22763,822.2671 0,0.0321 0,0.0367 -0.0459,0.0321 0,0.0367 0,0.0734 -0.0459,0.0734 0,0.0734 0,0.0734 -0.0459,0.0734 0,0.0734 0,0.0367 0,0.0321 -0.0459,0.0321 0,0.0321 0,0.0321 0,0.0321 0,0.0275 0,0.0275 0,0.0229 0,0.0275 0,0.0229 -0.0459,0.0184 0,0.0184 0,0.0184 0,0.0138 0,0.009 c 0,0.41309 0.3213,0.61964 0.68849,0.61964 0.27539,0 0.68848,-0.1836 0.82618,-0.64259 0.0459,-0.0918 0.82618,-3.19915 0.91798,-3.61224 0.18359,-0.75275 0.59668,-2.35462 0.73438,-2.96967 0.0918,-0.29834 0.73438,-1.37238 1.28517,-1.87726 0.1836,-0.15606 0.82618,-0.75275 1.83596,-0.75275 0.59669,0 0.91798,0.2754 0.96388,0.2754 -0.68849,0.11474 -1.19338,0.66094 -1.19338,1.25304 0,0.36719 0.2295,0.80323 0.87208,0.80323 0.59669,0 1.23928,-0.52325 1.23928,-1.34943 0,-0.79864 -0.73439,-1.48712 -1.88186,-1.48712 -1.51467,0 -2.47854,1.11993 -2.93753,1.76251 -0.1836,-1.02813 -1.00978,-1.76251 -2.06546,-1.76251 -1.05567,0 -1.51466,0.89502 -1.69826,1.30353 -0.41309,0.78028 -0.73438,2.14807 -0.73438,2.21691 0,0.2295 0.22949,0.2295 0.27539,0.2295 0.2295,0 0.2754,-0.0229 0.41309,-0.52325 0.3672,-1.62482 0.82618,-2.72181 1.65237,-2.72181 0.41309,0 0.73438,0.1836 0.73438,1.05109 0,0.47735 -0.0918,0.72979 -0.36719,1.91858 z" + id="path6323" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:#000000;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <path + d="m 239.38406,823.91488 h -0.55079 c -0.0459,0.35342 -0.1836,1.29894 -0.41309,1.45958 -0.1377,0.0964 -1.33107,0.0964 -1.56056,0.0964 h -2.93754 c 1.65236,-1.49171 2.20315,-1.93693 3.16703,-2.68968 1.19337,-0.94552 2.29495,-1.93693 2.29495,-3.46078 0,-1.93234 -1.69826,-3.11654 -3.76372,-3.11654 -1.97365,0 -3.30472,1.39074 -3.30472,2.8641 0,0.817 0.68848,0.89503 0.82618,0.89503 0.41309,0 0.87208,-0.27081 0.87208,-0.84913 0,-0.28458 -0.0918,-0.84913 -0.96388,-0.84913 0.50489,-1.13371 1.60647,-1.48713 2.34085,-1.48713 1.60646,0 2.43264,1.24845 2.43264,2.5428 0,1.39533 -0.96387,2.50149 -1.51466,3.07523 l -3.80961,3.80961 c -0.1836,0.14229 -0.1836,0.17442 -0.1836,0.62423 h 6.60945 z" + id="path6325" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:#000000;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <path + d="m 231.07017,841.5192 -0.0459,0.0275 -0.0459,0.0321 -0.0459,0.0321 -0.0459,0.0321 0,0.0367 -0.0459,0.0367 -0.0459,0.0413 -0.0459,0.0413 -0.0459,0.0413 -0.0459,0.0413 -0.0918,0.0872 -0.0918,0.0872 -0.0918,0.0964 -0.0459,0.0459 -0.0459,0.0459 -0.0459,0.0459 0,0.0505 -0.0459,0.0459 -0.0459,0.0459 -0.0459,0.0459 0,0.0459 -0.0459,0.0459 0,0.0459 -0.0459,0.0459 0,0.0413 0,0.0459 -0.0459,0.0413 0,0.0413 0,0.0367 c 0,0.2295 0.2295,0.45899 0.45899,0.45899 0.1836,0 0.3213,-0.16064 0.41309,-0.29834 0.2754,-0.34424 0.82619,-0.98224 1.83596,-1.48713 0.1377,-0.0918 0.36719,-0.20654 0.36719,-0.48193 0,-0.22491 -0.13769,-0.33966 -0.32129,-0.4544 -0.50489,-0.34425 -0.73438,-0.75275 -0.91798,-1.30353 -0.0459,-0.20655 -0.13769,-0.50489 -0.45899,-0.50489 -0.32129,0 -0.45899,0.29834 -0.45899,0.48194 0,0.11474 0.1836,0.84454 0.55079,1.32648 h -7.71102 c -0.36719,0 -0.78028,0 -0.78028,0.4544 0,0.45899 0.41309,0.45899 0.78028,0.45899 z" + id="path6327" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:#000000;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <path + d="m 221.70678,853.77421 0,0.0321 0,0.0367 -0.0459,0.0321 0,0.0367 0,0.0734 -0.0459,0.0734 0,0.0734 0,0.0734 -0.0459,0.0734 0,0.0734 0,0.0367 0,0.0321 -0.0459,0.0321 0,0.0321 0,0.0321 0,0.0321 0,0.0275 0,0.0275 0,0.0229 0,0.0275 0,0.0229 -0.0459,0.0184 0,0.0184 0,0.0184 0,0.0138 0,0.009 c 0,0.41309 0.32129,0.61964 0.68848,0.61964 0.2754,0 0.68849,-0.1836 0.82618,-0.64259 0.0459,-0.0918 0.82619,-3.19915 0.91798,-3.61224 0.1836,-0.75275 0.59669,-2.35462 0.73439,-2.96967 0.0918,-0.29834 0.73438,-1.37238 1.28517,-1.87726 0.18359,-0.15606 0.82618,-0.75275 1.83596,-0.75275 0.59668,0 0.91797,0.2754 0.96387,0.2754 -0.68848,0.11474 -1.19337,0.66094 -1.19337,1.25304 0,0.36719 0.2295,0.80323 0.87208,0.80323 0.59669,0 1.23927,-0.52325 1.23927,-1.34943 0,-0.79864 -0.73438,-1.48712 -1.88185,-1.48712 -1.51467,0 -2.47855,1.11993 -2.93754,1.76251 -0.18359,-1.02813 -1.00977,-1.76251 -2.06545,-1.76251 -1.05568,0 -1.51467,0.89502 -1.69826,1.30353 -0.41309,0.78028 -0.73438,2.14807 -0.73438,2.21691 0,0.2295 0.22949,0.2295 0.27539,0.2295 0.22949,0 0.27539,-0.0229 0.41309,-0.52325 0.36719,-1.62482 0.82618,-2.72181 1.65236,-2.72181 0.41309,0 0.73439,0.1836 0.73439,1.05109 0,0.47735 -0.0918,0.72979 -0.3672,1.91858 z" + id="path6329" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:#000000;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <path + d="m 234.1454,852.99393 0.1377,0 0.0918,0.009 0.1377,0.009 0.0918,0.0184 0.0918,0.0229 0.13769,0.0275 0.0918,0.0321 0.0918,0.0413 0.0918,0.0413 0.0918,0.0505 0.0918,0.0505 0.0918,0.0597 0.0918,0.0597 0.0459,0.0688 0.0918,0.0734 0.0918,0.078 0.0459,0.0826 0.0918,0.0918 0.0459,0.0918 0.0459,0.0964 0.0459,0.10557 0.0918,0.10556 0.0459,0.11475 0,0.11934 0.0459,0.12393 0.0459,0.12851 0.0459,0.13311 0,0.1377 0,0.14228 0.0459,0.14688 0,0.15147 0,0.16064 c 0,1.98284 -1.14747,2.57493 -2.06545,2.57493 -0.64259,0 -2.06546,-0.17441 -2.75394,-1.11993 0.78028,-0.0321 0.96388,-0.55997 0.96388,-0.89503 0,-0.51407 -0.41309,-0.88126 -0.91798,-0.88126 -0.41309,0 -0.87208,0.2708 -0.87208,0.92716 0,1.50548 1.65236,2.48313 3.58012,2.48313 2.24905,0 3.76371,-1.49171 3.76371,-3.089 0,-1.24845 -1.00978,-2.4969 -2.75394,-2.86409 1.65237,-0.61046 2.24905,-1.80842 2.24905,-2.78607 0,-1.26681 -1.42287,-2.20774 -3.21292,-2.20774 -1.79006,0 -3.12113,0.8629 -3.12113,2.14348 0,0.54161 0.32129,0.84913 0.82618,0.84913 0.50489,0 0.82618,-0.36719 0.82618,-0.817 0,-0.46358 -0.32129,-0.80323 -0.82618,-0.83077 0.55079,-0.70684 1.65236,-0.88126 2.24905,-0.88126 0.73438,0 1.74416,0.34883 1.74416,1.74416 0,0.67013 -0.2295,1.4091 -0.64259,1.90481 -0.55079,0.60587 -1.00978,0.63799 -1.79006,0.68848 -0.41309,0.0321 -0.45899,0.0321 -0.50489,0.0459 -0.0459,0 -0.18359,0.0321 -0.18359,0.21114 0,0.2249 0.1377,0.2249 0.41309,0.2249 z" + id="path6331" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:#000000;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <g + transform="translate(-142.00823,31.636908)" + id="use6515"> + <path + d="m 400.883,714.38965 -0.0459,0.0275 -0.0459,0.0321 -0.0459,0.0321 -0.0459,0.0321 0,0.0367 -0.0459,0.0367 -0.0459,0.0413 -0.0459,0.0413 -0.0459,0.0413 -0.0459,0.0413 -0.0918,0.0872 -0.0918,0.0872 -0.0918,0.0964 -0.0459,0.0459 -0.0459,0.0459 -0.0459,0.0459 0,0.0505 -0.0459,0.0459 -0.0459,0.0459 -0.0459,0.0459 0,0.0459 -0.0459,0.0459 0,0.0459 -0.0459,0.0459 0,0.0413 0,0.0459 -0.0459,0.0413 0,0.0413 0,0.0367 c 0,0.2295 0.2295,0.45899 0.45899,0.45899 0.1836,0 0.32129,-0.16064 0.41309,-0.29834 0.2754,-0.34424 0.82618,-0.98224 1.83596,-1.48713 0.1377,-0.0918 0.36719,-0.20654 0.36719,-0.48193 0,-0.22491 -0.13769,-0.33966 -0.32129,-0.4544 -0.50489,-0.34425 -0.73438,-0.75275 -0.91798,-1.30353 -0.0459,-0.20655 -0.1377,-0.50489 -0.45899,-0.50489 -0.32129,0 -0.45899,0.29834 -0.45899,0.48194 0,0.11474 0.1836,0.84454 0.55079,1.32648 h -7.71102 c -0.3672,0 -0.78029,0 -0.78029,0.4544 0,0.45899 0.41309,0.45899 0.78029,0.45899 z" + id="path6547" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:#000000;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <path + d="m 391.51961,726.64466 0,0.0321 0,0.0367 -0.0459,0.0321 0,0.0367 0,0.0734 -0.0459,0.0734 0,0.0734 0,0.0734 -0.0459,0.0734 0,0.0734 0,0.0367 0,0.0321 -0.0459,0.0321 0,0.0321 0,0.0321 0,0.0321 0,0.0275 0,0.0275 0,0.0229 0,0.0275 0,0.0229 -0.0459,0.0184 0,0.0184 0,0.0184 0,0.0138 0,0.009 c 0,0.41309 0.32129,0.61964 0.68848,0.61964 0.2754,0 0.68849,-0.1836 0.82618,-0.64259 0.0459,-0.0918 0.82618,-3.19915 0.91798,-3.61224 0.1836,-0.75275 0.59669,-2.35462 0.73438,-2.96967 0.0918,-0.29834 0.73439,-1.37238 1.28518,-1.87726 0.18359,-0.15606 0.82618,-0.75275 1.83595,-0.75275 0.59669,0 0.91798,0.2754 0.96388,0.2754 -0.68848,0.11474 -1.19337,0.66094 -1.19337,1.25304 0,0.36719 0.22949,0.80323 0.87208,0.80323 0.59668,0 1.23927,-0.52325 1.23927,-1.34943 0,-0.79864 -0.73438,-1.48712 -1.88186,-1.48712 -1.51466,0 -2.47854,1.11993 -2.93753,1.76251 -0.1836,-1.02813 -1.00978,-1.76251 -2.06545,-1.76251 -1.05568,0 -1.51467,0.89502 -1.69826,1.30353 -0.41309,0.78028 -0.73439,2.14807 -0.73439,2.21691 0,0.2295 0.2295,0.2295 0.2754,0.2295 0.22949,0 0.27539,-0.0229 0.41309,-0.52325 0.36719,-1.62482 0.82618,-2.72181 1.65236,-2.72181 0.41309,0 0.73438,0.1836 0.73438,1.05109 0,0.47735 -0.0918,0.72979 -0.36719,1.91858 z" + id="path6549" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-anchor:start;fill:#000000;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <path + d="m 404.968,721.02663 0,-0.0184 0,-0.0184 0,-0.0184 0,-0.0184 0,-0.0183 0,-0.0184 0,-0.0138 0,-0.0184 0,-0.0138 0,-0.0138 0,-0.0184 0,-0.0138 0,-0.009 0,-0.0138 0,-0.0138 0,-0.0138 -0.0459,-0.009 0,-0.009 0,-0.0229 0,-0.0184 0,-0.0184 0,-0.0138 0,-0.0138 -0.0459,-0.0138 0,-0.0138 0,-0.009 0,-0.009 -0.0459,-0.009 0,-0.005 0,-0.005 -0.0459,-0.009 0,0 -0.0459,-0.005 0,0 0,-0.005 0,0 -0.0459,0 0,0 0,0 -0.0459,-0.005 0,0 0,0 -0.0459,0 0,0 0,0 -0.0459,0 0,0 -0.0459,0 0,0 -0.0459,0 c -1.00978,1.00519 -2.47855,1.02355 -3.12113,1.02355 v 0.57374 c 0.36719,0 1.42286,0 2.34084,-0.44522 v 8.16083 c 0,0.52784 0,0.73897 -1.60646,0.73897 h -0.64259 v 0.57374 h 5.73737 v -0.57374 h -0.59668 c -1.60647,0 -1.60647,-0.21113 -1.60647,-0.73897 z" + id="path6551" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spa... [truncated message content] |
From: <car...@us...> - 2011-10-21 10:15:25
|
Revision: 8802 http://octave.svn.sourceforge.net/octave/?rev=8802&view=rev Author: carandraug Date: 2011-10-21 10:15:18 +0000 (Fri, 21 Oct 2011) Log Message: ----------- pgmres.m: removing duplicated function implemented in C++ and Octave Modified Paths: -------------- trunk/octave-forge/main/general/inst/unvech.m Removed Paths: ------------- trunk/octave-forge/main/linear-algebra/inst/pgmres.m Modified: trunk/octave-forge/main/general/inst/unvech.m =================================================================== --- trunk/octave-forge/main/general/inst/unvech.m 2011-10-21 08:15:33 UTC (rev 8801) +++ trunk/octave-forge/main/general/inst/unvech.m 2011-10-21 10:15:18 UTC (rev 8802) @@ -1,9 +1,11 @@ ## Copyright (C) 2006 Michael Creel <mic...@ua...> ## Copyright (C) 2009 Jaroslav Hajek <hi...@gm...> +## Copyright (c) 2011 Juan Pablo Carbajal <car...@if...> +## Copyright (c) 2011 Carnë Draug <car...@gm...> ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or +## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, @@ -15,39 +17,53 @@ ## along with this program; If not, see <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {} unvech (@var{v}) -## Performs the reverse of "vech". Generates a symmetric matrix from the lower -## triangular elements, received as a vector @var{v}. +## @deftypefn {Function File} {@var{m} =} unvech (@var{v}, @var{scale}) +## Performs the reverse of @code{vech} on the vector @var{v}. +## +## Given a Nx1 array @var{v} describing the lower triangular part of a +## matrix (as obtained from @code{vech}), it returns the full matrix. +## +## The upper triangular part of the matrix will be multiplied by @var{scale} such +## that 1 and -1 can be used for symmetric and antisymmetric matrix respectively. +## @var{scale} must be a scalar and defaults to 1. +## +## @seealso{vech, ind2sub, sub2ind_tril} ## @end deftypefn -function x = unvech (v) +function M = unvech (v, scale = 1) - if (nargin != 1) - usage ("unvech (v)"); + if ( nargin < 1 || nargin > 2 ) + print_usage; + elseif ( !ismatrix (v) && any (size (v) != 1) ) + error ("V must be a row orcolumn matrix") + elseif ( !isnumeric (scale) || !isscalar (scale) ) + error ("SCALE must be a scalar") endif - - if (! isvector(v)) - usage ("unvech (v)"); - endif - - # find out dimension of symmetric matrix - p = length (v); - n = -(1 - sqrt (1 + 8*p))/2; - - if (mod (n, 1) != 0) - error("unvech: the input vector does not generate a square matrix"); - endif - - x = zeros (n, n); - # do the reverse of vech - count = 0; - for j = 1 : n - i = j : n; - x(j,i) = x(i,j) = v(count + i); - count += n - j; - endfor + N = length (v); + dim = (sqrt ( 1 + 8*N ) - 1)/2; + [r, c] = ind2sub_tril (dim, 1:N); + M = accumarray ([r; c].', v); + M += scale * tril (M, -1).'; + endfunction %!assert(unvech([1;0;0;1;0;1]), full(eye(3,3)) ); -%!error <does not generate a square matrix> unvech([1;0;0;1;0;1;1]); + +#%!error <does not generate a square matrix> unvech([1;0;0;1;0;1;1]); + +%!test %symmetric +%! dim = 10; +%! A = tril( floor ( 5*(2*rand(dim)-1) ) ); +%! A += A.'; +%! M = vech(A); +%! M = unvech(M, 1); +%! assert (A, M); + +%!test %antisymmetric +%! dim = 10; +%! A = tril( floor ( 5*(2*rand(dim)-1) ) ); +%! A -= A.'; +%! M = vech(A); +%! M = unvech(M, -1); +%! assert (A, M); Deleted: trunk/octave-forge/main/linear-algebra/inst/pgmres.m =================================================================== --- trunk/octave-forge/main/linear-algebra/inst/pgmres.m 2011-10-21 08:15:33 UTC (rev 8801) +++ trunk/octave-forge/main/linear-algebra/inst/pgmres.m 2011-10-21 10:15:18 UTC (rev 8802) @@ -1,134 +0,0 @@ -## Copyright (C) 2009,2010 Carlo de Falco -## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or -## (at your option) any later version. -## -## This program is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -## GNU General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with this program; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -## -## Author: Carlo de Falco <cdf _AT_ users _DOT_ sourceforge _DOT_ net> -## Created: 2009-06-01 -## Modified: 2010-05-28 - -## Solves A x = b using the Preconditioned GMRES iterative method -## with restart a.k.a. PGMRES(m). -## -## rtol is the relative tolerance, -## maxit the maximum number of iterations, -## x0 the initial guess and -## m is the restart parameter. -## -## A can be passed as a matrix or as a function handle or -## inline function f such that f(x) = A*x. -## -## The preconditioner P can be passed as a matrix or as a function handle or -## inline function g such that g(x) = P\x. - -function [x, resids] = pgmres (A, b, x0, rtol, maxit, restart, P) - - if ((nargin != 7) && (nargin != 6)) - print_usage (); - end - - if (ischar (A)) - Ax = str2func (A); - elseif (ismatrix (A)) - Ax = @(x) A*x; - elseif (isa (A, "function_handle")) - Ax = A; - else - error ("pgmres: first argument is expected to be a function or matrix"); - endif - - if (nargin < 7) - Pm1x = @(x) x; - elseif (ischar (P)) - Pm1x = str2func (P); - elseif (ismatrix (P)) - Pm1x = @(x) P\x; - elseif (isa (P, "function_handle")) - Pm1x = P; - else - error ("pgmres: first argument is expected to be a function or matrix"); - endif - - x_old = x0; - x = x_old; - prec_res = Pm1x (b - Ax (x_old)); - prec_res_norm = norm (prec_res, 2); - - B = zeros (restart + 1, 1); - V = zeros (rows (x), restart); - H = zeros (restart + 1, restart); - - ## begin loop - iter = 1; - restart_it = restart + 1; - resids = zeros (maxit, 1); - resids(1) = prec_res_norm; - prec_b_norm = norm (Pm1x (b), 2); - - while (((iter <= maxit) && ((rtol == 0) || (prec_res_norm > rtol*prec_b_norm)))) - ## restart - if (restart_it > restart) - restart_it = 1; - x_old = x; - prec_res = Pm1x (b - Ax (x_old)); - prec_res_norm = norm (prec_res, 2); - B(1) = prec_res_norm; - H(:) = 0; - V(:, 1) = prec_res/prec_res_norm; - endif - ##basic iteration - - tmp = Pm1x (Ax (V(:, restart_it))); - [V(:,restart_it+1), H(1:restart_it+1, restart_it)] = mgorth (tmp, V(:,1:restart_it)); - - Y = (H(1:restart_it+1, 1:restart_it) \ B (1:restart_it+1)); - - little_res = B(1:restart_it+1) - H(1:restart_it+1, 1:restart_it) * Y(1:restart_it); - prec_res_norm = norm (little_res, 2); - - x = x_old + V(:, 1:restart_it) * Y(1:restart_it); - - resids(iter) = prec_res_norm ; - restart_it++ ; iter++; - endwhile - - resids = resids(1:iter-1); - -endfunction - - -%!shared A, b, dim -%!test -%! dim = 300; -%! A = spdiags ([-ones(dim,1) 2*ones(dim,1) ones(dim,1)], [-1:1], dim, dim); -%! b = ones(dim, 1); -%! [x, resids] = pgmres (A, b, b, 1e-10,dim, dim, @(x) x./diag(A)); -%! assert(x, A\b, 1e-9*norm(x,inf)) -%! -%!test -%! [x, resids] = pgmres (A, b, b, 1e-10, 1e4, dim, @(x) diag(diag(A))\x); -%! assert(x, A\b, 1e-7*norm(x,inf)) -%! -%!test -%! A = sprandn (dim, dim, .1); -%! A = A'*A; -%! b = rand (dim, 1); -%! [x, resids] = pgmres (@(x) A*x, b, b, 1e-10, dim, dim, @(x) diag(diag(A))\x); -%! assert(x, A\b, 1e-9*norm(x,inf)) -%! [x, resids] = pgmres (A, b, b, 1e-10, dim, dim, @(x) diag(diag(A))\x); -%! assert(x, A\b, 1e-9*norm(x,inf)) -%! -%!test -%! [x, resids] = pgmres (A, b, b, 1e-10, 1e6, dim, @(x) x./diag(A)); -%! assert(x, A\b, 1e-7*norm(x,inf)) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jpi...@us...> - 2011-10-21 20:24:12
|
Revision: 8831 http://octave.svn.sourceforge.net/octave/?rev=8831&view=rev Author: jpicarbajal Date: 2011-10-21 20:24:00 +0000 (Fri, 21 Oct 2011) Log Message: ----------- geometry. re-adding Added Paths: ----------- trunk/octave-forge/main/geometry/ trunk/octave-forge/main/geometry/DESCRIPTION trunk/octave-forge/main/geometry/doc/ trunk/octave-forge/main/geometry/doc/NEWS trunk/octave-forge/main/geometry/inst/ trunk/octave-forge/main/geometry/inst/geom2d/ trunk/octave-forge/main/geometry/inst/geom2d/Contents.m trunk/octave-forge/main/geometry/inst/geom2d/angle2Points.m trunk/octave-forge/main/geometry/inst/geom2d/angle3Points.m trunk/octave-forge/main/geometry/inst/geom2d/angleAbsDiff.m trunk/octave-forge/main/geometry/inst/geom2d/angleDiff.m trunk/octave-forge/main/geometry/inst/geom2d/angleSort.m trunk/octave-forge/main/geometry/inst/geom2d/angles2d.m trunk/octave-forge/main/geometry/inst/geom2d/bisector.m trunk/octave-forge/main/geometry/inst/geom2d/boxes2d.m trunk/octave-forge/main/geometry/inst/geom2d/cartesianLine.m trunk/octave-forge/main/geometry/inst/geom2d/cbezier2poly.m trunk/octave-forge/main/geometry/inst/geom2d/centroid.m trunk/octave-forge/main/geometry/inst/geom2d/changelog.txt trunk/octave-forge/main/geometry/inst/geom2d/circleArcAsCurve.m trunk/octave-forge/main/geometry/inst/geom2d/circleAsPolygon.m trunk/octave-forge/main/geometry/inst/geom2d/circles2d.m trunk/octave-forge/main/geometry/inst/geom2d/clipEdge.m trunk/octave-forge/main/geometry/inst/geom2d/clipLine.m trunk/octave-forge/main/geometry/inst/geom2d/clipPoints.m trunk/octave-forge/main/geometry/inst/geom2d/clipRay.m trunk/octave-forge/main/geometry/inst/geom2d/crackPattern.m trunk/octave-forge/main/geometry/inst/geom2d/crackPattern2.m trunk/octave-forge/main/geometry/inst/geom2d/createBasisTransform.m trunk/octave-forge/main/geometry/inst/geom2d/createCircle.m trunk/octave-forge/main/geometry/inst/geom2d/createDirectedCircle.m trunk/octave-forge/main/geometry/inst/geom2d/createEdge.m trunk/octave-forge/main/geometry/inst/geom2d/createHomothecy.m trunk/octave-forge/main/geometry/inst/geom2d/createLine.m trunk/octave-forge/main/geometry/inst/geom2d/createLineReflection.m trunk/octave-forge/main/geometry/inst/geom2d/createRay.m trunk/octave-forge/main/geometry/inst/geom2d/createRotation.m trunk/octave-forge/main/geometry/inst/geom2d/createScaling.m trunk/octave-forge/main/geometry/inst/geom2d/createTranslation.m trunk/octave-forge/main/geometry/inst/geom2d/createVector.m trunk/octave-forge/main/geometry/inst/geom2d/deg2rad.m trunk/octave-forge/main/geometry/inst/geom2d/distancePointEdge.m trunk/octave-forge/main/geometry/inst/geom2d/distancePointLine.m trunk/octave-forge/main/geometry/inst/geom2d/distancePoints.m trunk/octave-forge/main/geometry/inst/geom2d/drawArrow.m trunk/octave-forge/main/geometry/inst/geom2d/drawBezierCurve.m trunk/octave-forge/main/geometry/inst/geom2d/drawBox.m trunk/octave-forge/main/geometry/inst/geom2d/drawCenteredEdge.m trunk/octave-forge/main/geometry/inst/geom2d/drawCircle.m trunk/octave-forge/main/geometry/inst/geom2d/drawCircleArc.m trunk/octave-forge/main/geometry/inst/geom2d/drawEdge.m trunk/octave-forge/main/geometry/inst/geom2d/drawEllipse.m trunk/octave-forge/main/geometry/inst/geom2d/drawEllipseArc.m trunk/octave-forge/main/geometry/inst/geom2d/drawLabels.m trunk/octave-forge/main/geometry/inst/geom2d/drawLine.m trunk/octave-forge/main/geometry/inst/geom2d/drawOrientedBox.m trunk/octave-forge/main/geometry/inst/geom2d/drawParabola.m trunk/octave-forge/main/geometry/inst/geom2d/drawPoint.m trunk/octave-forge/main/geometry/inst/geom2d/drawRay.m trunk/octave-forge/main/geometry/inst/geom2d/drawRect.m trunk/octave-forge/main/geometry/inst/geom2d/drawShape.m trunk/octave-forge/main/geometry/inst/geom2d/edgeAngle.m trunk/octave-forge/main/geometry/inst/geom2d/edgeLength.m trunk/octave-forge/main/geometry/inst/geom2d/edgePosition.m trunk/octave-forge/main/geometry/inst/geom2d/edgeToLine.m trunk/octave-forge/main/geometry/inst/geom2d/edges2d.m trunk/octave-forge/main/geometry/inst/geom2d/ellipseAsPolygon.m trunk/octave-forge/main/geometry/inst/geom2d/ellipses2d.m trunk/octave-forge/main/geometry/inst/geom2d/enclosingCircle.m trunk/octave-forge/main/geometry/inst/geom2d/fitAffineTransform2d.m trunk/octave-forge/main/geometry/inst/geom2d/hexagonalGrid.m trunk/octave-forge/main/geometry/inst/geom2d/inertiaEllipse.m trunk/octave-forge/main/geometry/inst/geom2d/intersectBoxes.m trunk/octave-forge/main/geometry/inst/geom2d/intersectCircles.m trunk/octave-forge/main/geometry/inst/geom2d/intersectEdges.m trunk/octave-forge/main/geometry/inst/geom2d/intersectLineCircle.m trunk/octave-forge/main/geometry/inst/geom2d/intersectLineEdge.m trunk/octave-forge/main/geometry/inst/geom2d/intersectLines.m trunk/octave-forge/main/geometry/inst/geom2d/isCounterClockwise.m trunk/octave-forge/main/geometry/inst/geom2d/isLeftOriented.m trunk/octave-forge/main/geometry/inst/geom2d/isParallel.m trunk/octave-forge/main/geometry/inst/geom2d/isPerpendicular.m trunk/octave-forge/main/geometry/inst/geom2d/isPointInCircle.m trunk/octave-forge/main/geometry/inst/geom2d/isPointInEllipse.m trunk/octave-forge/main/geometry/inst/geom2d/isPointOnCircle.m trunk/octave-forge/main/geometry/inst/geom2d/isPointOnEdge.m trunk/octave-forge/main/geometry/inst/geom2d/isPointOnLine.m trunk/octave-forge/main/geometry/inst/geom2d/isPointOnRay.m trunk/octave-forge/main/geometry/inst/geom2d/lineAngle.m trunk/octave-forge/main/geometry/inst/geom2d/linePosition.m trunk/octave-forge/main/geometry/inst/geom2d/lines2d.m trunk/octave-forge/main/geometry/inst/geom2d/medianLine.m trunk/octave-forge/main/geometry/inst/geom2d/mergeBoxes.m trunk/octave-forge/main/geometry/inst/geom2d/midPoint.m trunk/octave-forge/main/geometry/inst/geom2d/minDistancePoints.m trunk/octave-forge/main/geometry/inst/geom2d/normalizeAngle.m trunk/octave-forge/main/geometry/inst/geom2d/normalizeVector.m trunk/octave-forge/main/geometry/inst/geom2d/orthogonalLine.m trunk/octave-forge/main/geometry/inst/geom2d/parallelLine.m trunk/octave-forge/main/geometry/inst/geom2d/pointOnLine.m trunk/octave-forge/main/geometry/inst/geom2d/points2d.m trunk/octave-forge/main/geometry/inst/geom2d/polarPoint.m trunk/octave-forge/main/geometry/inst/geom2d/private/ trunk/octave-forge/main/geometry/inst/geom2d/private/assertAlmostEqual.m trunk/octave-forge/main/geometry/inst/geom2d/private/assertElementsAlmostEqual.m trunk/octave-forge/main/geometry/inst/geom2d/private/assertEqual.m trunk/octave-forge/main/geometry/inst/geom2d/private/assertFalse.m trunk/octave-forge/main/geometry/inst/geom2d/private/assertTrue.m trunk/octave-forge/main/geometry/inst/geom2d/projPointOnLine.m trunk/octave-forge/main/geometry/inst/geom2d/rad2deg.m trunk/octave-forge/main/geometry/inst/geom2d/radicalAxis.m trunk/octave-forge/main/geometry/inst/geom2d/randomPointInBox.m trunk/octave-forge/main/geometry/inst/geom2d/rays2d.m trunk/octave-forge/main/geometry/inst/geom2d/readme.txt trunk/octave-forge/main/geometry/inst/geom2d/reverseEdge.m trunk/octave-forge/main/geometry/inst/geom2d/reverseLine.m trunk/octave-forge/main/geometry/inst/geom2d/rotateVector.m trunk/octave-forge/main/geometry/inst/geom2d/squareGrid.m trunk/octave-forge/main/geometry/inst/geom2d/transformEdge.m trunk/octave-forge/main/geometry/inst/geom2d/transformLine.m trunk/octave-forge/main/geometry/inst/geom2d/transformPoint.m trunk/octave-forge/main/geometry/inst/geom2d/transformVector.m trunk/octave-forge/main/geometry/inst/geom2d/transforms2d.m trunk/octave-forge/main/geometry/inst/geom2d/triangleGrid.m trunk/octave-forge/main/geometry/inst/geom2d/vectorAngle.m trunk/octave-forge/main/geometry/inst/geom2d/vectorNorm.m trunk/octave-forge/main/geometry/inst/geom2d/vectors2d.m trunk/octave-forge/main/geometry/inst/io/ trunk/octave-forge/main/geometry/inst/io/data2geo.m trunk/octave-forge/main/geometry/inst/io/drawing.svg trunk/octave-forge/main/geometry/inst/io/drawing2.svg trunk/octave-forge/main/geometry/inst/io/drawing3.svg trunk/octave-forge/main/geometry/inst/io/drawing4.svg trunk/octave-forge/main/geometry/inst/io/drawing5.svg trunk/octave-forge/main/geometry/inst/io/private/ trunk/octave-forge/main/geometry/inst/io/private/SVGstrPath2SVGpath.m trunk/octave-forge/main/geometry/inst/io/private/formatSVGstr.m trunk/octave-forge/main/geometry/inst/io/private/getSVGPaths_py.m trunk/octave-forge/main/geometry/inst/io/private/getSVGdata.m trunk/octave-forge/main/geometry/inst/io/private/getSVGstrPath.m trunk/octave-forge/main/geometry/inst/io/private/inkex.py trunk/octave-forge/main/geometry/inst/io/private/lineGeo.m trunk/octave-forge/main/geometry/inst/io/private/lineLoopGeo.m trunk/octave-forge/main/geometry/inst/io/private/parsePath.py trunk/octave-forge/main/geometry/inst/io/private/planeSurfGeo.m trunk/octave-forge/main/geometry/inst/io/private/pointGeo.m trunk/octave-forge/main/geometry/inst/io/private/ruledSurfGeo.m trunk/octave-forge/main/geometry/inst/io/private/simplepath.py trunk/octave-forge/main/geometry/inst/io/svgload.m trunk/octave-forge/main/geometry/inst/io/svgnormalize.m trunk/octave-forge/main/geometry/inst/io/svgpath2polygon.m trunk/octave-forge/main/geometry/matGeom_raw/ trunk/octave-forge/main/geometry/matGeom_raw/Demos/ trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/ trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/capsC26-1-5-10.png trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/demoGeom3d/ trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/demoGeom3d/demoGeom3d.m trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/demoGeom3d/html/ trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/demoGeom3d/html/demoGeom3d.html trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/demoGeom3d/html/demoGeom3d.png trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/demoGeom3d/html/demoGeom3d_01.png trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/demoGeom3d/html/demoGeom3d_02.png trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/demoGeom3d/html/demoGeom3d_03.png trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/demoRevolutionSurface.m trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/drawSoccerBall/ trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/drawSoccerBall/drawSoccerBall.m trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/drawSoccerBall/html/ trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/drawSoccerBall/html/drawSoccerBall.html trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/drawSoccerBall/html/drawSoccerBall.png trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/drawSoccerBall/html/drawSoccerBall_01.png trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/drawSoccerBall/html/drawSoccerBall_02.png trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/drawSoccerBall/html/drawSoccerBall_03.png trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/geom3d-demos/ trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/geom3d-demos/demoGeom3d.m trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/geom3d-demos/demoInertiaEllipsoid.m trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/geom3d-demos/drawSoccerBall.m trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/geom3d-demos/drawVoronoiCell.m trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/geom3d-demos/html/ trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/geom3d-demos/html/demoGeom3d.html trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/geom3d-demos/html/demoGeom3d.png trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/geom3d-demos/html/demoGeom3d_01.png trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/geom3d-demos/html/demoGeom3d_02.png trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/geom3d-demos/html/demoGeom3d_03.png trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/geom3d-demos/html/demoInertiaEllipsoid.html trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/geom3d-demos/html/demoInertiaEllipsoid.png trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/geom3d-demos/html/demoInertiaEllipsoid_01.png trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/geom3d-demos/html/demoInertiaEllipsoid_02.png trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/geom3d-demos/html/drawSoccerBall.html trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/geom3d-demos/html/drawSoccerBall.png trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/geom3d-demos/html/drawSoccerBall_01.png trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/geom3d-demos/html/drawSoccerBall_02.png trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/geom3d-demos/html/drawSoccerBall_03.png trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/geom3d-demos/html/drawVoronoiCell.html trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/geom3d-demos/html/drawVoronoiCell.png trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/geom3d-demos/html/drawVoronoiCell_01.png trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/geom3d-demos/html/drawVoronoiCell_02.png trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/geom3d-demos/html/drawVoronoiCell_03.png trunk/octave-forge/main/geometry/matGeom_raw/Demos/geom3d/triangulateFacesDemo.m trunk/octave-forge/main/geometry/matGeom_raw/Demos/meshes3d/ trunk/octave-forge/main/geometry/matGeom_raw/Demos/meshes3d/demoPolyhedra/ trunk/octave-forge/main/geometry/matGeom_raw/Demos/meshes3d/demoPolyhedra/demoPolyhedra.m trunk/octave-forge/main/geometry/matGeom_raw/Demos/meshes3d/demoPolyhedra/html/ trunk/octave-forge/main/geometry/matGeom_raw/Demos/meshes3d/demoPolyhedra/html/demoPolyhedra.html trunk/octave-forge/main/geometry/matGeom_raw/Demos/meshes3d/demoPolyhedra/html/demoPolyhedra.png trunk/octave-forge/main/geometry/matGeom_raw/Demos/meshes3d/demoPolyhedra/html/demoPolyhedra_01.png trunk/octave-forge/main/geometry/matGeom_raw/Demos/meshes3d/drawVoronoiCell/ trunk/octave-forge/main/geometry/matGeom_raw/Demos/meshes3d/drawVoronoiCell/drawVoronoiCell.m trunk/octave-forge/main/geometry/matGeom_raw/Demos/meshes3d/drawVoronoiCell/html/ trunk/octave-forge/main/geometry/matGeom_raw/Demos/meshes3d/drawVoronoiCell/html/drawVoronoiCell.html trunk/octave-forge/main/geometry/matGeom_raw/Demos/meshes3d/drawVoronoiCell/html/drawVoronoiCell.png trunk/octave-forge/main/geometry/matGeom_raw/Demos/meshes3d/drawVoronoiCell/html/drawVoronoiCell_01.png trunk/octave-forge/main/geometry/matGeom_raw/Demos/meshes3d/drawVoronoiCell/html/drawVoronoiCell_02.png trunk/octave-forge/main/geometry/matGeom_raw/Demos/meshes3d/drawVoronoiCell/html/drawVoronoiCell_03.png trunk/octave-forge/main/geometry/matGeom_raw/Demos/polygons2d/ trunk/octave-forge/main/geometry/matGeom_raw/Demos/polygons2d/demoExpandPolygon/ trunk/octave-forge/main/geometry/matGeom_raw/README trunk/octave-forge/main/geometry/matGeom_raw/geom3d/ trunk/octave-forge/main/geometry/matGeom_raw/geom3d/Contents.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/anglePoints3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/angleSort3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/angles3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/box3dVolume.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/boxes3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/cart2cyl.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/cart2sph2.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/cart2sph2d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/changelog.txt trunk/octave-forge/main/geometry/matGeom_raw/geom3d/changes.txt trunk/octave-forge/main/geometry/matGeom_raw/geom3d/circle3dOrigin.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/circle3dPoint.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/circle3dPosition.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/circles3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/clipConvexPolygon3dHP.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/clipLine3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/clipPoints3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/clipPolygon3dHP.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/composeTransforms3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/createBasisTransform3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/createEulerAnglesRotation.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/createLine3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/createPlane.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/createRotation3dLineAngle.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/createRotationOx.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/createRotationOy.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/createRotationOz.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/createScaling3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/createSphere.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/createTranslation3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/cyl2cart.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/dihedralAngle.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/distanceLines3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/distancePointLine3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/distancePointPlane.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/distancePoints3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/drawAxis3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/drawAxisCube.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/drawBox3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/drawCircle3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/drawCircleArc3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/drawCube.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/drawCuboid.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/drawCurve3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/drawCylinder.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/drawEdge3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/drawEllipse3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/drawEllipsoid.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/drawGrid3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/drawLine3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/drawPartialPatch.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/drawPlane3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/drawPoint3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/drawPolygon3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/drawPolyline3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/drawSphere.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/drawSphericalTriangle.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/drawSurfPatch.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/drawTorus.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/eulerAnglesToRotation3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/fillPolygon3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/inertiaEllipsoid.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/intersectBoxes3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/intersectEdgePlane.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/intersectLineCylinder.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/intersectLinePlane.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/intersectLinePolygon3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/intersectLineSphere.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/intersectLineTriangle3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/intersectPlaneLine.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/intersectPlaneSphere.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/intersectPlanes.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/intersectRayPolygon3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/isBelowPlane.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/isCoplanar.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/isParallel3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/isPerpendicular3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/linePosition3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/lines3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/medianPlane.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/mergeBoxes3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/midPoint3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/normalize3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/normalizePlane.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/normalizeVector3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/planeNormal.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/planePoint.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/planePosition.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/planes3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/point3dBounds.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/points3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/polygon3dNormalAngle.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/polygonCentroid3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/polygons3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/private/ trunk/octave-forge/main/geometry/matGeom_raw/geom3d/private/localToGlobal3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/projPointOnPlane.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/randomAngle3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/randomPointInBox3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/readme.txt trunk/octave-forge/main/geometry/matGeom_raw/geom3d/recenterTransform3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/revolutionSurface.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/rotation3dAxisAndAngle.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/rotation3dToEulerAngles.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/rotationOx.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/rotationOy.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/rotationOz.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/scale3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/scaling3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/sph2cart2.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/sph2cart2d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/spheres.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/sphericalAngle.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/surfaceCurvature.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/transformLine3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/transformPoint3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/transformVector3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/transforms3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/translation3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/triangleArea3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/vecnorm3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/vectorAngle3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/vectorNorm3d.m trunk/octave-forge/main/geometry/matGeom_raw/geom3d/vectors3d.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/ trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/Contents.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/changelog.txt trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/checkMeshAdjacentFaces.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/clipConvexPolyhedronHP.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/clipMeshVertices.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/computeMeshEdges.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/createCube.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/createCubeOctahedron.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/createDodecahedron.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/createIcosahedron.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/createMengerSponge.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/createOctahedron.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/createRhombododecahedron.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/createSoccerBall.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/createTetrahedron.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/createTetrakaidecahedron.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/drawFaceNormals.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/drawMesh.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/drawPolyhedra.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/drawPolyhedron.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/faceCentroids.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/faceNormal.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/meshDihedralAngles.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/meshEdgeFaces.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/meshEdgeLength.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/meshFace.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/meshReduce.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/meshSurfaceArea.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/minConvexHull.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/polyhedra.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/polyhedronMeanBreadth.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/polyhedronNormalAngle.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/polyhedronSlice.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/private/ trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/private/formatMeshOutput.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/private/parseMeshData.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/steinerPolytope.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/triangulateFaces.m trunk/octave-forge/main/geometry/matGeom_raw/meshes3d/trimeshSurfaceArea.m Added: trunk/octave-forge/main/geometry/DESCRIPTION =================================================================== --- trunk/octave-forge/main/geometry/DESCRIPTION (rev 0) +++ trunk/octave-forge/main/geometry/DESCRIPTION 2011-10-21 20:24:00 UTC (rev 8831) @@ -0,0 +1,11 @@ +Name: Geometry +Version: 1.2.0 +Date: 2011-10-21 +Author: David Legland <dav...@gr...>, Juan Pablo Carbajal <car...@if...> +Maintainer: Juan Pablo Carbajal <car...@if...> +Title: Computational Geometry +Description: Library for geometric computing extending MatGeom functions. Useful to create, transform, manipulate and display geometric primitives. +Depends: octave (>= 3.4.0) +Autoload: no +License: GPL version 3 and BSD (see files) +Url: http://octave.sf.net, http://matgeom.sf.net Added: trunk/octave-forge/main/geometry/doc/NEWS =================================================================== --- trunk/octave-forge/main/geometry/doc/NEWS (rev 0) +++ trunk/octave-forge/main/geometry/doc/NEWS 2011-10-21 20:24:00 UTC (rev 8831) @@ -0,0 +1,161 @@ +Summary of important user-visible changes for releases of the geometry package + +=============================================================================== +geometry-1.0.0 Release Date: 2011-09-26 Release Manager: Juan Pablo Carbajal +=============================================================================== + +** First official release. + +=============================================================================== +geometry-1.0.1 Release Date: 2011-09-27 Release Manager: Juan Pablo Carbajal +=============================================================================== + +Improvements to the docstrings of all functions. + +=============================================================================== +geometry-1.1 Release Date: 2011-10-04 Release Manager: Juan Pablo Carbajal +=============================================================================== + +* Starting to add geom2d from matGeom +angle2Points.m +angle3Points.m +angleAbsDiff.m +angleDiff.m +angles2d.m +angleSort.m +createLine.m +deg2rad.m +edgeAngle.m +lineAngle.m +normalizeAngle.m +rad2deg.m +vectorAngle.m + +=============================================================================== +geometry-1.1.1 Release Date: 2011-10-06 Release Manager: Juan Pablo Carbajal +=============================================================================== + +* Continue to add geom2d from matGeom (boxes and clips) + cbezier2poly.m + boxes2d.m + clipEdge.m + clipLine.m + clipPoints.m + drawBezierCurve.m + drawBox.m + clipRay.m + intersectBoxes.m + intersectLines.m + linePosition.m + mergeBoxes.m + randomPointInBox.m + drawLine.m + +=============================================================================== +geometry-1.1.2 Release Date: 2011-10-09 Release Manager: Juan Pablo Carbajal +=============================================================================== + +* Continue to add geom2d from matGeom (rays and vectors) + createRay.m + drawEdge.m + drawRay.m + isParallel.m + isPerpendicular.m + isPointOnRay.m + normalizeVector.m + rays2d.m + rotateVector.m + transformVector.m + vectorNorm.m + vectors2d.m + +=============================================================================== +geometry-1.1.3 Release Date: 2011-10-13 Release Manager: Juan Pablo Carbajal +=============================================================================== + +* Continue to add geom2d from matGeom (transforms and points2d) + createBasisTransform.m + createHomothecy.m + createLineReflection.m + createRotation.m + createScaling.m + createTranslation.m + transformPoint.m + transforms2d.m + fitAffineTransform2d.m + transformEdge.m + transformLine.m + centroid.m + distancePoints.m + midPoint.m + polarPoint.m + drawPoint.m + isCounterClockwise.m + minDistancePoints.m + pointOnLine.m + points2d.m + intersectLineEdge.m + isPointOnEdge.m + +=============================================================================== +geometry-1.2 Release Date: 2011-10-xx Release Manager: Juan Pablo Carbajal +=============================================================================== + +* All geom2d added + createCircle.m + createDirectedCircle.m + createEdge.m + medianLine.m + Contents.m + bisector.m + cartesianLine.m + drawArrow.m + edges2d.m + lines2d.m + orthogonalLine.m + parallelLine.m + projPointOnLine.m + drawCenteredEdge.m + drawCircle.m + drawCircleArc.m + drawEllipse.m + drawEllipseArc.m + drawLabels.m + drawOrientedBox.m + drawParabola.m + drawRect.m + drawShape.m + circles2d.m + ellipses2d.m + createVector.m + inertiaEllipse.m + changelog.txt + readme.txt + hexagonalGrid.m + squareGrid.m + triangleGrid.m + intersectCircles.m + intersectEdges.m + intersectLineCircle.m + isLeftOriented.m + isPointInCircle.m + isPointInEllipse.m + isPointOnCircle.m + isPointOnLine.m + edgeLength.m + edgePosition.m + edgeToLine.m + circleArcAsCurve.m + circleAsPolygon.m + crackPattern.m + crackPattern2.m + distancePointEdge.m + distancePointLine.m + ellipseAsPolygon.m + enclosingCircle.m + radicalAxis.m + reverseEdge.m + reverseLine.m + +=============================================================================== + Added: trunk/octave-forge/main/geometry/inst/geom2d/Contents.m =================================================================== --- trunk/octave-forge/main/geometry/inst/geom2d/Contents.m (rev 0) +++ trunk/octave-forge/main/geometry/inst/geom2d/Contents.m 2011-10-21 20:24:00 UTC (rev 8831) @@ -0,0 +1,230 @@ +%% Copyright (c) 2011, INRA +%% 2007-2011, David Legland <dav...@gr...> +%% 2011 Adapted to Octave by Juan Pablo Carbajal <car...@if...> +%% +%% All rights reserved. +%% (simplified BSD License) +%% +%% Redistribution and use in source and binary forms, with or without +%% modification, are permitted provided that the following conditions are met: +%% +%% 1. Redistributions of source code must retain the above copyright notice, this +%% list of conditions and the following disclaimer. +%% +%% 2. Redistributions in binary form must reproduce the above copyright notice, +%% this list of conditions and the following disclaimer in the documentation +%% and/or other materials provided with the distribution. +%% +%% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +%% AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +%% IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +%% ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +%% LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +%% CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +%% SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +%% INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +%% CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +%% ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +%% POSSIBILITY OF SUCH DAMAGE. +%% +%% The views and conclusions contained in the software and documentation are +%% those of the authors and should not be interpreted as representing official +%% policies, either expressed or implied, of copyright holder. + +%% -*- texinfo -*- +%% @deftypefn {Function File} Contents () +%% GEOM2D Geometry 2D Toolbox +%% Version 1.0 21-Mar-2011 . +%% +%% Library to handle and visualize geometric primitives such as points, +%% lines, circles and ellipses, polygons... +%% +%% The goal is to provide a low-level library for manipulating geometrical +%% primitives, making easier the development of more complex geometric +%% algorithms. +%% +%% Most functions works for planar shapes, but some ones have been +%% extended to 3D or to any dimension. +%% +%% Points +%% points2d - Description of functions operating on points +%% clipPoints - Clip a set of points by a box +%% centroid - Compute centroid (center of mass) of a set of points +%% midPoint - Middle point of two points or of an edge +%% isCounterClockwise - Compute relative orientation of 3 points +%% polarPoint - Create a point from polar coordinates (rho + theta) +%% angle2Points - Compute horizontal angle between 2 points +%% angle3Points - Compute oriented angle made by 3 points +%% angleSort - Sort points in the plane according to their angle to origin +%% distancePoints - Compute distance between two points +%% minDistancePoints - Minimal distance between several points +%% transformPoint - Transform a point with an affine transform +%% drawPoint - Draw the point on the axis. +%% +%% Vectors +%% vectors2d - Description of functions operating on plane vectors +%% createVector - Create a vector from two points +%% vectorNorm - Compute norm of a vector, or of a set of vectors +%% vectorAngle - Angle of a vector, or between 2 vectors +%% normalizeVector - Normalize a vector to have norm equal to 1 +%% isPerpendicular - Check orthogonality of two vectors +%% isParallel - Check parallelism of two vectors +%% transformVector - Transform a vector with an affine transform +%% rotateVector - Rotate a vector by a given angle +%% +%% Straight lines +%% lines2d - Description of functions operating on planar lines +%% createLine - Create a straight line from 2 points, or from other inputs +%% medianLine - Create a median line between two points +%% cartesianLine - Create a straight line from cartesian equation coefficients +%% orthogonalLine - Create a line orthogonal to another one. +%% parallelLine - Create a line parallel to another one. +%% intersectLines - Return all intersection points of N lines in 2D +%% lineAngle - Computes angle between two straight lines +%% linePosition - Position of a point on a line +%% lineFit - Fit a straight line to a set of points +%% clipLine - Clip a line with a box +%% reverseLine - Return same line but with opposite orientation +%% transformLine - Transform a line with an affine transform +%% drawLine - Draw the line on the current axis +%% +%% Edges (line segments between 2 points) +%% edges2d - Description of functions operating on planar edges +%% createEdge - Create an edge between two points, or from a line +%% edgeToLine - Convert an edge to a straight line +%% edgeAngle - Return angle of edge +%% edgeLength - Return length of an edge +%% midPoint - Middle point of two points or of an edge +%% edgePosition - Return position of a point on an edge +%% clipEdge - Clip an edge with a rectangular box +%% reverseEdge - Intervert the source and target vertices of edge +%% intersectEdges - Return all intersections between two set of edges +%% intersectLineEdge - Return intersection between a line and an edge +%% transformEdge - Transform an edge with an affine transform +%% drawEdge - Draw an edge given by 2 points +%% drawCenteredEdge - Draw an edge centered on a point +%% +%% Rays +%% rays2d - Description of functions operating on planar rays +%% createRay - Create a ray (half-line), from various inputs +%% bisector - Return the bisector of two lines, or 3 points +%% clipRay - Clip a ray with a box +%% drawRay - Draw a ray on the current axis +%% +%% Relations between points and lines +%% distancePointEdge - Minimum distance between a point and an edge +%% distancePointLine - Minimum distance between a point and a line +%% projPointOnLine - Project of a point orthogonally onto a line +%% pointOnLine - Create a point on a line at a given position on the line +%% isPointOnLine - Test if a point belongs to a line +%% isPointOnEdge - Test if a point belongs to an edge +%% isPointOnRay - Test if a point belongs to a ray +%% isLeftOriented - Test if a point is on the left side of a line +%% +%% Circles +%% circles2d - Description of functions operating on circles +%% createCircle - Create a circle from 2 or 3 points +%% createDirectedCircle - Create a directed circle +%% intersectCircles - Intersection points of two circles +%% intersectLineCircle - Intersection point(s) of a line and a circle +%% circleAsPolygon - Convert a circle into a series of points +%% circleArcAsCurve - Convert a circle arc into a series of points +%% isPointInCircle - Test if a point is located inside a given circle +%% isPointOnCircle - Test if a point is located on a given circle. +%% enclosingCircle - Find the minimum circle enclosing a set of points. +%% radicalAxis - Compute the radical axis (or radical line) of 2 circles +%% drawCircle - Draw a circle on the current axis +%% drawCircleArc - Draw a circle arc on the current axis +%% +%% Ellipses +%% ellipses2d - Description of functions operating on ellipses +%% inertiaEllipse - Inertia ellipse of a set of points +%% isPointInEllipse - Check if a point is located inside a given ellipse +%% ellipseAsPolygon - Convert an ellipse into a series of points +%% drawEllipse - Draw an ellipse on the current axis +%% drawEllipseArc - Draw an ellipse arc on the current axis +%% +%% Geometric transforms +%% transforms2d - Description of functions operating on transforms +%% createTranslation - Create the 3*3 matrix of a translation +%% createRotation - Create the 3*3 matrix of a rotation +%% createScaling - Create the 3*3 matrix of a scaling in 2 dimensions +%% createHomothecy - Create the the 3x3 matrix of an homothetic transform +%% createBasisTransform - Compute matrix for transforming a basis into another basis +%% createLineReflection - Create the the 3x3 matrix of a line reflection +%% fitAffineTransform2d - Fit an affine transform using two point sets +%% +%% Angles +%% angles2d - Description of functions for manipulating angles +%% normalizeAngle - Normalize an angle value within a 2*PI interval +%% angleAbsDiff - Absolute difference between two angles +%% angleDiff - Difference between two angles +%% deg2rad - Convert angle from degrees to radians +%% rad2deg - Convert angle from radians to degrees +%% +%% Boxes +%% boxes2d - Description of functions operating on bounding boxes +%% intersectBoxes - Intersection of two bounding boxes +%% mergeBoxes - Merge two boxes, by computing their greatest extent +%% randomPointInBox - Generate random point within a box +%% drawBox - Draw a box defined by coordinate extents +%% +%% Various drawing functions +%% drawBezierCurve - Draw a cubic bezier curve defined by 4 control points +%% drawParabola - Draw a parabola on the current axis +%% drawOrientedBox - Draw centered oriented rectangle +%% drawRect - Draw rectangle on the current axis +%% drawArrow - Draw an arrow on the current axis +%% drawLabels - Draw labels at specified positions +%% drawShape - Draw various types of shapes (circles, polygons...) +%% +%% Other shapes +%% squareGrid - Generate equally spaces points in plane. +%% hexagonalGrid - Generate hexagonal grid of points in the plane. +%% triangleGrid - Generate triangular grid of points in the plane. +%% crackPattern - Create a (bounded) crack pattern tessellation +%% crackPattern2 - Create a (bounded) crack pattern tessellation +%% +%% +%% Credits: +%% * function 'enclosingCircle' rewritten from a file from Yazan Ahed +%% (ya...@gm...), available on Matlab File Exchange +%% +%% ----- +%% Author: David Legland +%% e-mail: dav...@gr... +%% Created: 2005-11-07 +%% Copyright INRA - Cepia Software Platform. +%% Homepage: http://matgeom.sourceforge.net/ +%% http://www.pfl-cepia.inra.fr/index.php?page=geom2d +%% @end deftypefn + + help('Contents'); + + + %% Deprecated functions + + % createMedian - create a median line + % minDistance - compute minimum distance between a point and a set of points + % homothecy - create a homothecy as an affine transform + % rotation - return 3*3 matrix of a rotation + % translation - return 3*3 matrix of a translation + % scaling - return 3*3 matrix of a scaling in 2 dimensions + % lineSymmetry - create line symmetry as 2D affine transform + % vecnorm - compute norm of vector or of set of vectors + % normalize - normalize a vector + % onCircle - test if a point is located on a given circle. + % inCircle - test if a point is located inside a given circle. + % onEdge - test if a point belongs to an edge + % onLine - test if a point belongs to a line + % onRay - test if a point belongs to a ray + % invertLine - return same line but with opposite orientation + % clipLineRect - clip a line with a polygon + % formatAngle - Ensure an angle value is comprised between 0 and 2*PI + + + %% Others... + % drawRect2 - Draw centered rectangle on the current axis + +endfunction + Added: trunk/octave-forge/main/geometry/inst/geom2d/angle2Points.m =================================================================== --- trunk/octave-forge/main/geometry/inst/geom2d/angle2Points.m (rev 0) +++ trunk/octave-forge/main/geometry/inst/geom2d/angle2Points.m 2011-10-21 20:24:00 UTC (rev 8831) @@ -0,0 +1,109 @@ +%% Copyright (c) 2011, INRA +%% 2007-2011, David Legland <dav...@gr...> +%% 2011 Adapted to Octave by Juan Pablo Carbajal <car...@if...> +%% +%% All rights reserved. +%% (simplified BSD License) +%% +%% Redistribution and use in source and binary forms, with or without +%% modification, are permitted provided that the following conditions are met: +%% +%% 1. Redistributions of source code must retain the above copyright notice, this +%% list of conditions and the following disclaimer. +%% +%% 2. Redistributions in binary form must reproduce the above copyright notice, +%% this list of conditions and the following disclaimer in the documentation +%% and/or other materials provided with the distribution. +%% +%% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +%% AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +%% IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +%% ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +%% LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +%% CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +%% SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +%% INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +%% CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +%% ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +%% POSSIBILITY OF SUCH DAMAGE. +%% +%% The views and conclusions contained in the software and documentation are +%% those of the authors and should not be interpreted as representing official +%% policies, either expressed or implied, of copyright holder. + +%% -*- texinfo -*- +%% @deftypefn {Function File} {@var{alpha} =} angle2Points (@var{p1}, @var{p2}) +%% Compute horizontal angle between 2 points +%% +%% @var{p1} and @var{p2} are either [1x2] arrays, or [Nx2] arrays, in this case +%% @var{alpha} is a [Nx1] array. The angle computed is the horizontal angle of +%% the line (@var{p1},@var{p2}). +%% +%% Result is always given in radians, between 0 and 2*pi. +%% +%% @seealso{points2d, angles2d, angle3points, normalizeAngle, vectorAngle} +%% @end deftypefn + +function theta = angle2Points(varargin) + + % process input arguments + if length(varargin)==2 + p1 = varargin{1}; + p2 = varargin{2}; + elseif length(varargin)==1 + var = varargin{1}; + p1 = var(1,:); + p2 = var(2,:); + end + + % ensure data have correct size + n1 = size(p1, 1); + n2 = size(p2, 1); + if n1~=n2 && min(n1, n2)>1 + error('angle2Points: wrong size for inputs'); + end + + % angle of line (P2 P1), between 0 and 2*pi. + dp = bsxfun(@minus, p2, p1); + theta = mod(atan2(dp(:,2), dp(:,1)) + 2*pi, 2*pi); + +endfunction + +%!test +%! % all points inside window, possibly touching edges +%! p1 = [0 0]; +%! p2 = [10 0]; +%! angle_ = angle2Points (p1, p2); +%! assert (angle_,0,1e-6); +%! angle_ = angle2Points (p2, p1); +%! assert (angle_,pi,1e-6); + + +%!test +%! % all points inside window, possibly touching edges +%! p1 = [0 0]; +%! p2 = [0 10]; +%! angle_ = angle2Points (p1, p2); +%! assert (pi/2, angle_,1e-6); +%! angle_ = angle2Points (p2, p1); +%! assert (3*pi/2, angle_,1e-6); + +%!test +%! % all points inside window, possibly touching edges +%! p1 = [0 0;0 0;0 0;0 0]; +%! p2 = [10 0;10 10;0 10;-10 10]; +%! angle_ = angle2Points (p1, p2); +%! assert (size (p1, 1), size (angle_, 1)); +%! res = [0;pi/4;pi/2;3*pi/4]; +%! assert (res, angle_, 1e-6); + +%!test +%! % all points inside window, possibly touching edges +%! p1 = [0 0]; +%! p2 = [10 0;10 10;0 10;-10 10]; +%! angle_ = angle2Points (p1, p2); +%! assert(size (p2, 1), size (angle_, 1)); +%! res = [0;pi/4;pi/2;3*pi/4]; +%! assert(res, angle_,1e-6); + + Added: trunk/octave-forge/main/geometry/inst/geom2d/angle3Points.m =================================================================== --- trunk/octave-forge/main/geometry/inst/geom2d/angle3Points.m (rev 0) +++ trunk/octave-forge/main/geometry/inst/geom2d/angle3Points.m 2011-10-21 20:24:00 UTC (rev 8831) @@ -0,0 +1,82 @@ +%% Copyright (c) 2011, INRA +%% 2004-2011, David Legland <dav...@gr...> +%% 2011 Adapted to Octave by Juan Pablo Carbajal <car...@if...> +%% +%% All rights reserved. +%% (simplified BSD License) +%% +%% Redistribution and use in source and binary forms, with or without +%% modification, are permitted provided that the following conditions are met: +%% +%% 1. Redistributions of source code must retain the above copyright notice, this +%% list of conditions and the following disclaimer. +%% +%% 2. Redistributions in binary form must reproduce the above copyright notice, +%% this list of conditions and the following disclaimer in the documentation +%% and/or other materials provided with the distribution. +%% +%% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +%% AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +%% IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +%% ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +%% LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +%% CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +%% SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +%% INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +%% CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +%% ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +%% POSSIBILITY OF SUCH DAMAGE. +%% +%% The views and conclusions contained in the software and documentation are +%% those of the authors and should not be interpreted as representing official +%% policies, either expressed or implied, of copyright holder. + +%% -*- texinfo -*- +%% @deftypefn {Function File} {@var{alpha} =} angle3Points (@var{p1}, @var{p2}, @var{p3}) +%% Computes the angle between the points @var{p1}, @var{p2} and @var{p3}. +%% +%% @var{p1}, @var{p2} and @var{p3} are either [1x2] arrays, or [Nx2] arrays, in this case +%% @var{alpha} is a [Nx1] array. The angle computed is the directed angle between line +%% (@var{p2}@var{p1}) and line (@var{p2}@var{p3}). +%% +%% Result is always given in radians, between 0 and 2*pi. +%% +%% @seealso{points2d, angles2d, angle2points} +%% @end deftypefn + +function theta = angle3Points(varargin) + + if length(varargin)==3 + p1 = varargin{1}; + p2 = varargin{2}; + p3 = varargin{3}; + elseif length(varargin)==1 + var = varargin{1}; + p1 = var(1,:); + p2 = var(2,:); + p3 = var(3,:); + end + + % angle line (P2 P1) + theta = lineAngle(createLine(p2, p1), createLine(p2, p3)); + +endfunction + +%!test +%! % all points inside window, possibly touching edges +%! p1 = [10 0]; +%! p2 = [0 0]; +%! p3 = [0 10]; +%! angle_ = angle3Points(p1, p2, p3); +%! assert(pi/2, angle_,1e-6); +%! angle_ = angle3Points([p1; p2; p3]); +%! assert(pi/2, angle_, 1e-6); + +%!test +%! p1 = [10 0; 20 0]; +%! p2 = [0 0;0 0]; +%! p3 = [0 10; 0 20]; +%! angle_ = angle3Points(p1, p2, p3); +%! assert(2, size(angle_, 1)); +%! assert([pi/2;pi/2], angle_, 1e-6); + Added: trunk/octave-forge/main/geometry/inst/geom2d/angleAbsDiff.m =================================================================== --- trunk/octave-forge/main/geometry/inst/geom2d/angleAbsDiff.m (rev 0) +++ trunk/octave-forge/main/geometry/inst/geom2d/angleAbsDiff.m 2011-10-21 20:24:00 UTC (rev 8831) @@ -0,0 +1,66 @@ +%% Copyright (c) 2011, INRA +%% 2011, David Legland <dav...@gr...> +%% 2011 Adapted to Octave by Juan Pablo Carbajal <car...@if...> +%% +%% All rights reserved. +%% (simplified BSD License) +%% +%% Redistribution and use in source and binary forms, with or without +%% modification, are permitted provided that the following conditions are met: +%% +%% 1. Redistributions of source code must retain the above copyright notice, this +%% list of conditions and the following disclaimer. +%% +%% 2. Redistributions in binary form must reproduce the above copyright notice, +%% this list of conditions and the following disclaimer in the documentation +%% and/or other materials provided with the distribution. +%% +%% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +%% AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +%% IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +%% ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +%% LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +%% CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +%% SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +%% INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +%% CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +%% ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +%% POSSIBILITY OF SUCH DAMAGE. +%% +%% The views and conclusions contained in the software and documentation are +%% those of the authors and should not be interpreted as representing official +%% policies, either expressed or implied, of copyright holder. + +%% -*- texinfo -*- +%% @deftypefn {Function File} {@var{dif} =} angleAbsDiff (@var{angle1}, @var{angle2}) +%% Computes the absolute angular difference between two angles in radians. +%% The result is comprised between 0 and pi. +%% +%% @example +%% A = angleAbsDiff(pi/2, pi/3) +%% A = +%% 0.5236 % equal to pi/6 +%% @end example +%% +%% @seealso{angles2d, angleDiff} +%% @end deftypefn + +function dif = angleAbsDiff(angle1, angle2) + + % first, normalization + angle1 = normalizeAngle(angle1); + angle2 = normalizeAngle(angle2); + + % compute difference and normalize + dif = normalizeAngle(angle1 - angle2); + dif = min(dif, 2*pi - dif); + +endfunction + +%!shared xp +%! xp = pi/2; +%!assert (xp, angleAbsDiff (pi/2, 0), 1e-6); +%!assert (xp, angleAbsDiff (0, pi/2), 1e-6); +%!assert (xp, angleAbsDiff (0, 3*pi/2), 1e-6); +%!assert (xp, angleAbsDiff (3*pi/2, 0), 1e-6); + Added: trunk/octave-forge/main/geometry/inst/geom2d/angleDiff.m =================================================================== --- trunk/octave-forge/main/geometry/inst/geom2d/angleDiff.m (rev 0) +++ trunk/octave-forge/main/geometry/inst/geom2d/angleDiff.m 2011-10-21 20:24:00 UTC (rev 8831) @@ -0,0 +1,76 @@ +%% Copyright (c) 2011, INRA +%% 2011, David Legland <dav...@gr...> +%% 2011 Adapted to Octave by Juan Pablo Carbajal <car...@if...> +%% +%% All rights reserved. +%% (simplified BSD License) +%% +%% Redistribution and use in source and binary forms, with or without +%% modification, are permitted provided that the following conditions are met: +%% +%% 1. Redistributions of source code must retain the above copyright notice, this +%% list of conditions and the following disclaimer. +%% +%% 2. Redistributions in binary form must reproduce the above copyright notice, +%% this list of conditions and the following disclaimer in the documentation +%% and/or other materials provided with the distribution. +%% +%% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +%% AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +%% IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +%% ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +%% LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +%% CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +%% SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +%% INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +%% CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +%% ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +%% POSSIBILITY OF SUCH DAMAGE. +%% +%% The views and conclusions contained in the software and documentation are +%% those of the authors and should not be interpreted as representing official +%% policies, either expressed or implied, of copyright holder. + +%% -*- texinfo -*- +%% @deftypefn {Function File} {@var{dif} =} angleDiff (@var{angle1}, @var{angle2}) +%% Difference between two angles +%% +%% Computes the signed angular difference between two angles in radians. +%% The result is comprised between -PI and +PI. +%% +%% Example +%% A = angleDiff(-pi/4, pi/4) +%% A = +%% 1.5708 % equal to pi/2 +%% A = angleDiff(pi/4, -pi/4) +%% A = +%% -1.5708 % equal to -pi/2 +%% +%% @seealso{angles2d, angleAbsDiff} +%% @end deftypefn + +function dif = angleDiff(angle1, angle2) + + % first, normalization + angle1 = normalizeAngle(angle1); + angle2 = normalizeAngle(angle2); + + % compute difference and normalize in [-pi pi] + dif = normalizeAngle(angle2 - angle1, 0); +endfunction + +%!test +%! dif = angleDiff(0, pi/2); +%! assert (pi/2, dif, 1e-6); + +%!test +%! dif = angleDiff(pi/2, 0); +%! assert (-pi/2, dif, 1e-6); + +%!test +%! dif = angleDiff(0, 3*pi/2); +%! assert (-pi/2, dif, 1e-6); + +%!test +%! dif = angleDiff(3*pi/2, 0); +%! assert (pi/2, dif, 1e-6); Added: trunk/octave-forge/main/geometry/inst/geom2d/angleSort.m =================================================================== --- trunk/octave-forge/main/geometry/inst/geom2d/angleSort.m (rev 0) +++ trunk/octave-forge/main/geometry/inst/geom2d/angleSort.m 2011-10-21 20:24:00 UTC (rev 8831) @@ -0,0 +1,106 @@ +%% Copyright (c) 2011, INRA +%% 2005-2011, David Legland <dav...@gr...> +%% 2011 Adapted to Octave by Juan Pablo Carbajal <car...@if...> +%% +%% All rights reserved. +%% (simplified BSD License) +%% +%% Redistribution and use in source and binary forms, with or without +%% modification, are permitted provided that the following conditions are met: +%% +%% 1. Redistributions of source code must retain th... [truncated message content] |
From: <car...@us...> - 2011-11-03 01:41:15
|
Revision: 8951 http://octave.svn.sourceforge.net/octave/?rev=8951&view=rev Author: carandraug Date: 2011-11-03 01:41:09 +0000 (Thu, 03 Nov 2011) Log Message: ----------- remove deprecated function replot Modified Paths: -------------- trunk/octave-forge/main/comm/inst/modmap.m trunk/octave-forge/main/signal/inst/zplane.m Modified: trunk/octave-forge/main/comm/inst/modmap.m =================================================================== --- trunk/octave-forge/main/comm/inst/modmap.m 2011-11-03 01:27:47 UTC (rev 8950) +++ trunk/octave-forge/main/comm/inst/modmap.m 2011-11-03 01:41:09 UTC (rev 8951) @@ -312,7 +312,7 @@ text(inphase(i)+xd,quadr(i),num2str(i-1)); end endif - replot; + refresh; else y = inphase(x+1) + 1i * quadr(x+1); if (size(x,2) == 1) Modified: trunk/octave-forge/main/signal/inst/zplane.m =================================================================== --- trunk/octave-forge/main/signal/inst/zplane.m 2011-11-03 01:27:47 UTC (rev 8950) +++ trunk/octave-forge/main/signal/inst/zplane.m 2011-11-03 01:41:09 UTC (rev 8951) @@ -93,7 +93,7 @@ text(); plot_with_labels(z, "o"); plot_with_labels(p, "x"); - replot; + refresh; r = exp(2i*pi*[0:100]/100); plot(real(r), imag(r),'k'); hold on; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jpi...@us...> - 2011-11-20 21:40:17
|
Revision: 9153 http://octave.svn.sourceforge.net/octave/?rev=9153&view=rev Author: jpicarbajal Date: 2011-11-20 21:40:10 +0000 (Sun, 20 Nov 2011) Log Message: ----------- signal. Fixing bugs in cl2bp_lib.h and sigmoid_train geometry. updatig svg Modified Paths: -------------- trunk/octave-forge/main/geometry/inst/io/@svg/svg.m trunk/octave-forge/main/signal/inst/sigmoid_train.m trunk/octave-forge/main/signal/src/cl2bp_lib.h Modified: trunk/octave-forge/main/geometry/inst/io/@svg/svg.m =================================================================== --- trunk/octave-forge/main/geometry/inst/io/@svg/svg.m 2011-11-20 21:11:02 UTC (rev 9152) +++ trunk/octave-forge/main/geometry/inst/io/@svg/svg.m 2011-11-20 21:40:10 UTC (rev 9153) @@ -41,7 +41,6 @@ ## All the paths stored in polyval compatible format. Straigth segments are also stored as a polynomial. svg.Path = struct(); - ## SVG paths. All the paths of the svg svg = class (svg, 'svg'); if !isempty (name) @@ -81,4 +80,3 @@ %! dc = svg('drawing6.svg'); %! dc.plot(); %! dc.plot('color','r','linewidth',2); - Modified: trunk/octave-forge/main/signal/inst/sigmoid_train.m =================================================================== --- trunk/octave-forge/main/signal/inst/sigmoid_train.m 2011-11-20 21:11:02 UTC (rev 9152) +++ trunk/octave-forge/main/signal/inst/sigmoid_train.m 2011-11-20 21:40:10 UTC (rev 9153) @@ -38,9 +38,9 @@ if isscalar (timeconstant) %% All bumps have the same time constant and are symmetric timeconstant = timeconstant * ones (nRanges,2); - end - if isvector (timeconstant) + elseif any( size(timeconstant) != [1 1]) + %% All bumps have different time constant but are symmetric if length(timeconstant) ~= nRanges error('signalError','Length of time constant must equal number of ranges.') @@ -49,6 +49,7 @@ timeconstant = timeconstant'; end timeconstant = repmat (timeconstant,1,2); + end %% Make sure t is horizontal Modified: trunk/octave-forge/main/signal/src/cl2bp_lib.h =================================================================== --- trunk/octave-forge/main/signal/src/cl2bp_lib.h 2011-11-20 21:11:02 UTC (rev 9152) +++ trunk/octave-forge/main/signal/src/cl2bp_lib.h 2011-11-20 21:40:10 UTC (rev 9153) @@ -31,6 +31,7 @@ #ifndef CL2BP_H #define CL2BP_H +#include <cstdlib> #include <cassert> #include <cstring> //for memset This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jpi...@us...> - 2011-11-22 17:46:28
|
Revision: 9168 http://octave.svn.sourceforge.net/octave/?rev=9168&view=rev Author: jpicarbajal Date: 2011-11-22 17:46:22 +0000 (Tue, 22 Nov 2011) Log Message: ----------- signal: Fixing bug in data2fun. mechanics: fixing docstring. Modified Paths: -------------- trunk/octave-forge/main/mechanics/inst/nloscillator.m trunk/octave-forge/main/signal/inst/data2fun.m Modified: trunk/octave-forge/main/mechanics/inst/nloscillator.m =================================================================== --- trunk/octave-forge/main/mechanics/inst/nloscillator.m 2011-11-22 16:16:20 UTC (rev 9167) +++ trunk/octave-forge/main/mechanics/inst/nloscillator.m 2011-11-22 17:46:22 UTC (rev 9168) @@ -1,5 +1,5 @@ %% Copyright (c) 2011 Juan Pablo Carbajal <car...@if...> -%% +%% %% This program is free software: you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation, either version 3 of the License, or @@ -41,20 +41,20 @@ %% @example %% @group %% P -%% p(x) = sum a_i q^i, +%% p(x) = sum a_i q^i, %% i=1 %% G -%% g(x') = sum a_i (q')^i, +%% g(x') = sum b_i (q')^i, %% i=1 %% @end group %% @end example %% %% @end ifnottex -%% -%% This function can be used with the ODE integrators. %% +%% This function can be used with the ODE integrators. +%% %% @strong{INPUTS} -%% +%% %% @var{t}: Time. It can be a scalar or a vector of length @code{nT}. %% %% @var{x}: State space vector. An array of size @code{2xnT}, where @code{nT} is @@ -62,7 +62,7 @@ %% of the system and the second row to its derivatives with respect to time. %% %% @var{opt}: An options structure. See the complementary function -%% @code{setnloscillator}. The structure containing the fields: +%% @code{setnloscillator}. The structure containing the fields: %% %% @code{Coefficients}: Contains a vector of coefficients for p(x). It follows %% the format used for function ppval @code{opt.Coefficients(i) = a(P+1-i)}. @@ -75,7 +75,7 @@ %% func(@var{t}, @var{x}, @var{opt}) or it can be a @code{1xnT} vector. %% %% @strong{OUTPUT} -%% +%% %% @var{dotx}: Derivative of the state space vector with respect to time. A @code{2xnT} array. %% %% @var{dotxdx}: When requested, it contains the Jacobian of the system. It is a @@ -102,7 +102,7 @@ ac = polyval (coef, x(1,:)) + polyval (damp, x(2,:)); F= zeros (1, size (x,2)); - + if isfield (opt, 'Actuation') F = opt.Actuation; if ~isnumeric (F); @@ -118,7 +118,7 @@ dcoef = polyder (coef); ddamp = polyder (damp); - dotxdx(1,:,:) = [ zeros(1,nt); ones(1,nt) ]; + dotxdx(1,:,:) = [ zeros(1,nt); ones(1,nt) ]; dotxdx(2,:,:) = [ polyval(dcoef, x(1,:)); polyval(ddamp, x(2,:)) ]; end @@ -128,5 +128,5 @@ aci = ppval (ppder (spline (t, x(2,:))), t); f = aci' - ac; end - + end Modified: trunk/octave-forge/main/signal/inst/data2fun.m =================================================================== --- trunk/octave-forge/main/signal/inst/data2fun.m 2011-11-22 16:16:20 UTC (rev 9167) +++ trunk/octave-forge/main/signal/inst/data2fun.m 2011-11-22 17:46:22 UTC (rev 9168) @@ -81,7 +81,7 @@ end end - pp = interp1 (t, y, interp_args{:}, 'pp'); + pp = interp1 (t, y, interp_args{end}, 'pp'); if given.file fullfname = fullfile (DIR,[fname ".m"]); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jpi...@us...> - 2011-12-11 15:04:41
|
Revision: 9364 http://octave.svn.sourceforge.net/octave/?rev=9364&view=rev Author: jpicarbajal Date: 2011-12-11 15:04:33 +0000 (Sun, 11 Dec 2011) Log Message: ----------- audio: miscellaneous: moving clip.m from audio to miscellanous. Updating DESCRIPTION of both packages. Creating NEWS file for both packages Modified Paths: -------------- trunk/octave-forge/main/audio/DESCRIPTION trunk/octave-forge/main/miscellaneous/DESCRIPTION trunk/octave-forge/main/miscellaneous/INDEX Added Paths: ----------- trunk/octave-forge/main/audio/NEWS trunk/octave-forge/main/miscellaneous/NEWS trunk/octave-forge/main/miscellaneous/inst/clip.m Removed Paths: ------------- trunk/octave-forge/main/audio/inst/clip.m Modified: trunk/octave-forge/main/audio/DESCRIPTION =================================================================== --- trunk/octave-forge/main/audio/DESCRIPTION 2011-12-11 03:30:40 UTC (rev 9363) +++ trunk/octave-forge/main/audio/DESCRIPTION 2011-12-11 15:04:33 UTC (rev 9364) @@ -1,11 +1,11 @@ Name: Audio Version: 1.1.4 -Date: 2009-05-03 +Date: 2011-12-11 Author: Paul Kienzle <pki...@us...> Maintainer: Paul Kienzle <pki...@us...> Title: Audio Description: Audio recording, processing and playing tools. -Depends: octave (>= 2.9.7) +Depends: octave (>= 2.9.7), miscellaneous (>= ) Autoload: yes License: GPL version 2 or later Url: http://octave.sf.net Added: trunk/octave-forge/main/audio/NEWS =================================================================== --- trunk/octave-forge/main/audio/NEWS (rev 0) +++ trunk/octave-forge/main/audio/NEWS 2011-12-11 15:04:33 UTC (rev 9364) @@ -0,0 +1,8 @@ +Summary of important user-visible changes for releases of the audio package + +=============================================================================== +audio-X.Y.Z Release Date: 2011-YY-XX Release Manager: +=============================================================================== + +* Created this NEWS file. +* Fuction clip was moved to miscellaneous package. Deleted: trunk/octave-forge/main/audio/inst/clip.m =================================================================== --- trunk/octave-forge/main/audio/inst/clip.m 2011-12-11 03:30:40 UTC (rev 9363) +++ trunk/octave-forge/main/audio/inst/clip.m 2011-12-11 15:04:33 UTC (rev 9364) @@ -1,63 +0,0 @@ -## Copyright (C) 1999 Paul Kienzle -## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or -## (at your option) any later version. -## -## This program is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -## GNU General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with this program; If not, see <http://www.gnu.org/licenses/>. - -## Clip values outside the range to the value at the boundary of the -## range. -## -## X = clip(X) -## Clip to range [0, 1] -## -## X = clip(X, hi) -## Clip to range [0, hi] -## -## X = clip(X, [lo, hi]) -## Clip to range [lo, hi] - -## TODO: more clip modes, such as three level clip(X, [lo, mid, hi]), which -## TODO: sends everything above hi to hi, below lo to lo and between to -## TODO: mid; or infinite peak clipping, which sends everything above mid -## TODO: to hi and below mid to lo. - -function x = clip (x, range) - - if (nargin == 2) - if (length(range) == 1) - range = [0, range]; - end - elseif (nargin == 1) - range = [0, 1]; - else - usage("X = clip(X [, range])"); - end - try wfi = warning("query", "Octave:fortran-indexing").state; - catch wfi = "off"; - end - unwind_protect - x (find (x > range (2))) = range (2); - x (find (x < range (1))) = range (1); - unwind_protect_cleanup - warning(wfi, "Octave:fortran-indexing"); - end_unwind_protect - -endfunction - -%!error clip -%!error clip(1,2,3) -%!assert (clip(pi), 1) -%!assert (clip(-pi), 0) -%!assert (clip([-1.5, 0, 1.5], [-1, 1]), [-1, 0, 1]); -%!assert (clip([-1.5, 0, 1.5]', [-1, 1]'), [-1, 0, 1]'); -%!assert (clip([-1.5, 1; 0, 1.5], [-1, 1]), [-1, 1; 0, 1]); -%!assert (isempty(clip([],1))); Modified: trunk/octave-forge/main/miscellaneous/DESCRIPTION =================================================================== --- trunk/octave-forge/main/miscellaneous/DESCRIPTION 2011-12-11 03:30:40 UTC (rev 9363) +++ trunk/octave-forge/main/miscellaneous/DESCRIPTION 2011-12-11 15:04:33 UTC (rev 9364) @@ -1,6 +1,6 @@ Name: Miscellaneous Version: 1.0.11 -Date: 2011-05-20 +Date: 2011-12-11 Author: Various Authors Maintainer: The Octave Community Title: Miscellaneous functions Modified: trunk/octave-forge/main/miscellaneous/INDEX =================================================================== --- trunk/octave-forge/main/miscellaneous/INDEX 2011-12-11 03:30:40 UTC (rev 9363) +++ trunk/octave-forge/main/miscellaneous/INDEX 2011-12-11 15:04:33 UTC (rev 9364) @@ -21,3 +21,4 @@ csvexplode server publish + clip Added: trunk/octave-forge/main/miscellaneous/NEWS =================================================================== --- trunk/octave-forge/main/miscellaneous/NEWS (rev 0) +++ trunk/octave-forge/main/miscellaneous/NEWS 2011-12-11 15:04:33 UTC (rev 9364) @@ -0,0 +1,8 @@ +Summary of important user-visible changes for releases of the miscellaneous package + +=============================================================================== +miscellaneous-X.Y.Z Release Date: 2011-YY-XX Release Manager: +=============================================================================== + +* This NEWS file was created. +* Function clip imported from audio. Copied: trunk/octave-forge/main/miscellaneous/inst/clip.m (from rev 9363, trunk/octave-forge/main/audio/inst/clip.m) =================================================================== --- trunk/octave-forge/main/miscellaneous/inst/clip.m (rev 0) +++ trunk/octave-forge/main/miscellaneous/inst/clip.m 2011-12-11 15:04:33 UTC (rev 9364) @@ -0,0 +1,63 @@ +## Copyright (C) 1999 Paul Kienzle +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; If not, see <http://www.gnu.org/licenses/>. + +## Clip values outside the range to the value at the boundary of the +## range. +## +## X = clip(X) +## Clip to range [0, 1] +## +## X = clip(X, hi) +## Clip to range [0, hi] +## +## X = clip(X, [lo, hi]) +## Clip to range [lo, hi] + +## TODO: more clip modes, such as three level clip(X, [lo, mid, hi]), which +## TODO: sends everything above hi to hi, below lo to lo and between to +## TODO: mid; or infinite peak clipping, which sends everything above mid +## TODO: to hi and below mid to lo. + +function x = clip (x, range) + + if (nargin == 2) + if (length(range) == 1) + range = [0, range]; + end + elseif (nargin == 1) + range = [0, 1]; + else + usage("X = clip(X [, range])"); + end + try wfi = warning("query", "Octave:fortran-indexing").state; + catch wfi = "off"; + end + unwind_protect + x (find (x > range (2))) = range (2); + x (find (x < range (1))) = range (1); + unwind_protect_cleanup + warning(wfi, "Octave:fortran-indexing"); + end_unwind_protect + +endfunction + +%!error clip +%!error clip(1,2,3) +%!assert (clip(pi), 1) +%!assert (clip(-pi), 0) +%!assert (clip([-1.5, 0, 1.5], [-1, 1]), [-1, 0, 1]); +%!assert (clip([-1.5, 0, 1.5]', [-1, 1]'), [-1, 0, 1]'); +%!assert (clip([-1.5, 1; 0, 1.5], [-1, 1]), [-1, 1; 0, 1]); +%!assert (isempty(clip([],1))); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2011-12-16 22:15:03
|
Revision: 9417 http://octave.svn.sourceforge.net/octave/?rev=9417&view=rev Author: carandraug Date: 2011-12-16 22:14:57 +0000 (Fri, 16 Dec 2011) Log Message: ----------- Fixing dependencies of ga and octcdf. Octave versions whose middle version number are development releases and should not be used for requirements Modified Paths: -------------- trunk/octave-forge/main/financial/inst/irr.m trunk/octave-forge/main/ga/DESCRIPTION trunk/octave-forge/main/octcdf/DESCRIPTION Modified: trunk/octave-forge/main/financial/inst/irr.m =================================================================== --- trunk/octave-forge/main/financial/inst/irr.m 2011-12-16 20:48:17 UTC (rev 9416) +++ trunk/octave-forge/main/financial/inst/irr.m 2011-12-16 22:14:57 UTC (rev 9417) @@ -36,6 +36,6 @@ ## Solve system f = @(x) npv (x, p) - i; - r = fsolve (f, 0.01); + r = fsolve (f, 0); endfunction Modified: trunk/octave-forge/main/ga/DESCRIPTION =================================================================== --- trunk/octave-forge/main/ga/DESCRIPTION 2011-12-16 20:48:17 UTC (rev 9416) +++ trunk/octave-forge/main/ga/DESCRIPTION 2011-12-16 22:14:57 UTC (rev 9417) @@ -6,7 +6,7 @@ Title: Genetic Algorithm and Direct Search Description: Genetic optimization code Categories: Optimization -Depends: octave (>= 3.3.53) +Depends: octave (>= 3.4.0) Autoload: yes License: GPL version 2 or later Url: http://octave.sf.net Modified: trunk/octave-forge/main/octcdf/DESCRIPTION =================================================================== --- trunk/octave-forge/main/octcdf/DESCRIPTION 2011-12-16 20:48:17 UTC (rev 9416) +++ trunk/octave-forge/main/octcdf/DESCRIPTION 2011-12-16 22:14:57 UTC (rev 9417) @@ -5,7 +5,7 @@ Maintainer: Alexander Barth <bar...@gm...> Title: octcdf Description: A NetCDF interface for octave -Depends: octave (>= 3.3.51) +Depends: octave (>= 3.4.0) Autoload: yes BuildRequires: netcdf-devel License: GPL version 2 or later This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2012-01-30 22:19:22
|
Revision: 9575 http://octave.svn.sourceforge.net/octave/?rev=9575&view=rev Author: carandraug Date: 2012-01-30 22:19:16 +0000 (Mon, 30 Jan 2012) Log Message: ----------- replacing instances of `static' by `persistent' since it has been deprecated Modified Paths: -------------- trunk/octave-forge/main/miscellaneous/inst/temp_name.m trunk/octave-forge/main/optim/inst/test_d2_min_1.m trunk/octave-forge/main/optim/inst/test_d2_min_2.m trunk/octave-forge/main/optim/inst/test_d2_min_3.m trunk/octave-forge/main/optim/inst/test_min_2.m trunk/octave-forge/main/optim/inst/test_min_3.m trunk/octave-forge/main/optim/inst/test_nelder_mead_min_1.m trunk/octave-forge/main/vrml/inst/vrml_interp.m trunk/octave-forge/main/vrml/inst/vrml_newname.m Modified: trunk/octave-forge/main/miscellaneous/inst/temp_name.m =================================================================== --- trunk/octave-forge/main/miscellaneous/inst/temp_name.m 2012-01-30 11:16:11 UTC (rev 9574) +++ trunk/octave-forge/main/miscellaneous/inst/temp_name.m 2012-01-30 22:19:16 UTC (rev 9575) @@ -30,7 +30,7 @@ function n = temp_name (rootname, quick) ### Keep track of previously asked names -static cnt = struct ("dummy",0); +persistent cnt = struct ("dummy",0); if nargin<1 || !length(rootname), rootname = "temp_name_" ; end Modified: trunk/octave-forge/main/optim/inst/test_d2_min_1.m =================================================================== --- trunk/octave-forge/main/optim/inst/test_d2_min_1.m 2012-01-30 11:16:11 UTC (rev 9574) +++ trunk/octave-forge/main/optim/inst/test_d2_min_1.m 2012-01-30 22:19:16 UTC (rev 9575) @@ -72,7 +72,7 @@ ## Returns the cputime since last call to 'mytic'. function dt = mytic() - static last_mytic = 0 ; + persistent last_mytic = 0 ; [t,u,s] = cputime() ; dt = t - last_mytic ; last_mytic = t ; Modified: trunk/octave-forge/main/optim/inst/test_d2_min_2.m =================================================================== --- trunk/octave-forge/main/optim/inst/test_d2_min_2.m 2012-01-30 11:16:11 UTC (rev 9574) +++ trunk/octave-forge/main/optim/inst/test_d2_min_2.m 2012-01-30 22:19:16 UTC (rev 9575) @@ -60,7 +60,7 @@ ## Returns the cputime since last call to 'mytic'. function dt = mytic() - static last_mytic = 0 ; + persistent last_mytic = 0 ; [t,u,s] = cputime() ; dt = t - last_mytic ; last_mytic = t ; Modified: trunk/octave-forge/main/optim/inst/test_d2_min_3.m =================================================================== --- trunk/octave-forge/main/optim/inst/test_d2_min_3.m 2012-01-30 11:16:11 UTC (rev 9574) +++ trunk/octave-forge/main/optim/inst/test_d2_min_3.m 2012-01-30 22:19:16 UTC (rev 9575) @@ -62,7 +62,7 @@ ## Returns the cputime since last call to 'mytic'. function dt = mytic() - static last_mytic = 0 ; + persistent last_mytic = 0 ; [t,u,s] = cputime() ; dt = t - last_mytic ; last_mytic = t ; Modified: trunk/octave-forge/main/optim/inst/test_min_2.m =================================================================== --- trunk/octave-forge/main/optim/inst/test_min_2.m 2012-01-30 11:16:11 UTC (rev 9574) +++ trunk/octave-forge/main/optim/inst/test_min_2.m 2012-01-30 22:19:16 UTC (rev 9575) @@ -68,7 +68,7 @@ ## Returns the cputime since last call to 'mytic'. function dt = mytic() - static last_mytic = 0 ; + persistent last_mytic = 0 ; [t,u,s] = cputime() ; dt = t - last_mytic ; last_mytic = t ; Modified: trunk/octave-forge/main/optim/inst/test_min_3.m =================================================================== --- trunk/octave-forge/main/optim/inst/test_min_3.m 2012-01-30 11:16:11 UTC (rev 9574) +++ trunk/octave-forge/main/optim/inst/test_min_3.m 2012-01-30 22:19:16 UTC (rev 9575) @@ -73,7 +73,7 @@ fflush (stdout); end function dt = mytic() - static last_mytic = 0 ; + persistent last_mytic = 0 ; [t,u,s] = cputime() ; dt = t - last_mytic ; last_mytic = t ; Modified: trunk/octave-forge/main/optim/inst/test_nelder_mead_min_1.m =================================================================== --- trunk/octave-forge/main/optim/inst/test_nelder_mead_min_1.m 2012-01-30 11:16:11 UTC (rev 9574) +++ trunk/octave-forge/main/optim/inst/test_nelder_mead_min_1.m 2012-01-30 22:19:16 UTC (rev 9575) @@ -56,7 +56,7 @@ ## Returns the cputime since last call to 'mytic'. function dt = mytic() - static last_mytic = 0 ; + persistent last_mytic = 0 ; [t,u,s] = cputime() ; dt = t - last_mytic ; last_mytic = t ; Modified: trunk/octave-forge/main/vrml/inst/vrml_interp.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_interp.m 2012-01-30 11:16:11 UTC (rev 9574) +++ trunk/octave-forge/main/vrml/inst/vrml_interp.m 2012-01-30 22:19:16 UTC (rev 9575) @@ -15,7 +15,7 @@ end -static nname = struct ("col" , "Color", +persistent nname = struct ("col" , "Color", "Color" , "Color", "coord" , "Coordinate", "Coordinate" , "Coordinate", Modified: trunk/octave-forge/main/vrml/inst/vrml_newname.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_newname.m 2012-01-30 11:16:11 UTC (rev 9574) +++ trunk/octave-forge/main/vrml/inst/vrml_newname.m 2012-01-30 22:19:16 UTC (rev 9575) @@ -3,7 +3,7 @@ ## vrml_newname ("-clear") function n = vrml_newname (root) -static vrml_namespace = struct(); +persistent vrml_namespace = struct(); if nargin < 1, root = ""; end This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <par...@us...> - 2012-02-03 12:07:29
|
Revision: 9577 http://octave.svn.sourceforge.net/octave/?rev=9577&view=rev Author: paramaniac Date: 2012-02-03 12:07:15 +0000 (Fri, 03 Feb 2012) Log Message: ----------- queueing: add new package for Moreno Marzolla Added Paths: ----------- trunk/octave-forge/main/queueing/ trunk/octave-forge/main/queueing/COPYING trunk/octave-forge/main/queueing/DESCRIPTION trunk/octave-forge/main/queueing/DESCRIPTION.in trunk/octave-forge/main/queueing/INSTALL trunk/octave-forge/main/queueing/Makefile trunk/octave-forge/main/queueing/README trunk/octave-forge/main/queueing/broken/ trunk/octave-forge/main/queueing/broken/Makefile trunk/octave-forge/main/queueing/broken/blkdiagonalize.m trunk/octave-forge/main/queueing/broken/dtmc_period.m trunk/octave-forge/main/queueing/broken/lee_et_al_98.m trunk/octave-forge/main/queueing/broken/qnmmmk_alt.m trunk/octave-forge/main/queueing/broken/qnopenmultig.m trunk/octave-forge/main/queueing/broken/qnopensinglenexp.m trunk/octave-forge/main/queueing/doc/ trunk/octave-forge/main/queueing/doc/Makefile trunk/octave-forge/main/queueing/doc/ack.txi trunk/octave-forge/main/queueing/doc/contributing.txi trunk/octave-forge/main/queueing/doc/gettingstarted.txi trunk/octave-forge/main/queueing/doc/gpl.txi trunk/octave-forge/main/queueing/doc/installation.txi trunk/octave-forge/main/queueing/doc/markovchains.txi trunk/octave-forge/main/queueing/doc/queueing.html trunk/octave-forge/main/queueing/doc/queueing.pdf trunk/octave-forge/main/queueing/doc/queueing.texi trunk/octave-forge/main/queueing/doc/queueingnetworks.txi trunk/octave-forge/main/queueing/doc/singlestation.txi trunk/octave-forge/main/queueing/doc/summary.txi trunk/octave-forge/main/queueing/examples/ trunk/octave-forge/main/queueing/examples/Makefile trunk/octave-forge/main/queueing/examples/demo_1_ctmc.m trunk/octave-forge/main/queueing/examples/demo_1_ctmc_exps.m trunk/octave-forge/main/queueing/examples/demo_1_ctmc_fpt.m trunk/octave-forge/main/queueing/examples/demo_1_ctmc_mtta.m trunk/octave-forge/main/queueing/examples/demo_1_ctmc_taexps.m trunk/octave-forge/main/queueing/examples/demo_1_dtmc.m trunk/octave-forge/main/queueing/examples/demo_1_dtmc_fpt.m trunk/octave-forge/main/queueing/examples/demo_1_qnclosed.m trunk/octave-forge/main/queueing/examples/demo_1_qnclosedmultimva.m trunk/octave-forge/main/queueing/examples/demo_1_qnclosedmultimvaapprox.m trunk/octave-forge/main/queueing/examples/demo_1_qnclosedsinglemva.m trunk/octave-forge/main/queueing/examples/demo_1_qnclosedsinglemvaapprox.m trunk/octave-forge/main/queueing/examples/demo_1_qnconvolution.m trunk/octave-forge/main/queueing/examples/demo_1_qnmmm.m trunk/octave-forge/main/queueing/examples/demo_1_qnopensingle.m trunk/octave-forge/main/queueing/examples/demo_1_qnsolve.m trunk/octave-forge/main/queueing/examples/demo_1_qnvisits.m trunk/octave-forge/main/queueing/examples/demo_2_ctmc.m trunk/octave-forge/main/queueing/examples/demo_2_ctmc_mtta.m trunk/octave-forge/main/queueing/examples/demo_2_ctmc_taexps.m trunk/octave-forge/main/queueing/examples/demo_3_ctmc.m trunk/octave-forge/main/queueing/examples/grabdemo.m trunk/octave-forge/main/queueing/inst/ trunk/octave-forge/main/queueing/inst/Makefile trunk/octave-forge/main/queueing/inst/ctmc.m trunk/octave-forge/main/queueing/inst/ctmc_bd.m trunk/octave-forge/main/queueing/inst/ctmc_bd_solve.m trunk/octave-forge/main/queueing/inst/ctmc_exps.m trunk/octave-forge/main/queueing/inst/ctmc_fpt.m trunk/octave-forge/main/queueing/inst/ctmc_mtta.m trunk/octave-forge/main/queueing/inst/ctmc_solve.m trunk/octave-forge/main/queueing/inst/ctmc_taexps.m trunk/octave-forge/main/queueing/inst/dtmc.m trunk/octave-forge/main/queueing/inst/dtmc_check_P.m trunk/octave-forge/main/queueing/inst/dtmc_fpt.m trunk/octave-forge/main/queueing/inst/dtmc_solve.m trunk/octave-forge/main/queueing/inst/population_mix.m trunk/octave-forge/main/queueing/inst/qnammm.m trunk/octave-forge/main/queueing/inst/qnclosed.m trunk/octave-forge/main/queueing/inst/qnclosedab.m trunk/octave-forge/main/queueing/inst/qnclosedbsb.m trunk/octave-forge/main/queueing/inst/qnclosedgb.m trunk/octave-forge/main/queueing/inst/qnclosedmultimva.m trunk/octave-forge/main/queueing/inst/qnclosedmultimvaapprox.m trunk/octave-forge/main/queueing/inst/qnclosedpb.m trunk/octave-forge/main/queueing/inst/qnclosedsinglemva.m trunk/octave-forge/main/queueing/inst/qnclosedsinglemvaapprox.m trunk/octave-forge/main/queueing/inst/qnclosedsinglemvald.m trunk/octave-forge/main/queueing/inst/qncmva.m trunk/octave-forge/main/queueing/inst/qnconvolution.m trunk/octave-forge/main/queueing/inst/qnconvolutionld.m trunk/octave-forge/main/queueing/inst/qnjackson.m trunk/octave-forge/main/queueing/inst/qnmarkov.m trunk/octave-forge/main/queueing/inst/qnmg1.m trunk/octave-forge/main/queueing/inst/qnmh1.m trunk/octave-forge/main/queueing/inst/qnmix.m trunk/octave-forge/main/queueing/inst/qnmknode.m trunk/octave-forge/main/queueing/inst/qnmm1.m trunk/octave-forge/main/queueing/inst/qnmm1k.m trunk/octave-forge/main/queueing/inst/qnmminf.m trunk/octave-forge/main/queueing/inst/qnmmm.m trunk/octave-forge/main/queueing/inst/qnmmmk.m trunk/octave-forge/main/queueing/inst/qnmvablo.m trunk/octave-forge/main/queueing/inst/qnmvapop.m trunk/octave-forge/main/queueing/inst/qnopen.m trunk/octave-forge/main/queueing/inst/qnopenab.m trunk/octave-forge/main/queueing/inst/qnopenbsb.m trunk/octave-forge/main/queueing/inst/qnopenmulti.m trunk/octave-forge/main/queueing/inst/qnopensingle.m trunk/octave-forge/main/queueing/inst/qnsolve.m trunk/octave-forge/main/queueing/inst/qnvisits.m trunk/octave-forge/main/queueing/scripts/ trunk/octave-forge/main/queueing/scripts/Makefile trunk/octave-forge/main/queueing/scripts/gethelp.cc trunk/octave-forge/main/queueing/scripts/mkdoc trunk/octave-forge/main/queueing/scripts/munge-texi.cc trunk/octave-forge/main/queueing/scripts/pmva.l trunk/octave-forge/main/queueing/scripts/pmva.y trunk/octave-forge/main/queueing/scripts/test.pmva trunk/octave-forge/main/queueing/test/ trunk/octave-forge/main/queueing/test/Makefile trunk/octave-forge/main/queueing/test/fntests.m Added: trunk/octave-forge/main/queueing/COPYING =================================================================== --- trunk/octave-forge/main/queueing/COPYING (rev 0) +++ trunk/octave-forge/main/queueing/COPYING 2012-02-03 12:07:15 UTC (rev 9577) @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. Added: trunk/octave-forge/main/queueing/DESCRIPTION =================================================================== --- trunk/octave-forge/main/queueing/DESCRIPTION (rev 0) +++ trunk/octave-forge/main/queueing/DESCRIPTION 2012-02-03 12:07:15 UTC (rev 9577) @@ -0,0 +1,16 @@ +Name: queueing +Version: 1.0.0 +Date: 2012-02-03 +Author: Moreno Marzolla <mar...@cs...> +Maintainer: Moreno Marzolla <mar...@cs...> +Title: Queueing Networks and Markov chains analysis package for GNU Octave +Description: This package provides functions + for analyzing single station queueing systems, + Queueing Network and Markov chains. Open, closed and mixed + networks with single or multiple job classes are supported; + exact and approximate solution techniques are available. +Categories: Misc +Depends: octave (>= 3.0.0) +Autoload: yes +License: GPL version 3 or later +Url: http://www.moreno.marzolla.name/software/queueing/ Added: trunk/octave-forge/main/queueing/DESCRIPTION.in =================================================================== --- trunk/octave-forge/main/queueing/DESCRIPTION.in (rev 0) +++ trunk/octave-forge/main/queueing/DESCRIPTION.in 2012-02-03 12:07:15 UTC (rev 9577) @@ -0,0 +1,16 @@ +Name: PROGNAME +Version: VERSIONNUM +Date: VERSIONDATE +Author: Moreno Marzolla <mar...@cs...> +Maintainer: Moreno Marzolla <mar...@cs...> +Title: Queueing Networks and Markov chains analysis package for GNU Octave +Description: This package provides functions + for analyzing single station queueing systems, + Queueing Network and Markov chains. Open, closed and mixed + networks with single or multiple job classes are supported; + exact and approximate solution techniques are available. +Categories: Misc +Depends: octave (>= 3.0.0) +Autoload: yes +License: GPL version 3 or later +Url: http://www.moreno.marzolla.name/software/queueing/ Added: trunk/octave-forge/main/queueing/INSTALL =================================================================== --- trunk/octave-forge/main/queueing/INSTALL (rev 0) +++ trunk/octave-forge/main/queueing/INSTALL 2012-02-03 12:07:15 UTC (rev 9577) @@ -0,0 +1,167 @@ +This file documents the installation procedure of the `queueing' +toolbox. + + `queueing' is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License, version 3 or +later, as published by the Free Software Foundation. + + Note: This file (`INSTALL') is automatically generated from + `doc/installation.txi' in the `queueing' sources. Do not modify + this document directly, as changes will be lost. Modify the source + `doc/installation.txi' instead. + +1 Installing the queueing toolbox +********************************* + +1.1 Installation through Octave package management system +========================================================= + +The most recent version of `queueing' is 1.0.0 and can be downloaded +from + +`http://www.moreno.marzolla.name/software/queueing/queueing-1.0.0.tar.gz' + + To install `queueing' in the system-wide location, such that all +functions are automatically available when Octave starts, you can use +`pkg install' command. At the Octave prompt, type the following: + + octave:1> pkg install queueing-1.0.0.tar.gz + + (Note: you may need to start Octave as root in order to allow the +installation to copy the files to the target locations). After this, +all functions will be readily available each time Octave starts, +without the need to tweak the search path. To uninstall `queueing', use +the `pkg uninstall queueing' command. + + If you do not have root access, you can do a local installation by +issuing the following command at the Octave prompt: + + octave:1> pkg install -local queueing-1.0.0.tar.gz + + This will install `queueing' within the user's home directory, and +the package will be available to that user only. *Note:* Octave version +3.2.3 as shipped with Ubuntu 10.04 seems to ignore `-local' and always +tries to install the package on the system directory. + +1.2 Manual installation +======================= + +If you want to install `queueing' in a custom location, you can +download the source tarball from the URL above, and unpack it somewhere: + + tar xfz queueing-1.0.0.tar.gz + cd queueing-1.0.0/ + + Copy all `.m' files from the `inst/' directory to some target +location. Then, you can start Octave with the `-p' option to add the +target location to the search path, so that Octave will find all +`queueing' functions automatically: + + octave -p _/path/to/queueing_ + + For example, if all `queueing' m-files are in `/usr/local/queueing', +you can start Octave as follows: + + octave -p `/usr/local/queueing' + + If you want, you can add the following line to `~/.octaverc': + + addpath("_/path/to/queueing_"); + +so that the path `/usr/local/queueing' is automatically added to the +search path each time Octave is started, and you no longer need to +specify the `-p' option on the command line. + +1.3 Content of the source distribution +====================================== + +The `queueing' source distribution contains the following +subdirectories: + +`doc/' + Documentation source. Most of the documentation is extracted from + the comment blocks of individual function files from the `inst/' + directory. + +`inst/' + This directory contains the m-files which implement the various + Queueing Network algorithms provided by `queueing'. As a + notational convention, the names of source files containing + functions for Queueing Networks start with the `qn' prefix; the + name of source files containing functions for Continuous-Time + Markov Chains (CTMSs) start with the `ctmc' prefix, and the names + of files containing functions for Discrete-Time Markov Chains + (DTMCs) start with the `dtmc' prefix. + +`test/' + This directory contains the test functions used to invoke all + tests on all function files. + +`scripts/' + This directory contains some utility scripts mostly from GNU + Octave, which extract the documentation from the + specially-formatted comments in the m-files. + +`examples/' + This directory contains examples which are automatically extracted + from the `demo' blocks of the function files. + +`broken/' + This directory contains function files which are either not working + properly, or need additional testing before they can be moved to + the `inst/' directory. + + + The `queueing' package ships with a Makefile which can be used to +produce the documentation (in PDF and HTML format), and automatically +execute all function tests. Specifically, the following targets are +defined: + +`all' + Running `make' (or `make all') on the top-level directory builds + the programs used to extract the documentation from the comments + embedded in the m-files, and then produce the documentation in PDF + and HTML format (`doc/queueing.pdf' and `doc/queueing.html', + respectively). + +`check' + Running `make check' will execute all tests contained in the + m-files. If you modify the code of any function in the `inst/' + directory, you should run the tests to ensure that no errors have + been introduced. You are also encouraged to contribute new tests, + especially for functions which are not adequately validated. + +`clean' +`distclean' +`dist' + The `make clean', `make distclean' and `make dist' commands are + used to clean up the source directory and prepare the distribution + archive in compressed tar format. + + +1.4 Using the queueing toolbox +============================== + +You can use all functions by simply invoking their name with the +appropriate parameters; the `queueing' package should display an error +message in case of missing/wrong parameters. You can display the help +text for any function using the `help' command. For example: + + octave:2> help qnmvablo + + prints the documentation for the `qnmvablo' function. Additional +information can be found in the `queueing' manual, which is available +in PDF format in `doc/queueing.pdf' and in HTML format in +`doc/queueing.html'. + + Within GNU Octave, you can also run the test and demo blocks +associated to the functions, using the `test' and `demo' commands +respectively. To run all the tests of, say, the `qnmvablo' function: + + octave:3> test qnmvablo + -| PASSES 4 out of 4 tests + + To execute the demos of the `qnclosed' function, use the following: + + octave:4> demo qnclosed + Added: trunk/octave-forge/main/queueing/Makefile =================================================================== --- trunk/octave-forge/main/queueing/Makefile (rev 0) +++ trunk/octave-forge/main/queueing/Makefile 2012-02-03 12:07:15 UTC (rev 9577) @@ -0,0 +1,52 @@ +VERSIONNUM=1.0.0 +VERSIONDATE="2012-02-03" +PROGNAME=queueing + +DISTNAME=$(PROGNAME)-$(VERSIONNUM) +SUBDIRS=inst scripts examples doc test broken +DISTFILES=COPYING README Makefile DESCRIPTION DESCRIPTION.in INSTALL + +.PHONY: clean check + +ALL: DESCRIPTION doc/conf.texi + for d in $(SUBDIRS); do \ + $(MAKE) -C $$d ALL; \ + done + +doc/conf.texi: + \rm -f doc/conf.texi + echo "@set VERSION $(VERSIONNUM)" > doc/conf.texi + echo "@set VERSIONDATE $(VERSIONDATE)" >> doc/conf.texi + echo "@set top_srcdir " `pwd` >> doc/conf.texi + +DESCRIPTION: DESCRIPTION.in + cat DESCRIPTION.in | \ + sed "s/PROGNAME/$(PROGNAME)/g" | \ + sed "s/VERSIONNUM/$(VERSIONNUM)/g" | \ + sed "s/VERSIONDATE/$(VERSIONDATE)/g" > DESCRIPTION + +check: + $(MAKE) -C test check + +clean: + for d in $(SUBDIRS); do \ + $(MAKE) -C $$d clean; \ + done + \rm -r -f *~ *.tar.gz $(DISTNAME) + +distclean: clean + for d in $(SUBDIRS); do \ + $(MAKE) -C $$d distclean; \ + done + \rm -r -f doc/conf.texi fname DESCRIPTION $(DISTNAME) $(DISTNAME).tar.gz + +dist: ALL + \rm -r -f $(DISTNAME) fname + mkdir $(DISTNAME) + echo "$(DISTNAME)" > fname + for d in $(SUBDIRS); do \ + mkdir -p $(DISTNAME)/$$d; \ + $(MAKE) -C $$d dist; \ + done + ln $(DISTFILES) $(DISTNAME)/ + tar cfz $(DISTNAME).tar.gz $(DISTNAME)/ Added: trunk/octave-forge/main/queueing/README =================================================================== --- trunk/octave-forge/main/queueing/README (rev 0) +++ trunk/octave-forge/main/queueing/README 2012-02-03 12:07:15 UTC (rev 9577) @@ -0,0 +1,52 @@ +=============================================================================== + The Octave queueing toolbox +=============================================================================== + +Copyright (C) 2008, 2009, 2010, 2011, 2012 +Moreno Marzolla <marzolla (at) cs.unibo.it> + +The queueing toolbox ("queueing", in short) is a collection of GNU +Octave scripts for numerical evaluation of queueing network +models. Open, closed and mixed networks are supported, with single or +multiple classes of customers. The queueing toolbox also provides +functions for steady-state and transient analysis of Markov chains, as +well as fo single station queueing systems. + +The latest version of the queueing package can be downloaded from + +http://www.moreno.marzolla.name/software/queueing/ + +This package requires GNU Octave; version 3.0.0 or later should work. +The package contains the following directories: + +inst/ + Contains the Octave m-scripts implementing all functions + provided by the queueing toolbox. + +doc/ + Contains the user documentation, which is automatically + generated from the texinfo strings embedded in the m-scripts. + +scripts/ + This directory contains some scripts used to extract + documentation strings from the m-files. The scripts here have + been taken almost verbatim from the GNU Octave distribution. + +examples/ + This directory contains demo functions which are automatically + extracted from the scripts included in the inst/ + directory. The demo functions are put in this directory so + that they can be easily embedded into the package documentation. + +test/ + This directory contains the script used to execute all + tests embedded within functions in the inst/ directory. + +broken/ + This directory contains scripts which are currently known + not to work correctly, or which are work-in-progress. + +This package can be distributed according to the terms of the GNU +General Public License, version 3 or later. See the file COPYING for +details. + Added: trunk/octave-forge/main/queueing/broken/Makefile =================================================================== --- trunk/octave-forge/main/queueing/broken/Makefile (rev 0) +++ trunk/octave-forge/main/queueing/broken/Makefile 2012-02-03 12:07:15 UTC (rev 9577) @@ -0,0 +1,14 @@ +DISTFILES=Makefile $(wildcard *.m) + +.PHONY: check dist clean + +ALL: + +dist: + ln $(DISTFILES) ../`cat ../fname`/broken/ + +clean: + \rm -f *~ + +distclean: clean + Added: trunk/octave-forge/main/queueing/broken/blkdiagonalize.m =================================================================== --- trunk/octave-forge/main/queueing/broken/blkdiagonalize.m (rev 0) +++ trunk/octave-forge/main/queueing/broken/blkdiagonalize.m 2012-02-03 12:07:15 UTC (rev 9577) @@ -0,0 +1,151 @@ +## Copyright (C) 2008, 2009, 2010, 2011, 2012 Moreno Marzolla +## +## This file is part of the queueing toolbox. +## +## The queueing toolbox is free software: you can redistribute it and/or +## modify it under the terms of the GNU General Public License as +## published by the Free Software Foundation, either version 3 of the +## License, or (at your option) any later version. +## +## The queueing toolbox is distributed in the hope that it will be +## useful, but WITHOUT ANY WARRANTY; without even the implied warranty +## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with the queueing toolbox. If not, see <http://www.gnu.org/licenses/>. + +## -*- texinfo -*- +## +## @deftypefn {Function File} {[@var{T} @var{p}] =} blkdiagonalize (@var{M}) +## +## @strong{WARNING: this function has not been sufficiently tested} +## +## Given a square matrix @var{M}, return a new matrix @code{@var{T} = +## @var{M}(@var{p},@var{p})} such that @var{T} is in block triangular +## form. +## +## @strong{INPUTS} +## +## @table @var +## +## @item M +## +## Square matrix to be permuted in block-triangular form +## +## @end table +## +## @strong{OUTPUTS} +## +## @table @var +## +## @item T +## +## The matrix @var{M} permuted in block-triangular form +## +## @item p +## +## Vector representing the permutation. The matrix @var{T} +## can be derived as @code{@var{T} = @var{M}(@var{p},@var{p})} +## +## @end table +## +## @end deftypefn + +## Author: Moreno Marzolla <marzolla(at)cs.unibo.it> +## Web: http://www.moreno.marzolla.name/ + +function [T p] = blkdiagonalize( M ) + if ( nargin =! 1 ) + print_usage(); + endif + n = rows(M); + ( [n,n] == size(M) ) || \ + error( "M must be a square matrix" ); + p = linspace(1,n,n); # identify permutation + T = M; + for i=1:n-1 # loop over rows + ## find zero and nonzero elements in the i-th row + zel = find(T(i,:)==0); + nzl = find(T(i,:)!=0); + zeroel = zel(zel>i); + nzeroel = nzl(nzl>i); + perm = [ 1:i nzeroel zeroel ]; + + ## Update permutation + p = p(perm); + ## Permute matrix + T = T(perm,perm); + endfor +endfunction +%!demo +%! P = [0 0.4 0 0 0.3 0 0 0.3 0; ... +%! 0.3 0 0 0 0 0 0 0.7 0; ... +%! 0 0 0 0 0 0.3 0 0 0.7; ... +%! 0 0 0 0 1 0 0 0 0; ... +%! 0.3 0 0 0 0 0 0.7 0 0; ... +%! 0 0 0.3 0 0 0 0 0 0.7; ... +%! 1.0 0 0 0 0 0 0 0 0; ... +%! 0 0 0 1.0 0 0 0 0 0; ... +%! 0 0 0.4 0 0 0.6 0 0 0]; +%! P = blkdiagonalize(P); +%! spy(P); + +%!demo +%! A = ones(3); +%! B = 2*ones(2); +%! C = 3*ones(3); +%! D = 4*ones(7); +%! E = 5*ones(2); +%! M = blkdiag(A, B, C, D, E); +%! n = rows(M); +%! spy(M); +%! printf("Press any key or wait 5 seconds..."); +%! pause(5); +%! p = randperm(n); +%! M = M(p,p); +%! spy(M); +%! printf("Scrambled matrix. Press any key or wait 5 seconds..."); +%! pause(5); +%! T = blkdiagonalize(M); +%! spy(T); +%! printf("Unscrambled matrix" ); + +%!xtest +%! A = ones(3); +%! B = 2*ones(2); +%! C = 3*ones(3); +%! D = 4*ones(7); +%! E = 5*ones(2); +%! M = blkdiag(A, B, C, D, E); +%! n = rows(M); +%! p = randperm(n); +%! Mperm = M(p,p); +%! T = blkdiagonalize(Mperm); +%! assert( T, M ); + +## Given a block diagonal matrix M, find the size of all blocks. b(i) is +## the size of i-th along the diagonal. A zero matrix is considered to +## have a single block of size equal to the size of the matrix. +function b = findblocks(M) + n = rows(M); + (size(M) == [n,n]) || \ + error("M must be a square matrix"); + b = []; + i=d=1; + while( d<n ) + bb = M(i:d,i:d); + z1 = M(i:d,d+1:n); + z2 = M(d+1:n,i:d); + if ( any(bb) && !any(z1) && !any(z2) ) + b = [b d-i+1]; + i=d+1; + d=i; + else + d++; + endif + endwhile + if (i<d) + b = [b d-i+1]; + endif +endfunction Added: trunk/octave-forge/main/queueing/broken/dtmc_period.m =================================================================== --- trunk/octave-forge/main/queueing/broken/dtmc_period.m (rev 0) +++ trunk/octave-forge/main/queueing/broken/dtmc_period.m 2012-02-03 12:07:15 UTC (rev 9577) @@ -0,0 +1,72 @@ +## Copyright (C) 2011, 2012 Moreno Marzolla +## +## This file is part of the queueing toolbox. +## +## The queueing toolbox is free software: you can redistribute it and/or +## modify it under the terms of the GNU General Public License as +## published by the Free Software Foundation... [truncated message content] |
From: <jpi...@us...> - 2012-02-28 15:02:27
|
Revision: 9719 http://octave.svn.sourceforge.net/octave/?rev=9719&view=rev Author: jpicarbajal Date: 2012-02-28 15:02:17 +0000 (Tue, 28 Feb 2012) Log Message: ----------- signal, mechanics, geometry: using polyder instead of polyderiv, following warning in 3.6.1 Modified Paths: -------------- trunk/octave-forge/main/geometry/inst/shape2d/shapearea.m trunk/octave-forge/main/geometry/inst/shape2d/shapecentroid.m trunk/octave-forge/main/mechanics/inst/core/inertiamoment.m trunk/octave-forge/main/mechanics/inst/core/masscenter.m trunk/octave-forge/main/mechanics/inst/core/private/shapemoment.m trunk/octave-forge/main/signal/inst/private/h1_z_deriv.m Modified: trunk/octave-forge/main/geometry/inst/shape2d/shapearea.m =================================================================== --- trunk/octave-forge/main/geometry/inst/shape2d/shapearea.m 2012-02-28 14:11:38 UTC (rev 9718) +++ trunk/octave-forge/main/geometry/inst/shape2d/shapearea.m 2012-02-28 15:02:17 UTC (rev 9719) @@ -40,7 +40,7 @@ px = x(1,:); py = x(2,:); - P = polyint (conv (px, polyderiv(py))); + P = polyint (conv (px, polyder(py))); dA = diff(polyval(P,[0 1])); Modified: trunk/octave-forge/main/geometry/inst/shape2d/shapecentroid.m =================================================================== --- trunk/octave-forge/main/geometry/inst/shape2d/shapecentroid.m 2012-02-28 14:11:38 UTC (rev 9718) +++ trunk/octave-forge/main/geometry/inst/shape2d/shapecentroid.m 2012-02-28 15:02:17 UTC (rev 9719) @@ -37,8 +37,8 @@ px = x(1,:); py = x(2,:); - Px = polyint (conv(conv (px , px)/2 , polyderiv (py))); - Py = polyint (conv(-conv (py , py)/2 , polyderiv (px))); + Px = polyint (conv(conv (px , px)/2 , polyder (py))); + Py = polyint (conv(-conv (py , py)/2 , polyder (px))); dcm = zeros (1,2); dcm(1) = diff(polyval(Px,[0 1])); Modified: trunk/octave-forge/main/mechanics/inst/core/inertiamoment.m =================================================================== --- trunk/octave-forge/main/mechanics/inst/core/inertiamoment.m 2012-02-28 14:11:38 UTC (rev 9718) +++ trunk/octave-forge/main/mechanics/inst/core/inertiamoment.m 2012-02-28 15:02:17 UTC (rev 9719) @@ -41,7 +41,7 @@ py = x(2,:); paux = conv (px, px)/3 + conv(py, py); - paux2 = conv (px, polyderiv (py)) ; + paux2 = conv (px, polyder (py)) ; P = polyint (conv (paux, paux2)); %% Faster than quad Modified: trunk/octave-forge/main/mechanics/inst/core/masscenter.m =================================================================== --- trunk/octave-forge/main/mechanics/inst/core/masscenter.m 2012-02-28 14:11:38 UTC (rev 9718) +++ trunk/octave-forge/main/mechanics/inst/core/masscenter.m 2012-02-28 15:02:17 UTC (rev 9719) @@ -36,8 +36,8 @@ px = x(1,:); py = x(2,:); - Px = polyint (conv(conv (px , px)/2 , polyderiv (py))); - Py = polyint (conv(-conv (py , py)/2 , polyderiv (px))); + Px = polyint (conv(conv (px , px)/2 , polyder (py))); + Py = polyint (conv(-conv (py , py)/2 , polyder (px))); dcm = zeros (1,2); dcm(1) = diff(polyval(Px,[0 1])); Modified: trunk/octave-forge/main/mechanics/inst/core/private/shapemoment.m =================================================================== --- trunk/octave-forge/main/mechanics/inst/core/private/shapemoment.m 2012-02-28 14:11:38 UTC (rev 9718) +++ trunk/octave-forge/main/mechanics/inst/core/private/shapemoment.m 2012-02-28 15:02:17 UTC (rev 9719) @@ -1,5 +1,5 @@ %% Copyright (c) 2011 Juan Pablo Carbajal <car...@if...> -%% +%% %% This program is free software: you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation, either version 3 of the License, or @@ -16,7 +16,7 @@ %% -*- texinfo -*- %% @deftypefn {Function File} @var{J} = shapemoment(@var{polycurve}) %% @deftypefnx{Function File} @var{J} = shapemoment(@dots{}, @var{matrix}) -%% Calculates the second moment of area of a 2D shape. +%% Calculates the second moment of area of a 2D shape. %% %% The polygon is described in @var{p}, where each row is a different vertex as seen %% from the center of mass of the shape (see @code{center_mass_shape2d}). @@ -35,7 +35,7 @@ function J = shapemoment(shape, matrix=false) J = zeros (3,1); - + if isnumeric (shape) [N dim] = size (shape); @@ -44,7 +44,7 @@ px_nxt = shape(nxt,1); py = shape(:,2); py_nxt = shape(nxt,2); - + cr_prod = px.*py_nxt - px_nxt.*py; J = zeros (3, 1); @@ -71,15 +71,15 @@ py = x(2,:); paux = conv (py, py)/3; - paux2 = conv (py, polyderiv (px)) ; + paux2 = conv (py, polyder (px)) ; Px = -polyint ( conv (paux, paux2) ); paux = conv (px, px)/3; - paux2 = conv (px, polyderiv (py)) ; + paux2 = conv (px, polyder (py)) ; Py = polyint ( conv (paux, paux2)); paux = conv (px, px)/2; - paux2 = conv (py, polyderiv (py)) ; + paux2 = conv (py, polyder (py)) ; Pxy = polyint ( conv (paux, paux2)); dJ = zeros(1,3); Modified: trunk/octave-forge/main/signal/inst/private/h1_z_deriv.m =================================================================== --- trunk/octave-forge/main/signal/inst/private/h1_z_deriv.m 2012-02-28 14:11:38 UTC (rev 9718) +++ trunk/octave-forge/main/signal/inst/private/h1_z_deriv.m 2012-02-28 15:02:17 UTC (rev 9719) @@ -1,16 +1,16 @@ ## Copyright 2007 R.G.H. Eschauzier <res...@ya...> ## Adapted by Carnë Draug on 2011 <car...@gm...> -## +## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. -## +## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. -## +## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA @@ -27,7 +27,7 @@ d = (-1)^n; % Vector with the derivatives of H1(z) for i= (1:n-1) d = [d 0]; % Shift result right (multiply by -z) - d += prepad(polyderiv(d), i+1, 0, 2); % Add the derivative + d += prepad(polyder(d), i+1, 0, 2); % Add the derivative endfor %% Build output vector This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2012-03-12 22:46:28
|
Revision: 9839 http://octave.svn.sourceforge.net/octave/?rev=9839&view=rev Author: carandraug Date: 2012-03-12 22:46:21 +0000 (Mon, 12 Mar 2012) Log Message: ----------- csvexplode, csv2cell, cell2csv, csvconcat: moving from miscellaneous to IO package. Fixing Makefiles Modified Paths: -------------- trunk/octave-forge/main/miscellaneous/src/Makefile Added Paths: ----------- trunk/octave-forge/main/io/src/ trunk/octave-forge/main/io/src/Makefile trunk/octave-forge/main/io/src/cell2csv.cc trunk/octave-forge/main/io/src/csv2cell.cc trunk/octave-forge/main/io/src/csvconcat.cc trunk/octave-forge/main/io/src/csvexplode.cc Removed Paths: ------------- trunk/octave-forge/main/miscellaneous/src/cell2csv.cc trunk/octave-forge/main/miscellaneous/src/csv2cell.cc trunk/octave-forge/main/miscellaneous/src/csvconcat.cc trunk/octave-forge/main/miscellaneous/src/csvexplode.cc Added: trunk/octave-forge/main/io/src/Makefile =================================================================== --- trunk/octave-forge/main/io/src/Makefile (rev 0) +++ trunk/octave-forge/main/io/src/Makefile 2012-03-12 22:46:21 UTC (rev 9839) @@ -0,0 +1,7 @@ +all: csvexplode.oct csv2cell.oct csvconcat.oct cell2csv.oct + +%.oct: %.cc + mkoctfile -Wall $< + +clean: + rm -f *.o octave-core core *.oct *~ Copied: trunk/octave-forge/main/io/src/cell2csv.cc (from rev 9837, trunk/octave-forge/main/miscellaneous/src/cell2csv.cc) =================================================================== --- trunk/octave-forge/main/io/src/cell2csv.cc (rev 0) +++ trunk/octave-forge/main/io/src/cell2csv.cc 2012-03-12 22:46:21 UTC (rev 9839) @@ -0,0 +1,116 @@ +// Copyright (C) 2004 Laurent Mazet <ma...@cr...> +// +// This program is free software; you can redistribute it and/or modify it under +// the terms of the GNU General Public License as published by the Free Software +// Foundation; either version 3 of the License, or (at your option) any later +// version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +// details. +// +// You should have received a copy of the GNU General Public License along with +// this program; if not, see <http://www.gnu.org/licenses/>. + +#include <fstream> + +#include <octave/oct.h> +#include <octave/Cell.h> + +DEFUN_DLD (cell2csv, args, nargout, + "-*- texinfo -*-\n" + "@deftypefn {Function File} {} cell2csv (@var{file}, @var{c})\n" + "@deftypefnx {Function File} {} cell2csv (@var{file}, @var{c}, @var{sep})\n" + "@deftypefnx {Function File} {} cell2csv (@var{file}, @var{c}, @var{sep}, @var{prot})\n" + "\n" + "Create a CSV file from a cell. " + "@var{sep} changes the character used to separate two fields. By " + "default, two fields are expected to be separated by a coma " + "(@code{,}). @var{prot} changes the character used to protect a string. " + "By default it's a double quote (@code{\"}).\n" + "@end deftypefn") { + + /* Check argument */ + if ((args.length() < 2) || (args.length() > 4)) { + print_usage (); + return octave_value(); + } + + /* Get arguments */ + std::string file = args(0).string_value(); + + Cell c = args(1).cell_value(); + + std::string sep = (args.length() > 2) ? args(2).string_value() : ","; + if (sep.length() != 1) { + error("Only on charactere need as separator\n"); + return octave_value(); + } + + std::string prot = (args.length() > 3) ? args(3).string_value() : "\""; + if (prot.length() != 1) { + error("Only on charactere need as protector\n"); + return octave_value(); + } + + /* Open file */ + std::ofstream fd(file.c_str()); + if (!fd.is_open()) { + error("cannot write %s\n", file.c_str()); + return octave_value(); + } + + /* Concat a cell into a string */ + std::string word; + + /* For each element */ + for (int i=0, il=c.rows(); i<il; i++) { + + for (int j=0, jl=c.columns(); j<jl; j++) { + word = ""; + + /* Add separator */ + if (j != 0) + word += sep; + + if (c(i, j).is_real_scalar()) { + + /* Output real value */ + char tmp[20]; + sprintf(tmp, "%g", c(i, j).double_value()); + word += tmp; + } + + else if (c(i, j).is_string()) { + /* Output string value */ + std::string str = c(i, j).string_value(); + if (str.find(sep) != str.npos) { + size_t pos = 0; + while ((pos=str.find(prot, pos)) != str.npos) { + str.replace(pos, 1, prot+prot); + pos += 2; + } + str = prot + str + prot; + } + word += str; + } + + else if (!c(i, j).is_empty()) { + /* Output NaN value */ + warning ("not a real or a string\n"); + word += "NaN"; + } + + fd << word; + } + + /* Add end of line */ + fd << std::endl; + } + + /* Close file */ + fd.close(); + + return octave_value(); +} Copied: trunk/octave-forge/main/io/src/csv2cell.cc (from rev 9837, trunk/octave-forge/main/miscellaneous/src/csv2cell.cc) =================================================================== --- trunk/octave-forge/main/io/src/csv2cell.cc (rev 0) +++ trunk/octave-forge/main/io/src/csv2cell.cc 2012-03-12 22:46:21 UTC (rev 9839) @@ -0,0 +1,193 @@ +// Copyright (C) 2004 Laurent Mazet <ma...@cr...> +// +// This program is free software; you can redistribute it and/or modify it under +// the terms of the GNU General Public License as published by the Free Software +// Foundation; either version 3 of the License, or (at your option) any later +// version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +// details. +// +// You should have received a copy of the GNU General Public License along with +// this program; if not, see <http://www.gnu.org/licenses/>. + +#include <fstream> + +#include <octave/oct.h> +#include <octave/Cell.h> + +#define MAXSTRINGLENGTH 4096 + +DEFUN_DLD (csv2cell, args, nargout, + "-*- texinfo -*-\n" + "@deftypefn {Function File} {@var{c} = } csv2cell (@var{file})\n" + "@deftypefnx {Function File} {@var{c} = } csv2cell (@var{file}, @var{sep})\n" + "@deftypefnx {Function File} {@var{c} = } csv2cell (@var{file}, @var{sep}, @var{prot})\n" + "\n" + "Read a CSV (Comma Separated Values) file and convert it into a " + "cell. " + "@var{sep} changes the character used to separate two fields. By " + "default, two fields are expected to be separated by a coma " + "(@code{,}). @var{prot} changes the character used to protect a string. " + "By default it's a double quote (@code{\"}).\n" + "@end deftypefn") { + + /* Get arguments */ + const int nargin = args.length (); + octave_value_list retval; + if (nargin == 0) + { + error ("csv2cell: not enough input arguments"); + return retval; + } + + const std::string file = args (0).string_value (); + + const std::string _sep = (nargin > 1) ? args (1).string_value () : ","; + if (_sep.length() != 1) + { + error ("csv2cell: only on charactere need as separator"); + return retval; + } + char sep = _sep[0]; + + const std::string _prot = (nargin > 2) ? args (2).string_value () : "\""; + if (_prot.length() != 1) + { + error ("csv2cell: only on charactere need as protector"); + return retval; + } + char prot = _prot[0]; + + /* Open file */ + std::ifstream fd (file.c_str ()); + if (!fd.is_open ()) + { + error ("csv2cell: cannot read %s", file.c_str()); + return retval; + } + fd.seekg (0, std::ios::end); + long fdend = fd.tellg (); + fd.seekg (0, std::ios::beg); + + if (fd.tellg () >= fdend) + return octave_value (Cell (0, 0)); + + /* Buffers */ + char line [MAXSTRINGLENGTH]; + std::string str, word; + bool inside = false; + + /* Read a line */ + str = ""; + fd.getline (line, MAXSTRINGLENGTH); + while (fd.fail ()) + { + fd.clear (); + str += line; + fd.getline (line, MAXSTRINGLENGTH); + } + str += line; + + /* Parse first to get number of columns */ + int nbcolumns = 0; + for (int i = 0, len = str.length (); i <= len; i++) + if (((i==len) || (str [i] == sep)) && (!inside)) + nbcolumns++; + else if ((inside) && (str [i] == prot) && ((i < len) && (str [i+1] == prot))) + ++i; + else if (str [i] == prot) + inside = !inside; + + /* Read all the file to get number of rows */ + int nbrows = 1; + while (fd.tellg () < fdend) + { + fd.getline (line, MAXSTRINGLENGTH); + while (fd.fail ()) + { + fd.clear (); + fd.getline (line, MAXSTRINGLENGTH); + } + nbrows++; + } + + /* Rewind */ + fd.seekg (0, std::ios::beg); + if (!fd.good ()) + { + error ("csv2cell: cannot reread %s", file.c_str ()); + return retval; + } + + /* Read all the file until the end */ + Cell c (nbrows, nbcolumns); + for (int i = 0; i < nbrows; i++) + { + /* Read a line */ + str = ""; + fd.getline (line, MAXSTRINGLENGTH); + while (fd.fail ()) + { + fd.clear (); + str += line; + fd.getline (line, MAXSTRINGLENGTH); + } + str += line; + + /* Explode a line into a sub cell */ + word = ""; + inside = false; + int j = 0; + for (int k = 0, len = str.length (); k <= len; k++) + { + if (((k == len) || (str [k] == sep)) && (!inside)) + { + /* Check number of columns */ + if (j == nbcolumns) + { + fd.close (); + error ("csv2cell: incorrect CSV file, line %d too long", i+1); + return retval; + } + + /* Check if scalar */ + const char *word_str = word.c_str (); + char *err; + double val = strtod (word_str, &err); + + /* Store into the cell */ + c (i, j++) = ((word == "") || (err != word_str+word.length())) ? + octave_value (word) : octave_value (val); + word = ""; + } + else if ((inside) && (str[k]==prot) && ((k<len) && (str[k+1]==prot))) + { + /* Insisde a string */ + word += prot; + ++k; + } + else if (str[k] == prot) + /* Changing */ + inside = !inside; + else + word += str[k]; + } + + /* Check number of columns */ + if (j != nbcolumns) + { + fd.close (); + error ("csv2cell: incorrect CSV file, line %d too short", i+1); + return retval; + } + } + + /* Close file */ + fd.close (); + + retval (0) = c; + return retval; +} Copied: trunk/octave-forge/main/io/src/csvconcat.cc (from rev 9837, trunk/octave-forge/main/miscellaneous/src/csvconcat.cc) =================================================================== --- trunk/octave-forge/main/io/src/csvconcat.cc (rev 0) +++ trunk/octave-forge/main/io/src/csvconcat.cc 2012-03-12 22:46:21 UTC (rev 9839) @@ -0,0 +1,98 @@ +// Copyright (C) 2004 Laurent Mazet <ma...@cr...> +// +// This program is free software; you can redistribute it and/or modify it under +// the terms of the GNU General Public License as published by the Free Software +// Foundation; either version 3 of the License, or (at your option) any later +// version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +// details. +// +// You should have received a copy of the GNU General Public License along with +// this program; if not, see <http://www.gnu.org/licenses/>. + +#include <octave/oct.h> +#include <octave/Cell.h> + +DEFUN_DLD (csvconcat, args, nargout, + "-*- texinfo -*-\n" + "@deftypefn {Function File} {@var{str} = } csvconcat (@var{c})\n" + "@deftypefnx {Function File} {@var{str} = } csvconcat (@var{c}, @var{sep})\n" + "@deftypefnx {Function File} {@var{str} = } csvconcat (@var{c}, @var{sep}, @var{prot})\n" + "\n" + "Concatenate a cell into a CSV string or array of strings. " + "@var{sep} changes the character used to separate two fields. By " + "default, two fields are expected to be separated by a coma " + "(@code{,}). @var{prot} changes the character used to protect a string. " + "By default it's a double quote (@code{\"}).\n" + "@end deftypefn") { + + /* Check argument */ + if ((args.length() < 1) || (args.length() > 3)) { + print_usage (); + return octave_value(); + } + + /* Get arguments */ + Cell c = args(0).cell_value(); + + std::string sep = (args.length() > 1) ? args(1).string_value() : ","; + if (sep.length() != 1) { + error("Only on charactere need as separator\n"); + return octave_value(); + } + + std::string prot = (args.length() > 2) ? args(2).string_value() : "\""; + if (prot.length() != 1) { + error("Only on charactere need as protector\n"); + return octave_value(); + } + + /* Concat a cell into a string */ + string_vector vec(c.rows()); + std::string word; + + /* For each element */ + for (int i=0, il=c.rows(); i<il; i++) { + word = ""; + for (int j=0, jl=c.columns(); j<jl; j++) { + + /* Add separator */ + if (j != 0) + word += sep; + + if (c(i, j).is_real_scalar()) { + + /* Output real value */ + char tmp[20]; + sprintf(tmp, "%g", c(i, j).double_value()); + word += tmp; + } + + else if (c(i, j).is_string()) { + /* Output string value */ + std::string str = c(i, j).string_value(); + if (str.find(sep) != str.npos) { + unsigned int pos = 0; + while ((pos=str.find(prot, pos)) != str.npos) { + str.replace(pos, 1, prot+prot); + pos += 2; + } + str = prot + str + prot; + } + word += str; + } + + else { + /* Output NaN value */ + warning ("not a real or a string\n"); + word += "NaN"; + } + } + vec(i) = word; + } + + return octave_value(vec); +} Copied: trunk/octave-forge/main/io/src/csvexplode.cc (from rev 9837, trunk/octave-forge/main/miscellaneous/src/csvexplode.cc) =================================================================== --- trunk/octave-forge/main/io/src/csvexplode.cc (rev 0) +++ trunk/octave-forge/main/io/src/csvexplode.cc 2012-03-12 22:46:21 UTC (rev 9839) @@ -0,0 +1,97 @@ +// Copyright (C) 2004 Laurent Mazet <ma...@cr...> +// +// This program is free software; you can redistribute it and/or modify it under +// the terms of the GNU General Public License as published by the Free Software +// Foundation; either version 3 of the License, or (at your option) any later +// version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +// details. +// +// You should have received a copy of the GNU General Public License along with +// this program; if not, see <http://www.gnu.org/licenses/>. + +#include <octave/oct.h> +#include <octave/Cell.h> + +DEFUN_DLD (csvexplode, args, nargout, + "-*- texinfo -*-\n" + "@deftypefn {Function File} {@var{c} = } csvexplode (@var{str})\n" + "@deftypefnx {Function File} {@var{c} = } csvexplode (@var{str}, @var{sep})\n" + "@deftypefnx {Function File} {@var{c} = } csvexplode (@var{str}, @var{sep}, @var{prot})\n" + "\n" + "Explode a CSV string into a cell. " + "@var{sep} changes the character used to separate two fields. By " + "default, two fields are expected to be separated by a coma " + "(@code{,}). @var{prot} changes the character used to protect a string. " + "By default it's a double quote (@code{\"}).\n" + "@end deftypefn") { + + /* Check argument */ + if ((args.length() < 1) || (args.length() > 3)) { + print_usage (); + return octave_value(); + } + + /* Get arguments */ + if (!args(0).is_string()) { + if (args(0).is_cell()) + return octave_value(args(0)); + else + return octave_value(Cell(args(0))); + } + std::string str = args(0).string_value(); + + std::string _sep = (args.length() > 1) ? args(1).string_value() : ","; + if (_sep.length() != 1) { + error("Only on charactere need as separator\n"); + return octave_value(); + } + char sep = _sep[0]; + + std::string _prot = (args.length() > 2) ? args(2).string_value() : "\""; + if (_prot.length() != 1) { + error("Only on charactere need as protector\n"); + return octave_value(); + } + char prot = _prot[0]; + + /* Explode a line into a cell */ + Cell retval; + std::string word; + bool inside = false; + for (int i=0, len=str.length(); i<=len; i++) { + if (((i==len) || (str[i] == sep)) && (!inside)) { + + /* Extand cell */ + retval.resize(dim_vector(1, retval.columns()+1)); + + /* Check if scalar */ + const char *word_str=word.c_str(); + char *err; + double val = strtod (word_str, &err); + + /* Store into the cell */ + retval(0, retval.columns()-1) = + ((word == "") || (err != word_str+word.length())) ? + octave_value(word) : octave_value(val); + + word = ""; + } + else if ((inside) && (str[i]==prot) && ((i<len) && (str[i+1]==prot))) { + + /* Insisde a string */ + word += prot; + ++i; + } + else if (str[i] == prot) + /* Changing */ + inside = !inside; + else + word += str[i]; + } + + return octave_value(retval); +} Modified: trunk/octave-forge/main/miscellaneous/src/Makefile =================================================================== --- trunk/octave-forge/main/miscellaneous/src/Makefile 2012-03-12 22:37:25 UTC (rev 9838) +++ trunk/octave-forge/main/miscellaneous/src/Makefile 2012-03-12 22:46:21 UTC (rev 9839) @@ -49,18 +49,6 @@ xmlread.oct: xmlread.o xmltree_read.o xmltree.o $(MKOCTFILE) $^ -csvexplode.oct: csvexplode.cc - $(MKOCTFILE) $(MISCDEFS) $< - -csv2cell.oct: csv2cell.cc - $(MKOCTFILE) $(MISCDEFS) $< - -csvconcat.oct: csvconcat.cc - $(MKOCTFILE) $(MISCDEFS) $< - -cell2csv.oct: cell2csv.cc - $(MKOCTFILE) $(MISCDEFS) $< - cell2cell.oct: cell2cell.cc $(MKOCTFILE) $(MISCDEFS) $< Deleted: trunk/octave-forge/main/miscellaneous/src/cell2csv.cc =================================================================== --- trunk/octave-forge/main/miscellaneous/src/cell2csv.cc 2012-03-12 22:37:25 UTC (rev 9838) +++ trunk/octave-forge/main/miscellaneous/src/cell2csv.cc 2012-03-12 22:46:21 UTC (rev 9839) @@ -1,116 +0,0 @@ -// Copyright (C) 2004 Laurent Mazet <ma...@cr...> -// -// This program is free software; you can redistribute it and/or modify it under -// the terms of the GNU General Public License as published by the Free Software -// Foundation; either version 3 of the License, or (at your option) any later -// version. -// -// This program is distributed in the hope that it will be useful, but WITHOUT -// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more -// details. -// -// You should have received a copy of the GNU General Public License along with -// this program; if not, see <http://www.gnu.org/licenses/>. - -#include <fstream> - -#include <octave/oct.h> -#include <octave/Cell.h> - -DEFUN_DLD (cell2csv, args, nargout, - "-*- texinfo -*-\n" - "@deftypefn {Function File} {} cell2csv (@var{file}, @var{c})\n" - "@deftypefnx {Function File} {} cell2csv (@var{file}, @var{c}, @var{sep})\n" - "@deftypefnx {Function File} {} cell2csv (@var{file}, @var{c}, @var{sep}, @var{prot})\n" - "\n" - "Create a CSV file from a cell. " - "@var{sep} changes the character used to separate two fields. By " - "default, two fields are expected to be separated by a coma " - "(@code{,}). @var{prot} changes the character used to protect a string. " - "By default it's a double quote (@code{\"}).\n" - "@end deftypefn") { - - /* Check argument */ - if ((args.length() < 2) || (args.length() > 4)) { - print_usage (); - return octave_value(); - } - - /* Get arguments */ - std::string file = args(0).string_value(); - - Cell c = args(1).cell_value(); - - std::string sep = (args.length() > 2) ? args(2).string_value() : ","; - if (sep.length() != 1) { - error("Only on charactere need as separator\n"); - return octave_value(); - } - - std::string prot = (args.length() > 3) ? args(3).string_value() : "\""; - if (prot.length() != 1) { - error("Only on charactere need as protector\n"); - return octave_value(); - } - - /* Open file */ - std::ofstream fd(file.c_str()); - if (!fd.is_open()) { - error("cannot write %s\n", file.c_str()); - return octave_value(); - } - - /* Concat a cell into a string */ - std::string word; - - /* For each element */ - for (int i=0, il=c.rows(); i<il; i++) { - - for (int j=0, jl=c.columns(); j<jl; j++) { - word = ""; - - /* Add separator */ - if (j != 0) - word += sep; - - if (c(i, j).is_real_scalar()) { - - /* Output real value */ - char tmp[20]; - sprintf(tmp, "%g", c(i, j).double_value()); - word += tmp; - } - - else if (c(i, j).is_string()) { - /* Output string value */ - std::string str = c(i, j).string_value(); - if (str.find(sep) != str.npos) { - size_t pos = 0; - while ((pos=str.find(prot, pos)) != str.npos) { - str.replace(pos, 1, prot+prot); - pos += 2; - } - str = prot + str + prot; - } - word += str; - } - - else if (!c(i, j).is_empty()) { - /* Output NaN value */ - warning ("not a real or a string\n"); - word += "NaN"; - } - - fd << word; - } - - /* Add end of line */ - fd << std::endl; - } - - /* Close file */ - fd.close(); - - return octave_value(); -} Deleted: trunk/octave-forge/main/miscellaneous/src/csv2cell.cc =================================================================== --- trunk/octave-forge/main/miscellaneous/src/csv2cell.cc 2012-03-12 22:37:25 UTC (rev 9838) +++ trunk/octave-forge/main/miscellaneous/src/csv2cell.cc 2012-03-12 22:46:21 UTC (rev 9839) @@ -1,193 +0,0 @@ -// Copyright (C) 2004 Laurent Mazet <ma...@cr...> -// -// This program is free software; you can redistribute it and/or modify it under -// the terms of the GNU General Public License as published by the Free Software -// Foundation; either version 3 of the License, or (at your option) any later -// version. -// -// This program is distributed in the hope that it will be useful, but WITHOUT -// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more -// details. -// -// You should have received a copy of the GNU General Public License along with -// this program; if not, see <http://www.gnu.org/licenses/>. - -#include <fstream> - -#include <octave/oct.h> -#include <octave/Cell.h> - -#define MAXSTRINGLENGTH 4096 - -DEFUN_DLD (csv2cell, args, nargout, - "-*- texinfo -*-\n" - "@deftypefn {Function File} {@var{c} = } csv2cell (@var{file})\n" - "@deftypefnx {Function File} {@var{c} = } csv2cell (@var{file}, @var{sep})\n" - "@deftypefnx {Function File} {@var{c} = } csv2cell (@var{file}, @var{sep}, @var{prot})\n" - "\n" - "Read a CSV (Comma Separated Values) file and convert it into a " - "cell. " - "@var{sep} changes the character used to separate two fields. By " - "default, two fields are expected to be separated by a coma " - "(@code{,}). @var{prot} changes the character used to protect a string. " - "By default it's a double quote (@code{\"}).\n" - "@end deftypefn") { - - /* Get arguments */ - const int nargin = args.length (); - octave_value_list retval; - if (nargin == 0) - { - error ("csv2cell: not enough input arguments"); - return retval; - } - - const std::string file = args (0).string_value (); - - const std::string _sep = (nargin > 1) ? args (1).string_value () : ","; - if (_sep.length() != 1) - { - error ("csv2cell: only on charactere need as separator"); - return retval; - } - char sep = _sep[0]; - - const std::string _prot = (nargin > 2) ? args (2).string_value () : "\""; - if (_prot.length() != 1) - { - error ("csv2cell: only on charactere need as protector"); - return retval; - } - char prot = _prot[0]; - - /* Open file */ - std::ifstream fd (file.c_str ()); - if (!fd.is_open ()) - { - error ("csv2cell: cannot read %s", file.c_str()); - return retval; - } - fd.seekg (0, std::ios::end); - long fdend = fd.tellg (); - fd.seekg (0, std::ios::beg); - - if (fd.tellg () >= fdend) - return octave_value (Cell (0, 0)); - - /* Buffers */ - char line [MAXSTRINGLENGTH]; - std::string str, word; - bool inside = false; - - /* Read a line */ - str = ""; - fd.getline (line, MAXSTRINGLENGTH); - while (fd.fail ()) - { - fd.clear (); - str += line; - fd.getline (line, MAXSTRINGLENGTH); - } - str += line; - - /* Parse first to get number of columns */ - int nbcolumns = 0; - for (int i = 0, len = str.length (); i <= len; i++) - if (((i==len) || (str [i] == sep)) && (!inside)) - nbcolumns++; - else if ((inside) && (str [i] == prot) && ((i < len) && (str [i+1] == prot))) - ++i; - else if (str [i] == prot) - inside = !inside; - - /* Read all the file to get number of rows */ - int nbrows = 1; - while (fd.tellg () < fdend) - { - fd.getline (line, MAXSTRINGLENGTH); - while (fd.fail ()) - { - fd.clear (); - fd.getline (line, MAXSTRINGLENGTH); - } - nbrows++; - } - - /* Rewind */ - fd.seekg (0, std::ios::beg); - if (!fd.good ()) - { - error ("csv2cell: cannot reread %s", file.c_str ()); - return retval; - } - - /* Read all the file until the end */ - Cell c (nbrows, nbcolumns); - for (int i = 0; i < nbrows; i++) - { - /* Read a line */ - str = ""; - fd.getline (line, MAXSTRINGLENGTH); - while (fd.fail ()) - { - fd.clear (); - str += line; - fd.getline (line, MAXSTRINGLENGTH); - } - str += line; - - /* Explode a line into a sub cell */ - word = ""; - inside = false; - int j = 0; - for (int k = 0, len = str.length (); k <= len; k++) - { - if (((k == len) || (str [k] == sep)) && (!inside)) - { - /* Check number of columns */ - if (j == nbcolumns) - { - fd.close (); - error ("csv2cell: incorrect CSV file, line %d too long", i+1); - return retval; - } - - /* Check if scalar */ - const char *word_str = word.c_str (); - char *err; - double val = strtod (word_str, &err); - - /* Store into the cell */ - c (i, j++) = ((word == "") || (err != word_str+word.length())) ? - octave_value (word) : octave_value (val); - word = ""; - } - else if ((inside) && (str[k]==prot) && ((k<len) && (str[k+1]==prot))) - { - /* Insisde a string */ - word += prot; - ++k; - } - else if (str[k] == prot) - /* Changing */ - inside = !inside; - else - word += str[k]; - } - - /* Check number of columns */ - if (j != nbcolumns) - { - fd.close (); - error ("csv2cell: incorrect CSV file, line %d too short", i+1); - return retval; - } - } - - /* Close file */ - fd.close (); - - retval (0) = c; - return retval; -} Deleted: trunk/octave-forge/main/miscellaneous/src/csvconcat.cc =================================================================== --- trunk/octave-forge/main/miscellaneous/src/csvconcat.cc 2012-03-12 22:37:25 UTC (rev 9838) +++ trunk/octave-forge/main/miscellaneous/src/csvconcat.cc 2012-03-12 22:46:21 UTC (rev 9839) @@ -1,98 +0,0 @@ -// Copyright (C) 2004 Laurent Mazet <ma...@cr...> -// -// This program is free software; you can redistribute it and/or modify it under -// the terms of the GNU General Public License as published by the Free Software -// Foundation; either version 3 of the License, or (at your option) any later -// version. -// -// This program is distributed in the hope that it will be useful, but WITHOUT -// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more -// details. -// -// You should have received a copy of the GNU General Public License along with -// this program; if not, see <http://www.gnu.org/licenses/>. - -#include <octave/oct.h> -#include <octave/Cell.h> - -DEFUN_DLD (csvconcat, args, nargout, - "-*- texinfo -*-\n" - "@deftypefn {Function File} {@var{str} = } csvconcat (@var{c})\n" - "@deftypefnx {Function File} {@var{str} = } csvconcat (@var{c}, @var{sep})\n" - "@deftypefnx {Function File} {@var{str} = } csvconcat (@var{c}, @var{sep}, @var{prot})\n" - "\n" - "Concatenate a cell into a CSV string or array of strings. " - "@var{sep} changes the character used to separate two fields. By " - "default, two fields are expected to be separated by a coma " - "(@code{,}). @var{prot} changes the character used to protect a string. " - "By default it's a double quote (@code{\"}).\n" - "@end deftypefn") { - - /* Check argument */ - if ((args.length() < 1) || (args.length() > 3)) { - print_usage (); - return octave_value(); - } - - /* Get arguments */ - Cell c = args(0).cell_value(); - - std::string sep = (args.length() > 1) ? args(1).string_value() : ","; - if (sep.length() != 1) { - error("Only on charactere need as separator\n"); - return octave_value(); - } - - std::string prot = (args.length() > 2) ? args(2).string_value() : "\""; - if (prot.length() != 1) { - error("Only on charactere need as protector\n"); - return octave_value(); - } - - /* Concat a cell into a string */ - string_vector vec(c.rows()); - std::string word; - - /* For each element */ - for (int i=0, il=c.rows(); i<il; i++) { - word = ""; - for (int j=0, jl=c.columns(); j<jl; j++) { - - /* Add separator */ - if (j != 0) - word += sep; - - if (c(i, j).is_real_scalar()) { - - /* Output real value */ - char tmp[20]; - sprintf(tmp, "%g", c(i, j).double_value()); - word += tmp; - } - - else if (c(i, j).is_string()) { - /* Output string value */ - std::string str = c(i, j).string_value(); - if (str.find(sep) != str.npos) { - unsigned int pos = 0; - while ((pos=str.find(prot, pos)) != str.npos) { - str.replace(pos, 1, prot+prot); - pos += 2; - } - str = prot + str + prot; - } - word += str; - } - - else { - /* Output NaN value */ - warning ("not a real or a string\n"); - word += "NaN"; - } - } - vec(i) = word; - } - - return octave_value(vec); -} Deleted: trunk/octave-forge/main/miscellaneous/src/csvexplode.cc =================================================================== --- trunk/octave-forge/main/miscellaneous/src/csvexplode.cc 2012-03-12 22:37:25 UTC (rev 9838) +++ trunk/octave-forge/main/miscellaneous/src/csvexplode.cc 2012-03-12 22:46:21 UTC (rev 9839) @@ -1,97 +0,0 @@ -// Copyright (C) 2004 Laurent Mazet <ma...@cr...> -// -// This program is free software; you can redistribute it and/or modify it under -// the terms of the GNU General Public License as published by the Free Software -// Foundation; either version 3 of the License, or (at your option) any later -// version. -// -// This program is distributed in the hope that it will be useful, but WITHOUT -// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more -// details. -// -// You should have received a copy of the GNU General Public License along with -// this program; if not, see <http://www.gnu.org/licenses/>. - -#include <octave/oct.h> -#include <octave/Cell.h> - -DEFUN_DLD (csvexplode, args, nargout, - "-*- texinfo -*-\n" - "@deftypefn {Function File} {@var{c} = } csvexplode (@var{str})\n" - "@deftypefnx {Function File} {@var{c} = } csvexplode (@var{str}, @var{sep})\n" - "@deftypefnx {Function File} {@var{c} = } csvexplode (@var{str}, @var{sep}, @var{prot})\n" - "\n" - "Explode a CSV string into a cell. " - "@var{sep} changes the character used to separate two fields. By " - "default, two fields are expected to be separated by a coma " - "(@code{,}). @var{prot} changes the character used to protect a string. " - "By default it's a double quote (@code{\"}).\n" - "@end deftypefn") { - - /* Check argument */ - if ((args.length() < 1) || (args.length() > 3)) { - print_usage (); - return octave_value(); - } - - /* Get arguments */ - if (!args(0).is_string()) { - if (args(0).is_cell()) - return octave_value(args(0)); - else - return octave_value(Cell(args(0))); - } - std::string str = args(0).string_value(); - - std::string _sep = (args.length() > 1) ? args(1).string_value() : ","; - if (_sep.length() != 1) { - error("Only on charactere need as separator\n"); - return octave_value(); - } - char sep = _sep[0]; - - std::string _prot = (args.length() > 2) ? args(2).string_value() : "\""; - if (_prot.length() != 1) { - error("Only on charactere need as protector\n"); - return octave_value(); - } - char prot = _prot[0]; - - /* Explode a line into a cell */ - Cell retval; - std::string word; - bool inside = false; - for (int i=0, len=str.length(); i<=len; i++) { - if (((i==len) || (str[i] == sep)) && (!inside)) { - - /* Extand cell */ - retval.resize(dim_vector(1, retval.columns()+1)); - - /* Check if scalar */ - const char *word_str=word.c_str(); - char *err; - double val = strtod (word_str, &err); - - /* Store into the cell */ - retval(0, retval.columns()-1) = - ((word == "") || (err != word_str+word.length())) ? - octave_value(word) : octave_value(val); - - word = ""; - } - else if ((inside) && (str[i]==prot) && ((i<len) && (str[i+1]==prot))) { - - /* Insisde a string */ - word += prot; - ++i; - } - else if (str[i] == prot) - /* Changing */ - inside = !inside; - else - word += str[i]; - } - - return octave_value(retval); -} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2012-03-13 02:08:50
|
Revision: 9843 http://octave.svn.sourceforge.net/octave/?rev=9843&view=rev Author: carandraug Date: 2012-03-13 02:08:43 +0000 (Tue, 13 Mar 2012) Log Message: ----------- csvexplode, csv2cell, cell2csv, csvconcat: making note on the NEWS file of IO and miscellaneous packages Modified Paths: -------------- trunk/octave-forge/main/io/NEWS trunk/octave-forge/main/miscellaneous/NEWS Modified: trunk/octave-forge/main/io/NEWS =================================================================== --- trunk/octave-forge/main/io/NEWS 2012-03-13 01:53:05 UTC (rev 9842) +++ trunk/octave-forge/main/io/NEWS 2012-03-13 02:08:43 UTC (rev 9843) @@ -7,11 +7,16 @@ ** Bug fixes: --- odsfinfo: fixed "wrong type argument `cell'" bug when run interactively. --- xlsopen, odsopen: fixed messed up screen output due to UNO usage warning. +--- csv2cell: checks if file is empty annd return an empty cell if so. ** Adapted to internal LibreOffice-3.5-final changes. ** Tried OpenXLS-6.0.7.jar. Reads OK, still unusable for writing .xls files. +** The following functions have been imported from the miscellaneous package: + cell2csv csvconcat + csv2cell csvexplode + =============================================================================== io-1.0.17 Release Date: 2012-02-27 Release Manager: Philip Nienhuis =============================================================================== Modified: trunk/octave-forge/main/miscellaneous/NEWS =================================================================== --- trunk/octave-forge/main/miscellaneous/NEWS 2012-03-13 01:53:05 UTC (rev 9842) +++ trunk/octave-forge/main/miscellaneous/NEWS 2012-03-13 02:08:43 UTC (rev 9843) @@ -17,8 +17,13 @@ clip normr text_waitbar normc sample - ** The function clip was imported from the audio package. + ** The following functions have been moved to the IO package: + cell2csv csvconcat + csv2cell csvexplode + + ** The function `clip' was imported from the audio package. + ** The functions `apply' and `map' have been deprecated. `cellfun' and `arrayfun' from octave core should be used instead. @@ -30,8 +35,6 @@ ** Multiple bug fixes and increased input check on many functions. - ** The function `csv2cell' now returns an empty cell in the case of empty file - ** Package is no longer automatically loaded. ** improvements to help text. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2012-03-13 02:41:28
|
Revision: 9844 http://octave.svn.sourceforge.net/octave/?rev=9844&view=rev Author: carandraug Date: 2012-03-13 02:41:21 +0000 (Tue, 13 Mar 2012) Log Message: ----------- xmlwrite: moving from miscellaneous to IO package Modified Paths: -------------- trunk/octave-forge/main/io/NEWS trunk/octave-forge/main/miscellaneous/NEWS Added Paths: ----------- trunk/octave-forge/main/io/inst/xmlwrite.m Removed Paths: ------------- trunk/octave-forge/main/miscellaneous/inst/xmlwrite.m Modified: trunk/octave-forge/main/io/NEWS =================================================================== --- trunk/octave-forge/main/io/NEWS 2012-03-13 02:08:43 UTC (rev 9843) +++ trunk/octave-forge/main/io/NEWS 2012-03-13 02:41:21 UTC (rev 9844) @@ -15,7 +15,7 @@ ** The following functions have been imported from the miscellaneous package: cell2csv csvconcat - csv2cell csvexplode + csv2cell csvexplode xmlwrite =============================================================================== io-1.0.17 Release Date: 2012-02-27 Release Manager: Philip Nienhuis Copied: trunk/octave-forge/main/io/inst/xmlwrite.m (from rev 9841, trunk/octave-forge/main/miscellaneous/inst/xmlwrite.m) =================================================================== --- trunk/octave-forge/main/io/inst/xmlwrite.m (rev 0) +++ trunk/octave-forge/main/io/inst/xmlwrite.m 2012-03-13 02:41:21 UTC (rev 9844) @@ -0,0 +1,201 @@ +## Copyright (C) 2004 Laurent Mazet <ma...@cr...> +## +## This program is free software; you can redistribute it and/or modify it under +## the terms of the GNU General Public License as published by the Free Software +## Foundation; either version 3 of the License, or (at your option) any later +## version. +## +## This program is distributed in the hope that it will be useful, but WITHOUT +## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +## details. +## +## You should have received a copy of the GNU General Public License along with +## this program; if not, see <http://www.gnu.org/licenses/>. + +## -*- texinfo -*- +## @deftypefn {Function File} {@var{nb} =} xmlwrite (@var{filename}, @var{value}) +## @deftypefnx {Function File} {@var{nb} =} xmlwrite (@var{fd}, @var{value}, [@var{name}]) +## +## Write a @var{value} into @var{filename} (@var{fd}) as a XML file. +## +##The number of elements (@var{nb}) or 0 is returned. +## @end deftypefn + +function nb = xmlwrite (filename, value, name) + persistent indent = ""; + persistent separator = "\n"; + + ## Check argument number + nb = 0; + if (nargin < 2) || (nargin > 3) + print_usage; + endif + + ## Get the file identificator + isopen = false; + if ischar(filename) + + ## Check file name + sn = char (strsplit (filename, ".")); + if !strcmp(tolower(deblank(sn(end,:))), "xml") + filename = [filename, ".xml"]; + endif + + ## Open file + fd = fopen (filename, "w"); + if fd <= 0 + error("error opening file \"%s\"\n", filename); + endif + + ## XML header + fprintf (fd, "<?xml version=\"1.0\"?>\n"); + fprintf (fd, "<!DOCTYPE octave SYSTEM \"octave.dtd\">\n"); + fprintf (fd, "<octave>\n"); + indent = " "; + else + isopen = true; + fd = filename; + endif + + ## Store name in optional argument + opt = ""; + if nargin == 3 + opt = sprintf(" name=\"%s\"", name); + endif + + ## Process by type + + if ischar(value) && (rows(value) <= 1) + ## String type + + fprintf (fd, "%s<string%s length=\"%d\">%s</string>%s", + indent, opt, length(value), value, separator); + + elseif ischar(value) + ## String array type + + fprintf (fd, "%s<array%s rows=\"%d\">\n", indent, opt, rows(value)); + _indent = indent; indent = [indent, " "]; + for k=1:rows(value), + nb += xmlwrite (fd, deblank(value(k, :))); + endfor + indent = _indent; + fprintf (fd, "%s</array>\n", indent); + + elseif isscalar(value) + ## Scalar type + + if iscomplex(value) + ## Complex type + + fprintf (fd, "%s<complex%s>", indent, opt); + _indent = indent; indent = ""; _separator = separator; separator = ""; + nb += xmlwrite (fd, real(value)); + nb += xmlwrite (fd, imag(value)); + indent = _indent; separator = _separator; + fprintf (fd, "</complex>%s", separator); + + elseif isbool(value) + ## Boolean type + + if value + fprintf (fd, "%s<scalar%s value=\"true\"/>%s", indent, opt, separator); + else + fprintf (fd, "%s<scalar%s value=\"false\"/>%s", indent, opt, separator); + endif + + elseif isinf(value) + ## Infinite type + + if value > 0 + fprintf (fd, "%s<scalar%s value=\"inf\"/>%s", + indent, opt, separator); + else + fprintf (fd, "%s<scalar%s value=\"neginf\"/>%s", + indent, opt, separator); + endif + + elseif isnan(value) + ## Not-A-Number type + + fprintf (fd, "%s<scalar%s value=\"nan\"/>%s", indent, opt, separator); + + elseif isna(value) + ## Not-Avaliable + + fprintf (fd, "%s<scalar%s value=\"na\"/>%s", indent, opt, separator); + + else + sc = sprintf(sprintf("%%.%dg", save_precision), value); + fprintf (fd, "%s<scalar%s>%s</scalar>%s", indent, opt, sc, ... + separator); + endif + + elseif ismatrix(value) && isnumeric(value) && (length(size(value)) <= 2) + ## Matrix type + + fprintf (fd, "%s<matrix%s rows=\"%d\" columns=\"%d\">\n", + indent, opt, rows(value), columns(value)); + _indent = indent; indent = ""; separator = ""; + for k=1:rows(value), + fprintf (fd, "%s ", _indent); + for l=1:columns(value)-1, + nb += xmlwrite (fd, value(k, l)); + fprintf (fd, " "); + endfor + nb += xmlwrite (fd, value(k, end)); + fprintf (fd, "\n"); + endfor + indent = _indent; separator = "\n"; + fprintf (fd, "%s</matrix>\n", indent); + + elseif isstruct(value) + ## Structure type + + st = fieldnames(value); + fprintf (fd, "%s<structure%s>\n", indent, opt); + _indent = indent; indent = [indent, " "]; + for k=1:length(st), + eval(sprintf("nb += xmlwrite (fd, value.%s, \"%s\");", st{k}, st{k})); + endfor + indent = _indent; + fprintf (fd, "%s</structure>\n", indent); + + elseif iscell(value) + ## Cell type + + fprintf (fd, "%s<cell%s rows=\"%d\" columns=\"%d\">\n", + indent, opt, rows(value), columns(value)); + _indent = indent; indent = [indent, " "]; + for k=1:rows(value), + for l=1:columns(value), + nb += xmlwrite (fd, value{k, l}); + endfor + endfor + indent = _indent; + fprintf (fd, "%s</cell>\n", indent); + + elseif islist(value) + ## List type + + fprintf (fd, "%s<list%s length=\"%d\">\n", indent, opt, length(value)); + _indent = indent; indent = [indent, " "]; + for k=1:length(value), + nb += xmlwrite (fd, value{k}); + endfor + indent = _indent; + fprintf (fd, "%s</list>\n", indent); + + else + ## Unknown type + error("unknown type\n"); + endif + nb++; + + if !isopen + fprintf (fd, "</octave>\n"); + fclose(fd); + endif + +endfunction Modified: trunk/octave-forge/main/miscellaneous/NEWS =================================================================== --- trunk/octave-forge/main/miscellaneous/NEWS 2012-03-13 02:08:43 UTC (rev 9843) +++ trunk/octave-forge/main/miscellaneous/NEWS 2012-03-13 02:41:21 UTC (rev 9844) @@ -20,7 +20,7 @@ ** The following functions have been moved to the IO package: cell2csv csvconcat - csv2cell csvexplode + csv2cell csvexplode xmlwrite ** The function `clip' was imported from the audio package. Deleted: trunk/octave-forge/main/miscellaneous/inst/xmlwrite.m =================================================================== --- trunk/octave-forge/main/miscellaneous/inst/xmlwrite.m 2012-03-13 02:08:43 UTC (rev 9843) +++ trunk/octave-forge/main/miscellaneous/inst/xmlwrite.m 2012-03-13 02:41:21 UTC (rev 9844) @@ -1,201 +0,0 @@ -## Copyright (C) 2004 Laurent Mazet <ma...@cr...> -## -## This program is free software; you can redistribute it and/or modify it under -## the terms of the GNU General Public License as published by the Free Software -## Foundation; either version 3 of the License, or (at your option) any later -## version. -## -## This program is distributed in the hope that it will be useful, but WITHOUT -## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more -## details. -## -## You should have received a copy of the GNU General Public License along with -## this program; if not, see <http://www.gnu.org/licenses/>. - -## -*- texinfo -*- -## @deftypefn {Function File} {@var{nb} =} xmlwrite (@var{filename}, @var{value}) -## @deftypefnx {Function File} {@var{nb} =} xmlwrite (@var{fd}, @var{value}, [@var{name}]) -## -## Write a @var{value} into @var{filename} (@var{fd}) as a XML file. -## -##The number of elements (@var{nb}) or 0 is returned. -## @end deftypefn - -function nb = xmlwrite (filename, value, name) - persistent indent = ""; - persistent separator = "\n"; - - ## Check argument number - nb = 0; - if (nargin < 2) || (nargin > 3) - print_usage; - endif - - ## Get the file identificator - isopen = false; - if ischar(filename) - - ## Check file name - sn = char (strsplit (filename, ".")); - if !strcmp(tolower(deblank(sn(end,:))), "xml") - filename = [filename, ".xml"]; - endif - - ## Open file - fd = fopen (filename, "w"); - if fd <= 0 - error("error opening file \"%s\"\n", filename); - endif - - ## XML header - fprintf (fd, "<?xml version=\"1.0\"?>\n"); - fprintf (fd, "<!DOCTYPE octave SYSTEM \"octave.dtd\">\n"); - fprintf (fd, "<octave>\n"); - indent = " "; - else - isopen = true; - fd = filename; - endif - - ## Store name in optional argument - opt = ""; - if nargin == 3 - opt = sprintf(" name=\"%s\"", name); - endif - - ## Process by type - - if ischar(value) && (rows(value) <= 1) - ## String type - - fprintf (fd, "%s<string%s length=\"%d\">%s</string>%s", - indent, opt, length(value), value, separator); - - elseif ischar(value) - ## String array type - - fprintf (fd, "%s<array%s rows=\"%d\">\n", indent, opt, rows(value)); - _indent = indent; indent = [indent, " "]; - for k=1:rows(value), - nb += xmlwrite (fd, deblank(value(k, :))); - endfor - indent = _indent; - fprintf (fd, "%s</array>\n", indent); - - elseif isscalar(value) - ## Scalar type - - if iscomplex(value) - ## Complex type - - fprintf (fd, "%s<complex%s>", indent, opt); - _indent = indent; indent = ""; _separator = separator; separator = ""; - nb += xmlwrite (fd, real(value)); - nb += xmlwrite (fd, imag(value)); - indent = _indent; separator = _separator; - fprintf (fd, "</complex>%s", separator); - - elseif isbool(value) - ## Boolean type - - if value - fprintf (fd, "%s<scalar%s value=\"true\"/>%s", indent, opt, separator); - else - fprintf (fd, "%s<scalar%s value=\"false\"/>%s", indent, opt, separator); - endif - - elseif isinf(value) - ## Infinite type - - if value > 0 - fprintf (fd, "%s<scalar%s value=\"inf\"/>%s", - indent, opt, separator); - else - fprintf (fd, "%s<scalar%s value=\"neginf\"/>%s", - indent, opt, separator); - endif - - elseif isnan(value) - ## Not-A-Number type - - fprintf (fd, "%s<scalar%s value=\"nan\"/>%s", indent, opt, separator); - - elseif isna(value) - ## Not-Avaliable - - fprintf (fd, "%s<scalar%s value=\"na\"/>%s", indent, opt, separator); - - else - sc = sprintf(sprintf("%%.%dg", save_precision), value); - fprintf (fd, "%s<scalar%s>%s</scalar>%s", indent, opt, sc, ... - separator); - endif - - elseif ismatrix(value) && isnumeric(value) && (length(size(value)) <= 2) - ## Matrix type - - fprintf (fd, "%s<matrix%s rows=\"%d\" columns=\"%d\">\n", - indent, opt, rows(value), columns(value)); - _indent = indent; indent = ""; separator = ""; - for k=1:rows(value), - fprintf (fd, "%s ", _indent); - for l=1:columns(value)-1, - nb += xmlwrite (fd, value(k, l)); - fprintf (fd, " "); - endfor - nb += xmlwrite (fd, value(k, end)); - fprintf (fd, "\n"); - endfor - indent = _indent; separator = "\n"; - fprintf (fd, "%s</matrix>\n", indent); - - elseif isstruct(value) - ## Structure type - - st = fieldnames(value); - fprintf (fd, "%s<structure%s>\n", indent, opt); - _indent = indent; indent = [indent, " "]; - for k=1:length(st), - eval(sprintf("nb += xmlwrite (fd, value.%s, \"%s\");", st{k}, st{k})); - endfor - indent = _indent; - fprintf (fd, "%s</structure>\n", indent); - - elseif iscell(value) - ## Cell type - - fprintf (fd, "%s<cell%s rows=\"%d\" columns=\"%d\">\n", - indent, opt, rows(value), columns(value)); - _indent = indent; indent = [indent, " "]; - for k=1:rows(value), - for l=1:columns(value), - nb += xmlwrite (fd, value{k, l}); - endfor - endfor - indent = _indent; - fprintf (fd, "%s</cell>\n", indent); - - elseif islist(value) - ## List type - - fprintf (fd, "%s<list%s length=\"%d\">\n", indent, opt, length(value)); - _indent = indent; indent = [indent, " "]; - for k=1:length(value), - nb += xmlwrite (fd, value{k}); - endfor - indent = _indent; - fprintf (fd, "%s</list>\n", indent); - - else - ## Unknown type - error("unknown type\n"); - endif - nb++; - - if !isopen - fprintf (fd, "</octave>\n"); - fclose(fd); - endif - -endfunction This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2012-03-13 02:51:52
|
Revision: 9845 http://octave.svn.sourceforge.net/octave/?rev=9845&view=rev Author: carandraug Date: 2012-03-13 02:51:42 +0000 (Tue, 13 Mar 2012) Log Message: ----------- xmlread: moving from miscellaneous to IO package. Updating Makefiles Modified Paths: -------------- trunk/octave-forge/main/io/src/Makefile trunk/octave-forge/main/miscellaneous/src/Makefile Added Paths: ----------- trunk/octave-forge/main/io/src/octave.dtd trunk/octave-forge/main/io/src/xmlread.cc trunk/octave-forge/main/io/src/xmltree.c trunk/octave-forge/main/io/src/xmltree.h trunk/octave-forge/main/io/src/xmltree_read.act trunk/octave-forge/main/io/src/xmltree_read.c trunk/octave-forge/main/io/src/xmltree_read.h trunk/octave-forge/main/io/src/xmltree_read.l Removed Paths: ------------- trunk/octave-forge/main/miscellaneous/src/octave.dtd trunk/octave-forge/main/miscellaneous/src/xmlread.cc trunk/octave-forge/main/miscellaneous/src/xmltree.c trunk/octave-forge/main/miscellaneous/src/xmltree.h trunk/octave-forge/main/miscellaneous/src/xmltree_read.act trunk/octave-forge/main/miscellaneous/src/xmltree_read.c trunk/octave-forge/main/miscellaneous/src/xmltree_read.h trunk/octave-forge/main/miscellaneous/src/xmltree_read.l Modified: trunk/octave-forge/main/io/src/Makefile =================================================================== --- trunk/octave-forge/main/io/src/Makefile 2012-03-13 02:41:21 UTC (rev 9844) +++ trunk/octave-forge/main/io/src/Makefile 2012-03-13 02:51:42 UTC (rev 9845) @@ -1,5 +1,29 @@ -all: csvexplode.oct csv2cell.oct csvconcat.oct cell2csv.oct +all: csvexplode.oct csv2cell.oct csvconcat.oct cell2csv.oct xmlread.oct +ifdef FLEXML +# flexml is a dead project. It requires flex 2.5.4a-6 (flex-old on Debian). +# Further, we have modified the resulting xmltree_read.c by hand, changing +# all occurrences of yy to xml_ and YY to XML_. Some other changes have be +# mode so the ouput of flexml won't be as correct as the actual committed C +# file +xmltree_read.l: xmltree_read.act octave.dtd + $(FLEXML) -A -a $^ +xmltree_read.c: xmltree_read.l + $(FLEX) -B -Pxml_ -o$@ $< +endif + +xmltree.o: xmltree.c xmltree.h + mkoctfile -Wall -c $< + +xmltree_read.o: xmltree_read.c xmltree_read.h + mkoctfile -Wall -c $< + +xmlread.o: xmlread.cc xmltree_read.h xmltree.h + mkoctfile -Wall -c $< + +xmlread.oct: xmlread.o xmltree_read.o xmltree.o + mkoctfile -Wall $^ + %.oct: %.cc mkoctfile -Wall $< Copied: trunk/octave-forge/main/io/src/octave.dtd (from rev 9841, trunk/octave-forge/main/miscellaneous/src/octave.dtd) =================================================================== --- trunk/octave-forge/main/io/src/octave.dtd (rev 0) +++ trunk/octave-forge/main/io/src/octave.dtd 2012-03-13 02:51:42 UTC (rev 9845) @@ -0,0 +1,39 @@ +<!ELEMENT octave (scalar | complex | string | array | structure | list | cell)> + +<!ELEMENT scalar (#PCDATA)> +<!ATTLIST scalar + value (undefined | true | false | inf | neginf | na | nan) "undefined" + name CDATA #IMPLIED> + +<!ELEMENT complex (scalar, scalar)> +<!ATTLIST complex name CDATA #IMPLIED> + +<!ELEMENT string (#PCDATA)> +<!ATTLIST string + length CDATA #REQUIRED + name CDATA #IMPLIED> + +<!ELEMENT array (string, string+)> +<!ATTLIST array + rows CDATA #REQUIRED + name CDATA #IMPLIED> + +<!ELEMENT matrix (scalar | complex)*> +<!ATTLIST matrix + rows CDATA #REQUIRED + columns CDATA #REQUIRED + name CDATA #IMPLIED> + +<!ELEMENT structure ANY> +<!ATTLIST structure name CDATA #IMPLIED> + +<!ELEMENT list ANY> +<!ATTLIST list + length CDATA #REQUIRED + name CDATA #IMPLIED> + +<!ELEMENT cell ANY> +<!ATTLIST cell + rows CDATA #REQUIRED + columns CDATA #REQUIRED + name CDATA #IMPLIED> Copied: trunk/octave-forge/main/io/src/xmlread.cc (from rev 9841, trunk/octave-forge/main/miscellaneous/src/xmlread.cc) =================================================================== --- trunk/octave-forge/main/io/src/xmlread.cc (rev 0) +++ trunk/octave-forge/main/io/src/xmlread.cc 2012-03-13 02:51:42 UTC (rev 9845) @@ -0,0 +1,152 @@ +// Copyright (C) 2004 Laurent Mazet <ma...@cr...> +// +// This program is free software; you can redistribute it and/or modify it under +// the terms of the GNU General Public License as published by the Free Software +// Foundation; either version 3 of the License, or (at your option) any later +// version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +// details. +// +// You should have received a copy of the GNU General Public License along with +// this program; if not, see <http://www.gnu.org/licenses/>. + +#include <octave/oct.h> +#include <octave/lo-ieee.h> +#include <octave/oct-map.h> +#include <octave/Cell.h> + +extern "C" { +#include "xmltree.h" +#include "xmltree_read.h" +} + +octave_value get_element (element *root) { + int length, rows, columns; + + string_vector tmp_array; + ComplexMatrix tmp_matrix; + Octave_map tmp_structure; + Cell tmp_cell; + octave_value_list tmp_list; + + octave_value retval; + + if (!root) + return retval; + + switch (root->def_value) { + case value_scalar: + switch (root->const_value) { + case const_true: retval = octave_value(true); break; + case const_false: retval = octave_value(false); break; + case const_inf: retval = octave_value(octave_Inf); break; + case const_neginf: retval = octave_value(-octave_Inf); break; + case const_nan: retval = octave_value(octave_NaN); break; + case const_na: retval = octave_value(octave_NA); break; + case const_undef: retval = octave_value(root->scalar_value); break; + } + break; + + case value_complex: + retval = + octave_value(Complex(get_element(root->child).double_value(), + get_element(root->child->next).double_value())); + break; + + case value_string: + retval = octave_value(root->string_value); + break; + + case value_array: + rows = root->rows; + root = root->child; + tmp_array = string_vector(rows); + for (int k=0; (k<rows) && (root); k++, root = root->next) + tmp_array(k) = get_element(root).string_value(); + retval = octave_value(tmp_array); + break; + + case value_matrix: + rows = root->rows; + columns = root->columns; + root = root->child; + tmp_matrix = ComplexMatrix(rows, columns); + for (int k=0; (k<rows) && (root); k++) + for (int l=0; (l<columns) && (root); l++, root = root->next) + tmp_matrix(k, l) = get_element(root).complex_value(); + if (tmp_matrix.all_elements_are_real()) + retval = octave_value(real(tmp_matrix)); + else + retval = octave_value(tmp_matrix); + break; + + case value_structure: + root = root->child; + for (int k=0; root; root = root->next) + if (root->name) + tmp_structure.assign(root->name, get_element(root)); + else { + char *name = new char[7]; + sprintf (name, "__%04d", k++); + warning ("no field name in structure."); + tmp_structure.assign(name, get_element(root)); + delete[] name; + } + retval = octave_value(tmp_structure); + break; + + case value_list: + length = root->length; + root = root->child; + //tmp_list = octave_value_list(length); + for (int k=0; (k<length) && (root); k++, root = root->next) + tmp_list(k) = get_element(root); + retval = octave_value(tmp_list); + break; + + case value_cell: + rows = root->rows; + columns = root->columns; + root = root->child; + tmp_cell = Cell(rows, columns); + for (int k=0; (k<rows) && (root); k++) + for (int l=0; (l<columns) && (root); l++, root = root->next) + tmp_cell(k, l) = get_element(root); + retval = octave_value(tmp_cell); + break; + + default: + warning ("unknown type.\n"); + } + + return retval; +} + +DEFUN_DLD (xmlread, args, nargout, + "-*- texinfo -*-\n" + "@deftypefn {Function File} {@var{value}} xmlread(@var{filename})\n" + "\n" + "Read a @var{value} from @var{filename} as an XML file\n" + "@end deftypefn") { + + /* Check argument */ + if (args.length() != 1) { + print_usage (); + return octave_value_list(); + } + + /* Read file */ + std::string filename = args(0).string_value(); + element *root = read_xmltree(filename.c_str()); + if (!root) + return octave_value_list(); + + /* step down into the element tree */ + octave_value retval = get_element (root->child); + free_element (root); + + return retval; +} Copied: trunk/octave-forge/main/io/src/xmltree.c (from rev 9841, trunk/octave-forge/main/miscellaneous/src/xmltree.c) =================================================================== --- trunk/octave-forge/main/io/src/xmltree.c (rev 0) +++ trunk/octave-forge/main/io/src/xmltree.c 2012-03-13 02:51:42 UTC (rev 9845) @@ -0,0 +1,173 @@ +// Copyright (C) 2004 Laurent Mazet <ma...@cr...> +// +// This program is free software; you can redistribute it and/or modify it under +// the terms of the GNU General Public License as published by the Free Software +// Foundation; either version 3 of the License, or (at your option) any later +// version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +// details. +// +// You should have received a copy of the GNU General Public License along with +// this program; if not, see <http://www.gnu.org/licenses/>. + +#include <stdio.h> +#include <stdlib.h> + +#include "xmltree.h" + +element *new_element () { + + element *new; + new = (element *) malloc (sizeof(element)); + if (!new) + perror("xml: no enough memory for new_element()\n"); + + new->next = new->child = NULL; + + new->def_value = value_undef; + new->const_value = const_undef; + new->scalar_value = 0; + new->string_value = NULL; + + new->name = NULL; + new->length = new->rows = new->columns = new->nb_elements = 0; + + return new; +} + +element *new_next (element *pred) { + + element *new = new_element(); + + if (pred) + pred->next = new; + + return new; +} + +element *new_child (element *father) { + + element *new = new_element(); + + if (father) + father->child = new; + + return new; +} + +void free_element (element *root) { + + if (!root) + return; + + if (root->next) + free_element (root->next); + if (root->child) + free_element (root->child); + + if (root->string_value) + free (root->string_value); + if (root->name) + free (root->name); + + free (root); +} + +void print_level(int l) { + int i; + for (i=0; i<l; i++) + printf (" "); +} + +void print_element (element *root, int l) { + + if (!root) + return; + + if (root->name) { + print_level(l); + printf ("name: %s\n", root->name); + } + + print_level(l); + switch (root->def_value) { + case value_scalar: + printf ("scalar: "); + switch (root->const_value) { + case const_true: printf ("true\n"); break; + case const_false: printf ("false\n"); break; + case const_inf: printf ("inf\n"); break; + case const_neginf: printf ("neginf\n"); break; + case const_nan: printf ("nan\n"); break; + case const_na: printf ("na\n"); break; + case const_undef: printf ("%f\n", root->scalar_value); break; + } + break; + case value_data: + printf ("data:\n"); + break; + case value_complex: + printf ("complex:\n"); + break; + case value_string: + printf ("string (%d): %s\n", root->length, root->string_value); + break; + case value_array: + printf ("array (%d):\n", root->rows); + break; + case value_matrix: + printf ("matrix (%d, %d):\n", root->rows, root->columns); + break; + case value_structure: + printf ("structure:\n"); + break; + case value_list: + printf ("list (%d):\n", root->length); + break; + case value_cell: + printf ("cell (%d, %d):\n", root->rows, root->columns); + break; + default: + printf ("???:\n"); + } + + if (root->child) { + print_level(l); + printf ("child:\n"); + print_element (root->child, l+1); + } + + if (root->next) { + print_level(l); + printf ("next:\n"); + print_element (root->next, l); + } +} + +list *new_list(list *father) { + + list *new; + new = (list *) malloc (sizeof(list)); + if (!new) + perror("xml: no enough memory for new_list()\n"); + + new->prev = father; + + new->root = NULL; + + return new; +} + +list *pop_list(list *child) { + list *father; + + father = child->prev; + free (child); + + return father; +} + + Copied: trunk/octave-forge/main/io/src/xmltree.h (from rev 9841, trunk/octave-forge/main/miscellaneous/src/xmltree.h) =================================================================== --- trunk/octave-forge/main/io/src/xmltree.h (rev 0) +++ trunk/octave-forge/main/io/src/xmltree.h 2012-03-13 02:51:42 UTC (rev 9845) @@ -0,0 +1,80 @@ +// Copyright (C) 2004 Laurent Mazet <ma...@cr...> +// +// This program is free software; you can redistribute it and/or modify it under +// the terms of the GNU General Public License as published by the Free Software +// Foundation; either version 3 of the License, or (at your option) any later +// version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +// details. +// +// You should have received a copy of the GNU General Public License along with +// this program; if not, see <http://www.gnu.org/licenses/>. + +/* + xmltree structure + */ + +#if !defined(__XMLTREE_H__) +#define __XMLTREE_H__ + +typedef enum { + value_undef = 0, + value_scalar, + value_complex, + value_string, + value_array, + value_matrix, + value_structure, + value_list, + value_cell, + value_data } t_value; + +typedef enum { + const_undef = 0, + const_true, + const_false, + const_inf, + const_neginf, + const_na, + const_nan } t_const; + +typedef struct _element { + struct _element *next; + struct _element *child; + + /* values */ + t_value def_value; + t_const const_value; + double scalar_value; + char *string_value; + + /* parameters */ + char *name; + int length; + int rows; + int columns; + + /* check */ + int nb_elements; + +} element; + +typedef struct _list { + struct _list *prev; + + element **root; +} list; + +element *new_element (); +element *new_next (element *pred); +element *new_child (element *father); +void free_element (element *root); +void print_element (element *root, int l); + +list *new_list(list *father); +list *pop_list(list *child); + +#endif /* __XMLTREE_H__ */ Copied: trunk/octave-forge/main/io/src/xmltree_read.act (from rev 9841, trunk/octave-forge/main/miscellaneous/src/xmltree_read.act) =================================================================== --- trunk/octave-forge/main/io/src/xmltree_read.act (rev 0) +++ trunk/octave-forge/main/io/src/xmltree_read.act 2012-03-13 02:51:42 UTC (rev 9845) @@ -0,0 +1,345 @@ +<!-- -*- XML -*- --> +<!-- + Copyright (C) 2004 Laurent Mazet <ma...@cr...> + + This program is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free Software + Foundation; either version 3 of the License, or (at your option) any later + version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + details. + + You should have received a copy of the GNU General Public License along with + this program; if not, see <http://www.gnu.org/licenses/>. + --> + +<!DOCTYPE actions SYSTEM "flexml-act.dtd"> + +<actions> + +<!-- Top --> + +<top><![CDATA[ +#ifndef _MSC_VER +#include <stdlib.h> +#endif +#include "xmltree.h" + +#define warning perror + +element **current; +element *root; +list *lastlist; +]]></top> + +<!-- Data --> + +<start tag='octave'><![CDATA[ +root = new_element(); +root->def_value = value_data; +current = &(root->child); + +lastlist = new_list(lastlist); +lastlist->root = current; +]]></start> + +<end tag='octave'><![CDATA[ +current = lastlist->root; +lastlist = pop_list(lastlist); +current = &((*current)->next); +]]></end> + +<!-- Scalar --> + +<start tag='scalar'><![CDATA[ +*current = new_element(); + +if ({name}) { + (*current)->name = (char *) malloc(strlen({name})+1); + strcpy ((*current)->name, {name}); +} + +(*current)->def_value = value_scalar; +switch ({value}) { + case {value=true}: (*current)->const_value = const_true; break; + case {value=false}: (*current)->const_value = const_false; break; + case {value=inf}: (*current)->const_value = const_inf; break; + case {value=neginf}: (*current)->const_value = const_neginf; break; + case {value=nan}: (*current)->const_value = const_nan; break; + case {value=na}: (*current)->const_value = const_na; break; + default: (*current)->const_value = const_undef; +} +]]></start> + +<end tag='scalar'><![CDATA[ +if (((*current)->const_value == const_undef) && ({#PCDATA})) + (*current)->scalar_value = strtod ({#PCDATA}, NULL); + +(*(lastlist->root))->nb_elements++; + +current = &((*current)->next); +]]></end> + +<!-- String --> + +<start tag='string'><![CDATA[ +*current = new_element(); + +if ({name}) { + (*current)->name = (char *) malloc(strlen({name})+1); + strcpy ((*current)->name, {name}); +} + +if ({length}) + (*current)->length = strtol ({length}, NULL, 10); + +(*current)->def_value = value_string; +]]></start> + +<end tag='string'><![CDATA[ +if ({#PCDATA}) { + + int len = strlen({#PCDATA}); + /* check length parameter */ + if ((*current)->length != len) { + warning("incorrect length parameter for string\n"); + (*current)->length = len; + } + + (*current)->string_value = (char *) malloc ((len+1) * sizeof(char)); + strcpy((*current)->string_value, {#PCDATA}); +} + +(*(lastlist->root))->nb_elements++; + +current = &((*current)->next); +]]></end> + +<!-- Complex --> + +<start tag='complex'><![CDATA[ +*current = new_element(); + +if ({name}) { + (*current)->name = (char *) malloc(strlen({name})+1); + strcpy ((*current)->name, {name}); +} + +(*current)->def_value = value_complex; + +lastlist = new_list(lastlist); +lastlist->root = current; +current = &((*current)->child); +]]></start> + +<end tag='complex'><![CDATA[ +current = lastlist->root; +lastlist = pop_list(lastlist); + +(*(lastlist->root))->nb_elements++; + +current = &((*current)->next); +]]></end> + +<!-- Array --> + +<start tag='array'><![CDATA[ +*current = new_element(); + +if ({name}) { + (*current)->name = (char *) malloc(strlen({name})+1); + strcpy ((*current)->name, {name}); +} + +if ({rows}) + (*current)->rows = strtol ({rows}, NULL, 10); + +(*current)->def_value = value_array; + +lastlist = new_list(lastlist); +lastlist->root = current; +current = &((*current)->child); +]]></start> + +<end tag='array'><![CDATA[ +/* check rows parameter */ +if ((*(lastlist->root))->rows != (*(lastlist->root))->nb_elements) { + warning("incorrect length parameter for array\n"); + (*(lastlist->root))->rows = (*(lastlist->root))->nb_elements; +} + +current = lastlist->root; +lastlist = pop_list(lastlist); + +(*(lastlist->root))->nb_elements++; + +current = &((*current)->next); +]]></end> + +<!-- Matrix --> + +<start tag='matrix'><![CDATA[ +*current = new_element(); + +if ({name}) { + (*current)->name = (char *) malloc(strlen({name})+1); + strcpy ((*current)->name, {name}); +} + +if ({rows}) + (*current)->rows = strtol ({rows}, NULL, 10); + +if ({columns}) + (*current)->columns = strtol ({columns}, NULL, 10); + +(*current)->def_value = value_matrix; + +lastlist = new_list(lastlist); +lastlist->root = current; +current = &((*current)->child); +]]></start> + +<end tag='matrix'><![CDATA[ +/* check (rows, columns) parameters */ +if ((*(lastlist->root))->rows * (*(lastlist->root))->columns != + (*(lastlist->root))->nb_elements) { + warning("incorrect (rows, columns) parameters for matrix: reshaping matrix into vector\n"); + (*(lastlist->root))->rows = 1; + (*(lastlist->root))->columns = (*(lastlist->root))->nb_elements; +} + +current = lastlist->root; +lastlist = pop_list(lastlist); + +(*(lastlist->root))->nb_elements++; + +current = &((*current)->next); +]]></end> + +<!-- Structure --> + +<start tag='structure'><![CDATA[ +*current = new_element(); + +if ({name}) { + (*current)->name = (char *) malloc(strlen({name})+1); + strcpy ((*current)->name, {name}); +} + +(*current)->def_value = value_structure; + +lastlist = new_list(lastlist); +lastlist->root = current; +current = &((*current)->child); +]]></start> + +<end tag='structure'><![CDATA[ +/* no check possible (sic) */ + +current = lastlist->root; +lastlist = pop_list(lastlist); + +(*(lastlist->root))->nb_elements++; + +current = &((*current)->next); +]]></end> + +<!-- List --> + +<start tag='list'><![CDATA[ +*current = new_element(); + +if ({name}) { + (*current)->name = (char *) malloc(strlen({name})+1); + strcpy ((*current)->name, {name}); +} + +if ({length}) + (*current)->length = strtol ({length}, NULL, 10); + +(*current)->def_value = value_list; + +lastlist = new_list(lastlist); +lastlist->root = current; +current = &((*current)->child); +]]></start> + +<end tag='list'><![CDATA[ +/* check length parameter */ +if ((*(lastlist->root))->length != (*(lastlist->root))->nb_elements) { + warning("incorrect length parameter for list\n"); + (*(lastlist->root))->length = (*(lastlist->root))->nb_elements; +} + +current = lastlist->root; +lastlist = pop_list(lastlist); + +(*(lastlist->root))->nb_elements++; + +current = &((*current)->next); +]]></end> + +<!-- Cell --> + +<start tag='cell'><![CDATA[ +*current = new_element(); + +if ({name}) { + (*current)->name = (char *) malloc(strlen({name})+1); + strcpy ((*current)->name, {name}); +} + +if ({rows}) + (*current)->rows = strtol ({rows}, NULL, 10); + +if ({columns}) + (*current)->columns = strtol ({columns}, NULL, 10); + +(*current)->def_value = value_cell; + +lastlist = new_list(lastlist); +lastlist->root = current; +current = &((*current)->child); +]]></start> + +<end tag='cell'><![CDATA[ +/* check (rows, columns) parameters */ +if ((*(lastlist->root))->rows * (*(lastlist->root))->columns != + (*(lastlist->root))->nb_elements) { + warning("incorrect (rows, columns) parameters for cell: reshaping cell into list\n"); + (*(lastlist->root))->def_value = value_list; + (*(lastlist->root))->length = (*(lastlist->root))->nb_elements; +} + +current = lastlist->root; +lastlist = pop_list(lastlist); + +(*(lastlist->root))->nb_elements++; + +current = &((*current)->next); +]]></end> + +<!-- Main --> + +<main> +element *read_xmltree (const char *file) { + + current = NULL; + root = NULL; + lastlist = NULL; + + xml_in = fopen(file, "r"); + if (!xml_in) + perror("can't open file\n"); + + xml_lex(); + fclose(xml_in); + + return root; +} +</main> + +</actions> Copied: trunk/octave-forge/main/io/src/xmltree_read.c (from rev 9841, trunk/octave-forge/main/miscellaneous/src/xmltree_read.c) =================================================================== --- trunk/octave-forge/main/io/src/xmltree_read.c (rev 0) +++ trunk/octave-forge/main/io/src/xmltree_read.c 2012-03-13 02:51:42 UTC (rev 9845) @@ -0,0 +1,4438 @@ +/* A lexical scanner generated by flex */ + +/* Scanner skeleton version: + * $Header$ + */ + +#define FLEX_SCANNER +#define XML__FLEX_MAJOR_VERSION 2 +#define XML__FLEX_MINOR_VERSION 5 + +#include <stdio.h> +#include <errno.h> + +/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ +#ifdef c_plusplus +#ifndef __cplusplus +#define __cplusplus +#endif +#endif + + +#ifdef __cplusplus + +#include <stdlib.h> +#ifndef _WIN32 +#include <unistd.h> +#endif + +/* Use prototypes in function declarations. */ +#define XML__USE_PROTOS + +/* The "const" storage-class-modifier is valid. */ +#define XML__USE_CONST + +#else /* ! __cplusplus */ + +#if __STDC__ + +#define XML__USE_PROTOS +#define XML__USE_CONST + +#endif /* __STDC__ */ +#endif /* ! __cplusplus */ + +#ifdef __TURBOC__ + #pragma warn -rch + #pragma warn -use +#include <io.h> +#include <stdlib.h> +#define XML__USE_CONST +#define XML__USE_PROTOS +#endif + +#ifdef XML__USE_CONST +#define xml_const const +#else +#define xml_const +#endif + + +#ifdef XML__USE_PROTOS +#define XML__PROTO(proto) proto +#else +#define XML__PROTO(proto) () +#endif + + +/* Returned upon end-of-file. */ +#define XML__NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define XML__SC_TO_UI(c) ((unsigned int) (unsigned char) c) + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN xml__start = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The XML_STATE alias is for lex + * compatibility. + */ +#define XML__START ((xml__start - 1) / 2) +#define XML_STATE XML__START + +/* Action number for EOF rule of a given start state. */ +#define XML__STATE_EOF(state) (XML__END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define XML__NEW_FILE xml_restart( xml_in ) + +#define XML__END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#define XML__BUF_SIZE 16384 + +typedef struct xml__buffer_state *XML__BUFFER_STATE; + +extern int xml_leng; +extern FILE *xml_in, *xml_out; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + +/* The funky do-while in the following #define is used to turn the definition + * int a single C statement (which needs a semi-colon terminator). This + * avoids problems with code like: + * + * if ( condition_holds ) + * xml_less( 5 ); + * else + * do_something_else(); + * + * Prior to using the do-while the compiler would get upset at the + * "else" because it interpreted the "if" statement as being all + * done when it reached the ';' after the xml_less() call. + */ + +/* Return all but the first 'n' matched characters back to the input stream. */ + +#define xml_less(n) \ + do \ + { \ + /* Undo effects of setting up xml_text. */ \ + *xml__cp = xml__hold_char; \ + XML__RESTORE_XML__MORE_OFFSET \ + xml__c_buf_p = xml__cp = xml__bp + n - XML__MORE_ADJ; \ + XML__DO_BEFORE_ACTION; /* set up xml_text again */ \ + } \ + while ( 0 ) + +#define unput(c) xml_unput( c, xml_text_ptr ) + +/* The following is because we cannot portably get our hands on size_t + * (without autoconf's help, which isn't available because we want + * flex-generated scanners to compile on their own). + */ +typedef unsigned int xml__size_t; + + +struct xml__buffer_state + { + FILE *xml__input_file; + + char *xml__ch_buf; /* input buffer */ + char *xml__buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + xml__size_t xml__buf_size; + + /* Number of characters read into xml__ch_buf, not including EOB + * characters. + */ + int xml__n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int xml__is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int xml__is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int xml__at_bol; + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int xml__fill_buffer; + + int xml__buffer_status; +#define XML__BUFFER_NEW 0 +#define XML__BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as XML__EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via xml_restart()), so that the user can continue scanning by + * just pointing xml_in at a new input file. + */ +#define XML__BUFFER_EOF_PENDING 2 + }; + +static XML__BUFFER_STATE xml__current_buffer = 0; + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + */ +#define XML__CURRENT_BUFFER xml__current_buffer + + +/* xml__hold_char holds the character lost when xml_text is formed. */ +static char xml__hold_char; + +static int xml__n_chars; /* number of characters read into xml__ch_buf */ + + +int xml_leng; + +/* Points to current character in buffer. */ +static char *xml__c_buf_p = (char *) 0; +static int xml__init = 1; /* whether we need to initialize */ +static int xml__start = 0; /* start state number */ + +/* Flag which is used to allow xml_wrap()'s to do buffer switches + * instead of setting up a fresh xml_in. A bit of a hack ... + */ +static int xml__did_buffer_switch_on_eof; + +void xml_restart XML__PROTO(( FILE *input_file )); + +void xml__switch_to_buffer XML__PROTO(( XML__BUFFER_STATE new_buffer )); +void xml__load_buffer_state XML__PROTO(( void )); +XML__BUFFER_STATE xml__create_buffer XML__PROTO(( FILE *file, int size )); +void xml__delete_buffer XML__PROTO(( XML__BUFFER_STATE b )); +void xml__init_buffer XML__PROTO(( XML__BUFFER_STATE b, FILE *file )); +void xml__flush_buffer XML__PROTO(( XML__BUFFER_STATE b )); +#define XML__FLUSH_BUFFER xml__flush_buffer( xml__current_buffer ) + +XML__BUFFER_STATE xml__scan_buffer XML__PROTO(( char *base, xml__size_t size )); +XML__BUFFER_STATE xml__scan_string XML__PROTO(( xml_const char *xml__str )); +XML__BUFFER_STATE xml__scan_bytes XML__PROTO(( xml_const char *bytes, int len )); + +static void *xml__flex_alloc XML__PROTO(( xml__size_t )); +static void *xml__flex_realloc XML__PROTO(( void *, xml__size_t )); +static void xml__flex_free XML__PROTO(( void * )); + +#define xml__new_buffer xml__create_buffer + +#define xml__set_interactive(is_interactive) \ + { \ + if ( ! xml__current_buffer ) \ + xml__current_buffer = xml__create_buffer( xml_in, XML__BUF_SIZE ); \ + xml__current_buffer->xml__is_interactive = is_interactive; \ + } + +#define xml__set_bol(at_bol) \ + { \ + if ( ! xml__current_buffer ) \ + xml__current_buffer = xml__create_buffer( xml_in, XML__BUF_SIZE ); \ + xml__current_buffer->xml__at_bol = at_bol; \ + } + +#define XML__AT_BOL() (xml__current_buffer->xml__at_bol) + + +#define xml_wrap() 1 +#define XML__SKIP_XML_WRAP +typedef unsigned char XML__CHAR; +FILE *xml_in = (FILE *) 0, *xml_out = (FILE *) 0; +typedef int xml__state_type; +extern char *xml_text; +#define xml_text_ptr xml_text + +static xml__state_type xml__get_previous_state XML__PROTO(( void )); +static xml__state_type xml__try_NUL_trans XML__PROTO(( xml__state_type current_state )); +static int xml__get_next_buffer XML__PROTO(( void )); +static void xml__fatal_error XML__PROTO(( xml_const char msg[] )); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up xml_text. + */ +#define XML__DO_BEFORE_ACTION \ + xml_text_ptr = xml__bp; \ + xml_leng = (int) (xml__cp - xml__bp); \ + xml__hold_char = *xml__cp; \ + *xml__cp = '\0'; \ + xml__c_buf_p = xml__cp; + +#define XML__NUM_RULES 157 +#define XML__END_OF_BUFFER 158 +static xml_const short int xml__accept[1064] = + { 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 158, 156, 23, 10, 10, 23, + + 23, 135, 10, 135, 5, 6, 5, 8, 9, 8, + 151, 143, 144, 152, 149, 152, 150, 155, 143, 144, + 155, 157, 157, 27, 10, 27, 27, 27, 25, 157, + 31, 10, 31, 157, 51, 10, 51, 51, 51, 49, + 51, 51, 152, 151, 157, 60, 10, 60, 60, 60, + 58, 60, 64, 10, 64, 157, 72, 10, 72, 72, + 72, 70, 72, 72, 152, 157, 83, 10, 83, 83, + 83, 81, 83, 83, 87, 10, 87, 87, 157, 97, + 10, 97, 97, 97, 95, 97, 97, 97, 101, 10, + 101, 157, 101, 157, 107, 10, 107, 107, 107, 105, + + 107, 152, 157, 118, 10, 118, 118, 118, 116, 118, + 118, 152, 157, 131, 10, 131, 131, 131, 129, 131, + 131, 131, 152, 10, 0, 2, 2, 0, 4, 7, + 146, 145, 0, 0, 0, 0, 0, 154, 0, 26, + 28, 0, 0, 0, 0, 0, 0, 50, 52, 52, + 52, 0, 0, 0, 0, 59, 61, 61, 0, 0, + 71, 73, 73, 73, 0, 82, 84, 84, 84, 0, + 0, 96, 98, 98, 98, 98, 0, 0, 106, 108, + 108, 0, 117, 119, 119, 119, 0, 0, 130, 132, + 132, 132, 132, 0, 0, 0, 0, 0, 3, 0, + + 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 52, 52, 0, 0, + 0, 148, 61, 0, 0, 0, 73, 73, 0, 0, + 84, 84, 0, 0, 0, 98, 98, 98, 0, 0, + 0, 108, 0, 0, 119, 119, 0, 0, 132, 132, + 132, 0, 0, 0, 22, 1, 0, 0, 141, 0, + 0, 0, 138, 137, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 30, 0, 52, 52, 0, 0, + 0, 54, 0, 61, 0, 0, 63, 0, 0, 73, + 73, 0, 0, 75, 0, 84, 84, 0, 0, 86, + + 0, 0, 98, 98, 98, 0, 0, 100, 0, 0, + 108, 0, 0, 110, 0, 119, 119, 0, 0, 121, + 0, 132, 132, 132, 0, 0, 134, 0, 0, 0, + 142, 136, 0, 0, 0, 0, 122, 0, 111, 0, + 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, + 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, + 119, 0, 0, 0, 132, 0, 0, 0, 0, 0, + 0, 0, 0, 12, 0, 139, 140, 0, 76, 122, + 0, 111, 0, 0, 0, 0, 0, 48, 47, 0, + + 0, 0, 0, 0, 57, 56, 0, 73, 0, 69, + 68, 0, 0, 80, 79, 0, 78, 77, 0, 0, + 98, 0, 94, 93, 0, 90, 89, 0, 0, 104, + 103, 0, 119, 0, 115, 114, 0, 132, 0, 128, + 127, 0, 124, 123, 0, 0, 0, 11, 24, 76, + 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 88, 98, 0, 0, 0, + 0, 0, 120, 132, 0, 133, 0, 0, 24, 55, + 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67, 66, + + 0, 0, 85, 88, 0, 0, 0, 0, 0, 113, + 112, 0, 0, 0, 0, 55, 0, 0, 29, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 147, 0, 53, 0, 0, 74, 0, 92, 91, + 0, 99, 0, 0, 126, 125, 0, 0, 102, 0, + 0, 44, 0, 0, 0, 0, 0, 0, 43, 0, + 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, + 0, 0, 0, 102, 0, 40, 46, 0, 0, 0, + 0, 39, 45, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, + + 0, 0, 35, 0, 0, 109, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 38, 0, 0, 37, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 42, 0, 41, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 34, 33, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, + 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 17, 0, 14, 0, + 13, 0, 16, 0, 0, 0, 15, 0, 0, 0, + 0, 19, 0 + } ; + +static xml_const int xml__ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 2, 4, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 5, 6, 7, 1, 1, 8, 9, 1, + 1, 1, 1, 1, 10, 11, 12, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 14, 15, 16, + 17, 18, 19, 1, 20, 21, 22, 23, 24, 21, + 14, 14, 14, 14, 14, 14, 25, 14, 26, 27, + 14, 14, 28, 29, 14, 14, 14, 14, 30, 14, + 31, 1, 32, 1, 14, 1, 33, 21, 34, 35, + + 36, 37, 38, 39, 40, 14, 14, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 14, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +static xml_const int xml__meta[55] = + { 0, + 1, 2, 2, 2, 1, 1, 1, 1, 1, 3, + 3, 1, 4, 5, 1, 1, 1, 6, 1, 7, + 7, 7, 7, 7, 5, 5, 5, 5, 5, 5, + 1, 1, 7, 7, 7, 7, 7, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5 + } ; + +static xml_const short int xml__base[1112] = + { 0, + 0, 0, 0, 3, 6, 9, 24, 27, 11, 14, + 15, 17, 29, 38, 45, 52, 59, 61, 67, 70, + 93, 125, 73, 76, 143, 146, 149, 164, 180, 0, + 232, 234, 241, 249, 266, 309, 284, 287, 290, 327, + 330, 333, 351, 354, 370, 0, 422, 424, 431, 439, + 456, 0, 509, 512, 515, 518, 533, 536, 539, 542, + 557, 560, 563, 566, 582, 0, 635, 638, 641, 644, + 659, 662, 665, 668, 683, 686, 702, 745, 727, 762, + 720, 723, 794, 0, 846, 848, 765, 769, 880, 0, + 932, 934, 0, 0, 3088, 3089, 3089, 111, 114, 47, + + 62, 3089, 117, 150, 3089, 3089, 3077, 3089, 3089, 3068, + 3089, 3081, 3081, 932, 3089, 3089, 3089, 3089, 3079, 3079, + 3049, 3089, 236, 3089, 168, 3062, 0, 155, 3089, 938, + 3089, 173, 242, 936, 3089, 256, 3061, 0, 159, 3089, + 3045, 3044, 244, 3044, 940, 3089, 357, 3057, 0, 343, + 3089, 3041, 3089, 361, 432, 939, 3089, 446, 3055, 0, + 426, 3089, 3036, 3038, 434, 942, 3089, 689, 3052, 0, + 528, 3089, 3036, 3024, 3089, 692, 941, 770, 949, 3089, + 738, 3049, 0, 552, 3089, 3022, 3032, 3020, 3089, 788, + 964, 958, 774, 962, 3089, 855, 3045, 0, 654, 3089, + + 3029, 1008, 975, 3089, 863, 3043, 0, 678, 3089, 3024, + 3026, 3046, 977, 3089, 866, 3039, 0, 855, 3089, 3012, + 3022, 3010, 3041, 869, 34, 2999, 3089, 3041, 3032, 3089, + 3089, 3089, 37, 40, 3000, 2999, 2997, 3028, 3011, 3089, + 0, 2997, 260, 3003, 73, 2998, 3007, 3089, 0, 2998, + 2998, 148, 2990, 3019, 2992, 3089, 0, 2993, 3000, 2984, + 3089, 0, 2989, 2989, 2982, 3089, 0, 2987, 2976, 2994, + 2993, 3089, 0, 2984, 2982, 2971, 2980, 2972, 3089, 0, + 2978, 2971, 3089, 0, 2975, 2975, 2975, 2979, 3089, 0, + 2973, 2971, 2960, 2977, 2992, 2999, 281, 2966, 3089, 148, + + 0, 2962, 2962, 2990, 2989, 2959, 3089, 2953, 2954, 2959, + 2957, 2950, 2964, 2949, 997, 1000, 2959, 2944, 2971, 1005, + 1026, 3089, 2956, 1022, 1029, 2944, 2952, 2953, 1033, 1051, + 2952, 2939, 1059, 1062, 2937, 2935, 2948, 2935, 1068, 1072, + 2935, 2945, 1079, 1085, 2942, 2943, 1089, 1092, 2928, 2941, + 2928, 1109, 1112, 2957, 3089, 3089, 17, 2933, 3089, 2958, + 2957, 2923, 3089, 3089, 2921, 2936, 2935, 2926, 2921, 2840, + 2847, 255, 1115, 1118, 3089, 1121, 1138, 2842, 2852, 1141, + 1147, 3089, 1150, 1154, 1158, 1170, 3089, 1175, 2832, 2820, + 1178, 1182, 1187, 3089, 1194, 1199, 1204, 1207, 1211, 3089, + + 1216, 2819, 2821, 1220, 1228, 1224, 1236, 3089, 1244, 2810, + 1247, 1253, 1256, 3089, 1263, 2808, 1266, 1273, 1276, 3089, + 1282, 2812, 1285, 1294, 1301, 1304, 3089, 1310, 321, 1313, + 3089, 3089, 2836, 2829, 2788, 2780, 873, 2788, 1055, 2791, + 2776, 2780, 1321, 1331, 1334, 1342, 2789, 1353, 1358, 1361, + 1370, 2765, 1374, 1377, 1393, 1396, 1399, 1414, 1417, 1425, + 2654, 2650, 1432, 1435, 1443, 1448, 1459, 1462, 1465, 1478, + 2653, 1481, 1484, 1497, 2648, 1500, 1505, 1516, 1520, 1532, + 698, 2672, 1535, 3089, 2670, 3089, 3089, 2651, 1528, 1538, + 2650, 1541, 2638, 2646, 2634, 1545, 1552, 3089, 3089, 1562, + + 1565, 2653, 1573, 1578, 3089, 3089, 1586, 1590, 1596, 3089, + 3089, 1606, 1609, 3089, 3089, 1617, 3089, 3089, 1626, 2624, + 2628, 1629, 3089, 3089, 1637, 3089, 3089, 1648, 1651, 3089, + 3089, 1659, 1665, 1669, 3089, 3089, 1681, 2623, 1688, 3089, + 3089, 1698, 3089, 3089, 1706, 320, 333, 3089, 1709, 1712, + 2617, 1715, 1718, 2617, 1723, 1726, 1694, 1696, 2645, 1745, + 1748, 1751, 1758, 1767, 1754, 1771, 1774, 1777, 1784, 1794, + 1797, 1805, 3089, 1810, 1813, 3089, 284, 41, 1816, 1822, + 1832, 1835, 2596, 1838, 2606, 2594, 51, 2573, 2569, 2539, + 2518, 309, 2482, 2213, 2201, 1841, 1844, 1848, 3089, 3089, + + 1861, 1864, 3089, 1867, 1870, 1874, 1882, 1886, 1889, 3089, + 3089, 1899, 1903, 1911, 505, 1915, 2137, 1919, 3089, 2096, + 2062, 694, 2026, 2010, 1985, 1920, 1874, 130, 1872, 1858, + 1825, 3089, 1922, 3089, 1928, 1931, 3089, 1939, 3089, 3089, + 1948, 3089, 1951, 1954, 3089, 3089, 1997, 283, 1968, 1756, + 1787, 3089, 1736, 1700, 1670, 1659, 1622, 1650, 3089, 1588, + 1519, 1436, 1417, 1971, 3089, 1974, 509, 536, 326, 711, + 228, 1050, 506, 1977, 1373, 3089, 3089, 1344, 1346, 1312, + 1284, 3089, 3089, 1256, 1286, 1157, 1984, 530, 411, 533, + 631, 105, 683, 972, 635, 634, 1141, 1089, 3089, 953, + + 943, 914, 3089, 813, 1991, 3089, 1113, 944, 977, 970, + 996, 1308, 1060, 1088, 2001, 3089, 778, 740, 3089, 689, + 612, 720, 2004, 1061, 2009, 640, 1086, 1309, 1003, 845, + 2030, 2040, 3089, 542, 3089, 400, 2022, 2033, 638, 2050, + 1111, 1049, 1145, 979, 1117, 2053, 2078, 2110, 333, 204, + 2070, 1157, 1151, 1243, 2073, 2102, 2128, 2131, 1149, 2149, + 2181, 17, 6, 1291, 1020, 2141, 1080, 2173, 2200, 2203, + 2206, 1225, 511, 3089, 3089, 1264, 1215, 2212, 1272, 1374, + 1392, 1394, 1412, 1217, 1300, 508, 1495, 837, 1340, 1477, + 1534, 1542, 2223, 1021, 556, 1567, 762, 1364, 1396, 1430, + + 1460, 2233, 931, 2240, 1492, 2244, 1329, 1366, 1452, 1473, + 1604, 2250, 2261, 1533, 2269, 1640, 1656, 1661, 1671, 1619, + 2279, 632, 1388, 1680, 1598, 1811, 2287, 2290, 2296, 2299, + 1498, 1814, 1831, 1218, 1332, 2307, 1351, 1422, 2317, 2325, + 2335, 2343, 1554, 1583, 1630, 1565, 1607, 2353, 1627, 1772, + 1876, 1920, 1921, 1941, 1972, 1973, 1979, 2045, 1764, 1804, + 1878, 1705, 1929, 2048, 2103, 1949, 1950, 1669, 1776, 1910, + 2089, 2090, 2144, 2145, 2177, 2361, 1996, 2032, 1585, 1810, + 2199, 2204, 2049, 2051, 2052, 2120, 2121, 2122, 2174, 2201, + 2211, 2227, 2364, 2085, 2256, 1371, 1437, 2231, 2237, 1476, + + 1747, 2251, 2297, 2300, 2318, 2336, 2342, 2354, 2356, 2130, + 2176, 1863, 2221, 2010, 2248, 2358, 2359, 2295, 2367, 2330, + 2332, 2362, 2366, 2368, 2370, 2372, 2375, 2278, 2298, 2383, + 2384, 1457, 2379, 2378, 2380, 2381, 2385, 2259, 2286, 2306, + 2322, 2382, 2386, 2388, 2389, 2387, 2390, 2392, 2393, 2391, + 2394, 2397, 2412, 2414, 2416, 2424, 2426, 2427, 2435, 2436, + 2438, 2439, 2440, 2434, 2437, 2423, 2441, 2442, 2443, 2451, + 2453, 2448, 2450, 2456, 2457, 2458, 2461, 2462, 2463, 2464, + 2466, 2455, 2468, 2469, 2470, 1978, 2485, 2477, 2482, 2154, + 2493, 2471, 2489, 2490, 2491, 2492, 2495, 2496, 2497, 2498, + + 2500, 2515, 2513, 2524, 2505, 2506, 2545, 2517, 2525, 2532, + 2533, 2535, 2538, 2539, 2540, 2514, 2519, 2562, 2574, 3089, + 2544, 2551, 2579, 3089, 2553, 2575, 2581, 2576, 2582, 2580, + 2584, 2586, 2573, 2578, 2603, 3089, 2597, 2592, 2614, 2620, + 2623, 2626, 2591, 2593, 2631, 2643, 3089, 2648, 3089, 2651, + 3089, 2654, 3089, 2596, 2601, 2660, 3089, 2642, 2650, 2671, + 2677, 3089, 3089, 2695, 2702, 2709, 2716, 2723, 2730, 2737, + 2744, 2751, 2758, 2765, 2772, 2779, 2786, 2793, 2798, 2803, + 2808, 2813, 2818, 2823, 2828, 2833, 2838, 2845, 2848, 2851, + 2854, 2857, 2860, 2863, 2866, 2869, 2872, 2879, 2883, 2889, + + 2895, 2901, 2907, 2913, 2919, 2925, 2931, 2937, 2944, 2951, + 2958 + } ; + +static xml_const short int xml__def[1112] = + { 0, + 1064, 1064, 1065, 1065, 1065, 1065, 1066, 1066, 1067, 1067, + 1068, 1068, 1069, 1069, 1069, 1069, 1070, 1070, 1071, 1071, + 1072, 1072, 1071, 1071, 1073, 1073, 1071, 1071, 1063, 29, + 1069, 1069, 1071, 1071, 1074, 1074, 1071, 1071, 1071, 1071, + 1075, 1075, 1071, 1071, 1063, 45, 1069, 1069, 1071, 1071, + 1063, 51, 1071, 1071, 1071, 1071, 1071, 1071, 1076, 1076, + 1076, 1076, 1071, 1071, 1063, 65, 1077, 1077, 1071, 1071, + 1077, 1077, 1077, 1077, 1071, 1071, 1078, 1078, 1069, 1069, + 1071, 1071, 1063, 83, 1069, 1069, 1071, 1071, 1063, 89, + 1069, 1069, 1064, 1064, 1063, 1063, 1063, 1063, 1063, 1063, + + 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, + 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, + 1063, 1063, 1063, 1063, 1063, 1063, 1079, 1063, 1063, 1063, + 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1080, 1063, 1063, + 1080, 1080, 1063, 1063, 1063, 1063, 1063, 1063, 1081, 1063, + 1063, 1081, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1082, + 1063, 1063, 1082, 1082, 1063, 1063, 1063, 1063, 1063, 1083, + 1063, 1063, 1083, 1083, 1063, 1063, 1063, 1063, 1063, 1063, + 1063, 1063, 1084, 1063, 1063, 1084, 1084, 1084, 1063, 1063, + 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1085, 1063, 1063, + + 1085, 1063, 1063, 1063, 1063, 1063, 1086, 1063, 1063, 1086, + 1086, 202, 1063, 1063, 1063, 1063, 1087, 1063, 1063, 1087, + 1087, 1087, 202, 1063, 1088, 1063, 1063, 1063, 1063, 1063, + 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, + 1079, 1063, 1063, 1063, 1063, 1089, 1063, 1063, 1080, 1080, + 1080, 1063, 1090, 1063, 1063, 1063, 1081, 1081, 1091, 1063, + 1063, 1082, 1082, 1082, 1092, 1063, 1083, 1083, 1083, 1093, + 1063, 1063, 1084, 1084, 1084, 1084, 1094, 1063, 1063, 1085, + 1085, 1095, 1063, 1086, 1086, 1086, 1096, 1063, 1063, 1087, + 1087, 1087, 1087, 1097, 1098, 1063, 1098, 1063, 1063, 1063, + + 1099, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, + 1063, 1063, 1063, 1063, 1100, 1100, 1080, 1080, 1063, 1101, + 1101, 1063, 1081, 1102, 1102, 1063, 1082, 1082, 1103, 1103, + 1083, 1083, 1104, 1104, 1063, 1084, 1084, 1084, 1105, 1105, + 1063, 1085, 1106, 1106, 1086, 1086, 1107, 1107, 1087, 1087, + 1087, 1108, 1108, 1098, 1063, 1063, 1098, 1063, 1063, 1099, + 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, + 1063, 1063, 1063, 1100, 1063, 1100, 1080, 1080, 1063, 1063, + 1101, 1063, 1101, 1081, 1063, 1102, 1063, 1102, 1063, 1082, + 1082, 1063, 1103, 1063, 1103, 1083, 1083, 1063, 1104, 1063, + + 1104, 1063, 1084, 1084, 1084, 1063, 1105, 1063, 1105, 1063, + 1085, 1063, 1106, 1063, 1106, 1086, 1086, 1063, 1107, 1063, + 1107, 1087, 1087, 1087, 1063, 1108, 1063, 1108, 1098, 1109, + 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, + 1063, 1063, 1100, 1063, 1063, 1080, 1063, 1101, 1063, 1063, + 1102, 1082, 1063, 1063, 1103, 1063, 1063, 1063, 1063, 1104, + 1063, 1084, 1063, 1063, 1063, 1063, 1105, 1063, 1063, 1106, + 1086, 1063, 1063, 1107, 1087, 1063, 1063, 1063, 1063, 1108, + 1098, 1109, 1109, 1063, 1109, 1063, 1063, 1063, 1063, 1063, + 1063, 1063, 1063, 1063, 1063, 1100, 1063, 1063, 1063, 1063, + + 1063, 1063, 1101, 1063, 1063, 1063, 1102, 1082, 1063, 1063, + 1063, 1103, 1063, 1063, 1063, 1063, 1063, 1063, 1104, 1063, + 1084, 1063, 1063, 1063, 1063, 1063, 1063, 1105, 1063, 1063, + 1063, 1106, 1086, 1063, 1063, 1063, 1107, 1087, 1063, 1063, + 1063, 1063, 1063, 1063, 1108, 1098, 1109, 1063, 1063, 1063, + 1063, 1063, 1063, 1063, 1100, 1063, 1063, 1063, 1063, 1101, + 1102, 1063, 1063, 1103, 1104, 1063, 1084, 1105, 1106, 1063, + 1063, 1063, 1063, 1087, 1063, 1063, 1098, 1109, 1063, 1063, + 1063, 1063, 1063, 1100, 1063, 1063, 1063, 1063, 1063, 1063, + 1063, 1063, 1063, 1063, 1063, 1101, 1102, 1063, 1063, 1063, + + 1103, 1063, 1063, 1063, 1063, 1063, 1105, 1106, 1063, 1063, + 1063, 1063, 1063, 1098, 1109, 1063, 1063, 1063, 1063, 1063, + 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, + 1063, 1063, 1063, 1063, 1102, 1063, 1063, 1063, 1063, 1063, + 1063, 1063, 1106, 1063, 1063, 1063, 1098, 1109, 1063, 1063, + 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, + 1063, 1063, 1063, 1063, 1063, 1106, 1098, 1098, 1098, 1098, + 1098, 1098, 1109, 1063, 1063, 1063, 1063, 1063, 1063, 1063, + 1063, 1063, 1063, 1063, 1063, 1063, 1106, 1098, 1098, 1098, + 1098, 1098, 1098, 1098, 1098, 1109, 1063, 1063, 1063, 1063, + + 1063, 1063, 1063, 1063, 1063, 1063, 1098, 1098, 1098, 1098, + 1098, 1098, 1098, 1098, 1109, 1063, 1063, 1063, 1063, 1063, + 1063, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, + 1109, 1109, 1063, 1063, 1063, 1063, 1098, 1098, 1098, 1098, + 1098, 1098, 1098, 1098, 1098, 1109, 1110, 1111, 1063, 1063, + 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1110, + 1111, 1063, 1063, 1098, 1098, 1098, 1098, 1098, 1098, 1098, + 1098, 1098, 1109, 1063, 1063, 1098, 1098, 1098, 1098, 1098, + 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, + 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, + + 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, + 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, + 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, + 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, + 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, + 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, + 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, + 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, + 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, + 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, + + 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, + 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, + 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, + 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, + 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, + 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, + 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, + 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, + 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, + 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, + + 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, + 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1063, + 1098, 1098, 1098, 1063, 1098, 1098, 1098, 1098, 1098, 1098, + 1098, 1098, 1098, 1098, 1098, 1063, 1098, 1098, 1098, 1098, + 1098, 1098, 1098, 1098, 1098, 1098, 1063, 1098, 1063, 1098, + 1063, 1098, 1063, 1098, 1098, 1098, 1063, 1098, 1098, 1098, + 1098, 1063, 0, 1063, 1063, 1063, 1063, 1063, 1063, 1063, + 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, + 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, + 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, + + 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, + 1063 + } ; + +static xml_const short int xml__nxt[3144] = + { 0, + 1063, 98, 99, 98, 98, 99, 98, 98, 99, 98, + 98, 99, 98, 106, 775, 100, 106, 109, 100, 109, + 107, 101, 774, 107, 101, 103, 99, 103, 103, 99, + 103, 112, 113, 110, 355, 110, 114, 115, 429, 104, + 112, 113, 104, 296, 116, 114, 115, 112, 113, 300, + 117, 225, 114, 116, 112, 113, 297, 117, 484, 114, + 116, 119, 120, 119, 120, 226, 225, 116, 99, 99, + 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, + 227, 302, 123, 622, 303, 123, 623, 615, 130, 301, + 121, 130, 121, 124, 125, 99, 125, 124, 124, 124, + + 124, 124, 124, 124, 126, 124, 313, 124, 128, 124, + 129, 124, 224, 224, 224, 224, 224, 224, 224, 224, + 224, 314, 355, 124, 124, 124, 125, 99, 125, 124, + 124, 124, 124, 124, 124, 124, 126, 124, 659, 124, + 128, 124, 129, 124, 132, 99, 132, 132, 99, 132, + 99, 99, 99, 711, 228, 124, 124, 296, 133, 228, + 300, 133, 359, 228, 134, 99, 99, 99, 227, 224, + 224, 224, 660, 227, 224, 224, 224, 227, 319, 134, + 135, 136, 99, 136, 135, 135, 135, 135, 135, 135, + 135, 137, 135, 138, 135, 139, 135, 140, 135, 138, + + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, + 135, 135, 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 141, 138, 138, 138, 138, 138, 138, 138, + 142, 138, 138, 138, 112, 113, 112, 113, 763, 114, + 228, 114, 99, 99, 99, 355, 228, 143, 252, 143, + 99, 99, 99, 246, 227, 253, 145, 224, 224, 224, + 227, 693, 227, 144, 145, 144, 146, 147, 99, 147, + 146, 146, 146, 146, 146, 146, 146, 148, 146, 239, + 146, 150, 146, 151, 146, 99, 99, 99, 99, 99, + 99, 99, 99, 99, 441, 310, 146, 146, 355, 134, + + 484, 355, 134, 311, 442, 134, 357, 614, 152, 146, + 147, 99, 147, 146, 146, 146, 146, 146, 146, 146, + 148, 146, 673, 146, 150, 146, 151, 146, 99, 99, + 99, 154, 99, 154, 154, 99, 154, 355, 355, 146, + 146, 628, 134, 355, 629, 155, 577, 228, 155, 481, + 484, 152, 99, 99, 99, 99, 99, 99, 224, 224, + 224, 227, 224, 224, 224, 691, 156, 762, 578, 156, + 157, 158, 99, 158, 157, 157, 157, 157, 157, 157, + 157, 159, 157, 160, 157, 161, 157, 162, 157, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + + 157, 157, 160, 160, 160, 160, 160, 160, 160, 160, + 163, 160, 164, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 112, 113, 112, 113, 355, 114, + 228, 114, 99, 99, 99, 750, 228, 165, 252, 165, + 99, 99, 99, 259, 227, 265, 166, 224, 224, 224, + 227, 708, 227, 144, 166, 144, 167, 168, 99, 168, + 167, 167, 167, 167, 167, 167, 167, 169, 167, 170, + 167, 171, 167, 172, 167, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 167, 167, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, 173, 170, + + 170, 170, 174, 170, 170, 170, 170, 170, 170, 170, + 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, + 99, 99, 484, 484, 156, 355, 355, 156, 484, 485, + 156, 795, 228, 156, 99, 99, 99, 99, 99, 99, + 176, 99, 176, 176, 99, 176, 227, 355, 156, 696, + 355, 156, 648, 355, 177, 688, 228, 177, 176, 99, + 176, 176, 99, 176, 99, 99, 99, 99, 99, 99, + 227, 689, 178, 355, 709, 178, 707, 749, 179, 690, + 804, 179, 180, 181, 99, 181, 180, 180, 180, 180, + 180, 180, 180, 182, 180, 183, 180, 184, 180, 185, + + 180, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 180, 180, 183, 186, 183, 183, 183, 183, + 183, 183, 183, 183, 187, 183, 183, 183, 188, 183, + 183, 183, 183, 183, 183,... [truncated message content] |
From: <car...@us...> - 2012-03-13 03:05:42
|
Revision: 9847 http://octave.svn.sourceforge.net/octave/?rev=9847&view=rev Author: carandraug Date: 2012-03-13 03:05:35 +0000 (Tue, 13 Mar 2012) Log Message: ----------- xmlread: updating NEWS file of miscellaneous and IO to mention move of the function Modified Paths: -------------- trunk/octave-forge/main/io/NEWS trunk/octave-forge/main/miscellaneous/NEWS Modified: trunk/octave-forge/main/io/NEWS =================================================================== --- trunk/octave-forge/main/io/NEWS 2012-03-13 03:01:20 UTC (rev 9846) +++ trunk/octave-forge/main/io/NEWS 2012-03-13 03:05:35 UTC (rev 9847) @@ -14,7 +14,7 @@ ** Tried OpenXLS-6.0.7.jar. Reads OK, still unusable for writing .xls files. ** The following functions have been imported from the miscellaneous package: - cell2csv csvconcat + cell2csv csvconcat xmlread csv2cell csvexplode xmlwrite =============================================================================== Modified: trunk/octave-forge/main/miscellaneous/NEWS =================================================================== --- trunk/octave-forge/main/miscellaneous/NEWS 2012-03-13 03:01:20 UTC (rev 9846) +++ trunk/octave-forge/main/miscellaneous/NEWS 2012-03-13 03:05:35 UTC (rev 9847) @@ -19,7 +19,7 @@ ** The following functions have been moved to the IO package: - cell2csv csvconcat + cell2csv csvconcat xmlread csv2cell csvexplode xmlwrite ** The function `clip' was imported from the audio package. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jpi...@us...> - 2012-03-28 13:27:25
|
Revision: 10079 http://octave.svn.sourceforge.net/octave/?rev=10079&view=rev Author: jpicarbajal Date: 2012-03-28 13:27:12 +0000 (Wed, 28 Mar 2012) Log Message: ----------- system-identification: adding structure Modified Paths: -------------- trunk/octave-forge/main/geometry/PKG_DEL trunk/octave-forge/main/mechanics/inst/core/masscenter.m Added Paths: ----------- trunk/octave-forge/main/system-identification/ trunk/octave-forge/main/system-identification/COPYING trunk/octave-forge/main/system-identification/DESCRIPTION trunk/octave-forge/main/system-identification/INDEX trunk/octave-forge/main/system-identification/NEWS trunk/octave-forge/main/system-identification/PKG_ADD trunk/octave-forge/main/system-identification/PKG_DEL trunk/octave-forge/main/system-identification/devel/ trunk/octave-forge/main/system-identification/inst/ trunk/octave-forge/main/system-identification/inst/tisean/ trunk/octave-forge/main/system-identification/inst/tisean/src/ trunk/octave-forge/main/system-identification/post_install.m trunk/octave-forge/main/system-identification/pre_install.m Modified: trunk/octave-forge/main/geometry/PKG_DEL =================================================================== --- trunk/octave-forge/main/geometry/PKG_DEL 2012-03-28 03:16:58 UTC (rev 10078) +++ trunk/octave-forge/main/geometry/PKG_DEL 2012-03-28 13:27:12 UTC (rev 10079) @@ -3,11 +3,16 @@ dirname = fileparts (canonicalize_file_name (mfilename ("fullpath"))); pp = strsplit (dirname,filesep (), true); -%% Check if prefix was used -[pkg_folder dep_folder] = pkg ("prefix"); -pkg_folder = [pkg_folder filesep() strcat(filesep(),{pp{end-1:end}}){:} ]; -dep_folder = [dep_folder filesep() strcat(filesep(),{pp{end-1:end}}){:} ]; +%% Get the correct path +p1 = pkg_info ("miscellaneous", "archprefix"); +p2 = octave_config_info ("canonical_host_type"); +p2 = octave_config_info ("api_version"); +arch_dep_fldr = [p1 filesep "-" p3]; +%[pkg_folder dep_folder] = pkg ("prefix"); +%pkg_folder = [pkg_folder filesep() strcat(filesep(),{pp{end-1:end}}){:} ]; +%dep_folder = [dep_folder filesep() strcat(filesep(),{pp{end-1:end}}){:} ]; + %% If we are not in Architecture dependent folder arch = cstrcat (octave_config_info ("canonical_host_type"), "-", octave_config_info ("api_version")); Modified: trunk/octave-forge/main/mechanics/inst/core/masscenter.m =================================================================== --- trunk/octave-forge/main/mechanics/inst/core/masscenter.m 2012-03-28 03:16:58 UTC (rev 10078) +++ trunk/octave-forge/main/mechanics/inst/core/masscenter.m 2012-03-28 13:27:12 UTC (rev 10079) @@ -36,8 +36,8 @@ px = x(1,:); py = x(2,:); - Px = polyint (conv(conv (px , px)/2 , polyder (py))); - Py = polyint (conv(-conv (py , py)/2 , polyder (px))); + Px = polyint (conv(conv (-px , py) , polyder (px))); + Py = polyint (conv(conv (px , py) , polyder (py))); dcm = zeros (1,2); dcm(1) = diff(polyval(Px,[0 1])); Added: trunk/octave-forge/main/system-identification/COPYING =================================================================== --- trunk/octave-forge/main/system-identification/COPYING (rev 0) +++ trunk/octave-forge/main/system-identification/COPYING 2012-03-28 13:27:12 UTC (rev 10079) @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. Added: trunk/octave-forge/main/system-identification/DESCRIPTION =================================================================== --- trunk/octave-forge/main/system-identification/DESCRIPTION (rev 0) +++ trunk/octave-forge/main/system-identification/DESCRIPTION 2012-03-28 13:27:12 UTC (rev 10079) @@ -0,0 +1,11 @@ +Name: System Identification +Version: 0.1.0 +Date: 2012-03-28 +Author: Lukas Reichlin <luk...@gm...>, Juan Pablo Carbajal <car...@if...> +Maintainer: Lukas Reichlin <luk...@gm...>, Juan Pablo Carbajal <car...@if...> +Title: System Identification +Description: Library for the identification of dynamical systems from data (e.g. time series). It contains the TISEAN package. +Depends: octave (>= 3.6.1) +Autoload: no +License: GPLv3+ +Url: http://octave.sf.net, http://www.mpipks-dresden.mpg.de/~tisean/ Added: trunk/octave-forge/main/system-identification/INDEX =================================================================== --- trunk/octave-forge/main/system-identification/INDEX (rev 0) +++ trunk/octave-forge/main/system-identification/INDEX 2012-03-28 13:27:12 UTC (rev 10079) @@ -0,0 +1,4 @@ +system-identification >> System Identification +TISEAN +Data types + Added: trunk/octave-forge/main/system-identification/NEWS =================================================================== --- trunk/octave-forge/main/system-identification/NEWS (rev 0) +++ trunk/octave-forge/main/system-identification/NEWS 2012-03-28 13:27:12 UTC (rev 10079) @@ -0,0 +1,9 @@ +Summary of important user-visible changes for releases of the system-identification package + +=============================================================================== +geometry-0.1.0 Release Date: XX Release Manager: Juan Pablo Carbajal +=============================================================================== + +** First official release. + +=============================================================================== Added: trunk/octave-forge/main/system-identification/PKG_ADD =================================================================== --- trunk/octave-forge/main/system-identification/PKG_ADD (rev 0) +++ trunk/octave-forge/main/system-identification/PKG_ADD 2012-03-28 13:27:12 UTC (rev 10079) @@ -0,0 +1,35 @@ +%1 +dirlist = {"tisean"}; +dirname = fileparts (canonicalize_file_name (mfilename ("fullpath"))); +pp = strsplit (dirname,filesep (), true); + +%% Check if prefix was used +[pkg_folder dep_folder] = pkg ("prefix"); +pkg_folder = [pkg_folder filesep() strcat(filesep(),{pp{end-1:end}}){:} ]; +dep_folder = [dep_folder filesep() strcat(filesep(),{pp{end-1:end}}){:} ]; + +%% If we are in Architecture dependent folder add from outside +arch = cstrcat (octave_config_info ("canonical_host_type"), + "-", octave_config_info ("api_version")); +if strcmp (arch , pp{end}) + dirname = [strcat(filesep(),{pp{1:end-1}}){:}]; + pkg_folder = strsplit (pkg_folder,filesep (), true); + pkg_folder = [strcat(filesep(),{pkg_folder{1:end-1}}){:}]; +end + +if (! exist (fullfile (dirname, "inst"), "dir")) +%% Installing + for ii=1:length (dirlist) + addpath ( [ pkg_folder filesep() dirlist{ii}],"-end") + endfor + +else +%% Testing + warning("system-identitifaction:Devel","Adding path for testing."); + for ii=1:length(dirlist) + addpath ([ dirname "/inst/" dirlist{ii}]) + endfor +endif + +warning('off', 'Octave:fopen-file-in-path'); +clear dirlist dirname pp arch pkg_folder dep_folder Added: trunk/octave-forge/main/system-identification/PKG_DEL =================================================================== --- trunk/octave-forge/main/system-identification/PKG_DEL (rev 0) +++ trunk/octave-forge/main/system-identification/PKG_DEL 2012-03-28 13:27:12 UTC (rev 10079) @@ -0,0 +1,38 @@ +%1 +dirlist = {"tisean"}; +dirname = fileparts (canonicalize_file_name (mfilename ("fullpath"))); +pp = strsplit (dirname,filesep (), true); + +%% Get the correct path +p1 = pkg_info ("miscellaneous", "archprefix"); +p2 = octave_config_info ("canonical_host_type"); +p2 = octave_config_info ("api_version"); +arch_dep_fldr = [p1 filesep "-" p3]; + +%[pkg_folder dep_folder] = pkg ("prefix"); +%pkg_folder = [pkg_folder filesep() strcat(filesep(),{pp{end-1:end}}){:} ]; +%dep_folder = [dep_folder filesep() strcat(filesep(),{pp{end-1:end}}){:} ]; + +%% If we are not in Architecture dependent folder +arch = cstrcat (octave_config_info ("canonical_host_type"), + "-", octave_config_info ("api_version")); +pp = strsplit (dirname,filesep (), true); +if strcmp(arch , pp{end}) + dirname = [pkg("prefix") filesep() pp{end-1}]; + pkg_folder = strsplit (pkg_folder,filesep (), true); + pkg_folder = [strcat(filesep(),{pkg_folder{1:end-1}}){:}]; +end + +if (! exist (fullfile (dirname, "inst"), "dir")) +## Run this if the package is installed + for ii=1:length (dirlist) + rmpath ( [ pkg_folder filesep() dirlist{ii}]) + endfor +else + warning("system-identification:Devel","Removing path for testing."); + for ii=1:length(dirlist) + rmpath ([ dirname "/inst/" dirlist{ii}]) + endfor +endif + +clear dirlist dirname pp arch pkg_folder dep_folder Added: trunk/octave-forge/main/system-identification/post_install.m =================================================================== --- trunk/octave-forge/main/system-identification/post_install.m (rev 0) +++ trunk/octave-forge/main/system-identification/post_install.m 2012-03-28 13:27:12 UTC (rev 10079) @@ -0,0 +1,7 @@ +function post_install (desc) +%% Prepares for installation a package that is organized in subfolders +%% Since src is compiled only in the package main dir +%% I need to remove the PKG_ADD and PKG_DEL from the architecture dependent folder + + +end Added: trunk/octave-forge/main/system-identification/pre_install.m =================================================================== --- trunk/octave-forge/main/system-identification/pre_install.m (rev 0) +++ trunk/octave-forge/main/system-identification/pre_install.m 2012-03-28 13:27:12 UTC (rev 10079) @@ -0,0 +1,28 @@ +function pre_install (desc) +%% Prepares for installation a package that is organized in subfolders + + %% List of folders with src subfolder + subfld = {"tisean"}; + + %% Create correct strings + subfld_ready = strcat ({[pwd() filesep() "inst" filesep()]}, + subfld,[filesep() "src" filesep() "*"]); + + %% Destination folder + to_fld = strcat (pwd (),[filesep() "src"]); + + + %% Copy files to package/src folder + %% TODO handle merging of Makefiles + warning ("Copying subfolder src to package main dir, but multiple Makefiles are not handled") + + if !exist("src","dir") + system(["mkdir " to_fld]); + end + + for from_fld = subfld_ready + system (["mv " from_fld{1} " " to_fld]); + system (["rm -R " from_fld{1}(1:end-2)]); + end + +end This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2012-03-30 01:03:46
|
Revision: 10106 http://octave.svn.sourceforge.net/octave/?rev=10106&view=rev Author: carandraug Date: 2012-03-30 01:03:40 +0000 (Fri, 30 Mar 2012) Log Message: ----------- quaternion: write license in DESCRIPTINO in an easy to parse automatically format Modified Paths: -------------- trunk/octave-forge/main/quaternion/DESCRIPTION trunk/octave-forge/main/strings/NEWS Modified: trunk/octave-forge/main/quaternion/DESCRIPTION =================================================================== --- trunk/octave-forge/main/quaternion/DESCRIPTION 2012-03-30 01:02:51 UTC (rev 10105) +++ trunk/octave-forge/main/quaternion/DESCRIPTION 2012-03-30 01:03:40 UTC (rev 10106) @@ -7,5 +7,5 @@ Description: Overloaded operators for quaternions Depends: octave (>= 3.6.0) Autoload: yes -License: GPL version 3 or later +License: GPLv3+ Url: http://octave.sf.net Modified: trunk/octave-forge/main/strings/NEWS =================================================================== --- trunk/octave-forge/main/strings/NEWS 2012-03-30 01:02:51 UTC (rev 10105) +++ trunk/octave-forge/main/strings/NEWS 2012-03-30 01:03:40 UTC (rev 10106) @@ -6,8 +6,8 @@ strtrim - ** Package is no longer automatically loaded. + ** Package is no longer automatically loaded. - ** The function `cstrcmp' has been completely rewritten. It should + ** The function `cstrcmp' has been completely rewritten. It should perform faster and will accept arguments exactly the same way as Octave's core `strcmp'. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2012-04-01 11:25:09
|
Revision: 10127 http://octave.svn.sourceforge.net/octave/?rev=10127&view=rev Author: carandraug Date: 2012-04-01 11:25:02 +0000 (Sun, 01 Apr 2012) Log Message: ----------- maint: update Muthiah Annamalai e-mail address Modified Paths: -------------- trunk/octave-forge/main/comm/inst/prbs_generator.m trunk/octave-forge/main/comm/inst/prbs_iterator.m trunk/octave-forge/main/comm/inst/prbs_sequence.m trunk/octave-forge/main/comm/inst/reedmullerdec.m trunk/octave-forge/main/miscellaneous/inst/apply.m trunk/octave-forge/main/miscellaneous/inst/chebyshevpoly.m trunk/octave-forge/main/miscellaneous/inst/hermitepoly.m trunk/octave-forge/main/miscellaneous/inst/infoskeleton.m trunk/octave-forge/main/miscellaneous/inst/laguerrepoly.m trunk/octave-forge/main/miscellaneous/inst/legendrepoly.m trunk/octave-forge/main/miscellaneous/inst/map.m trunk/octave-forge/main/miscellaneous/inst/match.m trunk/octave-forge/main/miscellaneous/inst/reduce.m trunk/octave-forge/main/signal/inst/fht.m trunk/octave-forge/main/signal/inst/ifht.m trunk/octave-forge/main/signal/inst/sampled2continuous.m trunk/octave-forge/main/zenity/inst/zenity_scale.m Modified: trunk/octave-forge/main/comm/inst/prbs_generator.m =================================================================== --- trunk/octave-forge/main/comm/inst/prbs_generator.m 2012-04-01 11:13:35 UTC (rev 10126) +++ trunk/octave-forge/main/comm/inst/prbs_generator.m 2012-04-01 11:25:02 UTC (rev 10127) @@ -1,4 +1,4 @@ -## Copyright (C) 2006 Muthiah Annamalai <mut...@gm...> +## Copyright (C) 2006 Muthiah Annamalai <mut...@ut...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/comm/inst/prbs_iterator.m =================================================================== --- trunk/octave-forge/main/comm/inst/prbs_iterator.m 2012-04-01 11:13:35 UTC (rev 10126) +++ trunk/octave-forge/main/comm/inst/prbs_iterator.m 2012-04-01 11:25:02 UTC (rev 10127) @@ -1,4 +1,4 @@ -## Copyright (C) 2006 Muthiah Annamalai <mut...@gm...> +## Copyright (C) 2006 Muthiah Annamalai <mut...@ut...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/comm/inst/prbs_sequence.m =================================================================== --- trunk/octave-forge/main/comm/inst/prbs_sequence.m 2012-04-01 11:13:35 UTC (rev 10126) +++ trunk/octave-forge/main/comm/inst/prbs_sequence.m 2012-04-01 11:25:02 UTC (rev 10127) @@ -1,4 +1,4 @@ -## Copyright (C) 2006 Muthiah Annamalai <mut...@gm...> +## Copyright (C) 2006 Muthiah Annamalai <mut...@ut...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/comm/inst/reedmullerdec.m =================================================================== --- trunk/octave-forge/main/comm/inst/reedmullerdec.m 2012-04-01 11:13:35 UTC (rev 10126) +++ trunk/octave-forge/main/comm/inst/reedmullerdec.m 2012-04-01 11:25:02 UTC (rev 10127) @@ -1,4 +1,4 @@ -## Copyright (C) 2007, 2011 Muthiah Annamalai <mut...@ma...> +## Copyright (C) 2007, 2011 Muthiah Annamalai <mut...@ut...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/miscellaneous/inst/apply.m =================================================================== --- trunk/octave-forge/main/miscellaneous/inst/apply.m 2012-04-01 11:13:35 UTC (rev 10126) +++ trunk/octave-forge/main/miscellaneous/inst/apply.m 2012-04-01 11:25:02 UTC (rev 10127) @@ -1,4 +1,4 @@ -## Copyright (C) 2007, Muthiah Annamalai <mut...@ma...> +## Copyright (C) 2007, Muthiah Annamalai <mut...@ut...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/miscellaneous/inst/chebyshevpoly.m =================================================================== --- trunk/octave-forge/main/miscellaneous/inst/chebyshevpoly.m 2012-04-01 11:13:35 UTC (rev 10126) +++ trunk/octave-forge/main/miscellaneous/inst/chebyshevpoly.m 2012-04-01 11:25:02 UTC (rev 10127) @@ -1,4 +1,4 @@ -## Copyright (C) 2007 Muthiah Annamalai <mut...@ma...> +## Copyright (C) 2007 Muthiah Annamalai <mut...@ut...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/miscellaneous/inst/hermitepoly.m =================================================================== --- trunk/octave-forge/main/miscellaneous/inst/hermitepoly.m 2012-04-01 11:13:35 UTC (rev 10126) +++ trunk/octave-forge/main/miscellaneous/inst/hermitepoly.m 2012-04-01 11:25:02 UTC (rev 10127) @@ -1,4 +1,4 @@ -## Copyright (C) 2007 Muthiah Annamalai <mut...@ma...> +## Copyright (C) 2007 Muthiah Annamalai <mut...@ut...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/miscellaneous/inst/infoskeleton.m =================================================================== --- trunk/octave-forge/main/miscellaneous/inst/infoskeleton.m 2012-04-01 11:13:35 UTC (rev 10126) +++ trunk/octave-forge/main/miscellaneous/inst/infoskeleton.m 2012-04-01 11:25:02 UTC (rev 10127) @@ -1,4 +1,4 @@ -## Copyright (C) 2008 Muthiah Annamalai <mut...@ma...> +## Copyright (C) 2008 Muthiah Annamalai <mut...@ut...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/miscellaneous/inst/laguerrepoly.m =================================================================== --- trunk/octave-forge/main/miscellaneous/inst/laguerrepoly.m 2012-04-01 11:13:35 UTC (rev 10126) +++ trunk/octave-forge/main/miscellaneous/inst/laguerrepoly.m 2012-04-01 11:25:02 UTC (rev 10127) @@ -1,4 +1,4 @@ -## Copyright (C) 2007 Muthiah Annamalai <mut...@ma...> +## Copyright (C) 2007 Muthiah Annamalai <mut...@ut...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/miscellaneous/inst/legendrepoly.m =================================================================== --- trunk/octave-forge/main/miscellaneous/inst/legendrepoly.m 2012-04-01 11:13:35 UTC (rev 10126) +++ trunk/octave-forge/main/miscellaneous/inst/legendrepoly.m 2012-04-01 11:25:02 UTC (rev 10127) @@ -1,4 +1,4 @@ -## Copyright (C) 2007 Muthiah Annamalai <mut...@ma...> +## Copyright (C) 2007 Muthiah Annamalai <mut...@ut...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/miscellaneous/inst/map.m =================================================================== --- trunk/octave-forge/main/miscellaneous/inst/map.m 2012-04-01 11:13:35 UTC (rev 10126) +++ trunk/octave-forge/main/miscellaneous/inst/map.m 2012-04-01 11:25:02 UTC (rev 10127) @@ -1,5 +1,5 @@ ## Copyright (C) 2003 Tomer Altman <ta...@lb...> -## Copyright (C) 2007 Muthiah Annamalai <mut...@ma...> +## Copyright (C) 2007 Muthiah Annamalai <mut...@ut...> ## Copyright (C) 2012 Carnë Draug <car...@gm...> ## Copyright (C) 2012 Juan Pablo Carbajal <car...@if...> ## Modified: trunk/octave-forge/main/miscellaneous/inst/match.m =================================================================== --- trunk/octave-forge/main/miscellaneous/inst/match.m 2012-04-01 11:13:35 UTC (rev 10126) +++ trunk/octave-forge/main/miscellaneous/inst/match.m 2012-04-01 11:25:02 UTC (rev 10127) @@ -1,4 +1,4 @@ -## Copyright (C) 2007 Muthiah Annamalai <mut...@ma...> +## Copyright (C) 2007 Muthiah Annamalai <mut...@ut...> ## Copyright (C) 2012 Carnë Draug <car...@gm...> ## ## This program is free software; you can redistribute it and/or modify it under Modified: trunk/octave-forge/main/miscellaneous/inst/reduce.m =================================================================== --- trunk/octave-forge/main/miscellaneous/inst/reduce.m 2012-04-01 11:13:35 UTC (rev 10126) +++ trunk/octave-forge/main/miscellaneous/inst/reduce.m 2012-04-01 11:25:02 UTC (rev 10127) @@ -1,4 +1,4 @@ -## Copyright (C) 2007 Muthiah Annamalai <mut...@ma...> +## Copyright (C) 2007 Muthiah Annamalai <mut...@ut...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/signal/inst/fht.m =================================================================== --- trunk/octave-forge/main/signal/inst/fht.m 2012-04-01 11:13:35 UTC (rev 10126) +++ trunk/octave-forge/main/signal/inst/fht.m 2012-04-01 11:25:02 UTC (rev 10127) @@ -1,4 +1,4 @@ -## Copyright (C) 2008 Muthiah Annamalai <gnu...@us...> +## Copyright (C) 2008 Muthiah Annamalai <mut...@ut...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/signal/inst/ifht.m =================================================================== --- trunk/octave-forge/main/signal/inst/ifht.m 2012-04-01 11:13:35 UTC (rev 10126) +++ trunk/octave-forge/main/signal/inst/ifht.m 2012-04-01 11:25:02 UTC (rev 10127) @@ -1,4 +1,4 @@ -## Copyright (C) 2008 Muthiah Annamalai <gnu...@us...> +## Copyright (C) 2008 Muthiah Annamalai <mut...@ut...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/signal/inst/sampled2continuous.m =================================================================== --- trunk/octave-forge/main/signal/inst/sampled2continuous.m 2012-04-01 11:13:35 UTC (rev 10126) +++ trunk/octave-forge/main/signal/inst/sampled2continuous.m 2012-04-01 11:25:02 UTC (rev 10127) @@ -1,4 +1,4 @@ -## Copyright (C) 2009 Muthiah Annamalai <mut...@gm...> +## Copyright (C) 2009 Muthiah Annamalai <mut...@ut...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/zenity/inst/zenity_scale.m =================================================================== --- trunk/octave-forge/main/zenity/inst/zenity_scale.m 2012-04-01 11:13:35 UTC (rev 10126) +++ trunk/octave-forge/main/zenity/inst/zenity_scale.m 2012-04-01 11:25:02 UTC (rev 10127) @@ -1,4 +1,4 @@ -## Copyright (C) 2006 Muthiah Annamalai <mut...@gm...> +## Copyright (C) 2006 Muthiah Annamalai <mut...@ut...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <car...@us...> - 2012-04-13 11:15:41
|
Revision: 10210 http://octave.svn.sourceforge.net/octave/?rev=10210&view=rev Author: carandraug Date: 2012-04-13 11:15:28 +0000 (Fri, 13 Apr 2012) Log Message: ----------- maint: update e-mail address of Etienne Grossmann Modified Paths: -------------- trunk/octave-forge/main/image/inst/bwborder.m trunk/octave-forge/main/linear-algebra/inst/rotparams.m trunk/octave-forge/main/linear-algebra/inst/rotv.m trunk/octave-forge/main/miscellaneous/inst/nze.m trunk/octave-forge/main/optim/inst/d2_min.m trunk/octave-forge/main/optim/inst/nelder_mead_min.m trunk/octave-forge/main/optim/inst/test_d2_min_1.m trunk/octave-forge/main/optim/inst/test_d2_min_2.m trunk/octave-forge/main/optim/inst/test_d2_min_3.m trunk/octave-forge/main/optim/inst/test_fminunc_1.m trunk/octave-forge/main/optim/inst/test_min_1.m trunk/octave-forge/main/optim/inst/test_min_2.m trunk/octave-forge/main/optim/inst/test_min_3.m trunk/octave-forge/main/optim/inst/test_min_4.m trunk/octave-forge/main/optim/inst/test_minimize_1.m trunk/octave-forge/main/optim/inst/test_nelder_mead_min_1.m trunk/octave-forge/main/optim/inst/test_nelder_mead_min_2.m trunk/octave-forge/main/struct/DESCRIPTION trunk/octave-forge/main/struct/inst/getfields.m trunk/octave-forge/main/struct/inst/setfields.m trunk/octave-forge/main/struct/inst/tars.m trunk/octave-forge/main/struct/inst/test_struct.m trunk/octave-forge/main/vrml/DESCRIPTION trunk/octave-forge/main/vrml/inst/best_dir.m trunk/octave-forge/main/vrml/inst/best_dir_cov.m trunk/octave-forge/main/vrml/inst/bound_convex.m trunk/octave-forge/main/vrml/inst/checker_color.m trunk/octave-forge/main/vrml/inst/proplan.m trunk/octave-forge/main/vrml/inst/save_vrml.m trunk/octave-forge/main/vrml/inst/test_moving_surf.m trunk/octave-forge/main/vrml/inst/test_vmesh.m trunk/octave-forge/main/vrml/inst/test_vrml_faces.m trunk/octave-forge/main/vrml/inst/vmesh.m trunk/octave-forge/main/vrml/inst/vrml_Background.m trunk/octave-forge/main/vrml/inst/vrml_Box.m trunk/octave-forge/main/vrml/inst/vrml_DirectionalLight.m trunk/octave-forge/main/vrml/inst/vrml_PointLight.m trunk/octave-forge/main/vrml/inst/vrml_ROUTE.m trunk/octave-forge/main/vrml/inst/vrml_Sphere.m trunk/octave-forge/main/vrml/inst/vrml_TimeSensor.m trunk/octave-forge/main/vrml/inst/vrml_Viewpoint.m trunk/octave-forge/main/vrml/inst/vrml_anim.m trunk/octave-forge/main/vrml/inst/vrml_arrow.m trunk/octave-forge/main/vrml/inst/vrml_browse.m trunk/octave-forge/main/vrml/inst/vrml_cyl.m trunk/octave-forge/main/vrml/inst/vrml_demo_tutorial_1.m trunk/octave-forge/main/vrml/inst/vrml_demo_tutorial_2.m trunk/octave-forge/main/vrml/inst/vrml_demo_tutorial_3.m trunk/octave-forge/main/vrml/inst/vrml_demo_tutorial_4.m trunk/octave-forge/main/vrml/inst/vrml_ellipsoid.m trunk/octave-forge/main/vrml/inst/vrml_faces.m trunk/octave-forge/main/vrml/inst/vrml_flatten.m trunk/octave-forge/main/vrml/inst/vrml_frame.m trunk/octave-forge/main/vrml/inst/vrml_group.m trunk/octave-forge/main/vrml/inst/vrml_interp.m trunk/octave-forge/main/vrml/inst/vrml_kill.m trunk/octave-forge/main/vrml/inst/vrml_lines.m trunk/octave-forge/main/vrml/inst/vrml_material.m trunk/octave-forge/main/vrml/inst/vrml_newname.m trunk/octave-forge/main/vrml/inst/vrml_parallelepiped.m trunk/octave-forge/main/vrml/inst/vrml_parallelogram.m trunk/octave-forge/main/vrml/inst/vrml_points.m trunk/octave-forge/main/vrml/inst/vrml_surf.m trunk/octave-forge/main/vrml/inst/vrml_text.m trunk/octave-forge/main/vrml/inst/vrml_thick_surf.m trunk/octave-forge/main/vrml/inst/vrml_transfo.m Modified: trunk/octave-forge/main/image/inst/bwborder.m =================================================================== --- trunk/octave-forge/main/image/inst/bwborder.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/image/inst/bwborder.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -23,7 +23,7 @@ ## neighbor that is not set. ## @end deftypefn -## Author: Etienne Grossmann <et...@cs...> +## Author: Etienne Grossmann <et...@is...> ## Last modified: January 2000 function b = bwborder(im) Modified: trunk/octave-forge/main/linear-algebra/inst/rotparams.m =================================================================== --- trunk/octave-forge/main/linear-algebra/inst/rotparams.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/linear-algebra/inst/rotparams.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it ## under the terms of the GNU General Public License as published by the Modified: trunk/octave-forge/main/linear-algebra/inst/rotv.m =================================================================== --- trunk/octave-forge/main/linear-algebra/inst/rotv.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/linear-algebra/inst/rotv.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it ## under the terms of the GNU General Public License as published by the Modified: trunk/octave-forge/main/miscellaneous/inst/nze.m =================================================================== --- trunk/octave-forge/main/miscellaneous/inst/nze.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/miscellaneous/inst/nze.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -19,7 +19,7 @@ ## Optionally, returns also linear indices. ## @end deftypefn -## Author: Etienne Grossmann <et...@cs...> +## Author: Etienne Grossmann <et...@is...> ## Author: Jaroslav Hajek <hi...@gm...> function [y, f] = nze (x) Modified: trunk/octave-forge/main/optim/inst/d2_min.m =================================================================== --- trunk/octave-forge/main/optim/inst/d2_min.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/optim/inst/d2_min.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/optim/inst/nelder_mead_min.m =================================================================== --- trunk/octave-forge/main/optim/inst/nelder_mead_min.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/optim/inst/nelder_mead_min.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002-2008 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002-2008 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/optim/inst/test_d2_min_1.m =================================================================== --- trunk/octave-forge/main/optim/inst/test_d2_min_1.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/optim/inst/test_d2_min_1.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/optim/inst/test_d2_min_2.m =================================================================== --- trunk/octave-forge/main/optim/inst/test_d2_min_2.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/optim/inst/test_d2_min_2.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/optim/inst/test_d2_min_3.m =================================================================== --- trunk/octave-forge/main/optim/inst/test_d2_min_3.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/optim/inst/test_d2_min_3.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/optim/inst/test_fminunc_1.m =================================================================== --- trunk/octave-forge/main/optim/inst/test_fminunc_1.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/optim/inst/test_fminunc_1.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/optim/inst/test_min_1.m =================================================================== --- trunk/octave-forge/main/optim/inst/test_min_1.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/optim/inst/test_min_1.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## Copyright (C) 2004 Michael Creel <mic...@ua...> ## ## This program is free software; you can redistribute it and/or modify it under Modified: trunk/octave-forge/main/optim/inst/test_min_2.m =================================================================== --- trunk/octave-forge/main/optim/inst/test_min_2.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/optim/inst/test_min_2.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## Copyright (C) 2004 Michael Creel <mic...@ua...> ## ## This program is free software; you can redistribute it and/or modify it under Modified: trunk/octave-forge/main/optim/inst/test_min_3.m =================================================================== --- trunk/octave-forge/main/optim/inst/test_min_3.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/optim/inst/test_min_3.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## Copyright (C) 2004 Michael Creel <mic...@ua...> ## ## This program is free software; you can redistribute it and/or modify it under Modified: trunk/octave-forge/main/optim/inst/test_min_4.m =================================================================== --- trunk/octave-forge/main/optim/inst/test_min_4.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/optim/inst/test_min_4.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/optim/inst/test_minimize_1.m =================================================================== --- trunk/octave-forge/main/optim/inst/test_minimize_1.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/optim/inst/test_minimize_1.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/optim/inst/test_nelder_mead_min_1.m =================================================================== --- trunk/octave-forge/main/optim/inst/test_nelder_mead_min_1.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/optim/inst/test_nelder_mead_min_1.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/optim/inst/test_nelder_mead_min_2.m =================================================================== --- trunk/octave-forge/main/optim/inst/test_nelder_mead_min_2.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/optim/inst/test_nelder_mead_min_2.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/struct/DESCRIPTION =================================================================== --- trunk/octave-forge/main/struct/DESCRIPTION 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/struct/DESCRIPTION 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,7 +1,7 @@ Name: Struct Version: 1.0.10 Date: 2012-03-25 -Author: Etienne Grossmann <et...@cs...>, Olaf Till <i7...@t-...> +Author: Etienne Grossmann <et...@is...>, Olaf Till <i7...@t-...> Maintainer: Olaf Till <i7...@t-...> Title: Structure Handling. Description: Additional Structure manipulations functions. Modified: trunk/octave-forge/main/struct/inst/getfields.m =================================================================== --- trunk/octave-forge/main/struct/inst/getfields.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/struct/inst/getfields.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2000 Etienne Grossmann <et...@cs...> +## Copyright (C) 2000 Etienne Grossmann <et...@is...> ## Copyright (C) 2012 Olaf Till <i7...@t-...> ## ## This program is free software; you can redistribute it and/or modify it under Modified: trunk/octave-forge/main/struct/inst/setfields.m =================================================================== --- trunk/octave-forge/main/struct/inst/setfields.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/struct/inst/setfields.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2000 Etienne Grossmann <et...@cs...> +## Copyright (C) 2000 Etienne Grossmann <et...@is...> ## Copyright (C) 2000 Paul Kienzle <pki...@us...> ## Copyright (C) 2012 Olaf Till <i7...@t-...> ## Modified: trunk/octave-forge/main/struct/inst/tars.m =================================================================== --- trunk/octave-forge/main/struct/inst/tars.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/struct/inst/tars.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2000 Etienne Grossmann <et...@cs...> +## Copyright (C) 2000 Etienne Grossmann <et...@is...> ## Copyright (C) 2012 Olaf Till <i7...@t-...> ## ## This program is free software; you can redistribute it and/or modify it under Modified: trunk/octave-forge/main/struct/inst/test_struct.m =================================================================== --- trunk/octave-forge/main/struct/inst/test_struct.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/struct/inst/test_struct.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2000 Etienne Grossmann <et...@cs...> +## Copyright (C) 2000 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/DESCRIPTION =================================================================== --- trunk/octave-forge/main/vrml/DESCRIPTION 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/DESCRIPTION 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,8 +1,8 @@ Name: Vrml Version: 1.0.12 Date: 2010-04-11 -Author: Etienne Grossmann <et...@cs...> -Maintainer: Etienne Grossmann <et...@cs...> +Author: Etienne Grossmann <et...@is...> +Maintainer: Etienne Grossmann <et...@is...> Title: VRML. Description: 3D graphics using VRML Depends: octave (>= 2.9.7), miscellaneous, struct, statistics Modified: trunk/octave-forge/main/vrml/inst/best_dir.m =================================================================== --- trunk/octave-forge/main/vrml/inst/best_dir.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/best_dir.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/best_dir_cov.m =================================================================== --- trunk/octave-forge/main/vrml/inst/best_dir_cov.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/best_dir_cov.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/bound_convex.m =================================================================== --- trunk/octave-forge/main/vrml/inst/bound_convex.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/bound_convex.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/checker_color.m =================================================================== --- trunk/octave-forge/main/vrml/inst/checker_color.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/checker_color.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2010 Etienne Grossmann <et...@cs...> +## Copyright (C) 2010 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/proplan.m =================================================================== --- trunk/octave-forge/main/vrml/inst/proplan.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/proplan.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/save_vrml.m =================================================================== --- trunk/octave-forge/main/vrml/inst/save_vrml.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/save_vrml.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/test_moving_surf.m =================================================================== --- trunk/octave-forge/main/vrml/inst/test_moving_surf.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/test_moving_surf.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2005 Etienne Grossmann <et...@cs...> +## Copyright (C) 2005 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/test_vmesh.m =================================================================== --- trunk/octave-forge/main/vrml/inst/test_vmesh.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/test_vmesh.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/test_vrml_faces.m =================================================================== --- trunk/octave-forge/main/vrml/inst/test_vrml_faces.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/test_vrml_faces.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vmesh.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vmesh.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vmesh.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002-2009 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002-2009 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_Background.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_Background.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_Background.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_Box.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_Box.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_Box.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2010 Etienne Grossmann <et...@cs...> +## Copyright (C) 2010 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_DirectionalLight.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_DirectionalLight.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_DirectionalLight.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2005 Etienne Grossmann <et...@cs...> +## Copyright (C) 2005 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_PointLight.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_PointLight.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_PointLight.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_ROUTE.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_ROUTE.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_ROUTE.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2005 Etienne Grossmann <et...@cs...> +## Copyright (C) 2005 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_Sphere.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_Sphere.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_Sphere.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2010 Etienne Grossmann <et...@cs...> +## Copyright (C) 2010 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_TimeSensor.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_TimeSensor.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_TimeSensor.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2005 Etienne Grossmann <et...@cs...> +## Copyright (C) 2005 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_Viewpoint.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_Viewpoint.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_Viewpoint.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2010 Etienne Grossmann <et...@cs...> +## Copyright (C) 2010 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_anim.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_anim.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_anim.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2005 Etienne Grossmann <et...@cs...> +## Copyright (C) 2005 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_arrow.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_arrow.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_arrow.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_browse.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_browse.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_browse.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_cyl.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_cyl.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_cyl.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_demo_tutorial_1.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_demo_tutorial_1.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_demo_tutorial_1.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002-2009 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002-2009 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_demo_tutorial_2.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_demo_tutorial_2.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_demo_tutorial_2.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_demo_tutorial_3.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_demo_tutorial_3.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_demo_tutorial_3.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_demo_tutorial_4.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_demo_tutorial_4.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_demo_tutorial_4.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002-2009 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002-2009 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_ellipsoid.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_ellipsoid.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_ellipsoid.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_faces.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_faces.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_faces.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_flatten.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_flatten.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_flatten.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_frame.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_frame.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_frame.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_group.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_group.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_group.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_interp.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_interp.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_interp.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2005 Etienne Grossmann <et...@cs...> +## Copyright (C) 2005 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_kill.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_kill.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_kill.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_lines.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_lines.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_lines.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_material.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_material.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_material.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_newname.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_newname.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_newname.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2005 Etienne Grossmann <et...@cs...> +## Copyright (C) 2005 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_parallelepiped.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_parallelepiped.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_parallelepiped.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2007-2010 Etienne Grossmann <et...@cs...> +## Copyright (C) 2007-2010 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_parallelogram.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_parallelogram.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_parallelogram.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2003 Etienne Grossmann <et...@cs...> +## Copyright (C) 2003 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_points.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_points.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_points.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_surf.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_surf.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_surf.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002-2009 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002-2009 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_text.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_text.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_text.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_thick_surf.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_thick_surf.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_thick_surf.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software Modified: trunk/octave-forge/main/vrml/inst/vrml_transfo.m =================================================================== --- trunk/octave-forge/main/vrml/inst/vrml_transfo.m 2012-04-13 10:40:59 UTC (rev 10209) +++ trunk/octave-forge/main/vrml/inst/vrml_transfo.m 2012-04-13 11:15:28 UTC (rev 10210) @@ -1,4 +1,4 @@ -## Copyright (C) 2002 Etienne Grossmann <et...@cs...> +## Copyright (C) 2002 Etienne Grossmann <et...@is...> ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |