changeset 12302:5dd749dcc83f octave-forge

fuzzy-logic-toolkit: moved to a separate mercurial repo.
author carandraug
date Thu, 09 Jan 2014 12:09:07 +0000
parents 3b0758f55743
children 9fd3cfe65ce9
files main/fuzzy-logic-toolkit/COPYING main/fuzzy-logic-toolkit/ChangeLog main/fuzzy-logic-toolkit/DESCRIPTION main/fuzzy-logic-toolkit/INDEX main/fuzzy-logic-toolkit/NEWS main/fuzzy-logic-toolkit/inst/addmf.m main/fuzzy-logic-toolkit/inst/addrule.m main/fuzzy-logic-toolkit/inst/addvar.m main/fuzzy-logic-toolkit/inst/algebraic_product.m main/fuzzy-logic-toolkit/inst/algebraic_sum.m main/fuzzy-logic-toolkit/inst/bounded_difference.m main/fuzzy-logic-toolkit/inst/bounded_sum.m main/fuzzy-logic-toolkit/inst/cubic_approx_demo.m main/fuzzy-logic-toolkit/inst/cubic_approximator.fis main/fuzzy-logic-toolkit/inst/defuzz.m main/fuzzy-logic-toolkit/inst/drastic_product.m main/fuzzy-logic-toolkit/inst/drastic_sum.m main/fuzzy-logic-toolkit/inst/dsigmf.m main/fuzzy-logic-toolkit/inst/einstein_product.m main/fuzzy-logic-toolkit/inst/einstein_sum.m main/fuzzy-logic-toolkit/inst/evalfis.m main/fuzzy-logic-toolkit/inst/evalmf.m main/fuzzy-logic-toolkit/inst/fcm.m main/fuzzy-logic-toolkit/inst/gauss2mf.m main/fuzzy-logic-toolkit/inst/gaussmf.m main/fuzzy-logic-toolkit/inst/gbellmf.m main/fuzzy-logic-toolkit/inst/gensurf.m main/fuzzy-logic-toolkit/inst/getfis.m main/fuzzy-logic-toolkit/inst/gustafson_kessel.m main/fuzzy-logic-toolkit/inst/hamacher_product.m main/fuzzy-logic-toolkit/inst/hamacher_sum.m main/fuzzy-logic-toolkit/inst/heart_disease_demo_1.m main/fuzzy-logic-toolkit/inst/heart_disease_demo_2.m main/fuzzy-logic-toolkit/inst/heart_disease_risk.fis main/fuzzy-logic-toolkit/inst/investment_portfolio.fis main/fuzzy-logic-toolkit/inst/investment_portfolio_demo.m main/fuzzy-logic-toolkit/inst/linear_tip_calculator.fis main/fuzzy-logic-toolkit/inst/linear_tip_demo.m main/fuzzy-logic-toolkit/inst/mamdani_tip_calculator.fis main/fuzzy-logic-toolkit/inst/mamdani_tip_demo.m main/fuzzy-logic-toolkit/inst/newfis.m main/fuzzy-logic-toolkit/inst/partition_coeff.m main/fuzzy-logic-toolkit/inst/partition_entropy.m main/fuzzy-logic-toolkit/inst/pimf.m main/fuzzy-logic-toolkit/inst/plotmf.m main/fuzzy-logic-toolkit/inst/private/aggregate_output_mamdani.m main/fuzzy-logic-toolkit/inst/private/aggregate_output_sugeno.m main/fuzzy-logic-toolkit/inst/private/are_bounds.m main/fuzzy-logic-toolkit/inst/private/are_input_indices.m main/fuzzy-logic-toolkit/inst/private/are_mf_params.m main/fuzzy-logic-toolkit/inst/private/defuzzify_output_mamdani.m main/fuzzy-logic-toolkit/inst/private/defuzzify_output_sugeno.m main/fuzzy-logic-toolkit/inst/private/eval_firing_strength.m main/fuzzy-logic-toolkit/inst/private/eval_rules_mamdani.m main/fuzzy-logic-toolkit/inst/private/eval_rules_sugeno.m main/fuzzy-logic-toolkit/inst/private/evalfis_private.m main/fuzzy-logic-toolkit/inst/private/evalmf_private.m main/fuzzy-logic-toolkit/inst/private/fcm_compute_convergence_criterion.m main/fuzzy-logic-toolkit/inst/private/fcm_compute_objective_fcn.m main/fuzzy-logic-toolkit/inst/private/fcm_init_prototype.m main/fuzzy-logic-toolkit/inst/private/fcm_update_cluster_centers.m main/fuzzy-logic-toolkit/inst/private/fcm_update_membership_fcn.m main/fuzzy-logic-toolkit/inst/private/fuzzify_input.m main/fuzzy-logic-toolkit/inst/private/get_mf_index_and_hedge.m main/fuzzy-logic-toolkit/inst/private/is_builtin_language.m main/fuzzy-logic-toolkit/inst/private/is_domain.m main/fuzzy-logic-toolkit/inst/private/is_fis.m main/fuzzy-logic-toolkit/inst/private/is_format.m main/fuzzy-logic-toolkit/inst/private/is_grid_spec.m main/fuzzy-logic-toolkit/inst/private/is_input_matrix.m main/fuzzy-logic-toolkit/inst/private/is_int.m main/fuzzy-logic-toolkit/inst/private/is_io_struct.m main/fuzzy-logic-toolkit/inst/private/is_io_vector.m main/fuzzy-logic-toolkit/inst/private/is_mf_index.m main/fuzzy-logic-toolkit/inst/private/is_mf_struct.m main/fuzzy-logic-toolkit/inst/private/is_mf_vector.m main/fuzzy-logic-toolkit/inst/private/is_output_index.m main/fuzzy-logic-toolkit/inst/private/is_pos_int.m main/fuzzy-logic-toolkit/inst/private/is_real.m main/fuzzy-logic-toolkit/inst/private/is_real_matrix.m main/fuzzy-logic-toolkit/inst/private/is_ref_input.m main/fuzzy-logic-toolkit/inst/private/is_row_vector.m main/fuzzy-logic-toolkit/inst/private/is_rule_index_list.m main/fuzzy-logic-toolkit/inst/private/is_rule_struct.m main/fuzzy-logic-toolkit/inst/private/is_rule_vector.m main/fuzzy-logic-toolkit/inst/private/is_string.m main/fuzzy-logic-toolkit/inst/private/is_var_index.m main/fuzzy-logic-toolkit/inst/private/probor.m main/fuzzy-logic-toolkit/inst/private/square_distance_matrix.m main/fuzzy-logic-toolkit/inst/private/strsplit.m main/fuzzy-logic-toolkit/inst/psigmf.m main/fuzzy-logic-toolkit/inst/readfis.m main/fuzzy-logic-toolkit/inst/rmmf.m main/fuzzy-logic-toolkit/inst/rmvar.m main/fuzzy-logic-toolkit/inst/setfis.m main/fuzzy-logic-toolkit/inst/showfis.m main/fuzzy-logic-toolkit/inst/showrule.m main/fuzzy-logic-toolkit/inst/sigmf.m main/fuzzy-logic-toolkit/inst/smf.m main/fuzzy-logic-toolkit/inst/sugeno_tip_calculator.fis main/fuzzy-logic-toolkit/inst/sugeno_tip_demo.m main/fuzzy-logic-toolkit/inst/trapmf.m main/fuzzy-logic-toolkit/inst/trimf.m main/fuzzy-logic-toolkit/inst/writefis.m main/fuzzy-logic-toolkit/inst/xie_beni_index.m main/fuzzy-logic-toolkit/inst/zmf.m
diffstat 106 files changed, 0 insertions(+), 12712 deletions(-) [+]
line wrap: on
line diff
--- a/main/fuzzy-logic-toolkit/COPYING	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,674 +0,0 @@
-                    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>.
--- a/main/fuzzy-logic-toolkit/ChangeLog	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,262 +0,0 @@
-2012-10-02 L. Markowsky <lmarkov@users.sourceforge.net>
-
-  * Version 0.4.2 released.
-  * ChangeLog: Updated file.
-  * DESCRIPTION: Updated file.
-  * NEWS: Updated file.
-  * inst/*.m: Some trivial changes to line length and comments.
-  * inst/fcm.m: Edited to reflect the five renamed private functions.
-      Edited the demos to calculate and print the three cluster validity
-      indices. Edited comment.
-  * inst/gustafson_kessel.m: Edited to reflect the five renamed private
-      functions. Edited the demos to calculate and print the three
-      cluster validity indices. Edited comment.
-  * inst/partition_coeff.m: Demos were merged with the demos in fcm.m
-      and gustafson_kessel.m and then removed. Edited comment.
-  * inst/partition_entropy.m: Demos were merged with the demos in fcm.m
-      and gustafson_kessel.m and then removed. Edited comment.
-  * inst/xie_beni_index.m: Demos were merged with the demos in fcm.m
-      and gustafson_kessel.m and then removed. Edited comment.
-  * inst/private/evalmf_private.m: Edited comment.
-  * inst/private/is_builtin_language.m: Edited comment.
-  * inst/private/fcm_compute_convergence_criterion.m: Edited and renamed
-      compute_cluster_convergence.m.
-  * inst/private/fcm_compute_objective_fcn.m: Edited and renamed
-      compute_cluster_obj_fcn.m.
-  * inst/private/fcm_init_prototype.m: Edited and renamed
-      init_cluster_prototypes.m.
-  * inst/private/fcm_update_cluster_centers.m: Edited and renamed
-      update_cluster_prototypes.m.
-  * inst/private/fcm_update_membership_fcn.m: Edited and renamed
-      update_cluster_membership.m.
-  * inst/private/probor.m: Removed unused private function.
-  * Demos tested under: Fedora 17/Octave 3.6.2
-  * Demos tested under: Fedora 16/Octave 3.4.3
-  * Demos tested under: Windows 7/Octave 3.2.4
-
-2012-08-26 L. Markowsky <lmarkov@users.sourceforge.net>
-
-  * Version 0.4.1 released.
-  * ChangeLog: Updated file.
-  * COPYING: Replaced GPLv2 with GPLv3 (to fix inconsistency with source
-      files).
-  * DESCRIPTION: Updated file.
-  * INDEX: Updated file.
-  * NEWS: Updated file.
-  * inst/fcm.m: Rewrote and embedded the demos previously contained in
-      fcm_demo_1.m and fcm_demo_2.m.
-  * inst/fcm_demo_1.m: Removed script file.
-  * inst/fcm_demo_2.m: Removed script file.
-  * inst/gustafson_kessel.m: Rewrote and embedded the demos previously
-      contained in gustafson_kessel_demo_1.m and
-      gustafson_kessel_demo_2.m.
-  * inst/gustafson_kessel_demo_1.m: Removed script file.
-  * inst/gustafson_kessel_demo_2.m: Removed script file.
-  * inst/*.m: Many trivial changes to line length and copyright notices.
-  * inst/private/*.m: Many trivial changes to line length and copyright
-      notice.
-  * All demos tested under: Fedora 17/Octave 3.6.2
-
-2012-07-10 L. Markowsky <lmarkov@users.sourceforge.net>
-
-  * Version 0.4.0 released.
-  * ChangeLog: Updated file.
-  * DESCRIPTION: Updated file.
-  * INDEX: Updated file.
-  * NEWS: New file.
-  * inst/fcm.m: New file. Addition of the Fuzzy C-Means clustering
-      algorithm to the toolkit.
-  * inst/fcm_demo_1.m: New file. Addition of demo script.
-  * inst/fcm_demo_2.m: New file. Addition of demo script.
-  * inst/gustafson_kessel.m: New file. Addition of the Gustafson-Kessel
-      clustering algorithm to the toolkit.
-  * inst/gustafson_kessel_demo_1.m: New file. Addition of demo script.
-  * inst/gustafson_kessel_demo_2.m: New file. Addition of demo script.
-  * inst/partition_coeff.m: New file. Addition of a measure of cluster
-      validity.
-  * inst/partition_entropy.m: New file. Addition of a measure of cluster
-      validity.
-  * inst/xie_beni_index.m: New file. Addition of a measure of cluster
-      validity.
-  * inst/private/fcm_compute_convergence_criterion.m: New file.
-  * inst/private/fcm_compute_objective_fcn.m: New file.
-  * inst/private/fcm_init_prototype.m: New file.
-  * inst/private/fcm_update_cluster_centers.m: New file.
-  * inst/private/fcm_update_membership_fcn.m: New file.
-  * inst/private/square_dist_matrix.m: New file.
-  * New demos tested under: Fedora 16/Octave 3.4.3
-
-2011-11-12 L. Markowsky <lmarkov@users.sourceforge.net>
-
-  * Version 0.3.0 released.
-  * ChangeLog: Updated file.
-  * DESCRIPTION: Updated file.
-  * inst/*.m: Many trivial changes to comments and spacing in parameter
-      lists.
-  * inst/addrule.m: Edited comment to describe use with hedges.
-  * inst/algebraic_product.m: New file.
-  * inst/algebraic_sum.m: New file.
-  * inst/bounded_difference.m: New file.
-  * inst/bounded_sum.m: New file.
-  * inst/cubic_approx_demo.m: Added plot of output membership functions.
-  * inst/cubic_approximator.fis: Corrected range for FIS output.
-  * inst/drastic_product.m: New file.
-  * inst/drastic_sum.m: New file.
-  * inst/einstein_product.m: New file.
-  * inst/einstein_sum.m: New file.
-  * inst/evalmf.m: Edited to add custom and new built-in hedge support.
-  * inst/hamacher_product.m: New file.
-  * inst/hamacher_sum.m: New file.
-  * inst/heart_disease_demo_1.m : Edited and renamed heart_demo_1.m.
-      Edited script to demonstrate hedges and new T-norm/S-norm pairs.
-  * inst/heart_disease_demo_2.m : Renamed heart_demo_2.m.
-  * inst/investment_portfolio.fis: New file.
-  * inst/investment_portfolio_demo.m: New file.
-  * inst/plotmf.m: Edited to add support for linear output membership
-      functions and to support optional y-limit arguments.
-  * inst/readfis.m: Edited to add custom and built-in hedge support.
-  * inst/showrule.m: Edited to add Chinese, Russian, and Spanish to the
-      built-in languages and to add custom language support. Also edited
-      to add custom hedge support and to implement the hedges
-      "somewhat", "very", "extremely", and "very very".
-  * inst/sugeno_tip_calculator.fis: Edited to demonstrate hedges.
-  * inst/sugeno_tip_demo.m: Edited to demonstrate hedges.
-  * inst/writefis.m: Edited comment to note that zenity is required by
-      the GUI. Code edited to support hedges.
-  * inst/private/*.m: Many trivial changes to spacing in parameter
-      lists.
-  * inst/private/aggregate_output_mamdani.m: Edited to support new
-      built-in T-norm/S-norm pairs when used as the FIS aggregation
-      method.
-  * inst/private/eval_firing_strength.m: Edited to support new built-in
-      T-norm/S-norm pairs when used as the FIS 'and' or 'or' method.
-  * inst/private/evalmf_private.m: Edited to evaluate linear membership
-      functions and to add custom and new built-in hedge support.
-  * inst/private/eval_rules_mamdani.m: Edited to add custom and built-in
-      hedge support.
-  * inst/private/eval_rules_sugeno.m: Edited to add custom and built-in
-      hedge support.
-  * inst/private/fuzzify_input.m: Edited to add custom and built-in
-      hedge support.
-  * inst/private/get_mf_index_and_hedge.m: New file to add hedge
-      support.
-  * inst/private/is_real.m: Improved test.
-  * inst/private/is_real_matrix.m: Improved test.
-  * inst/private/is_builtin_language.m: Renamed is_language.m. Edited
-      test to add 'chinese', 'mandarin', 'pinyin', 'russian', 'pycckii',
-      'russkij', 'spanish', 'french', and 'german' to the strings
-      specifying built-in languages.
-  * Demos tested under: Fedora 15/Octave 3.4.2
-  * Demos tested under: Windows 7/Octave 3.2.4
-
-2011-09-01 L. Markowsky <lmarkov@users.sourceforge.net>
-
-  * Version 0.2.4 released.
-  * ChangeLog: Updated file.
-  * DESCRIPTION: Updated file.
-  * INDEX: Updated file.
-  * inst/*.m: Numerous trivial changes.
-  * inst/addmf_demo.m: Merged into addmf.m as an embedded demo
-      and then removed.
-  * inst/addvar_demo.m: Merged into addvar.m as an embedded demo
-      and then removed.
-  * inst/showrule_demo.m: Merged into showrule.m as four embedded
-      demos and then removed.
-  * inst/gensurf.m: Edited to permit scalar grids argument.
-  * inst/getfis.m: Edited to implement "version" field in the FIS.
-  * inst/newfis.m: Edited to implement "version" field in the FIS.
-  * inst/readfis.m: Edited to implement "version" field in the FIS
-      and to handle comments, whitespace, and variable number of
-      membership function parameters.
-  * inst/setfis.m: Edited to implement "version" field in the FIS.
-      Fixed several bugs.
-  * inst/writefis.m: Edited to implement "version" field in the FIS.
-  * inst/cubic_approximator.fis: Renamed cubic-approximator.fis.
-  * inst/heart_disease_risk.fis: Renamed heart-disease-risk.fis.
-      Added comments and whitespace.
-  * inst/linear_tip_calculator.fis: Renamed linear-tip-calculator.fis.
-  * inst/mamdani_tip_calculator.fis: Renamed mamdani-tip-calculator.fis
-      and edited to have multiple outputs.
-  * inst/mamdani_tip_demo.m: Edited to demonstrate multiple outputs.
-  * inst/sugeno_tip_calculator.fis: Renamed sugeno-tip-calculator.fis
-      and edited to have multiple outputs.
-  * inst/sugeno_tip_demo.m: Edited to demonstrate multiple outputs.
-  * inst/private/defuzzify_output_mamdani.m: Bug fix (to handle an FIS
-      with multiple outputs).
-  * inst/private/defuzzify_output_sugeno.m: Bug fix (to handle an FIS
-      with multiple outputs).
-  * inst/private/eval_firing_strength.m: Bug fix.
-  * inst/private/eval_rules_mamdani.m: Bug fix (to handle an FIS with
-      multiple outputs).
-  * inst/private/eval_rules_sugeno.m: Bug fix (to handle an FIS with
-      multiple outputs).
-  * inst/private/is_grid_spec.m: Edited test to make more efficient.
-  * inst/private/is_real.m: New file.
-  * Demos tested under: Fedora 15/Octave 3.4.2
-  * Demos tested under: Fedora 15/Octave 3.2.4
-  * Demos tested under: Windows 7/Octave 3.2.4
-
-2011-07-19 L. Markowsky <lmarkov@users.sourceforge.net>
-
-  * Version 0.2.3 released.
-  * ChangeLog: Updated file.
-  * DESCRIPTION: Updated file.
-  * INDEX: Updated file.
-  * inst/*.m: Edited numerous comments and texinfo comment blocks.
-  * inst/private/*.m: Edited numerous comments and texinfo comment
-      blocks.
-  * inst/cubic_approx_demo.m: New file.
-  * inst/cubic-approximator.fis: New file.
-  * inst/linear-tip-calculator.fis: New file.
-  * inst/linear_tip_demo.m: New file.
-  * inst/heart_demo_1.m: Renamed commandline_demo.m.
-  * inst/heart_demo_2.m: Renamed heart_demo.m.
-  * inst/mamdani_tip_demo.m: Renamed mamdani_demo.m.
-  * inst/sugeno_tip_demo.m: Renamed tipping_demo.m.
-  * inst/gensurf.m: Edited to handle 2-dimensional plots.
-  * inst/private/eval_rules_sugeno.m: Edited to handle linear output
-      membership functions.
-  * Demos tested under: Fedora 15/Octave 3.4.0
-  * Demos tested under: Fedora 15/Octave 3.2.4
-
-2011-06-21 L. Markowsky <lmarkov@users.sourceforge.net>
-
-  * Version 0.2.2 released.
-  * ChangeLog: New file.
-  * DESCRIPTION: Updated file.
-  * inst/addmf.m: Modified to workaround a bug in Octave 3.4.0.
-  * inst/addrule.m: Modified to workaround a bug in Octave 3.4.0.
-  * inst/addvar.m: Modified to workaround a bug in Octave 3.4.0.
-  * inst/gaussmf.m: Modified demo and texinfo comment string.
-  * inst/getfis.m: Modified to workaround a bug in Octave 3.4.0.
-  * inst/readfis.m: Modified to workaround a bug in Octave 3.4.0.
-  * inst/private/aggregate_output_mamdani.m: Modified to workaround
-      a bug in Octave 3.4.0.
-  * inst/private/evalmf_private.m: Modified to workaround a bug in
-      Octave 3.4.0.
-  * Demos tested under: Fedora 15/Octave 3.4.0
-  * Demos tested under: Fedora 15/Octave 3.2.4
-
-2011-06-08 L. Markowsky <lmarkov@users.sourceforge.net>
-
-  * Version 0.2.1 released.
-  * Initial release on Octave-Forge.
-  * Merged membership function demos into related function files.
-  * Created documentation for Octave-Forge website.
-  * DESCRIPTION: Updated file.
-  * Demos tested under: Fedora 13/Octave 3.2.4
-
-2011-05-25 L. Markowsky <lmarkov@users.sourceforge.net>
-
-  * Version 0.2 released.
-  * Moved tests/demos/* and tests/fis/* to inst/*.
-  * Changed indentation and spacing to conform to Octave style.
-  * Converted comments to texinfo.
-  * DESCRIPTION: Update file.
-  * Demos tested under: Fedora 13/Octave 3.2.4
-
-2011-04-19 L. Markowsky <lmarkov@users.sourceforge.net>
-
-  * Version 0.1 released.
-  * Initial release on SourceForge.
-  * Demos tested under: Fedora 13/Octave 3.2.4
--- a/main/fuzzy-logic-toolkit/DESCRIPTION	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-Name: fuzzy-logic-toolkit
-Version: 0.4.2
-Date: 2012-10-02
-Author: L. Markowsky <lmarkov@users.sourceforge.net>
-Maintainer: L. Markowsky <lmarkov@users.sourceforge.net>
-Title: Octave Fuzzy Logic Toolkit
-Description: A mostly MATLAB-compatible fuzzy logic toolkit for Octave.
-Depends: octave (>= 3.2.4)
-Autoload: no
-License: GPLv3+
-Url: http://octave.sf.net
- http://sf.net/projects/octave-fuzzy
--- a/main/fuzzy-logic-toolkit/INDEX	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-fuzzy-logic-toolkit >> Octave Fuzzy Logic Toolkit
-
-Evaluation
- defuzz
- evalfis
- evalmf
-
-Plotting
- gensurf
- plotmf
-
-File Input/Output of Fuzzy Inference Systems
- readfis
- writefis
-
-Command-Line Creation and Modification of Fuzzy Inference Systems
- addmf
- addrule
- addvar
- newfis
- rmmf
- rmvar
- setfis
-
-Text Representation of Fuzzy Inference Systems
- getfis
- showfis
- showrule
-
-Membership Functions
- dsigmf
- gauss2mf
- gaussmf
- gbellmf
- pimf
- psigmf
- sigmf
- smf
- trapmf
- trimf
- zmf
-
-T-Norms and S-Norms (in addition to max/min)
- algebraic_product
- algebraic_sum
- bounded_difference
- bounded_sum
- drastic_product
- drastic_sum
- einstein_product
- einstein_sum
- hamacher_product
- hamacher_sum
-
-Complete Fuzzy Inference System Demos
- cubic_approx_demo
- heart_disease_demo_1
- heart_disease_demo_2
- investment_portfolio_demo
- linear_tip_demo
- mamdani_tip_demo
- sugeno_tip_demo
-
-Fuzzy Clustering Functions
- fcm
- gustafson_kessel
- partition_coeff
- partition_entropy
- xie_beni_index
--- a/main/fuzzy-logic-toolkit/NEWS	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-Summary of important user-visible changes for fuzzy-logic-toolkit 0.4.2:
-------------------------------------------------------------------------
-
- ** The demos embedded in partition_coeff.m, partition_entropy.m,
-    and xie_beni_index.m were merged with the embedded demos in
-    fcm.m and gustafson_kessel.m.
-
-Summary of important user-visible changes for fuzzy-logic-toolkit 0.4.1:
-------------------------------------------------------------------------
-
- ** The package is no longer automatically loaded.
-
- ** The following demo scripts were rewritten and embedded in fcm.m,
-    gustafson_kessel.m, partition_coeff.m, partition_entropy.m, and
-    xie_beni_index.m:
-
-      fcm_demo_1
-      fcm_demo_2
-      gustafson_kessel_demo_1
-      gustafson_kessel_demo_2
-
-    (The separate demo script files have been removed.)
-
-Summary of important user-visible changes for fuzzy-logic-toolkit 0.4.0:
-------------------------------------------------------------------------
-
- ** The following functions are new:
-      fcm
-      gustafson_kessel
-      partition_coeff
-      partition_entropy
-      xie_beni_index
-
- ** The following demo scripts are new:
-      fcm_demo_1
-      fcm_demo_2
-      gustafson_kessel_demo_1
-      gustafson_kessel_demo_2
--- a/main/fuzzy-logic-toolkit/inst/addmf.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,140 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{fis} =} addmf (@var{fis}, @var{in_or_out}, @var{var_index}, @var{mf_name}, @var{mf_type}, @var{mf_params})
-##
-## Add a membership function to an existing FIS 
-## structure and return the updated FIS.
-##
-## The types of the arguments are expected to be:
-## @itemize @w
-## @item @var{fis}:
-## an FIS structure
-## @item @var{in_or_out}:
-## 'input' or 'output' (case-insensitive)
-## @item @var{var_index}:
-## valid index of an FIS input/output variable
-## @item @var{mf_name}:
-## a string
-## @item @var{mf_type}:
-## a string
-## @item @var{mf_params}:
-## a vector
-## @end itemize
-##
-## If @var{mf_type} is one of the built-in membership functions, then the
-## number and values of the parameters must satisfy the membership function
-## requirements for the specified @var{mf_type}.
-##
-## Note that addmf will allow the user to add membership functions or 
-## membership function names for a given input or output variable that
-## duplicate mfs or mf names already entered.
-##
-## Also, constant and linear membership functions are not restricted to FIS
-## structure outputs or to Sugeno-type FIS structures, and the result of using
-## them for FIS inputs or Mamdani-type FIS outputs has not yet been tested.
-##
-## @noindent
-## To run the demonstration code, type @t{demo('addmf')} at the Octave prompt.
-## This demo creates two FIS input variables and associated membership functions
-## and then produces two figures showing the term sets for the two FIS inputs.
-##
-## @seealso{rmmf, setfis}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy membership
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      addmf.m
-## Note:          The demo code is based on an assignment written by
-##                Dr. Bruce Segee (University of Maine Dept. of ECE).
-## Last-Modified: 18 Aug 2012
-
-function fis = addmf (fis, in_or_out, var_index, mf_name, mf_type, ...
-                      mf_params)
-
-  ## If the caller did not supply 6 argument values with the correct
-  ## types, print an error message and halt.
-
-  if (nargin != 6)
-    puts ("Type 'help addmf' for more information.\n");
-    error ("addmf requires 6 arguments\n");
-  elseif (!is_fis (fis))
-    puts ("Type 'help addmf' for more information.\n");
-    error ("addmf's first argument must be an FIS structure\n");
-  elseif (!(is_string (in_or_out) && ...
-          ismember (tolower (in_or_out), {'input', 'output'})))
-    puts ("Type 'help addmf' for more information.\n");
-    error ("addmf's second argument must be 'input' or 'output'\n");
-  elseif (!is_var_index (fis, in_or_out, var_index))
-    puts ("Type 'help addmf' for more information.\n");
-    error ("addmf's third argument must be a variable index\n");
-  elseif (!(is_string (mf_name) && is_string (mf_type)))
-    puts ("Type 'help addmf' for more information.\n");
-    error ("addmf's fourth and fifth arguments must be strings\n");
-  elseif (!are_mf_params (mf_type, mf_params))
-    puts ("Type 'help addmf' for more information.\n");
-    error ("addmf's sixth argument must be a vector of parameters\n");
-  endif
-
-  ## Create a new membership function struct and update the
-  ## FIS structure.
-
-  new_mf = struct ('name', mf_name, 'type', mf_type, 'params', ...
-                   mf_params);
-  if (strcmp (tolower (in_or_out), 'input'))
-    if (length (fis.input(var_index).mf) == 0)
-      fis.input(var_index).mf = new_mf;
-    else
-      fis.input(var_index).mf = [fis.input(var_index).mf, new_mf];
-    endif
-  else
-    if (length (fis.output(var_index).mf) == 0)
-      fis.output(var_index).mf = new_mf;
-    else
-      fis.output(var_index).mf = [fis.output(var_index).mf, new_mf];
-    endif
-  endif
-
-endfunction
-
-%!demo
-%! ## Create new FIS.
-%! a = newfis ('Heart-Disease-Risk', 'sugeno', ...
-%!             'min', 'max', 'min', 'max', 'wtaver');
-%! 
-%! ## Add two inputs and their membership functions.
-%! a = addvar (a, 'input', 'LDL-Level', [0 300]);
-%! a = addmf (a, 'input', 1, 'Low', 'trapmf', [-1 0 90 110]);
-%! a = addmf (a, 'input', 1, 'Low-Borderline', 'trapmf', ...
-%!            [90 110 120 140]);
-%! a = addmf (a, 'input', 1, 'Borderline', 'trapmf', ...
-%!            [120 140 150 170]);
-%! a = addmf (a, 'input', 1, 'High-Borderline', 'trapmf', ...
-%!            [150 170 180 200]);
-%! a = addmf (a, 'input', 1, 'High', 'trapmf', [180 200 300 301]);
-%! 
-%! a = addvar (a, 'input', 'HDL-Level', [0 100]);
-%! a = addmf (a, 'input', 2, 'Low-HDL', 'trapmf', [-1 0 35 45]);
-%! a = addmf (a, 'input', 2, 'Moderate-HDL', 'trapmf', [35 45 55 65]);
-%! a = addmf (a, 'input', 2, 'High-HDL', 'trapmf', [55 65 100 101]);
-%! 
-%! ## Plot the input membership functions.
-%! plotmf (a, 'input', 1);
-%! plotmf (a, 'input', 2);
--- a/main/fuzzy-logic-toolkit/inst/addrule.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,129 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{fis} =} addrule (@var{fis}, @var{rule_matrix})
-##
-## Add a list of rules to an existing FIS structure and return
-## the updated FIS.
-##
-## Each row of the @var{rule_matrix} represents one rule and has the form:
-## @example
-## [in1_mf ... inM_mf out1_mf ... outN_mf weight connect]
-## @end example
-##
-## @noindent
-## where:
-##
-## @itemize @w
-## @item
-## in<i>_mf == membership function index for input i
-## @item
-## out<j>_mf == membership function index for output j
-## @item
-## weight == relative weight of the rule (0 <= weight <= 1)
-## @item
-## connect == antecedent connective (1 == and; 2 == or)
-## @end itemize
-##
-## To express:
-## @itemize @w
-## @item
-## "not" -- prepend a minus sign to the membership function index
-## @item
-## "somewhat" -- append ".05" to the membership function index
-## @item
-## "very" -- append ".20" to the membership function index
-## @item
-## "extremely" -- append ".30" to the membership function index
-## @item
-## "very very" -- append ".40" to the membership function index
-## @item
-## custom hedge -- append .xy, where x.y is the degree to which the membership
-##   value should be raised, to the membership function index
-## @end itemize
-##
-## To omit an input or output, use 0 for the membership function index.
-## The consequent connective is always "and".
-##
-## @noindent
-## For example, to express:
-## @example
-## "If (input_1 is mf_2) or (input_3 is not mf_1) or (input_4 is very mf_1),
-##  then (output_1 is mf_2) and (output_2 is mf_1^0.3)."
-## @end example
-##
-## @noindent
-## with weight 1, the corresponding row of @var{rule_matrix} would be:
-## @example
-## [2   0   -1   4.2   2   1.03   1   2]
-## @end example
-##
-## @noindent
-## For a complete example that uses addrule, see heart_disease_demo_1.m.
-##
-## @seealso{heart_disease_demo_1, showrule}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy rule
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      addrule.m
-## Last-Modified: 18 Aug 2012
-
-function fis = addrule (fis, rule_matrix) 
-
-  ## If the caller did not supply 2 argument values with the correct
-  ## types, print an error message and halt.
-
-  if (nargin != 2)
-    puts ("Type 'help addrule' for more information.\n");
-    error ("addrule requires 2 arguments\n");
-  elseif (!is_fis (fis))
-    puts ("Type 'help addrule' for more information.\n");
-    error ("addrule's first argument must be an FIS structure\n");
-  elseif (!is_real_matrix (rule_matrix))
-    puts ("Type 'help addrule' for more information. addrule's \n");
-    error ("second argument must be a matrix of real numbers\n");
-  endif
-
-  ## For each row in the rule_matrix, create a new rule struct and
-  ## update the FIS structure.
-
-  num_inputs = columns (fis.input);
-  num_outputs = columns (fis.output);
-
-  for i = 1 : rows (rule_matrix)
-    antecedent = rule_matrix(i, 1 : num_inputs);
-    consequent = rule_matrix(i, ...
-                             (num_inputs+1) : (num_inputs+num_outputs));
-    weight = rule_matrix(i, num_inputs + num_outputs + 1);
-    connection = rule_matrix(i, num_inputs + num_outputs + 2);
-    new_rules(i) = struct ('antecedent', antecedent, ...
-                           'consequent', consequent, ...
-                           'weight', weight, ...
-                           'connection', connection);
-  endfor
-
-  if (length (fis.rule) == 0)
-    fis.rule = new_rules;
-  else
-    fis.rule = [fis.rule, new_rules];
-  endif
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/addvar.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{fis} =} addvar (@var{fis}, @var{in_or_out}, @var{var_name}, @var{var_range})
-##
-## Add an input or output variable to an existing FIS
-## structure and return the updated FIS.
-##
-## The types of the arguments are expected to be:
-## @itemize @w
-## @item
-## @var{fis} - an FIS structure
-## @item
-## @var{in_or_out} - either 'input' or 'output' (case-insensitive)
-## @item
-## @var{var_name} - a string
-## @item
-## @var{var_range} - a vector [x1 x2] of two real numbers
-## @end itemize
-##
-## The vector components x1 and x2, which must also satisfy x1 <= x2,
-## specify the lower and upper bounds of the variable's domain.
-##
-## @noindent
-## To run the demonstration code, type @t{demo('addvar')} at the Octave prompt.
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy variable
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      addvar.m
-## Last-Modified: 18 Aug 2012
-
-function fis = addvar (fis, in_or_out, var_name, var_range)
-
-  ## If the caller did not supply 4 argument values with the correct
-  ## types, print an error message and halt.
-
-  if (nargin != 4)
-    puts ("Type 'help addvar' for more information.\n");
-    error ("addvar requires 4 arguments\n");
-  elseif (!is_fis (fis))
-    puts ("Type 'help addvar' for more information.\n");
-    error ("addvar's first argument must be an FIS structure\n");
-  elseif (!(is_string (in_or_out) && ...
-          ismember (tolower (in_or_out), {'input', 'output'})))
-    puts ("Type 'help addvar' for more information.\n");
-    error ("addvar's second argument must be 'input' or 'output'\n");
-  elseif (!is_string (var_name))
-    puts ("Type 'help addvar' for more information.\n");
-    error ("addvar's third argument must be a string\n\n");
-  elseif (!are_bounds (var_range))
-    puts ("Type 'help addvar' for more information.\n");
-    error ("addvar's fourth argument must specify variable bounds\n");
-  endif
-
-  ## Create a new variable struct and update the FIS input or output
-  ## variable list.
-
-  new_variable = struct ('name', var_name, 'range', var_range, ...
-                         'mf', []);
-  if (strcmp (tolower (in_or_out), 'input'))
-    if (length (fis.input) == 0)
-      fis.input = new_variable;
-    else
-      fis.input = [fis.input, new_variable];
-    endif
-  else
-    if (length (fis.output) == 0)
-      fis.output = new_variable;
-    else
-      fis.output = [fis.output, new_variable];
-    endif
-  endif
-
-endfunction
-
-%!demo
-%! a = newfis ('Heart-Disease-Risk', 'sugeno', ...
-%!             'min', 'max', 'min', 'max', 'wtaver');
-%! a = addvar (a, 'input', 'LDL-Level', [0 300]);
-%! getfis (a, 'input', 1);
--- a/main/fuzzy-logic-toolkit/inst/algebraic_product.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{retval} =} algebraic_product (@var{x})
-## @deftypefnx {Function File} {@var{retval} =} algebraic_product (@var{x}, @var{y})
-##
-## Return the algebraic product of the input.
-## The algebraic product of two real scalars x and y is: x * y
-##
-## For one vector argument, apply the algebraic product to all of elements of
-## the vector. (The algebraic product is associative.) For one two-dimensional
-## matrix argument, return a vector of the algebraic product of each column.
-##
-## For two vectors or matrices of identical dimensions, or for one scalar and
-## one vector or matrix argument, return the pair-wise product.
-##
-## @seealso{algebraic_sum, bounded_difference, bounded_sum, drastic_product, drastic_sum, einstein_product, einstein_sum, hamacher_product, hamacher_sum}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy algebraic_product
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      algebraic_product.m
-## Last-Modified: 18 Aug 2012
-
-function retval = algebraic_product (x, y = 0)
-  if (!(isreal (x) && isreal (y)))
-    puts ("Arguments to algebraic_product must be real scalars ");
-    puts ("or matrices.\n");
-    puts ("Type 'help algebraic_product' for more information.\n");
-    error ("invalid arguments to function algebraic_product\n");
-  elseif (nargin == 2 && ...
-          (isscalar (x) || isscalar (y) || ...
-           isequal (size (x), size (y))))
-    retval = x .* y;
-  elseif (nargin == 1 && ndims (x) <= 2)
-    retval = prod (x);
-  else
-    puts ("Type 'help algebraic_product' for more information.\n");
-    error ("invalid arguments to function algebraic_product\n");
-  endif
-endfunction
-
--- a/main/fuzzy-logic-toolkit/inst/algebraic_sum.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{retval} =} algebraic_sum (@var{x, y})
-## @deftypefnx {Function File} {@var{retval} =} algebraic_sum (@var{x, y})
-##
-## Return the algebraic sum of the input.
-## The algebraic sum of two real scalars x and y is: x + y - x * y
-##
-## For one vector argument, apply the algebraic sum to all of elements of
-## the vector. (The algebraic sum is associative.) For one two-dimensional
-## matrix argument, return a vector of the algebraic sum of each column.
-##
-## For two vectors or matrices of identical dimensions, or for one scalar and
-## one vector or matrix argument, return the pair-wise algebraic sum.
-##
-## @seealso{algebraic_product, bounded_difference, bounded_sum, drastic_product, drastic_sum, einstein_product, einstein_sum, hamacher_product, hamacher_sum}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy algebraic_sum
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      algebraic_sum.m
-## Last-Modified: 18 Aug 2012
-
-function retval = algebraic_sum (x, y = 0)
-  if (!(isreal (x) && isreal (y)))
-    puts ("Type 'help algebraic_sum' for more information.\n");
-    error ("algebraic_sum requires real scalar or matrix arguments\n");
-  elseif (nargin == 2 && ...
-          (isscalar (x) || isscalar (y) || ...
-           isequal (size (x), size (y))))
-    retval = x .+ y .- x .* y;
-  elseif (nargin == 1 && isvector (x))
-    retval = algebraic_sum_of_vector (x);
-  elseif (nargin == 1 && ndims (x) == 2)
-    num_cols = columns (x);
-    retval = zeros (1, num_cols);
-    for i = 1 : num_cols
-      retval(i) = algebraic_sum_of_vector (x(:, i));
-    endfor
-  else
-    puts ("Type 'help algebraic_sum' for more information.\n");
-    error ("invalid arguments to function algebraic_sum\n");
-  endif
-endfunction
-
-function retval = algebraic_sum_of_vector (real_vector)
-  x = 0;
-  for i = 1 : length (real_vector)
-    y = real_vector(i);
-    x = x + y - x * y;
-  endfor
-  retval = x;
-endfunction
-
--- a/main/fuzzy-logic-toolkit/inst/bounded_difference.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{retval} =} bounded_difference (@var{x})
-## @deftypefnx {Function File} {@var{retval} =} bounded_difference (@var{x}, @var{y})
-##
-## Return the bounded difference of the input.
-## The bounded difference of two real scalars x and y is: max (0, x + y - 1)
-##
-## For one vector argument, apply the bounded difference to all of the elements
-## of the vector. (The bounded difference is associative.) For one
-## two-dimensional matrix argument, return a vector of the bounded difference
-## of each column.
-##
-## For two vectors or matrices of identical dimensions, or for one scalar and
-## one vector or matrix argument, return the pair-wise bounded difference.
-##
-## @seealso{algebraic_product, algebraic_sum, bounded_sum, drastic_product, drastic_sum, einstein_product, einstein_sum, hamacher_product, hamacher_sum}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy bounded_difference
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      bounded_difference.m
-## Last-Modified: 18 Aug 2012
-
-function retval = bounded_difference (x, y = 0)
-  if (!(isreal (x) && isreal (y)))
-    puts ("Function 'bounded_difference' requires real scalar ");
-    puts ("or matrix arguments.\n");
-    puts ("Type 'help bounded_difference' for more information.\n");
-    error ("invalid arguments to function bounded_difference\n");
-  elseif (nargin == 2 && ...
-          (isscalar (x) || isscalar (y) || ...
-           isequal (size (x), size (y))))
-    retval = max (0, (x .+ y - 1));
-  elseif (nargin == 1 && isvector (x))
-    retval = bounded_difference_of_vector (x);
-  elseif (nargin == 1 && ndims (x) == 2)
-    num_cols = columns (x);
-    retval = zeros (1, num_cols);
-    for i = 1 : num_cols
-      retval(i) = bounded_difference_of_vector (x(:, i));
-    endfor
-  else
-    puts ("Type 'help bounded_difference' for more information.\n");
-    error ("invalid arguments to function bounded_difference\n");
-  endif
-endfunction
-
-function retval = bounded_difference_of_vector (real_vector)
-  x = 1;
-  for i = 1 : length (real_vector)
-    y = real_vector(i);
-    x = max (0, (x + y - 1));
-  endfor
-  retval = x;
-endfunction
-
--- a/main/fuzzy-logic-toolkit/inst/bounded_sum.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{retval} =} bounded_sum (@var{x})
-## @deftypefnx {Function File} {@var{retval} =} bounded_sum (@var{x}, @var{y})
-##
-## Return the bounded sum of the input.
-## The bounded sum of two real scalars x and y is: min (1, x + y)
-##
-## For one vector argument, apply the bounded sum to all of elements of
-## the vector. (The bounded sum is associative.) For one two-dimensional
-## matrix argument, return a vector of the bounded sum of each column.
-##
-## For two vectors or matrices of identical dimensions, or for one scalar and
-## one vector or matrix argument, return the pair-wise bounded sum.
-##
-## @seealso{algebraic_product, algebraic_sum, bounded_difference, drastic_product, drastic_sum, einstein_product, einstein_sum, hamacher_product, hamacher_sum}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy bounded_sum
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      bounded_sum.m
-## Last-Modified: 18 Aug 2012
-
-function retval = bounded_sum (x, y = 0)
-  if (!(isreal (x) && isreal (y)))
-    puts ("Type 'help bounded_sum' for more information.\n");
-    error ("bounded_sum requires real scalar or matrix arguments\n");
-  elseif (nargin == 2 && ...
-          (isscalar (x) || isscalar (y) || ...
-           isequal (size (x), size (y))))
-    retval = min (1, (x .+ y));
-  elseif (nargin == 1 && isvector (x))
-    retval = bounded_sum_of_vector (x);
-  elseif (nargin == 1 && ndims (x) == 2)
-    num_cols = columns (x);
-    retval = zeros (1, num_cols);
-    for i = 1 : num_cols
-      retval(i) = bounded_sum_of_vector (x(:, i));
-    endfor
-  else
-    puts ("Type 'help bounded_sum' for more information.\n");
-    error ("invalid arguments to function bounded_sum\n");
-  endif
-endfunction
-
-function retval = bounded_sum_of_vector (real_vector)
-  x = 0;
-  for i = 1 : length (real_vector)
-    y = real_vector(i);
-    x = min (1, (x + y));
-  endfor
-  retval = x;
-endfunction
-
--- a/main/fuzzy-logic-toolkit/inst/cubic_approx_demo.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Script File} {} cubic_approx_demo
-##
-## Demonstrate the use of the Octave Fuzzy Logic Toolkit to approximate a
-## non-linear function using a Sugeno-type FIS with linear output functions.
-##
-## The demo:
-## @itemize @minus
-## @item
-## reads an FIS structure from a file
-## @item
-## plots the input membership functions
-## @item
-## plots the (linear) output functions
-## @item
-## plots the FIS output as a function of the input
-## @end itemize
-##
-## @seealso{heart_disease_demo_1, heart_disease_demo_2, investment_portfolio_demo, linear_tip_demo, mamdani_tip_demo, sugeno_tip_demo}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy tests demos
-## Directory:     fuzzy-logic-toolkit/inst
-## Filename:      cubic_approx_demo.m
-## Last-Modified: 20 Aug 2012
-
-## Read the FIS structure from a file.
-fis = readfis ('cubic_approximator.fis');
-
-## Plot the input membership functions and linear output functions.
-plotmf (fis, 'input', 1);
-plotmf (fis, 'output', 1, -150, 150);
-
-## Plot the FIS output y as a function of the input x.
-gensurf (fis);
--- a/main/fuzzy-logic-toolkit/inst/cubic_approximator.fis	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fis
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      cubic_approximator.fis
-## Last-Modified: 28 Aug 2012
-
-[System]
-Name='Cubic-Approximator'
-Type='sugeno'
-Version=2.0
-NumInputs=1
-NumOutputs=1
-NumRules=11
-AndMethod='min'
-OrMethod='max'
-ImpMethod='min'
-AggMethod='max'
-DefuzzMethod='wtaver'
-
-[Input1]
-Name='X'
-Range=[-5 5]
-NumMFs=11
-MF1 = 'About-Neg-Five':'trimf', [-6 -5 -4]
-MF2 = 'About-Neg-Four':'trimf', [-5 -4 -3]
-MF3 = 'About-Neg-Three':'trimf', [-4 -3 -2]
-MF4 = 'About-Neg-Two':'trimf', [-3 -2 -1]
-MF5 = 'About-Neg-One':'trimf', [-2 -1 0]
-MF6 = 'About-Zero':'trimf', [-1 0 1]
-MF7 = 'About-One':'trimf', [0 1 2]
-MF8 = 'About-Two':'trimf', [1 2 3]
-MF9 = 'About-Three':'trimf', [2 3 4]
-MF10 = 'About-Four':'trimf', [3 4 5]
-MF11 = 'About-Five':'trimf', [4 5 6]
-
-[Output1]
-Name='Approx-X-Cubed'
-Range=[-5 5]
-NumMFs=11
-MF1 = 'Tangent-at-Neg-Five':'linear', [75 250]
-MF2 = 'Tangent-at-Neg-Four':'linear', [48 128]
-MF3 = 'Tangent-at-Neg-Three':'linear', [27 54]
-MF4 = 'Tangent-at-Neg-Two':'linear', [12 16]
-MF5 = 'Tangent-at-Neg-One':'linear', [3 2]
-MF6 = 'Tangent-at-Zero':'linear', [0 0]
-MF7 = 'Tangent-at-One':'linear', [3 -2]
-MF8 = 'Tangent-at-Two':'linear', [12 -16]
-MF9 = 'Tangent-at-Three':'linear', [27 -54]
-MF10 = 'Tangent-at-Four':'linear', [48 -128]
-MF11 = 'Tangent-at-Five':'linear', [75 -250]
-
-[Rules]
-1, 1 (1) : 1
-2, 2 (1) : 1
-3, 3 (1) : 1
-4, 4 (1) : 1
-5, 5 (1) : 1
-6, 6 (1) : 1
-7, 7 (1) : 1
-8, 8 (1) : 1
-9, 9 (1) : 1
-10, 10 (1) : 1
-11, 11 (1) : 1
--- a/main/fuzzy-logic-toolkit/inst/defuzz.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,250 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{crisp_x} =} defuzz (@var{x}, @var{y}, @var{defuzz_method})
-## @deftypefnx {Function File} {@var{crisp_x} =} defuzz (@var{[x1 x2 ... xn]}, @var{[y1 y2 ... yn]}, @var{defuzz_method})
-##
-## For a given domain, set of fuzzy function values, and defuzzification method,
-## return the defuzzified (crisp) value of the fuzzy function.
-##
-## The arguments @var{x} and @var{y} must be either two real numbers or
-## two equal-length, non-empty vectors of reals, with the elements of @var{x}
-## strictly increasing. @var{defuzz_method} must be a (case-sensitive) string
-## corresponding to a defuzzification method. Defuzz handles both built-in
-## and custom defuzzification methods. 
-##
-## The built-in defuzzification methods are:
-## @table @samp
-## @item centroid
-## Return the x-value of the centroid.
-## @item bisector
-## Return the x-value of the vertical bisector of the area.
-## @item mom
-## Return the mean x-value of the points with maximum y-values.
-## @item som
-## Return the smallest (absolute) x-value of the points with maximum y-values.
-## @item lom
-## Return the largest (absolute) x-value of the points with maximum y-values.
-## @item wtaver
-## Return the weighted average of the x-values, with the y-values used as
-## weights.
-## @item wtsum
-## Return the weighted sum of the x-values, with the y-values used as weights.
-## @end table
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy defuzzification
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      defuzz.m
-## Last-Modified: 18 Aug 2012
-
-##----------------------------------------------------------------------
-
-function crisp_x = defuzz (x, y, defuzz_method)
-
-  ## If the caller did not supply 3 argument values with the correct
-  ## types, print an error message and halt.
-
-  if (nargin != 3)
-    puts ("Type 'help defuzz' for more information.\n");
-    error ("defuzz requires 3 arguments\n");
-  elseif (!is_domain (x))
-    puts ("Type 'help defuzz' for more information.\n");
-    error ("defuzz's first argument must be a valid domain\n");
-  elseif (!(isvector (y) && isreal (y) && length (x) == length (y)))
-    puts ("Type 'help defuzz' for more information.\n");
-    error ("defuzz's 2nd argument must be a real number or vector\n");
-  elseif (!is_string (defuzz_method))
-    puts ("Type 'help defuzz' for more information.\n");
-    error ("defuzz's third argument must be a string\n");
-  endif
-
-  ## Calculate and return the defuzzified (crisp_x) value using the
-  ## method specified by the argument defuzz_method.
-
-  crisp_x = str2func (defuzz_method) (x, y);
-
-endfunction
-
-##----------------------------------------------------------------------
-## Usage: crisp_x = centroid (x, y)
-##        crisp_x = centroid ([x1 x2 ... xn], [y1 y2 ... yn])
-##
-## For a given domain (x or [x1 x2 ... xn]) and corresponding y-values
-## (y or [y1 y2 ... yn]), return the x-value of the centroid of the
-## region described by the points (xi, yi).
-##
-## Both arguments are assumed to be reals or non-empty vectors of reals.
-## In addition, x is assumed to be strictly increasing, and x and y are
-## assumed to be of equal length.
-##----------------------------------------------------------------------
-
-function crisp_x = centroid (x, y)
-
-  crisp_x = trapz (x, x.*y) / trapz (x, y);
-
-endfunction
-
-##----------------------------------------------------------------------
-## Usage: crisp_x = bisector (x, y)
-##        crisp_x = bisector ([x1 x2 ... xn], [y1 y2 ... yn])
-##
-## For a given domain (x or [x1 x2 ... xn]) and corresponding y-values
-## (y or [y1 y2 ... yn]), return the x-value of a bisector of the region
-## described by the points (xi, yi).
-##
-## Both arguments are assumed to be reals or non-empty vectors of reals.
-## In addition, x is assumed to be strictly increasing, and x and y are
-## assumed to be of equal length.
-##----------------------------------------------------------------------
-
-function crisp_x = bisector (x, y)
-
-  ## Find the bisector using a binary search. To ensure that the
-  ## function terminates, add a counter to limit the iterations to the
-  ## length of the vectors x and y.
-
-  half_area = trapz (x, y) / 2;
-  x_len = length (x);
-  upper = x_len;
-  lower = 1;
-  count = 1;
-
-  while ((lower <= upper) && (count++ < x_len))
-    midpoint = round ((lower + upper)/2);
-    left_domain = [ones(1, midpoint), zeros(1, x_len-midpoint)];
-    left_y_vals = left_domain .* y;
-    left_area = trapz (x, left_y_vals);
-    error = left_area - half_area;
-
-    if (error > 0)
-      upper = midpoint;
-    else
-      lower = midpoint;
-    endif
-  endwhile
-
-  crisp_x = midpoint;
-
-endfunction
-
-##----------------------------------------------------------------------
-## Usage: crisp_x = mom (x, y)
-##        crisp_x = mom ([x1 x2 ... xn], [y1 y2 ... yn])
-##
-## For a given domain (x or [x1 x2 ... xn]) and corresponding y-values
-## (y or [y1 y2 ... yn]), return the "Mean of Maximum"; that is, return
-## the average of the x-values corresponding to the maximum y-value
-## in y. 
-##
-## Both arguments are assumed to be reals or non-empty vectors of reals.
-## In addition, x is assumed to be strictly increasing, and x and y are
-## assumed to be of equal length.
-##----------------------------------------------------------------------
-
-function crisp_x = mom (x, y)
-
-  max_y = max (y);
-  y_val = @(y_val) if (y_val == max_y) 1 else 0 endif;
-  max_y_locations = arrayfun (y_val, y);
-  crisp_x = sum (x .* max_y_locations) / sum (max_y_locations);
-
-endfunction
-
-##----------------------------------------------------------------------
-## Usage: crisp_x = som (x, y)
-##        crisp_x = som ([x1 x2 ... xn], [y1 y2 ... yn])
-##
-## For a given domain (x or [x1 x2 ... xn]) and corresponding y-values
-## (y or [y1 y2 ... yn]), return the "Smallest of Maximum"; that is,
-## return the smallest x-value corresponding to the maximum y-value
-## in y. 
-##
-## Both arguments are assumed to be reals or non-empty vectors of reals.
-## In addition, x is assumed to be strictly increasing, and x and y are
-## assumed to be of equal length.
-##----------------------------------------------------------------------
-
-function crisp_x = som (x, y)
-
-  max_y = max (y);
-  y_val = @(y_val) if (y_val == max_y) 1 else (NaN) endif;
-  max_y_locations = arrayfun (y_val, y);
-  crisp_x = min (x .* max_y_locations);
-
-endfunction
-
-##----------------------------------------------------------------------
-## Usage: crisp_x = lom (x, y)
-##        crisp_x = lom ([x1 x2 ... xn], [y1 y2 ... yn])
-##
-## For a given domain (x or [x1 x2 ... xn]) and corresponding y-values
-## (y or [y1 y2 ... yn]), return the "Largest of Maximum"; that is,
-## return the largest x-value corresponding to the maximum y-value in y.
-##
-## Both arguments are assumed to be reals or non-empty vectors of reals.
-## In addition, x is assumed to be strictly increasing, and x and y are
-## assumed to be of equal length.
-##----------------------------------------------------------------------
-
-function crisp_x = lom (x, y)
-
-  max_y = max (y);
-  y_val = @(y_val) if (y_val == max_y) 1 else (NaN) endif;
-  max_y_locations = arrayfun (y_val, y);
-  crisp_x = max (x .* max_y_locations);
-
-endfunction
-
-##----------------------------------------------------------------------
-## Usage: retval = wtaver (values, weights)
-##
-## Return the weighted average of the values. The parameters are assumed
-## to be equal-length vectors of real numbers.
-##
-## Examples:
-##    wtaver ([1 2 3 4], [1 1 1 1])  ==> 2.5
-##    wtaver ([1 2 3 4], [1 2 3 4])  ==> 3
-##    wtaver ([1 2 3 4], [0 0 1 1])  ==> 3.5
-##----------------------------------------------------------------------
-
-function retval = wtaver (values, weights)
-
-  retval = sum (weights .* values) / sum (weights);
-
-endfunction
-
-##----------------------------------------------------------------------
-## Usage: retval = wtsum (values, weights)
-##
-## Return the weighted sum of the values. The parameters are assumed to
-## be equal-length vectors of real numbers.
-##
-## Examples:
-##    wtsum ([1 2 3 4], [1 1 1 1])  ==> 10
-##    wtsum ([1 2 3 4], [1 2 3 4])  ==> 30
-##    wtsum ([1 2 3 4], [0 0 1 1])  ==> 7
-##----------------------------------------------------------------------
-
-function retval = wtsum (values, weights)
-
-  retval = sum (weights .* values);
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/drastic_product.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{retval} =} drastic_product (@var{x})
-## @deftypefnx {Function File} {@var{retval} =} drastic_product (@var{x}, @var{y})
-##
-## Return the drastic product of the input.
-## The drastic product of two real scalars x and y is:
-## @example
-## @group
-## min (x, y)     if max (x, y) == 1
-## 0              otherwise
-## @end group
-## @end example
-##
-## For one vector argument, apply the drastic product to all of the elements
-## of the vector. (The drastic product is associative.) For one
-## two-dimensional matrix argument, return a vector of the drastic product
-## of each column.
-##
-## For two vectors or matrices of identical dimensions, or for one scalar and
-## one vector or matrix argument, return the pair-wise drastic product.
-##
-## @seealso{algebraic_product, algebraic_sum, bounded_difference, bounded_sum, drastic_sum, einstein_product, einstein_sum, hamacher_product, hamacher_sum}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy drastic_product
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      drastic_product.m
-## Last-Modified: 20 Aug 2012
-
-function retval = drastic_product (x, y = 0)
-  if (nargin == 0 || nargin > 2 ||
-      !is_real_matrix (x) || !is_real_matrix (y))
-    argument_error
-
-  elseif (nargin == 1)
-    if (isvector (x))
-      retval = vector_arg (x);
-    elseif (ndims (x) == 2)
-      retval = matrix_arg (x);
-    else
-      argument_error;
-    endif
-
-  elseif (nargin == 2)
-    if (isequal (size (x), size (y)))
-      retval = arrayfun (@scalar_args, x, y);
-    elseif (isscalar (x) && ismatrix (y))
-      x = x * ones (size (y));
-      retval = arrayfun (@scalar_args, x, y);
-    elseif (ismatrix (x) && isscalar (y))
-      y = y * ones (size (x));
-      retval = arrayfun (@scalar_args, x, y);
-    else
-      argument_error;
-    endif
-  endif
-endfunction
-
-function retval = scalar_args (x, y)
-  if (max (x, y) == 1)
-    retval = min (x, y);
-  else
-    retval = 0;
-  endif
-endfunction
-
-function retval = vector_arg (x)
-  if (isempty (x))
-    retval = 1;
-  elseif (max (x) == 1)
-    retval = min (x);
-  else
-    retval = 0;
-  endif
-endfunction
-
-function retval = matrix_arg (x)
-  num_cols = columns (x);
-  retval = zeros (1, num_cols);
-  for i = 1 : num_cols
-    retval(i) = vector_arg (x(:, i));
-  endfor
-endfunction
-
-function argument_error
-  puts ("Type 'help drastic_product' for more information.\n");
-  error ("invalid arguments to function drastic_product\n");
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/drastic_sum.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{retval} =} drastic_sum (@var{x})
-## @deftypefnx {Function File} {@var{retval} =} drastic_sum (@var{x}, @var{y})
-##
-## Return the drastic sum of the input.
-## The drastic sum of two real scalars x and y is:
-## @example
-## @group
-## max (x, y)     if min (x, y) == 0
-## 1              otherwise
-## @end group
-## @end example
-##
-## For one vector argument, apply the drastic sum to all of the elements
-## of the vector. (The drastic sum is associative.) For one
-## two-dimensional matrix argument, return a vector of the drastic sum
-## of each column.
-##
-## For two vectors or matrices of identical dimensions, or for one scalar and
-## one vector or matrix argument, return the pair-wise drastic sum.
-##
-## @seealso{algebraic_product, algebraic_sum, bounded_difference, bounded_sum, drastic_product, einstein_product, einstein_sum, hamacher_product, hamacher_sum}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy drastic_sum
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      drastic_sum.m
-## Last-Modified: 20 Aug 2012
-
-function retval = drastic_sum  (x, y = 0)
-  if (nargin == 0 || nargin > 2 ||
-      !is_real_matrix (x) || !is_real_matrix (y))
-    argument_error
-
-  elseif (nargin == 1)
-    if (isvector (x))
-      retval = vector_arg (x);
-    elseif (ndims (x) == 2)
-      retval = matrix_arg (x);
-    else
-      argument_error;
-    endif
-
-  elseif (nargin == 2)
-    if (isequal (size (x), size (y)))
-      retval = arrayfun (@scalar_args, x, y);
-    elseif (isscalar (x) && ismatrix (y))
-      x = x * ones (size (y));
-      retval = arrayfun (@scalar_args, x, y);
-    elseif (ismatrix (x) && isscalar (y))
-      y = y * ones (size (x));
-      retval = arrayfun (@scalar_args, x, y);
-    else
-      argument_error;
-    endif
-  endif
-endfunction
-
-function retval = scalar_args (x, y)
-  if (min (x, y) == 0)
-    retval = max (x, y);
-  else
-    retval = 1;
-  endif
-endfunction
-
-function retval = vector_arg (x)
-  if (isempty (x))
-    retval = 0;
-  elseif (min (x) == 0)
-    retval = max (x);
-  else
-    retval = 1;
-  endif
-endfunction
-
-function retval = matrix_arg (x)
-  num_cols = columns (x);
-  retval = zeros (1, num_cols);
-  for i = 1 : num_cols
-    retval(i) = vector_arg (x(:, i));
-  endfor
-endfunction
-
-function argument_error
-  puts ("Type 'help drastic_sum' for more information.\n");
-  error ("invalid arguments to function drastic_sum\n");
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/dsigmf.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} dsigmf (@var{x}, @var{params})
-## @deftypefnx {Function File} {@var{y} =} dsigmf (@var{[x1 x2 ... xn]}, @var{[a1 c1 a2 c2]})
-##
-## For a given domain @var{x} and parameters @var{params} (or
-## @var{[a1 c1 a2 c2]}), return the corresponding @var{y} values for the
-## difference between two sigmoidal membership functions.
-##
-## The argument @var{x} must be a real number or a non-empty list of strictly
-## increasing real numbers, and @var{a1}, @var{c1}, @var{a2}, and @var{c2} must
-## be real numbers. This membership function satisfies the equation:
-## @example
-## f(x) = 1/(1 + exp(-a1*(x - c1))) - 1/(1 + exp(-a2*(x - c2)))
-## @end example
-##
-## @noindent
-## and in addition, is bounded above and below by 1 and 0 (regardless of the
-## value given by the formula above).
-##
-## If the parameters @var{a1} and @var{a2} are positive and @var{c1} and
-## @var{c2} are far enough apart with @var{c1} < @var{c2}, then:
-## @itemize @w
-## @item
-## (a1)/4 ~ the rising slope at c1
-## @item
-## c1 ~ the left inflection point
-## @item
-## (-a2)/4 ~ the falling slope at c2
-## @item
-## c2 ~ the right inflection point
-## @end itemize
-##
-## @noindent
-## and at each inflection point, the value of the function is about 0.5:
-## @itemize @w
-## @item
-## f(c1) ~ f(c2) ~ 0.5.
-## @end itemize
-##
-## @noindent
-## Here, the symbol ~ means "approximately equal".
-##
-## @noindent
-## To run the demonstration code, type @t{demo('dsigmf')} at the Octave prompt.
-##
-## @seealso{gauss2mf, gaussmf, gbellmf, pimf, psigmf, sigmf, smf, trapmf, trimf, zmf}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy membership sigmoidal
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      dsigmf.m
-## Last-Modified: 20 Aug 2012
-
-function y = dsigmf (x, params)
-
-  ## If the caller did not supply 2 argument values with the correct
-  ## types, print an error message and halt.
-
-  if (nargin != 2)
-    puts ("Type 'help dsigmf' for more information.\n");
-    error ("dsigmf requires 2 arguments\n");
-  elseif (!is_domain (x))
-    puts ("Type 'help dsigmf' for more information.\n");
-    error ("dsigmf's first argument must be a valid domain\n");
-  elseif (!are_mf_params ('dsigmf', params))
-    puts ("Type 'help dsigmf' for more information.\n");
-    error ("dsigmf's second argument must be a parameter vector\n");
-  endif
-
-  ## Calculate and return the y values of the membership function on the
-  ## domain x.
-
-  a1 = params(1);
-  c1 = params(2);
-  a2 = params(3);
-  c2 = params(4);
-
-  y_val = @(x_val) max (0, ...
-                        min (1, 1 / (1 + exp (-a1 * (x_val - c1))) - ...
-                                1 / (1 + exp (-a2 * (x_val - c2)))));
-  y = arrayfun (y_val, x);
-
-endfunction
-
-%!demo
-%! x = 0:100;
-%! params = [0.5 20 0.3 60];
-%! y1 = dsigmf(x, params);
-%! params = [0.3 20 0.2 60];
-%! y2 = dsigmf(x, params);
-%! params = [0.2 20 0.1 60];
-%! y3 = dsigmf(x, params);
-%! figure('NumberTitle', 'off', 'Name', 'dsigmf demo');
-%! plot(x, y1, 'r;params = [0.5 20 0.3 60];', 'LineWidth', 2)
-%! hold on;
-%! plot(x, y2, 'b;params = [0.3 20 0.2 60];', 'LineWidth', 2)
-%! hold on;
-%! plot(x, y3, 'g;params = [0.2 20 0.1 60];', 'LineWidth', 2)
-%! ylim([-0.1 1.1]);
-%! xlabel('Crisp Input Value', 'FontWeight', 'bold');
-%! ylabel('Degree of Membership', 'FontWeight', 'bold');
-%! grid;
--- a/main/fuzzy-logic-toolkit/inst/einstein_product.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{retval} =} einstein_product (@var{x})
-## @deftypefnx {Function File} {@var{retval} =} einstein_product (@var{x}, @var{y})
-##
-## Return the Einstein product of the input.
-## The Einstein product of two real scalars x and y is:
-## (x * y) / (2 - (x + y - x * y))
-##
-## For one vector argument, apply the Einstein product to all of the elements
-## of the vector. (The Einstein product is associative.) For one
-## two-dimensional matrix argument, return a vector of the Einstein product
-## of each column.
-##
-## For two vectors or matrices of identical dimensions, or for one scalar and
-## one vector or matrix argument, return the pair-wise Einstein product.
-##
-## @seealso{algebraic_product, algebraic_sum, bounded_difference, bounded_sum, drastic_product, drastic_sum, einstein_sum, hamacher_product, hamacher_sum}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy einstein_product
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      einstein_product.m
-## Last-Modified: 20 Aug 2012
-
-function retval = einstein_product (x, y = 0)
-  if (nargin == 0 || nargin > 2 ||
-      !is_real_matrix (x) || !is_real_matrix (y))
-    argument_error
-
-  elseif (nargin == 1)
-    if (isvector (x))
-      retval = vector_arg (x);
-    elseif (ndims (x) == 2)
-      retval = matrix_arg (x);
-    else
-      argument_error;
-    endif
-
-  elseif (nargin == 2)
-    if (isequal (size (x), size (y)))
-      retval = arrayfun (@scalar_args, x, y);
-    elseif (isscalar (x) && ismatrix (y))
-      x = x * ones (size (y));
-      retval = arrayfun (@scalar_args, x, y);
-    elseif (ismatrix (x) && isscalar (y))
-      y = y * ones (size (x));
-      retval = arrayfun (@scalar_args, x, y);
-    else
-      argument_error;
-    endif
-  endif
-endfunction
-
-function retval = scalar_args (x, y)
-  retval = (x * y) / (2 - (x + y - x * y));
-endfunction
-
-function retval = vector_arg (real_vector)
-  x = 1;
-  for i = 1 : length (real_vector)
-    y = real_vector(i);
-    x = (x * y) / (2 - (x + y - x * y));
-  endfor
-  retval = x;
-endfunction
-
-function retval = matrix_arg (x)
-  num_cols = columns (x);
-  retval = zeros (1, num_cols);
-  for i = 1 : num_cols
-    retval(i) = vector_arg (x(:, i));
-  endfor
-endfunction
-
-function argument_error
-  puts ("Type 'help einstein_product' for more information.\n");
-  error ("invalid arguments to function einstein_product\n");
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/einstein_sum.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{retval} =} einstein_sum (@var{x})
-## @deftypefnx {Function File} {@var{retval} =} einstein_sum (@var{x}, @var{y})
-##
-## Return the Einstein sum of the input.
-## The Einstein sum of two real scalars x and y is: (x + y) / (1 + x * y)
-##
-## For one vector argument, apply the Einstein sum to all of the elements
-## of the vector. (The Einstein sum is associative.) For one
-## two-dimensional matrix argument, return a vector of the Einstein sum
-## of each column.
-##
-## For two vectors or matrices of identical dimensions, or for one scalar and
-## one vector or matrix argument, return the pair-wise Einstein sum.
-##
-## @seealso{algebraic_product, algebraic_sum, bounded_difference, bounded_sum, drastic_product, drastic_sum, einstein_product, hamacher_product, hamacher_sum}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy einstein_sum
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      einstein_sum.m
-## Last-Modified: 20 Aug 2012
-
-function retval = einstein_sum (x, y = 0)
-  if (nargin == 0 || nargin > 2 ||
-      !is_real_matrix (x) || !is_real_matrix (y))
-    argument_error
-
-  elseif (nargin == 1)
-    if (isvector (x))
-      retval = vector_arg (x);
-    elseif (ndims (x) == 2)
-      retval = matrix_arg (x);
-    else
-      argument_error;
-    endif
-
-  elseif (nargin == 2)
-    if (isequal (size (x), size (y)))
-      retval = arrayfun (@scalar_args, x, y);
-    elseif (isscalar (x) && ismatrix (y))
-      x = x * ones (size (y));
-      retval = arrayfun (@scalar_args, x, y);
-    elseif (ismatrix (x) && isscalar (y))
-      y = y * ones (size (x));
-      retval = arrayfun (@scalar_args, x, y);
-    else
-      argument_error;
-    endif
-  endif
-endfunction
-
-function retval = scalar_args (x, y)
-  retval = (x + y) / (1 + x * y);
-endfunction
-
-function retval = vector_arg (real_vector)
-  x = 0;
-  for i = 1 : length (real_vector)
-    y = real_vector(i);
-    x = (x + y) / (1 + x * y);
-  endfor
-  retval = x;
-endfunction
-
-function retval = matrix_arg (x)
-  num_cols = columns (x);
-  retval = zeros (1, num_cols);
-  for i = 1 : num_cols
-    retval(i) = vector_arg (x(:, i));
-  endfor
-endfunction
-
-function argument_error
-  puts ("Type 'help einstein_sum' for more information.\n");
-  error ("invalid arguments to function einstein_sum\n");
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/evalfis.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,267 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{output} =} evalfis (@var{user_input}, @var{fis})
-## @deftypefnx {Function File} {@var{output} =} evalfis (@var{user_input}, @var{fis}, @var{num_points})
-## @deftypefnx {Function File} {[@var{output}, @var{rule_input}, @var{rule_output}, @var{fuzzy_output}] =} evalfis (@var{user_input}, @var{fis})
-## @deftypefnx {Function File} {[@var{output}, @var{rule_input}, @var{rule_output}, @var{fuzzy_output}] =} evalfis (@var{user_input}, @var{fis}, @var{num_points})
-##
-## Return the crisp output(s) of an FIS for each row in a matrix of crisp input
-## values.
-## Also, for the last row of @var{user_input}, return the intermediate results:
-##
-## @table @var
-## @item rule_input
-## a matrix of the degree to which
-## each FIS rule matches each FIS input variable
-## @item rule_output
-## a matrix of the fuzzy output for each (rule, FIS output) pair
-## @item fuzzy_output
-## a matrix of the aggregated output for each FIS output variable
-## @end table
-##
-## The optional argument @var{num_points} specifies the number of points over
-## which to evaluate the fuzzy values. The default value of @var{num_points} is
-## 101.
-##
-## @noindent
-## Argument @var{user_input}:
-## 
-## @var{user_input} is a matrix of crisp input values. Each row 
-## represents one set of crisp FIS input values. For an FIS that has N inputs,
-## an input matrix of z sets of input values will have the form:
-##
-## @example
-## @group
-## [input_11 input_12 ... input_1N]  <-- 1st row is 1st set of inputs
-## [input_21 input_22 ... input_2N]  <-- 2nd row is 2nd set of inputs
-## [             ...              ]                 ...
-## [input_z1 input_z2 ... input_zN]  <-- zth row is zth set of inputs
-## @end group
-## @end example
-##
-## @noindent
-## Return value @var{output}:
-##
-## @var{output} is a matrix of crisp output values. Each row represents
-## the set of crisp FIS output values for the corresponding row of
-## @var{user_input}. For an FIS that has M outputs, an @var{output} matrix
-## corresponding to the preceding input matrix will have the form:
-##
-## @example
-## @group
-## [output_11 output_12 ... output_1M]  <-- 1st row is 1st set of outputs
-## [output_21 output_22 ... output_2M]  <-- 2nd row is 2nd set of outputs
-## [               ...               ]                 ...
-## [output_z1 output_z2 ... output_zM]  <-- zth row is zth set of outputs
-## @end group
-## @end example
-##
-## @noindent
-## The intermediate result @var{rule_input}:
-## 
-## The matching degree for each (rule, input value) pair is specified by the
-## @var{rule_input} matrix. For an FIS that has Q rules and N input variables,
-## the matrix will have the form:
-## @example
-## @group
-##          in_1  in_2 ...  in_N
-## rule_1 [mu_11 mu_12 ... mu_1N]
-## rule_2 [mu_21 mu_22 ... mu_2N]
-##        [            ...      ]
-## rule_Q [mu_Q1 mu_Q2 ... mu_QN]
-## @end group
-## @end example
-##
-## @noindent
-## Evaluation of hedges and "not":
-##
-## Each element of each FIS rule antecedent and consequent indicates the
-## corresponding membership function, hedge, and whether or not "not" should
-## be applied to the result. The index of the membership function to be used is
-## given by the positive whole number portion of the antecedent/consequent
-## vector entry, the hedge is given by the fractional portion (if any), and
-## "not" is indicated by a minus sign. A "0" as the integer portion in any
-## position in the rule indicates that the corresponding FIS input or output
-## variable is omitted from the rule.
-##
-## For custom hedges and the four built-in hedges "somewhat," "very,"
-## "extremely," and "very very," the membership function value (without the
-## hedge or "not") is raised to the power corresponding to the hedge. All
-## hedges are rounded to 2 digits.
-##
-## For example, if "mu(x)" denotes the matching degree of the input to the
-## corresponding membership function without a hedge or "not," then the final
-## matching degree recorded in @var{rule_input} will be computed by applying
-## the hedge and "not" in two steps. First, the hedge is applied:
-##
-## @example
-## @group
-## (fraction == .05) <=>  somewhat x       <=>  mu(x)^0.5  <=>  sqrt(mu(x))
-## (fraction == .20) <=>  very x           <=>  mu(x)^2    <=>  sqr(mu(x))
-## (fraction == .30) <=>  extremely x      <=>  mu(x)^3    <=>  cube(mu(x))
-## (fraction == .40) <=>  very very x      <=>  mu(x)^4
-## (fraction == .dd) <=>  <custom hedge> x <=>  mu(x)^(dd/10)
-## @end group
-## @end example
-##
-## After applying the appropriate hedge, "not" is calculated by:
-## @example
-## minus sign present           <=> not x         <=> 1 - mu(x)
-## minus sign and hedge present <=> not <hedge> x <=> 1 - mu(x)^(dd/10)
-## @end example
-##
-## Hedges and "not" in the consequent are handled similarly.
-##
-## @noindent
-## The intermediate result @var{rule_output}:
-##
-## For either a Mamdani-type FIS (that is, an FIS that does not have constant or
-## linear output membership functions) or a Sugeno-type FIS (that is, an FIS
-## that has only constant and linear output membership functions),
-## @var{rule_output} specifies the fuzzy output for each (rule, FIS output) pair.
-## The format of rule_output depends on the FIS type.
-##
-## For a Mamdani-type FIS, @var{rule_output} is a @var{num_points} x (Q * M)
-## matrix, where Q is the number of rules and M is the number of FIS output
-## variables. Each column of this matrix gives the y-values of the fuzzy
-## output for a single (rule, FIS output) pair.
-##
-## @example
-## @group
-##                  Q cols            Q cols              Q cols 
-##             ---------------   ---------------     ---------------
-##             out_1 ... out_1   out_2 ... out_2 ... out_M ... out_M
-##          1 [                                                     ]
-##          2 [                                                     ]
-##        ... [                                                     ]
-## num_points [                                                     ]
-## @end group
-## @end example
-##
-## For a Sugeno-type FIS, @var{rule_output} is a 2 x (Q * M) matrix.
-## Each column of this matrix gives the (location, height) pair of the
-## singleton output for a single (rule, FIS output) pair.
-##
-## @example
-## @group
-##                Q cols            Q cols                  Q cols 
-##           ---------------   ---------------         ---------------
-##           out_1 ... out_1   out_2 ... out_2   ...   out_M ... out_M
-## location [                                                         ]
-##   height [                                                         ]
-## @end group
-## @end example
-##
-## @noindent
-## The intermediate result @var{fuzzy_output}:
-##
-## The format of @var{fuzzy_output} depends on the FIS type ('mamdani' or
-## 'sugeno').
-##
-## For either a Mamdani-type FIS or a Sugeno-type FIS, @var{fuzzy_output}
-## specifies the aggregated fuzzy output for each FIS output.
-##
-## For a Mamdani-type FIS, the aggregated @var{fuzzy_output} is a
-## @var{num_points} x M matrix. Each column of this matrix gives the y-values
-## of the fuzzy output for a single FIS output, aggregated over all rules.
-##
-## @example
-## @group
-##             out_1  out_2  ...  out_M
-##          1 [                        ]
-##          2 [                        ]
-##        ... [                        ]
-## num_points [                        ]
-## @end group
-## @end example
-##
-## For a Sugeno-type FIS, the aggregated output for each FIS output is a 2 x L
-## matrix, where L is the number of distinct singleton locations in the
-## @var{rule_output} for that FIS output:
-##
-## @example
-## @group
-##           singleton_1  singleton_2 ... singleton_L
-## location [                                        ]
-##   height [                                        ]
-## @end group
-## @end example
-##
-## Then @var{fuzzy_output} is a vector of M structures, each of which has an index and
-## one of these matrices.
-##
-## @noindent
-## Examples:
-##
-## Seven examples of using evalfis are shown in:
-## @itemize @bullet
-## @item
-## cubic_approx_demo.m
-## @item
-## heart_disease_demo_1.m
-## @item
-## heart_disease_demo_2.m
-## @item
-## investment_portfolio_demo.m
-## @item
-## linear_tip_demo.m
-## @item
-## mamdani_tip_demo.m
-## @item
-## sugeno_tip_demo.m
-## @end itemize
-##
-## @seealso{cubic_approx_demo, heart_disease_demo_1, heart_disease_demo_2, investment_portfolio_demo, linear_tip_demo, mamdani_tip_demo, sugeno_tip_demo}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy inference system fis
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      evalfis.m
-## Last-Modified: 20 Aug 2012
-
-function [output, rule_input, rule_output, fuzzy_output] = ...
-           evalfis (user_input, fis, num_points = 101)
-
-  ## If evalfis was called with an incorrect number of arguments, or
-  ## the arguments do not have the correct type, print an error message
-  ## and halt.
-
-  if ((nargin != 2) && (nargin != 3))
-    puts ("Type 'help evalfis' for more information.\n");
-    error ("evalfis requires 2 or 3 arguments\n");
-  elseif (!is_fis (fis))
-    puts ("Type 'help evalfis' for more information.\n");
-    error ("evalfis's second argument must be an FIS structure\n");
-  elseif (!is_input_matrix (user_input, fis))
-    puts ("Type 'help evalfis' for more information.\n");
-    error ("evalfis's 1st argument must be a matrix of input values\n");
-  elseif (!is_pos_int (num_points))
-    puts ("Type 'help evalfis' for more information.\n");
-    error ("evalfis's third argument must be a positive integer\n");
-  endif
-
-  ## Call a private function to compute the output.
-  ## (The private function is also called by gensurf.)
-
-  [output, rule_input, rule_output, fuzzy_output] = ...
-    evalfis_private (user_input, fis, num_points);
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/evalmf.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} evalmf (@var{x}, @var{param}, @var{mf_type})
-## @deftypefnx {Function File} {@var{y} =} evalmf (@var{x}, @var{param}, @var{mf_type}, @var{hedge})
-## @deftypefnx {Function File} {@var{y} =} evalmf (@var{x}, @var{param}, @var{mf_type}, @var{hedge}, @var{not_flag})
-## @deftypefnx {Function File} {@var{y} =} evalmf (@var{[x1 x2 ... xn]}, @var{[param1 ... ]}, @var{mf_type})
-## @deftypefnx {Function File} {@var{y} =} evalmf (@var{[x1 x2 ... xn]}, @var{[param1 ... ]}, @var{mf_type}, @var{hedge})
-## @deftypefnx {Function File} {@var{y} =} evalmf (@var{[x1 x2 ... xn]}, @var{[param1 ... ]}, @var{mf_type}, @var{hedge}, @var{not_flag})
-##
-## For a given domain, set of parameters, membership function type, and
-## optional hedge and not_flag, return the corresponding y-values for the
-## membership function.
-##
-## The argument @var{x} must be a real number or a non-empty list of strictly
-## increasing real numbers, @var{param} must be a valid parameter or a vector
-## of valid parameters for @var{mf_type}, and @var{mf_type} must be a string
-## corresponding to a membership function type. Evalmf handles both built-in and
-## custom membership functions.
-##
-## For custom hedges and the four built-in hedges "somewhat", "very",
-## "extremely", and "very very", raise the membership function values to
-## the power corresponding to the hedge.
-##
-## @example
-## @group
-## (fraction == .05) <=>  somewhat x       <=>  mu(x)^0.5  <=>  sqrt(mu(x))
-## (fraction == .20) <=>  very x           <=>  mu(x)^2    <=>  sqr(mu(x))
-## (fraction == .30) <=>  extremely x      <=>  mu(x)^3    <=>  cube(mu(x))
-## (fraction == .40) <=>  very very x      <=>  mu(x)^4
-## (fraction == .dd) <=>  <custom hedge> x <=>  mu(x)^(dd/10)
-## @end group
-## @end example
-##
-## The @var{not_flag} negates the membership function using:
-## @example
-## mu(not(x)) = 1 - mu(x)
-## @end example
-##
-## @noindent
-## To run the demonstration code, type @t{demo('evalmf')} at the Octave prompt.
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy membership evaluate
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      evalmf.m
-## Last-Modified: 19 Aug 2012
-
-function y = evalmf (x, params, mf_type, hedge = 0, not_flag = false)
-
-  ## If the caller did not supply 3 - 5 argument values with the correct
-  ## types, print an error message and halt.
-
-  if ((nargin < 3) || (nargin > 5))
-    puts ("Type 'help evalmf' for more information.\n");
-    error ("evalmf requires between 3 and 5 arguments\n");
-  elseif (!is_domain (x))
-    puts ("Type 'help evalmf' for more information.\n");
-    error ("evalmf's first argument must be a valid domain\n");
-  elseif (!is_string (mf_type))
-    puts ("Type 'help evalmf' for more information.\n");
-    error ("evalmf's third argument must be a string\n");
-  elseif (!is_real (hedge))
-    puts ("Type 'help evalmf' for more information.\n");
-    error ("evalmf's fourth argument must be a real number\n");
-  elseif (!isbool (not_flag))
-    puts ("Type 'help evalmf' for more information.\n");
-    error ("evalmf's fifth argument must be a Boolean\n");
-  endif
-
-  ## Calculate and return the y values of the membership function on
-  ## the domain x.
-
-  y = evalmf_private (x, params, mf_type, hedge, not_flag);
-
-endfunction
-
-%!demo
-%! x = 0:100;
-%! params = [25 50 75];
-%! mf_type = 'trimf';
-%! y = evalmf(x, params, mf_type);
-%! figure('NumberTitle', 'off', 'Name', "evalmf(0:100, [25 50 75], ...
-%!        'trimf')");
-%! plot(x, y, 'LineWidth', 2)
-%! ylim([-0.1 1.1]);
-%! xlabel('Crisp Input Value', 'FontWeight', 'bold');
-%! ylabel('Degree of Membership', 'FontWeight', 'bold');
-%! grid;
--- a/main/fuzzy-logic-toolkit/inst/fcm.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,364 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{cluster_centers} =} fcm (@var{input_data}, @var{num_clusters})
-## @deftypefnx {Function File} {@var{cluster_centers} =} fcm (@var{input_data}, @var{num_clusters}, @var{options})
-## @deftypefnx {Function File} {@var{cluster_centers} =} fcm (@var{input_data}, @var{num_clusters}, [@var{m}, @var{max_iterations}, @var{epsilon}, @var{display_intermediate_results}])
-## @deftypefnx {Function File} {[@var{cluster_centers}, @var{soft_partition}, @var{obj_fcn_history}] =} fcm (@var{input_data}, @var{num_clusters})
-## @deftypefnx {Function File} {[@var{cluster_centers}, @var{soft_partition}, @var{obj_fcn_history}] =} fcm (@var{input_data}, @var{num_clusters}, @var{options})
-## @deftypefnx {Function File} {[@var{cluster_centers}, @var{soft_partition}, @var{obj_fcn_history}] =} fcm (@var{input_data}, @var{num_clusters}, [@var{m}, @var{max_iterations}, @var{epsilon}, @var{display_intermediate_results}])
-##
-## Using the Fuzzy C-Means algorithm, calculate and return the soft partition
-## of a set of unlabeled data points.
-##
-## Also, if @var{display_intermediate_results} is true, display intermediate 
-## results after each iteration. Note that because the initial cluster
-## prototypes are randomly selected locations in the ranges determined by the
-## input data, the results of this function are nondeterministic.
-##
-## The required arguments to fcm are:
-## @itemize @w
-## @item
-## @var{input_data} - a matrix of input data points; each row corresponds to one point
-## @item
-## @var{num_clusters} - the number of clusters to form
-## @end itemize
-##
-## The optional arguments to fcm are:
-## @itemize @w
-## @item
-## @var{m} - the parameter (exponent) in the objective function; default = 2.0
-## @item
-## @var{max_iterations} - the maximum number of iterations before stopping; default = 100
-## @item
-## @var{epsilon} - the stopping criteria; default = 1e-5
-## @item
-## @var{display_intermediate_results} - if 1, display results after each iteration, and if 0, do not; default = 1
-## @end itemize
-##
-## The default values are used if any of the optional arguments are missing or
-## evaluate to NaN.
-##
-## The return values are:
-## @itemize @w
-## @item
-## @var{cluster_centers} - a matrix of the cluster centers; each row corresponds to one point
-## @item
-## @var{soft_partition} - a constrained soft partition matrix
-## @item
-## @var{obj_fcn_history} - the values of the objective function after each iteration
-## @end itemize
-##
-## Three important matrices used in the calculation are X (the input points
-## to be clustered), V (the cluster centers), and Mu (the membership of each
-## data point in each cluster). Each row of X and V denotes a single point,
-## and Mu(i, j) denotes the membership degree of input point X(j, :) in the
-## cluster having center V(i, :).
-##
-## X is identical to the required argument @var{input_data}; V is identical
-## to the output @var{cluster_centers}; and Mu is identical to the output
-## @var{soft_partition}.
-##
-## If n denotes the number of input points and k denotes the number of
-## clusters to be formed, then X, V, and Mu have the dimensions:
-##
-## @example
-## @group
-##                               1    2   ...  #features
-##                          1 [                           ]
-##    X  =  input_data  =   2 [                           ]
-##                        ... [                           ]
-##                          n [                           ]
-## @end group
-## @end example
-##
-## @example
-## @group
-##                                    1    2   ...  #features
-##                               1 [                           ]
-##    V  =  cluster_centers  =   2 [                           ]
-##                             ... [                           ]
-##                               k [                           ]
-## @end group
-## @end example
-##
-## @example
-## @group
-##                                    1    2   ...   n
-##                               1 [                    ]
-##    Mu  =  soft_partition  =   2 [                    ]
-##                             ... [                    ]
-##                               k [                    ]
-## @end group
-## @end example
-##
-## @seealso{gustafson_kessel, partition_coeff, partition_entropy, xie_beni_index}
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy partition clustering
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      fcm.m
-## Last-Modified: 5 Sep 2012
-
-function [cluster_centers, soft_partition, obj_fcn_history] = ...
-           fcm (input_data, num_clusters, options = [2.0, 100, 1e-5, 1])
-
-  ## If fcm was called with an incorrect number of arguments, or the
-  ## arguments do not have the correct type, print an error message
-  ## and halt.
-
-  if ((nargin != 2) && (nargin != 3))
-    puts ("Type 'help fcm' for more information.\n");
-    error ("fcm requires 2 or 3 arguments\n");
-  elseif (!is_real_matrix (input_data))
-    puts ("Type 'help fcm' for more information.\n");
-    error ("fcm's first argument must be matrix of real numbers\n");
-  elseif (!(is_int (num_clusters) && (num_clusters > 1)))
-    puts ("Type 'help fcm' for more information.\n");
-    error ("fcm's second argument must be an integer greater than 1\n");
-  elseif (!(isreal (options) && isvector (options)))
-    puts ("Type 'help fcm' for more information.\n");
-    error ("fcm's third argument must be a vector of real numbers\n");
-  endif
-
-  ## Assign options to the more readable variable names: m,
-  ## max_iterations, epsilon, and display_intermediate_results.
-  ## If options are missing or NaN (not a number), use the default
-  ## values.
-
-  default_options = [2.0, 100, 1e-5, 1];
-
-  for i = 1 : 4
-    if ((length (options) < i) || ...
-        isna (options(i)) || isnan (options(i)))
-      options(i) = default_options(i);
-    endif
-  endfor
-
-  m = options(1);
-  max_iterations = options(2);
-  epsilon = options(3);
-  display_intermediate_results = options(4);
-
-  ## Call a private function to compute the output.
-
-  [cluster_centers, soft_partition, obj_fcn_history] = ...
-    fcm_private (input_data, num_clusters, m, max_iterations, epsilon,
-                 display_intermediate_results);
-endfunction
-
-##----------------------------------------------------------------------
-## Note: This function (fcm_private) is an implementation of Figure 13.4
-##       in Fuzzy Logic: Intelligence, Control and Information, by
-##       J. Yen and R. Langari, Prentice Hall, 1999, page 380
-##       (International Edition) and Algorithm 4.1 in Fuzzy and Neural
-##       Control, by Robert Babuska, November 2009, p. 63.
-##----------------------------------------------------------------------
-
-function [V, Mu, obj_fcn_history] = ...
-  fcm_private (X, k, m, max_iterations, epsilon, ...
-               display_intermediate_results)
-
-  ## Initialize the prototypes and the calculation.
-  V = init_cluster_prototypes (X, k);
-  obj_fcn_history = zeros (max_iterations);
-  convergence_criterion = epsilon + 1;
-  iteration = 0;
-
-  ## Calculate a few numbers here to reduce redundant computation.
-  k = rows (V);
-  n = rows (X);
-  sqr_dist = square_distance_matrix (X, V);
-
-  ## Loop until the objective function is within tolerance or the
-  ## maximum number of iterations has been reached.
-  while (convergence_criterion > epsilon && ...
-         ++iteration <= max_iterations)
-    V_previous = V;
-    Mu = update_cluster_membership (V, X, m, k, n, sqr_dist);
-    Mu_m = Mu .^ m;
-    V = update_cluster_prototypes (Mu_m, X, k);
-    sqr_dist = square_distance_matrix (X, V);
-    obj_fcn_history(iteration) = ...
-      compute_cluster_obj_fcn (Mu_m, sqr_dist);
-    if (display_intermediate_results)
-      printf ("Iteration count = %d,  Objective fcn = %8.6f\n", ...
-               iteration, obj_fcn_history(iteration));
-    endif
-    convergence_criterion = ...
-      compute_cluster_convergence (V, V_previous);
-  endwhile
-
-  ## Remove extraneous entries from the tail of the objective
-  ## function history.
-  if (convergence_criterion <= epsilon)
-    obj_fcn_history = obj_fcn_history(1 : iteration);
-  endif
-
-endfunction
-
-##----------------------------------------------------------------------
-## FCM Demo #1
-##----------------------------------------------------------------------
-
-%!demo
-%! ## This demo:
-%! ##    - classifies a small set of unlabeled data points using
-%! ##      the Fuzzy C-Means algorithm into two fuzzy clusters
-%! ##    - plots the input points together with the cluster centers
-%! ##    - evaluates the quality of the resulting clusters using
-%! ##      three validity measures: the partition coefficient, the
-%! ##      partition entropy, and the Xie-Beni validity index
-%! ##
-%! ## Note: The input_data is taken from Chapter 13, Example 17 in
-%! ##       Fuzzy Logic: Intelligence, Control and Information, by
-%! ##       J. Yen and R. Langari, Prentice Hall, 1999, page 381
-%! ##       (International Edition). 
-%!
-%! ## Use fcm to classify the input_data.
-%! input_data = [2 12; 4 9; 7 13; 11 5; 12 7; 14 4];
-%! number_of_clusters = 2;
-%! [cluster_centers, soft_partition, obj_fcn_history] = ...
-%!   fcm (input_data, number_of_clusters)
-%! 
-%! ## Plot the data points as small blue x's.
-%! figure ('NumberTitle', 'off', 'Name', 'FCM Demo 1');
-%! for i = 1 : rows (input_data)
-%!   plot (input_data(i, 1), input_data(i, 2), 'LineWidth', 2, ...
-%!         'marker', 'x', 'color', 'b');
-%!   hold on;
-%! endfor
-%!
-%! ## Plot the cluster centers as larger red *'s.
-%! for i = 1 : number_of_clusters
-%!   plot (cluster_centers(i, 1), cluster_centers(i, 2), ...
-%!         'LineWidth', 4, 'marker', '*', 'color', 'r');
-%!   hold on;
-%! endfor
-%!
-%! ## Make the figure look a little better:
-%! ##    - scale and label the axes
-%! ##    - show gridlines
-%! xlim ([0 15]);
-%! ylim ([0 15]);
-%! xlabel ('Feature 1');
-%! ylabel ('Feature 2');
-%! grid
-%! hold
-%! 
-%! ## Calculate and print the three validity measures.
-%! printf ("Partition Coefficient: %f\n", ...
-%!         partition_coeff (soft_partition));
-%! printf ("Partition Entropy (with a = 2): %f\n", ...
-%!         partition_entropy (soft_partition, 2));
-%! printf ("Xie-Beni Index: %f\n\n", ...
-%!         xie_beni_index (input_data, cluster_centers, ...
-%!         soft_partition));
-
-##----------------------------------------------------------------------
-## FCM Demo #2
-##----------------------------------------------------------------------
-
-%!demo
-%! ## This demo:
-%! ##    - classifies three-dimensional unlabeled data points using
-%! ##      the Fuzzy C-Means algorithm into three fuzzy clusters
-%! ##    - plots the input points together with the cluster centers
-%! ##    - evaluates the quality of the resulting clusters using
-%! ##      three validity measures: the partition coefficient, the
-%! ##      partition entropy, and the Xie-Beni validity index
-%! ##
-%! ## Note: The input_data was selected to form three areas of
-%! ##       different shapes.
-%! 
-%! ## Use fcm to classify the input_data.
-%! input_data = [1 11 5; 1 12 6; 1 13 5; 2 11 7; 2 12 6; 2 13 7;
-%!               3 11 6; 3 12 5; 3 13 7; 1 1 10; 1 3 9; 2 2 11;
-%!               3 1 9; 3 3 10; 3 5 11; 4 4 9; 4 6 8; 5 5 8; 5 7 9;
-%!               6 6 10; 9 10 12; 9 12 13; 9 13 14; 10 9 13; 10 13 12;
-%!               11 10 14; 11 12 13; 12 6 12; 12 7 15; 12 9 15;
-%!               14 6 14; 14 8 13];
-%! number_of_clusters = 3;
-%! [cluster_centers, soft_partition, obj_fcn_history] = ...
-%!   fcm (input_data, number_of_clusters, [NaN NaN NaN 0])
-%! 
-%! ## Plot the data points in two dimensions (using features 1 & 2)
-%! ## as small blue x's.
-%! figure ('NumberTitle', 'off', 'Name', 'FCM Demo 2');
-%! for i = 1 : rows (input_data)
-%!   plot (input_data(i, 1), input_data(i, 2), 'LineWidth', 2, ...
-%!         'marker', 'x', 'color', 'b');
-%!   hold on;
-%! endfor
-%! 
-%! ## Plot the cluster centers in two dimensions
-%! ## (using features 1 & 2) as larger red *'s.
-%! for i = 1 : number_of_clusters
-%!   plot (cluster_centers(i, 1), cluster_centers(i, 2), ...
-%!         'LineWidth', 4, 'marker', '*', 'color', 'r');
-%!   hold on;
-%! endfor
-%! 
-%! ## Make the figure look a little better:
-%! ##    - scale and label the axes
-%! ##    - show gridlines
-%! xlim ([0 15]);
-%! ylim ([0 15]);
-%! xlabel ('Feature 1');
-%! ylabel ('Feature 2');
-%! grid
-%! hold
-%! 
-%! ## Plot the data points in two dimensions
-%! ## (using features 1 & 3) as small blue x's.
-%! figure ('NumberTitle', 'off', 'Name', 'FCM Demo 2');
-%! for i = 1 : rows (input_data)
-%!   plot (input_data(i, 1), input_data(i, 3), 'LineWidth', 2, ...
-%!         'marker', 'x', 'color', 'b');
-%!   hold on;
-%! endfor
-%! 
-%! ## Plot the cluster centers in two dimensions
-%! ## (using features 1 & 3) as larger red *'s.
-%! for i = 1 : number_of_clusters
-%!   plot (cluster_centers(i, 1), cluster_centers(i, 3), ...
-%!         'LineWidth', 4, 'marker', '*', 'color', 'r');
-%!   hold on;
-%! endfor
-%! 
-%! ## Make the figure look a little better:
-%! ##    - scale and label the axes
-%! ##    - show gridlines
-%! xlim ([0 15]);
-%! ylim ([0 15]);
-%! xlabel ('Feature 1');
-%! ylabel ('Feature 3');
-%! grid
-%! hold
-%! 
-%! ## Calculate and print the three validity measures.
-%! printf ("Partition Coefficient: %f\n", ...
-%!         partition_coeff (soft_partition));
-%! printf ("Partition Entropy (with a = 2): %f\n", ...
-%!         partition_entropy (soft_partition, 2));
-%! printf ("Xie-Beni Index: %f\n\n", ...
-%!         xie_beni_index (input_data, cluster_centers, ...
-%!         soft_partition));
--- a/main/fuzzy-logic-toolkit/inst/gauss2mf.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,128 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} gauss2mf (@var{x}, @var{params})
-## @deftypefnx {Function File} {@var{y} =} gauss2mf (@var{[x1 x2 ... xn]}, @var{[sig1 c1 sig2 c2]})
-##
-## For a given domain @var{x} and parameters @var{params} (or
-## @var{[sig1 c1 sig2 c2]}), return the corresponding @var{y} values for the
-## two-sided Gaussian composite membership function. This membership function is
-## a smooth curve calculated from two Gaussian membership functions as follows:
-##
-## Given parameters @var{sig1}, @var{c1}, @var{sig2}, and @var{c2}, that define
-## two Gaussian membership functions, let:
-##
-## @example
-## @group
-## f1(x) = exp((-(x - c1)^2)/(2 * sig1^2))     if x <= c1
-##         1                                   otherwise
-##
-## f2(x) = 1                                   if x <= c2
-##         exp((-(x - c2)^2)/(2 * sig2^2))     otherwise
-## @end group
-## @end example
-##
-## @noindent
-## Then gauss2mf is given by:
-##
-## @example
-## f(x) = f1(x) * f2(x)
-## @end example
-##
-## The argument @var{x} must be a real number or a non-empty vector of strictly
-## increasing real numbers, and @var{sig1}, @var{c1}, @var{sig2}, and @var{c2}
-## must be real numbers.
-## Gauss2mf always returns a continuously differentiable curve with values in
-## the range [0, 1]. 
-##
-## If @var{c1} < @var{c2}, gauss2mf is a normal membership function (has a
-## maximum value of 1), with the rising curve identical to that of f1(x) and a
-## falling curve identical to that of f2(x), above. If @var{c1} >= @var{c2},
-## gauss2mf returns a subnormal membership function (has a maximum value less
-## than 1).
-##
-## @noindent
-## To run the demonstration code, type @t{demo('gauss2mf')} at the Octave prompt.
-##
-## @seealso{dsigmf, gaussmf, gbellmf, pimf, psigmf, sigmf, smf, trapmf, trimf, zmf}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy membership gaussian
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      gauss2mf.m
-## Last-Modified: 19 Aug 2012
-
-function y = gauss2mf (x, params)
-
-  ## If the caller did not supply 2 argument values with the correct
-  ## types, print an error message and halt.
-
-  if (nargin != 2)
-    puts ("Type 'help gauss2mf' for more information.\n");
-    error ("gauss2mf requires 2 arguments\n");
-  elseif (!is_domain (x))
-    puts ("Type 'help gauss2mf' for more information.\n");
-    error ("gauss2mf's first argument must be a valid domain\n");
-  elseif (!are_mf_params ('gauss2mf', params))
-    puts ("Type 'help gauss2mf' for more information.\n");
-    error ("gauss2mf's second argument must be a parameter vector\n");
-  endif
-
-  ## Calculate and return the y values of the membership function on
-  ## the domain x according to the definition of gauss2mf given in the
-  ## comment above.
-
-  sig1 = params(1);
-  c1 = params(2);
-  sig2 = params(3);
-  c2 = params(4);
-
-  f1_val = @(x_val) (x_val <= c1) * ...
-                    exp ((-(x_val - c1)^2)/(2 * sig1^2)) + ...
-                    (x_val > c1);
-
-  f2_val = @(x_val) (x_val <= c2) + ... 
-                    (x_val > c2) * exp ((-(x_val - c2)^2)/(2 * sig2^2));
-
-  f1 = arrayfun (f1_val, x);
-  f2 = arrayfun (f2_val, x);
-  y = f1 .* f2;
-
-endfunction
-
-%!demo
-%! x = -10:0.2:10;
-%! params = [3 0 1.5 2];
-%! y1 = gauss2mf(x, params);
-%! params = [1.5 0 3 2];
-%! y2 = gauss2mf(x, params);
-%! params = [1.5 2 3 0];
-%! y3 = gauss2mf(x, params);
-%! figure('NumberTitle', 'off', 'Name', 'gauss2mf demo');
-%! plot(x, y1, 'r;params = [3 0 1.5 2];', 'LineWidth', 2);
-%! hold on ;
-%! plot(x, y2, 'b;params = [1.5 0 3 2];', 'LineWidth', 2);
-%! hold on ;
-%! plot(x, y3, 'g;params = [1.5 2 3 0];', 'LineWidth', 2);
-%! ylim([-0.1 1.1]);
-%! xlabel('Crisp Input Value', 'FontWeight', 'bold');
-%! ylabel('Degree of Membership', 'FontWeight', 'bold');
-%! grid;
-%! hold;
--- a/main/fuzzy-logic-toolkit/inst/gaussmf.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} gaussmf (@var{x}, @var{params})
-## @deftypefnx {Function File} {@var{y} =} gaussmf (@var{[x1 x2 ... xn]}, @var{[sig c]})
-##
-## For a given domain @var{x} and parameters @var{params} (or @var{[sig c]}),
-## return the corresponding @var{y} values for the Gaussian membership
-## function. This membership function is shaped like the Gaussian (normal)
-## distribution, but scaled to have a maximum value of 1. By contrast, the 
-## area under the Gaussian distribution curve is 1.
-##
-## The argument @var{x} must be a real number or a non-empty vector of strictly
-## increasing real numbers, and @var{sig} and @var{c} must be real numbers.
-## This membership function satisfies the equation:
-## @example
-## f(x) = exp((-(x - c)^2)/(2 * sig^2))
-## @end example
-##
-## @noindent
-## which always returns values in the range [0, 1].
-##
-## Just as for the Gaussian (normal) distribution, the parameters @var{sig} and
-## @var{c} represent:
-## @itemize @w
-## @item
-## sig^2 == the variance (a measure of the width of the curve)
-## @item
-## c == the center (the mean; the x value of the peak)
-## @end itemize
-##
-## @noindent
-## For larger values of @var{sig}, the curve is flatter, and for smaller values
-## of sig, the curve is narrower. The @var{y} value at the center is always 1:
-## @itemize @w
-## @item
-## f(c) == 1
-## @end itemize
-##
-## @noindent
-## To run the demonstration code, type @t{demo('gaussmf')} at the Octave prompt.
-##
-## @seealso{dsigmf, gauss2mf, gbellmf, pimf, psigmf, sigmf, smf, trapmf, trimf, zmf}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy membership gaussian
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      gaussmf.m
-## Last-Modified: 19 Aug 2012
-
-function y = gaussmf (x, params)
-
-  ## If the caller did not supply 2 argument values with the correct
-  ## types, print an error message and halt.
-
-  if (nargin != 2)
-    puts ("Type 'help gaussmf' for more information.\n");
-    error ("gaussmf requires 2 arguments\n");
-  elseif (!is_domain (x))
-    puts ("Type 'help gaussmf' for more information.\n");
-    error ("gaussmf's first argument must be a valid domain\n");
-  elseif (!are_mf_params ('gaussmf', params))
-    puts ("Type 'help gaussmf' for more information.\n");
-    error ("gaussmf's second argument must be a parameter vector\n");
-  endif
-
-  ## Calculate and return the y values of the membership function on the
-  ## domain x.
-
-  sig = params(1);
-  c = params(2);
-
-  y_val = @(x_val) exp ((-(x_val - c)^2)/(2 * sig^2));
-  y = arrayfun (y_val, x);
-
-endfunction
-
-%!demo
-%! x = -5:0.1:5;
-%! params = [0.5 0];
-%! y1 = gaussmf(x, params);
-%! params = [1 0];
-%! y2 = gaussmf(x, params);
-%! params = [2 0];
-%! y3 = gaussmf(x, params);
-%! figure('NumberTitle', 'off', 'Name', 'gaussmf demo');
-%! plot(x, y1, 'r;params = [0.5 0];', 'LineWidth', 2);
-%! hold on ;
-%! plot(x, y2, 'b;params = [1 0];', 'LineWidth', 2);
-%! hold on ;
-%! plot(x, y3, 'g;params = [2 0];', 'LineWidth', 2);
-%! ylim([-0.1 1.1]);
-%! xlabel('Crisp Input Value');
-%! ylabel('Degree of Membership');
-%! grid;
-%! hold;
--- a/main/fuzzy-logic-toolkit/inst/gbellmf.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} gbellmf (@var{x}, @var{params})
-## @deftypefnx {Function File} {@var{y} =} gbellmf (@var{[x1 x2 ... xn]}, @var{[a b c]})
-##
-## For a given domain @var{x} and parameters @var{params} (or @var{[a b c]}),
-## return the corresponding @var{y} values for the generalized bell-shaped
-## membership function.
-##
-## The argument @var{x} must be a real number or a non-empty vector of strictly
-## increasing real numbers, @var{a}, @var{b}, and @var{c} must be real numbers,
-## @var{a} must be non-zero, and @var{b} must be an integer. This membership
-## function satisfies the equation:
-## @example
-## f(x) = 1/(1 + (abs((x - c)/a))^(2 * b))
-## @end example
-## which always returns values in the range [0, 1].
-##
-## The parameters @var{a}, @var{b}, and @var{c} give:
-## @example
-## @group
-## a == controls the width of the curve at f(x) = 0.5;
-##      f(c-a) = f(c+a) = 0.5
-## b == controls the slope of the curve at x = c-a and x = c+a;
-##      f'(c-a) = b/2a and f'(c+a) = -b/2a
-## c == the center of the curve
-## @end group
-## @end example
-##
-## This membership function has a value of 0.5 at the two points c - a and
-## c + a, and the width of the curve at f(x) == 0.5 is 2 * |a|:
-## @example
-## @group
-## f(c - a) == f(c + a) == 0.5
-## 2 * |a| == the width of the curve at f(x) == 0.5
-## @end group
-## @end example
-##
-## @noindent
-## The generalized bell-shaped membership function is continuously
-## differentiable and is symmetric about the line x = c.
-##
-## @noindent
-## To run the demonstration code, type @t{demo('gbellmf')} at the Octave prompt.
-##
-## @seealso{dsigmf, gauss2mf, gaussmf, pimf, psigmf, sigmf, smf, trapmf, trimf, zmf}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy membership bell-shaped bell
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      gbellmf.m
-## Last-Modified: 19 Aug 2012
-
-function y = gbellmf (x, params)
-
-  ## If the caller did not supply 2 argument values with the correct
-  ## types, print an error message and halt.
-
-  if (nargin != 2)
-    puts ("Type 'help gbellmf' for more information.\n");
-    error ("gbellmf requires 2 arguments\n");
-  elseif (!is_domain (x))
-    puts ("Type 'help gbellmf' for more information.\n");
-    error ("gbellmf's first argument must be a valid domain\n");
-  elseif (!are_mf_params ('gbellmf', params))
-    puts ("Type 'help gbellmf' for more information.\n");
-    error ("gbellmf's second argument must be a parameter vector\n");
-  endif
-
-  ## Calculate and return the y values of the membership function on the
-  ## domain x.
-
-  a = params(1);
-  b = params(2);
-  c = params(3);
-
-  y_val = @(x_val) 1 / (1 + (abs ((x_val - c)/a))^(2 * b));
-  y = arrayfun (y_val, x);
-
-endfunction
-
-%!demo
-%! x = 0:255;
-%! params = [20 4 100];
-%! y1 = gbellmf(x, params);
-%! params = [30 3 100];
-%! y2 = gbellmf(x, params);
-%! params = [40 2 100];
-%! y3 = gbellmf(x, params);
-%! figure('NumberTitle', 'off', 'Name', 'gbellmf demo');
-%! plot(x, y1, 'r;params = [20 4 100];', 'LineWidth', 2)
-%! hold on;
-%! plot(x, y2, 'b;params = [30 3 100];', 'LineWidth', 2)
-%! hold on;
-%! plot(x, y3, 'g;params = [40 2 100];', 'LineWidth', 2)
-%! ylim([-0.1 1.1]);
-%! xlabel('Crisp Input Value', 'FontWeight', 'bold');
-%! ylabel('Degree of Membership', 'FontWeight', 'bold');
-%! grid;
--- a/main/fuzzy-logic-toolkit/inst/gensurf.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,221 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {} gensurf (@var{fis})
-## @deftypefnx {Function File} {} gensurf (@var{fis}, @var{input_axes})
-## @deftypefnx {Function File} {} gensurf (@var{fis}, @var{input_axes}, @var{output_axes})
-## @deftypefnx {Function File} {} gensurf (@var{fis}, @var{input_axes}, @var{output_axes}, @var{grids})
-## @deftypefnx {Function File} {} gensurf (@var{fis}, @var{input_axes}, @var{output_axes}, @var{grids}, @var{ref_input})
-## @deftypefnx {Function File} {} gensurf (@var{fis}, @var{input_axes}, @var{output_axes}, @var{grids}, @var{ref_input}, @var{num_points})
-## @deftypefnx {Function File} {@var{[x, y, z]} =} gensurf (...)
-##
-## Generate and plot a surface (or 2-dimensional curve) showing one FIS output
-## as a function of two (or one) of the FIS inputs. The reference input is used
-## for all FIS inputs that are not in the input_axes vector.
-##
-## Grids, which specifies the number of grids to show on the input axes, may be
-## a scalar or a vector of length 2. If a scalar, then both axes will use the
-## same number of grids. If a vector of length 2, then the grids on the two axes
-## are controlled separately.
-##
-## Num_points specifies the number of points to use when evaluating the FIS.
-##
-## The final form "[x, y, z] = gensurf(...)" suppresses plotting.
-##
-## Default values for arguments not supplied are:
-## @itemize @bullet
-## @item
-## input_axes == [1 2]
-## @item
-## output_axis == 1
-## @item
-## grids == [15 15]
-## @item
-## ref_input == []
-## @item
-## num_points == 101
-## @end itemize
-##
-## Six demo scripts that use gensurf are:
-## @itemize @bullet
-## @item
-## cubic_approx_demo.m
-## @item
-## heart_disease_demo_1.m
-## @item
-## heart_disease_demo_2.m
-## @item
-## investment_portfolio_demo.m
-## @item
-## linear_tip_demo.m
-## @item
-## mamdani_tip_demo.m
-## @item
-## sugeno_tip_demo.m
-## @end itemize
-##
-## Current limitation:
-## The form of gensurf that suppresses plotting (the final form above) is not yet
-## implemented.
-##
-## @seealso{cubic_approx_demo, heart_disease_demo_1, heart_disease_demo_2, investment_portfolio_demo, linear_tip_demo, mamdani_tip_demo, sugeno_tip_demo, plotmf}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy inference system fis plot
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      gensurf.m
-## Last-Modified: 19 Aug 2012
-
-function [x, y, z] = gensurf (fis, input_axes = [1 2], ...
-                              output_axis = 1, grids = [15 15], ...
-                              ref_input = [], num_points = 101)
-
-  ## If gensurf was called with an incorrect number of arguments,
-  ## or the arguments do not have the correct type, print an error
-  ## message and halt.
-
-  if ((nargin < 1) || (nargin > 6))
-    puts ("Type 'help gensurf' for more information.\n");
-    error ("gensurf requires between 1 and 6 arguments\n");
-  elseif (!is_fis (fis))
-    puts ("Type 'help gensurf' for more information.\n");
-    error ("gensurf's first argument must be an FIS structure\n");
-  elseif ((nargin >= 2) && !are_input_indices (input_axes, fis))
-    puts ("Type 'help gensurf' for more information.\n");
-    error ("gensurf's second argument must be valid input indices\n");
-  elseif ((nargin >= 3) && !is_output_index (output_axis, fis))
-    puts ("Type 'help gensurf' for more information.\n");
-    error ("gensurf's third argument must be a valid output index\n");
-  elseif ((nargin >= 4) && !is_grid_spec (grids))
-    puts ("Type 'help gensurf' for more information.\n");
-    error ("gensurf's 4th argument must be a grid specification\n");
-  elseif ((nargin >= 5) && !is_ref_input (ref_input, fis, input_axes))
-    puts ("Type 'help gensurf' for more information.\n");
-    error ("gensurf's 5th argument must be reference input values\n");
-  elseif ((nargin == 6) && ...
-          !(is_pos_int (num_points) && (num_points >= 2)))
-    puts ("Type 'help gensurf' for more information.\n");
-    error ("gensurf's sixth argument must be an integer >= 2\n");
-  endif
-
-  if (length (input_axes) == 1 || columns (fis.input) == 1)
-    generate_plot (fis, input_axes, output_axis, grids, ...
-                   ref_input, num_points);
-  else
-    generate_surface (fis, input_axes, output_axis, grids, ...
-                      ref_input, num_points);
-  endif
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: generate_plot
-## Purpose:  Generate a plot representing one of the FIS outputs as a
-##           function of one of the FIS inputs.
-##----------------------------------------------------------------------
-
-function [x, y, z] = generate_plot (fis, input_axis, output_axis, ...
-                                    grids, ref_input, num_points)
-
-  ## Create input to FIS using grid points and reference values.
-
-  num_inputs = columns (fis.input);
-  num_grid_pts = grids(1);
-  fis_input = zeros (num_grid_pts, num_inputs);
-
-  if (num_inputs == 1)
-    input_axis = 1;
-  endif
-
-  for i = 1 : num_inputs
-    if (i == input_axis)
-      x_axis = (linspace (fis.input(i).range(1), ...
-                          fis.input(i).range(2), ...
-                          num_grid_pts))';
-      fis_input(:, i) = x_axis;
-    else
-      fis_input(:, i) = ref_input(i) * ones (num_grid_pts, 1);
-    endif
-  endfor
-
-  ## Compute and plot the output.
-
-  output = evalfis_private (fis_input, fis, num_points);
-  figure ('NumberTitle', 'off', 'Name', fis.name);
-  plot (x_axis, output, 'LineWidth', 2);
-  xlabel (fis.input(input_axis).name, 'FontWeight', 'bold');
-  ylabel (fis.output(output_axis).name, 'FontWeight', 'bold');
-  grid;
-  hold;
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: generate_surface
-## Purpose:  Generate a surface representing one of the FIS outputs as
-##           a function of two of the FIS inputs.
-##----------------------------------------------------------------------
-
-function [x, y, z] = generate_surface (fis, input_axes, output_axis, ...
-                                       grids, ref_input, num_points)
-
-  ## Create input to FIS using grid points and reference values.
-
-  num_inputs = columns (fis.input);
-  if (length (grids) == 1)
-    grids = [grids grids];
-  endif
-  num_grid_pts = prod (grids);
-  fis_input = zeros (num_grid_pts, num_inputs);
-
-  for i = 1 : num_inputs
-    if (i == input_axes(1))
-      x_axis = (linspace (fis.input(i).range(1), ...
-                          fis.input(i).range(2), ...
-                          grids(1)))';
-    elseif (i == input_axes(2))
-      y_axis = (linspace (fis.input(i).range(1), ...
-                          fis.input(i).range(2), ...
-                          grids(2)))';
-    else
-      fis_input(:, i) = ref_input(i) * ones (num_grid_pts, 1);
-    endif
-  endfor
-
-  [xx, yy] = meshgrid (x_axis, y_axis);
-
-  fis_input(:, input_axes(1)) = xx(:);
-  fis_input(:, input_axes(2)) = yy(:);
-
-  ## Compute the output and reshape it to fit the grid.
-
-  output = evalfis_private (fis_input, fis, num_points);
-  z_matrix = reshape (output(:, output_axis), length (x_axis), ...
-                      length (y_axis));
-
-  ## Plot the surface.
-
-  figure ('NumberTitle', 'off', 'Name', fis.name);
-  surf (x_axis, y_axis, z_matrix);
-  xlabel (fis.input(input_axes(1)).name);
-  ylabel (fis.input(input_axes(2)).name);
-  zlabel (fis.output(output_axis).name);
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/getfis.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,567 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{retval} =} getfis (@var{fis})
-## @deftypefnx {Function File} {@var{retval} =} getfis (@var{fis}, @var{property})
-## @deftypefnx {Function File} {@var{retval} =} getfis (@var{fis}, @var{in_or_out}, @var{var_index})
-## @deftypefnx {Function File} {@var{retval} =} getfis (@var{fis}, @var{in_or_out}, @var{var_index}, @var{var_property})
-## @deftypefnx {Function File} {@var{retval} =} getfis (@var{fis}, @var{in_or_out}, @var{var_index}, @var{mf}, @var{mf_index})
-## @deftypefnx {Function File} {@var{retval} =} getfis (@var{fis}, @var{in_or_out}, @var{var_index}, @var{mf}, @var{mf_index}, @var{mf_property})
-##
-## Return or print the property (field) values of an FIS structure
-## specified by the arguments. There are six forms of getfis:
-##
-## @table @asis
-## @item # Arguments
-## Action Taken
-## @item 1
-## Print (some) properties of an FIS structure on standard output.
-## Return the empty set.
-## @item 2
-## Return a specified property of the FIS structure. The properties
-## that may be specified are: name, type, version, numinputs, numoutputs,
-## numinputmfs, numoutputmfs, numrules, andmethod, ormethod,
-## impmethod, addmethod, defuzzmethod, inlabels, outlabels,
-## inrange, outrange, inmfs, outmfs, inmflabels, outmflabels,
-## inmftypes, outmftypes, inmfparams, outmfparams, and rulelist.
-## @item 3
-## Print the properties of a specified input or output variable
-## of the FIS structure. Return the empty set.
-## @item 4
-## Return a specified property of an input or output variable.
-## The properties that may be specified are: name, range, nummfs,
-## and mflabels.
-## @item 5
-## Print the properties of a specified membership function of the
-## FIS structure. Return the empty set.
-## @item 6
-## Return a specified property of a membership function. The
-## properties that may be specified are: name, type, and params.
-## @end table
-##
-## The types of the arguments are expected to be:
-## @table @var
-## @item fis
-## an FIS structure
-## @item property
-## a string; one of: 'name', 'type', 'version', 'numinputs',
-## 'numoutputs', 'numinputmfs', 'numoutputmfs',
-## 'numrules', 'andmethod', 'ormethod', 'impmethod',
-## 'addmethod', 'defuzzmethod' 'inlabels', 'outlabels',
-## 'inrange', 'outrange', 'inmfs', 'outmfs',
-## 'inmflabels', 'outmflabels', 'inmftypes',
-## 'outmftypes', 'inmfparams', 'outmfparams', and
-## 'rulelist' (case-insensitive)
-## @item in_or_out
-## either 'input' or 'output' (case-insensitive)
-## @item var_index
-## a valid integer index of an input or output FIS variable
-## @item var_property
-## a string; one of: 'name', 'range', 'nummfs', and 'mflabels'
-## @item mf
-## the string 'mf'
-## @item mf_index
-## a valid integer index of a membership function 
-## @item mf_property
-## a string; one of 'name', 'type', or 'params'
-## @end table
-##
-## @noindent
-## Note that all of the strings representing properties above are case
-## insensitive.
-##
-## @seealso{setfis, showfis}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy inference system fis
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      getfis.m
-## Last-Modified: 20 Aug 2012
-
-##----------------------------------------------------------------------
-
-function retval = getfis (fis, arg2 = 'dummy', arg3 = 'dummy', ...
-                          arg4 = 'dummy', arg5 = 'dummy', ...
-                          arg6 = 'dummy')
-
-  switch (nargin)
-    case 1  retval = getfis_one_arg (fis);
-    case 2  retval = getfis_two_args (fis, arg2);
-    case 3  retval = getfis_three_args (fis, arg2, arg3);
-    case 4  retval = getfis_four_args (fis, arg2, arg3, arg4);
-    case 5  retval = getfis_five_args (fis, arg2, arg3, arg4, arg5);
-    case 6  retval = getfis_six_args (fis, arg2, arg3, arg4, arg5, ...
-                                      arg6);
-    otherwise
-            puts ("Type 'help getfis' for more information.\n");
-            error ("getfis requires 1-6 arguments\n");
-  endswitch
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: getfis_one_arg
-## Purpose:  Handle calls to getfis that have 1 argument. See the
-##           comment at the top of this file for more complete info.
-##----------------------------------------------------------------------
-
-function retval = getfis_one_arg (fis)
-
-  ## If the argument does not have the correct type, print an error
-  ## message and halt.
-
-  if (!is_fis (fis))
-    puts ("Type 'help getfis' for more information.\n");
-    error ("the first argument to getfis must be an FIS structure\n");
-  endif
-
-  ## Print (some) properties of the FIS structure. Return the empty set.
-
-  printf ("Name = %s\n", fis.name);
-  printf ("Type = %s\n", fis.type);
-  printf ("NumInputs = %d\n", columns(fis.input));
-  printf ("InLabels = \n");
-  for i = 1 : columns (fis.input)
-    printf ("\t%s\n", fis.input(i).name);
-  endfor
-  printf ("NumOutputs = %d\n", columns(fis.output));
-  printf ("OutLabels = \n");
-  for i = 1 : columns (fis.output)
-    printf ("\t%s\n", fis.output(i).name);
-  endfor
-  printf ("NumRules = %d\n", columns(fis.rule));
-  printf ("AndMethod = %s\n", fis.andMethod);
-  printf ("OrMethod = %s\n", fis.orMethod);
-  printf ("ImpMethod = %s\n", fis.impMethod);
-  printf ("AggMethod = %s\n", fis.aggMethod);
-  printf ("DefuzzMethod = %s\n", fis.defuzzMethod);
-  retval = [];
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: getfis_two_args
-## Purpose:  Handle calls to getfis that have 2 arguments. See the
-##           comment at the top of this file for more complete info.
-##----------------------------------------------------------------------
-
-function retval = getfis_two_args (fis, arg2)
-
-  ## If not all of the arguments have the correct types, print an error
-  ## message and halt.
-
-  if (!is_fis (fis))
-    puts ("Type 'help getfis' for more information.\n");
-    error ("the first argument to getfis must be an FIS structure\n");
-  elseif (!(is_string (arg2) && ismember (tolower (arg2), {'name', ...
-           'type', 'version', 'numinputs', 'numoutputs', ...
-           'numinputmfs', 'numoutputmfs', 'numrules', 'andmethod', ...
-           'ormethod', 'impmethod', 'aggmethod', 'defuzzmethod', ...
-           'inlabels', 'outlabels', 'inrange', 'outrange', 'inmfs', ...
-           'outmfs', 'inmflabels', 'outmflabels', 'inmftypes', ...
-           'outmftypes', 'inmfparams', 'outmfparams', 'rulelist'})))
-    puts ("Type 'help getfis' for more information.\n");
-    error ("unknown second argument to getfis\n");
-  endif
-
-  ## Return the specified property of the FIS structure.
-
-  switch (tolower (arg2))
-    case 'name'         retval = fis.name;
-    case 'type'         retval = fis.type;
-    case 'version'      retval = fis.version;
-    case 'numinputs'    retval = columns (fis.input);
-    case 'numoutputs'   retval = columns (fis.output);
-    case 'numrules'     retval = columns(fis.rule);
-    case 'andmethod'    retval = fis.andMethod;
-    case 'ormethod'     retval = fis.orMethod;
-    case 'impmethod'    retval = fis.impMethod;
-    case 'aggmethod'    retval = fis.aggMethod;
-    case 'defuzzmethod' retval = fis.defuzzMethod;
-
-    case 'numinputmfs'
-      retval = [];
-      for i = 1 : columns (fis.input)
-        if (i == 1)
-          retval = columns(fis.input(i).mf);
-        else
-          retval = [retval columns(fis.input(i).mf)];
-        endif
-      endfor
-
-    case 'numoutputmfs'
-      retval = [];
-      for i = 1 : columns (fis.output)
-        if (i == 1)
-          retval = columns(fis.output(i).mf);
-        else
-          retval = [retval columns(fis.output(i).mf)];
-        endif
-      endfor
-
-    case 'inlabels'
-      retval = [];
-      for i = 1 : columns (fis.input)
-        if (i == 1)
-          retval = fis.input(i).name;
-        else
-          retval = [retval; fis.input(i).name];
-        endif
-      endfor
-
-    case 'outlabels'
-      retval = [];
-      for i = 1 : columns (fis.output)
-        if (i == 1)
-          retval = fis.output(i).name;
-        else
-          retval = [retval; fis.output(i).name];
-        endif
-      endfor
-
-    case 'inrange'
-      retval = [];
-      for i = 1 : columns (fis.input)
-        if (i == 1)
-          retval = fis.input(i).range;
-        else
-          retval = [retval; fis.input(i).range];
-        endif
-      endfor
-
-    case 'outrange'
-      retval = [];
-      for i = 1 : columns (fis.output)
-        if (i == 1)
-          retval = fis.output(i).range;
-        else
-          retval = [retval; fis.output(i).range];
-        endif
-      endfor
-
-    case 'inmfs'
-      retval = [];
-      for i = 1 : columns (fis.input)
-        if (i == 1)
-          retval = columns(fis.input(i).mf);
-        else
-          retval = [retval columns(fis.input(i).mf)];
-        endif
-      endfor
-
-    case 'outmfs'
-      retval = [];
-      for i = 1 : columns (fis.output)
-        if (i == 1)
-          retval = columns(fis.output(i).mf);
-        else
-          retval = [retval columns(fis.output(i).mf)];
-        endif
-      endfor
-
-    case 'inmflabels'
-      retval = [];
-      for i = 1 : columns (fis.input)
-        for j = 1 : columns (fis.input(i).mf)
-          if (i == 1 && y == 1)
-            retval = fis.input(i).mf(j).name;
-          else
-            retval = [retval; fis.input(i).mf(j).name];
-          endif
-        endfor
-      endfor
-
-    case 'outmflabels'
-      retval = [];
-      for i = 1 : columns (fis.output)
-        for j = 1 : columns (fis.output(i).mf)
-          if (i == 1 && y == 1)
-            retval = fis.output(i).mf(j).name;
-          else
-            retval = [retval; fis.output(i).mf(j).name];
-          endif
-        endfor
-      endfor
-
-    case 'inmftypes'
-      retval = [];
-      for i = 1 : columns (fis.input)
-        for j = 1 : columns (fis.input(i).mf)
-          if (i == 1 && y == 1)
-            retval = fis.input(i).mf(j).type;
-          else
-            retval = [retval; fis.input(i).mf(j).type];
-          endif
-        endfor
-      endfor
-
-    case 'outmftypes'
-      retval = [];
-      for i = 1 : columns (fis.output)
-        for j = 1 : columns (fis.output(i).mf)
-          if (i == 1 && y == 1)
-            retval = fis.output(i).mf(j).type;
-          else
-            retval = [retval; fis.output(i).mf(j).type];
-          endif
-        endfor
-      endfor
-
-    case 'inmfparams'
-      ## Determine the dimensions of the matrix to return.
-      max_len = 0;
-      num_inputs = columns (fis.input);
-      num_mfs = 0;
-      for i = 1 : num_inputs
-        num_var_i_mfs = columns (fis.input(i).mf);
-        num_mfs += num_var_i_mfs;
-        for j = 1 : num_var_i_mfs
-          max_len = max (max_len, length (fis.input(i).mf(j).params));
-        endfor
-      endfor
-
-      ## Assemble the matrix of params to return. Pad with zeros.
-      retval = zeros (num_mfs, max_len);
-      for i = 1 : num_inputs
-        for j = 1 : columns (fis.input(i).mf)
-          next_row_index = (i - 1) * max_len + j;
-          next_row = fis.input(i).mf(j).params;
-          retval(next_row_index, 1 : length (next_row)) = next_row;
-        endfor
-      endfor
-
-    case 'outmfparams'
-      ## Determine the dimensions of the matrix to return.
-      max_len = 0;
-      num_outputs = columns (fis.output);
-      num_mfs = 0;
-      for i = 1 : num_outputs
-        num_var_i_mfs = columns (fis.output(i).mf);
-        num_mfs += num_var_i_mfs;
-        for j = 1 : num_var_i_mfs
-          max_len = max (max_len, length (fis.output(i).mf(j).params));
-        endfor
-      endfor
-
-      ## Assemble the matrix of params to return. Pad with zeros.
-      retval = zeros (num_mfs, max_len);
-      for i = 1 : num_outputs
-        for j = 1 : columns (fis.output(i).mf)
-          next_row_index = (i - 1) * max_len + j;
-          next_row = fis.output(i).mf(j).params;
-          retval(next_row_index, 1 : length (next_row)) = next_row;
-        endfor
-      endfor
-
-    case 'rulelist'
-      ## Determine the dimensions of the matrix to return.
-      num_inputs = columns (fis.input);
-      num_outputs = columns (fis.output);
-      num_rules = columns (fis.rule);
-
-      ## Assemble the matrix of rules to return.
-      retval = zeros (num_rules, num_inputs + num_outputs + 2);
-      for i = 1 : num_rules
-        retval(i, 1:num_inputs) = fis.rule(i).antecedent;
-        retval(i, num_inputs+1:num_inputs+num_outputs) = ...
-          fis.rule(i).consequent;
-        retval(i, num_inputs+num_outputs+1) = fis.rule(i).weight;
-        retval(i, num_inputs+num_outputs+2) = fis.rule(i).connection;
-      endfor
-
-    otherwise
-      error ("internal error in getfis_two_args");
-  endswitch
-endfunction
-
-##----------------------------------------------------------------------
-## Function: getfis_three_args
-## Purpose:  Handle calls to getfis that have 3 arguments. See the
-##           comment at the top of this file for more complete info.
-##----------------------------------------------------------------------
-
-function retval = getfis_three_args (fis, arg2, arg3)
-
-  ## If not all of the arguments have the correct types, print an error
-  ## message and halt.
-
-  if (!is_fis (fis))
-    puts ("Type 'help getfis' for more information.\n");
-    error ("the first argument to getfis must be an FIS structure\n");
-  elseif (!(is_string (arg2) && ...
-            ismember (tolower (arg2), {'input','output'})))
-    puts ("Type 'help getfis' for more information.\n");
-    error ("incorrect second argument to getfis\n");
-  elseif (!is_var_index (fis, arg2, arg3))
-    puts ("Type 'help getfis' for more information.\n");
-    error ("incorrect third argument to getfis\n");
-  endif
-
-  ## Print the properties of a specified input or output variable of the
-  ## FIS structure. Return the empty set.
-
-  var_str = ["fis." tolower(arg2) "(" num2str(arg3) ")"];
-  var_mf_str = [var_str ".mf"];
-  num_mfs = columns (eval (var_mf_str));
-  printf ("Name = %s\n", eval ([var_str ".name"]));
-  printf ("NumMFs = %d\n", num_mfs);
-  printf ("MFLabels = \n");
-  for i = 1 : num_mfs
-    printf ("\t%s\n", eval ([var_mf_str "(" num2str(i) ").name"]));
-  endfor
-  printf ("Range = %s\n", mat2str (eval ([var_str ".range"])));
-  retval = [];
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: getfis_four_args
-## Purpose:  Handle calls to getfis that have 4 arguments. See the
-##           comment at the top of this file for more complete info.
-##----------------------------------------------------------------------
-
-function retval = getfis_four_args (fis, arg2, arg3, arg4)
-
-  ## If not all of the arguments have the correct types, print an error
-  ## message and halt.
-
-  if (!is_fis (fis))
-    puts ("Type 'help getfis' for more information.\n");
-    error ("the first argument to getfis must be an FIS structure\n");
-  elseif (!(is_string (arg2) && ...
-            ismember (tolower (arg2), {'input','output'})))
-    puts ("Type 'help getfis' for more information.\n");
-    error ("incorrect second argument to getfis\n");
-  elseif (!is_var_index (fis, arg2, arg3))
-    puts ("Type 'help getfis' for more information.\n");
-    error ("incorrect third argument to getfis\n");
-  elseif (!(is_string (arg4) && ismember (tolower (arg4), ...
-           {'name', 'range', 'nummfs', 'mflabels'})))
-    puts ("Type 'help getfis' for more information.\n");
-    error ("incorrect fourth argument to getfis\n");
-  endif
-
-  ## Return the specified property of the FIS input or output variable.
-
-  arg2 = tolower (arg2);
-  arg4 = tolower (arg4);
-  if (ismember (arg4, {'name', 'range'}))
-    retval = eval (["fis." arg2 "(" num2str(arg3) ")." arg4]);
-  elseif (strcmp (arg4, 'nummfs'))
-    retval = columns (eval (["fis." arg2 "(" num2str(arg3) ").mf"]));
-  elseif (strcmp (arg2, 'input') && strcmp (arg4, 'mflabels'))
-    retval = [];
-    for i = 1 : columns (fis.input)
-      for j = 1 : columns (fis.input(i).mf)
-        retval = [retval; fis.input(i).mf(j).name];
-      endfor
-    endfor
-  elseif (strcmp (arg2, 'output') && strcmp (arg4, 'mflabels'))
-    retval = [];
-    for i = 1 : columns (fis.output)
-      for j = 1 : columns (fis.output(i).mf)
-        retval = [retval; fis.output(i).mf(j).name];
-      endfor
-    endfor
-  endif
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: getfis_five_args
-## Purpose:  Handle calls to getfis that have 5 arguments. See the
-##           comment at the top of this file for more complete info.
-##----------------------------------------------------------------------
-
-function retval = getfis_five_args (fis, arg2, arg3, arg4, arg5)
-
-  ## If not all of the arguments have the correct types, print an error
-  ## message and halt.
-
-  if (!is_fis (fis))
-    puts ("Type 'help getfis' for more information.\n");
-    error ("the first argument to getfis must be an FIS structure\n");
-  elseif (!(is_string(arg2) && ...
-            ismember(tolower(arg2), {'input','output'})))
-    puts ("Type 'help getfis' for more information.\n");
-    error ("incorrect second argument to getfis\n");
-  elseif (!is_var_index(fis, arg2, arg3))
-    puts ("Type 'help getfis' for more information.\n");
-    error ("incorrect third argument to getfis\n");
-  elseif (!(is_string(arg4) && isequal(tolower(arg4), 'mf')))
-    puts ("Type 'help getfis' for more information.\n");
-    error ("incorrect fourth argument to getfis\n");
-  elseif (!is_mf_index(fis, arg2, arg3, arg5))
-    puts ("Type 'help getfis' for more information.\n");
-    error ("incorrect fifth argument to getfis\n");
-  endif
-
-  ## Print the properties of a specified membership function of the
-  ## FIS structure. Return the empty set.
-
-  var_mf_str = ["fis." tolower(arg2) "(" num2str(arg3) ").mf(" ...
-                 num2str(arg5) ")"];
-  printf ("Name = %s\n", eval ([var_mf_str ".name"]));
-  printf ("Type = %s\n", eval ([var_mf_str ".type"]));
-  printf ("Params = ");
-  disp (eval ([var_mf_str ".params"]));
-  retval = [];
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: getfis_six_args
-## Purpose:  Handle calls to getfis that have 6 arguments. See the
-##           comment at the top of this file for more complete info.
-##----------------------------------------------------------------------
-
-function retval = getfis_six_args (fis, arg2, arg3, arg4, arg5, arg6)
-
-  ## If not all of the arguments have the correct types, print an error
-  ## message and halt.
-
-  if (!is_fis (fis))
-    puts ("Type 'help getfis' for more information.\n");
-    error ("the first argument to getfis must be an FIS structure\n");
-  elseif (!(is_string (arg2) && ...
-            ismember (tolower (arg2), {'input','output'})))
-    puts ("Type 'help getfis' for more information.\n");
-    error ("incorrect second argument to getfis\n");
-  elseif (!is_var_index (fis, arg2, arg3))
-    puts ("Type 'help getfis' for more information.\n");
-    error ("incorrect third argument to getfis\n");
-  elseif (!(is_string (arg4) && isequal (tolower (arg4), 'mf')))
-    puts ("Type 'help getfis' for more information.\n");
-    error ("incorrect fourth argument to getfis\n");
-  elseif (!is_mf_index (fis, arg2, arg3, arg5))
-    puts ("Type 'help getfis' for more information.\n");
-    error ("incorrect fifth argument to getfis\n");
-  elseif (!(is_string (arg6) && ismember (tolower (arg6), ...
-           {'name', 'type', 'params'})))
-    puts ("Type 'help getfis' for more information.\n");
-    error ("incorrect sixth argument to getfis\n");
-  endif
-
-  ## Return the specified membership function property.
-
-  retval = eval (["fis." tolower(arg2) "(" num2str(arg3) ").mf(" ...
-                  num2str(arg5) ")." tolower(arg6)]);
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/gustafson_kessel.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,434 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{cluster_centers} =} gustafson_kessel (@var{input_data}, @var{num_clusters})
-## @deftypefnx {Function File} {@var{cluster_centers} =} gustafson_kessel (@var{input_data}, @var{num_clusters}, @var{cluster_volume})
-## @deftypefnx {Function File} {@var{cluster_centers} =} gustafson_kessel (@var{input_data}, @var{num_clusters}, @var{cluster_volume}, @var{options})
-## @deftypefnx {Function File} {@var{cluster_centers} =} gustafson_kessel (@var{input_data}, @var{num_clusters}, @var{cluster_volume}, [@var{m}, @var{max_iterations}, @var{epsilon}, @var{display_intermediate_results}])
-## @deftypefnx {Function File} {[@var{cluster_centers}, @var{soft_partition}, @var{obj_fcn_history}] =} gustafson_kessel (@var{input_data}, @var{num_clusters})
-## @deftypefnx {Function File} {[@var{cluster_centers}, @var{soft_partition}, @var{obj_fcn_history}] =} gustafson_kessel (@var{input_data}, @var{num_clusters}, @var{cluster_volume})
-## @deftypefnx {Function File} {[@var{cluster_centers}, @var{soft_partition}, @var{obj_fcn_history}] =} gustafson_kessel (@var{input_data}, @var{num_clusters}, @var{cluster_volume}, @var{options})
-## @deftypefnx {Function File} {[@var{cluster_centers}, @var{soft_partition}, @var{obj_fcn_history}] =} gustafson_kessel (@var{input_data}, @var{num_clusters}, @var{cluster_volume}, [@var{m}, @var{max_iterations}, @var{epsilon}, @var{display_intermediate_results}])
-##
-## Using the Gustafson-Kessel algorithm, calculate and return the soft partition
-## of a set of unlabeled data points.
-##
-## Also, if @var{display_intermediate_results} is true, display intermediate 
-## results after each iteration. Note that because the initial cluster
-## prototypes are randomly selected locations in the ranges determined by the
-## input data, the results of this function are nondeterministic.
-##
-## The required arguments to gustafson_kessel are:
-## @itemize @w
-## @item
-## @var{input_data} - a matrix of input data points; each row corresponds to one point
-## @item
-## @var{num_clusters} - the number of clusters to form
-## @end itemize
-##
-## The third (optional) argument to gustafson_kessel is a vector of cluster volumes.
-## If omitted, a vector of 1's will be used as the default.
-##
-## The fourth (optional) argument to gustafson_kessel is a vector consisting of:
-## @itemize @w
-## @item
-## @var{m} - the parameter (exponent) in the objective function; default = 2.0
-## @item
-## @var{max_iterations} - the maximum number of iterations before stopping; default = 100
-## @item
-## @var{epsilon} - the stopping criteria; default = 1e-5
-## @item
-## @var{display_intermediate_results} - if 1, display results after each iteration, and if 0, do not; default = 1
-## @end itemize
-##
-## The default values are used if any of the four elements of the vector are missing or
-## evaluate to NaN.
-##
-## The return values are:
-## @itemize @w
-## @item
-## @var{cluster_centers} - a matrix of the cluster centers; each row corresponds to one point
-## @item
-## @var{soft_partition} - a constrained soft partition matrix
-## @item
-## @var{obj_fcn_history} - the values of the objective function after each iteration
-## @end itemize
-##
-## Three important matrices used in the calculation are X (the input points
-## to be clustered), V (the cluster centers), and Mu (the membership of each
-## data point in each cluster). Each row of X and V denotes a single point,
-## and Mu(i, j) denotes the membership degree of input point X(j, :) in the
-## cluster having center V(i, :).
-##
-## X is identical to the required argument @var{input_data}; V is identical
-## to the output @var{cluster_centers}; and Mu is identical to the output
-## @var{soft_partition}.
-##
-## If n denotes the number of input points and k denotes the number of
-## clusters to be formed, then X, V, and Mu have the dimensions:
-##
-## @example
-## @group
-##                               1    2   ...  #features
-##                          1 [                           ]
-##    X  =  input_data  =   2 [                           ]
-##                        ... [                           ]
-##                          n [                           ]
-## @end group
-## @end example
-##
-## @example
-## @group
-##                                    1    2   ...  #features
-##                               1 [                           ]
-##    V  =  cluster_centers  =   2 [                           ]
-##                             ... [                           ]
-##                               k [                           ]
-## @end group
-## @end example
-##
-## @example
-## @group
-##                                    1    2   ...   n
-##                               1 [                    ]
-##    Mu  =  soft_partition  =   2 [                    ]
-##                             ... [                    ]
-##                               k [                    ]
-## @end group
-## @end example
-##
-## @seealso{fcm, partition_coeff, partition_entropy, xie_beni_index}
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy partition clustering
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      gustafson_kessel.m
-## Last-Modified: 5 Sep 2012
-
-function [cluster_centers, soft_partition, obj_fcn_history] = ...
-           gustafson_kessel (input_data, num_clusters, ...
-           cluster_volume = [], options = [2.0, 100, 1e-5, 1])
-
-  ## If gustafson_kessel was called with an incorrect number of
-  ## arguments, or the arguments do not have the correct type, print
-  ## an error message and halt.
-
-  if ((nargin < 2) || (nargin > 4))
-    puts ("Type 'help gustafson_kessel' for more information.\n");
-    error ("gustafson_kessel requires 2, 3, or 4 arguments\n");
-  elseif (!is_real_matrix (input_data))
-    puts ("Type 'help gustafson_kessel' for more information.\n");
-    error ("gustafson_kessel's 1st argument must be matrix of reals\n");
-  elseif (!(is_int (num_clusters) && (num_clusters > 1)))
-    puts ("Type 'help gustafson_kessel' for more information.\n");
-    error ("gustafson_kessel's 2nd argument must be an integer > 1\n");
-  elseif (!(isequal (cluster_volume, []) || ...
-           (isreal (cluster_volume) && isvector (cluster_volume))))
-    puts ("Type 'help gustafson_kessel' for more information.\n");
-    error ("gustafson_kessel's 3rd arg must be a vector of reals\n");
-  elseif (!(isreal (options) && isvector (options)))
-    puts ("Type 'help gustafson_kessel' for more information.\n");
-    error ("gustafson_kessel's 4th arg must be a vector of reals\n");
-  endif
-
-  ## If the cluster volume matrix was not entered, create a default
-  ## value (a vector of 1's).
-
-  if (isequal (cluster_volume, []))
-    cluster_volume = ones (1, num_clusters);
-  endif
-
-  ## Assign options to the more readable variable names: m,
-  ## max_iterations, epsilon, and display_intermediate_results.
-  ## If options are missing or NaN (not a number), use the default
-  ## values.
-
-  default_options = [2.0, 100, 1e-5, 1];
-
-  for i = 1 : 4
-    if ((length (options) < i) || ...
-        isna (options(i)) || isnan (options(i)))
-      options(i) = default_options(i);
-    endif
-  endfor
-
-  m = options(1);
-  max_iterations = options(2);
-  epsilon = options(3);
-  display_intermediate_results = options(4);
-
-  ## Call a private function to compute the output.
-
-  [cluster_centers, soft_partition, obj_fcn_history] = ...
-    gustafson_kessel_private (input_data, num_clusters, ...
-                              cluster_volume, m, max_iterations, ...
-                              epsilon, display_intermediate_results);
-endfunction
-
-##----------------------------------------------------------------------
-## Function: gustafson_kessel_private
-## Purpose:  Classify unlabeled data points using the Gustafson-Kessel
-##           algorithm.
-## Note:     This function (gustafson_kessel_private) is an
-##           implementation of Algorithm 4.2 in Fuzzy and Neural
-##           Control, by Robert Babuska, November 2009, p. 69.
-##----------------------------------------------------------------------
-
-function [V, Mu, obj_fcn_history] = ...
-  gustafson_kessel_private (X, k, cluster_volume, m, max_iterations, ...
-                            epsilon, display_intermediate_results)
-
-  ## Initialize the prototypes and the calculation.
-  V = init_cluster_prototypes (X, k);
-  obj_fcn_history = zeros (max_iterations);
-  convergence_criterion = epsilon + 1;
-  iteration = 0;
-
-  ## Calculate a few numbers here to reduce redundant computation.
-  k = rows (V);
-  n = rows (X);
-  sqr_dist = square_distance_matrix (X, V);
-
-  ## Loop until the objective function is within tolerance or the
-  ## maximum number of iterations has been reached.
-  while (convergence_criterion > epsilon && ...
-         ++iteration <= max_iterations)
-    V_previous = V;
-    Mu = update_cluster_membership (V, X, m, k, n, sqr_dist);
-    Mu_m = Mu .^ m;
-    V = update_cluster_prototypes (Mu_m, X, k);
-    sqr_dist = gk_square_distance_matrix (X, V, Mu_m, cluster_volume);
-    obj_fcn_history(iteration) = ...
-      compute_cluster_obj_fcn (Mu_m, sqr_dist);
-    if (display_intermediate_results)
-      printf ("Iteration count = %d,  Objective fcn = %8.6f\n", ...
-               iteration, obj_fcn_history(iteration));
-    endif
-    convergence_criterion = ...
-      compute_cluster_convergence (V, V_previous);
-  endwhile
-
-  ## Remove extraneous entries from the tail of the objective ...
-  ## function history.
-  if (convergence_criterion <= epsilon)
-    obj_fcn_history = obj_fcn_history(1 : iteration);
-  endif
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: gk_square_distance_matrix
-##----------------------------------------------------------------------
-
-function sqr_dist = gk_square_distance_matrix (X, V, Mu_m, ...
-                                               cluster_volume)
-
-  k = rows (V);
-  n = rows (X);
-  num_features = columns (X);
-  sqr_dist = zeros (k, n);
-
-  for i = 1 : k
-    Vi = V(i, :);
-    covariance_matrix = compute_covariance_matrix (X, V, Mu_m, i);
-
-    for j = 1 : n
-      Vi_to_Xj = X(j, :) - Vi;
-      A = cluster_volume(i) * ...
-          det (covariance_matrix) ^ (1.0 / num_features) * ...
-          inv (covariance_matrix);
-      sqr_dist(i, j) = sum (Vi_to_Xj .* (A * Vi_to_Xj')');
-
-    endfor
-
-  endfor
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: compute_covariance_matrix
-##----------------------------------------------------------------------
-
-function covariance_matrix = compute_covariance_matrix (X, V, Mu_m, i)
-
-  num_features = columns (V);
-  n = rows (X);
-  num = zeros (num_features);
-  denom = 0.0;
-  Vi = V(i, :);
-
-  for j = 1 : n
-    Vi_to_Xj = X(j, :) - Vi;
-    num += Mu_m(i, j) * Vi_to_Xj' * Vi_to_Xj;
-    denom += Mu_m(i, j);
-  endfor
-
-  covariance_matrix = num / denom;
-
-endfunction
-
-##----------------------------------------------------------------------
-## Gustafson-Kessel Demo #1
-##----------------------------------------------------------------------
-
-%!demo
-%! ## This demo:
-%! ##    - classifies a small set of unlabeled data points using
-%! ##      the Gustafson-Kessel algorithm into two fuzzy clusters
-%! ##    - plots the input points together with the cluster centers
-%! ##    - evaluates the quality of the resulting clusters using
-%! ##      three validity measures: the partition coefficient, the
-%! ##      partition entropy, and the Xie-Beni validity index
-%! ##
-%! ## Note: The input_data is taken from Chapter 13, Example 17 in
-%! ##       Fuzzy Logic: Intelligence, Control and Information, by
-%! ##       J. Yen and R. Langari, Prentice Hall, 1999, page 381
-%! ##       (International Edition). 
-%! 
-%! ## Use gustafson_kessel to classify the input_data.
-%! input_data = [2 12; 4 9; 7 13; 11 5; 12 7; 14 4];
-%! number_of_clusters = 2;
-%! [cluster_centers, soft_partition, obj_fcn_history] = ...
-%!   gustafson_kessel (input_data, number_of_clusters)
-%! 
-%! ## Plot the data points as small blue x's.
-%! figure ('NumberTitle', 'off', 'Name', 'Gustafson-Kessel Demo 1');
-%! for i = 1 : rows (input_data)
-%!   plot (input_data(i, 1), input_data(i, 2), 'LineWidth', 2, ...
-%!         'marker', 'x', 'color', 'b');
-%!   hold on;
-%! endfor
-%! 
-%! ## Plot the cluster centers as larger red *'s.
-%! for i = 1 : number_of_clusters
-%!   plot (cluster_centers(i, 1), cluster_centers(i, 2), ...
-%!         'LineWidth', 4, 'marker', '*', 'color', 'r');
-%!   hold on;
-%! endfor
-%! 
-%! ## Make the figure look a little better:
-%! ##    - scale and label the axes
-%! ##    - show gridlines
-%! xlim ([0 15]);
-%! ylim ([0 15]);
-%! xlabel ('Feature 1');
-%! ylabel ('Feature 2');
-%! grid
-%! hold
-%! 
-%! ## Calculate and print the three validity measures.
-%! printf ("Partition Coefficient: %f\n", ...
-%!         partition_coeff (soft_partition));
-%! printf ("Partition Entropy (with a = 2): %f\n", ...
-%!         partition_entropy (soft_partition, 2));
-%! printf ("Xie-Beni Index: %f\n\n", ...
-%!         xie_beni_index (input_data, cluster_centers, ...
-%!         soft_partition));
- 
-##----------------------------------------------------------------------
-## Gustafson-Kessel Demo #2
-##----------------------------------------------------------------------
-
-%!demo
-%! ## This demo:
-%! ##    - classifies three-dimensional unlabeled data points using
-%! ##      the Gustafson-Kessel algorithm into three fuzzy clusters
-%! ##    - plots the input points together with the cluster centers
-%! ##    - evaluates the quality of the resulting clusters using
-%! ##      three validity measures: the partition coefficient, the
-%! ##      partition entropy, and the Xie-Beni validity index
-%! ##
-%! ## Note: The input_data was selected to form three areas of
-%! ##       different shapes.
-%! 
-%! ## Use gustafson_kessel to classify the input_data.
-%! input_data = [1 11 5; 1 12 6; 1 13 5; 2 11 7; 2 12 6; 2 13 7;
-%!               3 11 6; 3 12 5; 3 13 7; 1 1 10; 1 3 9; 2 2 11;
-%!               3 1 9; 3 3 10; 3 5 11; 4 4 9; 4 6 8; 5 5 8; 5 7 9;
-%!               6 6 10; 9 10 12; 9 12 13; 9 13 14; 10 9 13; 10 13 12;
-%!               11 10 14; 11 12 13; 12 6 12; 12 7 15; 12 9 15;
-%!               14 6 14; 14 8 13];
-%! number_of_clusters = 3;
-%! [cluster_centers, soft_partition, obj_fcn_history] = ...
-%!   gustafson_kessel (input_data, number_of_clusters, [1 1 1], ...
-%!                     [NaN NaN NaN 0])
-%! 
-%! ## Plot the data points in two dimensions (using features 1 & 2)
-%! ## as small blue x's.
-%! figure ('NumberTitle', 'off', 'Name', 'Gustafson-Kessel Demo 2');
-%! for i = 1 : rows (input_data)
-%!   plot (input_data(i, 1), input_data(i, 2), 'LineWidth', 2, ...
-%!         'marker', 'x', 'color', 'b');
-%!   hold on;
-%! endfor
-%! 
-%! ## Plot the cluster centers in two dimensions
-%! ## (using features 1 & 2) as larger red *'s.
-%! for i = 1 : number_of_clusters
-%!   plot (cluster_centers(i, 1), cluster_centers(i, 2), ...
-%!         'LineWidth', 4, 'marker', '*', 'color', 'r');
-%!   hold on;
-%! endfor
-%! 
-%! ## Make the figure look a little better:
-%! ##    - scale and label the axes
-%! ##    - show gridlines
-%! xlim ([0 15]);
-%! ylim ([0 15]);
-%! xlabel ('Feature 1');
-%! ylabel ('Feature 2');
-%! grid
-%!  
-%! ## Plot the data points in two dimensions
-%! ## (using features 1 & 3) as small blue x's.
-%! figure ('NumberTitle', 'off', 'Name', 'Gustafson-Kessel Demo 2');
-%! for i = 1 : rows (input_data)
-%!   plot (input_data(i, 1), input_data(i, 3), 'LineWidth', 2, ...
-%!         'marker', 'x', 'color', 'b');
-%!   hold on;
-%! endfor
-%! 
-%! ## Plot the cluster centers in two dimensions
-%! ## (using features 1 & 3) as larger red *'s.
-%! for i = 1 : number_of_clusters
-%!   plot (cluster_centers(i, 1), cluster_centers(i, 3), ...
-%!         'LineWidth', 4, 'marker', '*', 'color', 'r');
-%!   hold on;
-%! endfor
-%! 
-%! ## Make the figure look a little better:
-%! ##    - scale and label the axes
-%! ##    - show gridlines
-%! xlim ([0 15]);
-%! ylim ([0 15]);
-%! xlabel ('Feature 1');
-%! ylabel ('Feature 3');
-%! grid
-%! hold
-%! 
-%! ## Calculate and print the three validity measures.
-%! printf ("Partition Coefficient: %f\n", ...
-%!         partition_coeff (soft_partition));
-%! printf ("Partition Entropy (with a = 2): %f\n", ...
-%!         partition_entropy (soft_partition, 2));
-%! printf ("Xie-Beni Index: %f\n\n", ...
-%!         xie_beni_index (input_data, cluster_centers, ...
-%!         soft_partition));
--- a/main/fuzzy-logic-toolkit/inst/hamacher_product.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{retval} =} hamacher_product (@var{x})
-## @deftypefnx {Function File} {@var{retval} =} hamacher_product (@var{x}, @var{y})
-##
-## Return the Hamacher product of the input.
-## The Hamacher product of two real scalars x and y is:
-## (x * y) / (x + y - x * y)
-##
-## For one vector argument, apply the Hamacher product to all of the elements
-## of the vector. (The Hamacher product is associative.) For one
-## two-dimensional matrix argument, return a vector of the Hamacher product
-## of each column.
-##
-## For two vectors or matrices of identical dimensions, or for one scalar and
-## one vector or matrix argument, return the pair-wise Hamacher product.
-##
-## @seealso{algebraic_product, algebraic_sum, bounded_difference, bounded_sum, drastic_product, drastic_sum, einstein_product, einstein_sum, hamacher_sum}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy hamacher_product
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      hamacher_product.m
-## Last-Modified: 20 Aug 2012
-
-function retval = hamacher_product (x, y = 0)
-  if (nargin == 0 || nargin > 2 ||
-      !is_real_matrix (x) || !is_real_matrix (y))
-    argument_error
-
-  elseif (nargin == 1)
-    if (isvector (x))
-      retval = vector_arg (x);
-    elseif (ndims (x) == 2)
-      retval = matrix_arg (x);
-    else
-      argument_error;
-    endif
-
-  elseif (nargin == 2)
-    if (isequal (size (x), size (y)))
-      retval = arrayfun (@scalar_args, x, y);
-    elseif (isscalar (x) && ismatrix (y))
-      x = x * ones (size (y));
-      retval = arrayfun (@scalar_args, x, y);
-    elseif (ismatrix (x) && isscalar (y))
-      y = y * ones (size (x));
-      retval = arrayfun (@scalar_args, x, y);
-    else
-      argument_error;
-    endif
-  endif
-endfunction
-
-function retval = scalar_args (x, y)
-  retval = (x * y) / (x + y - x * y);
-endfunction
-
-function retval = vector_arg (real_vector)
-  x = 1;
-  for i = 1 : length (real_vector)
-    y = real_vector(i);
-    if (x == 0 && y == 0)
-      x = 0;
-    else
-      x = (x * y) / (x + y - x * y);
-    endif
-  endfor
-  retval = x;
-endfunction
-
-function retval = matrix_arg (x)
-  num_cols = columns (x);
-  retval = zeros (1, num_cols);
-  for i = 1 : num_cols
-    retval(i) = vector_arg (x(:, i));
-  endfor
-endfunction
-
-function argument_error
-  puts ("Type 'help hamacher_product' for more information.\n");
-  error ("invalid arguments to function hamacher_product\n");
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/hamacher_sum.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{retval} =} hamacher_sum (@var{x})
-## @deftypefnx {Function File} {@var{retval} =} hamacher_sum (@var{x}, @var{y})
-##
-## Return the Hamacher sum of the input.
-## The Hamacher sum of two real scalars x and y is:
-## (x + y - 2 * x * y) / (1 - x * y)
-##
-## For one vector argument, apply the Hamacher sum to all of the elements
-## of the vector. (The Hamacher sum is associative.) For one
-## two-dimensional matrix argument, return a vector of the Hamacher sum
-## of each column.
-##
-## For two vectors or matrices of identical dimensions, or for one scalar and
-## one vector or matrix argument, return the pair-wise Hamacher sum.
-##
-## @seealso{algebraic_product, algebraic_sum, bounded_difference, bounded_sum, drastic_product, drastic_sum, einstein_product, einstein_sum, hamacher_product}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy hamacher_sum
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      hamacher_sum.m
-## Last-Modified: 20 Aug 2012
-
-function retval = hamacher_sum (x, y = 0)
-  if (nargin == 0 || nargin > 2 ||
-      !is_real_matrix (x) || !is_real_matrix (y))
-    argument_error
-
-  elseif (nargin == 1)
-    if (isvector (x))
-      retval = vector_arg (x);
-    elseif (ndims (x) == 2)
-      retval = matrix_arg (x);
-    else
-      argument_error;
-    endif
-
-  elseif (nargin == 2)
-    if (isequal (size (x), size (y)))
-      retval = arrayfun (@scalar_args, x, y);
-    elseif (isscalar (x) && ismatrix (y))
-      x = x * ones (size (y));
-      retval = arrayfun (@scalar_args, x, y);
-    elseif (ismatrix (x) && isscalar (y))
-      y = y * ones (size (x));
-      retval = arrayfun (@scalar_args, x, y);
-    else
-      argument_error;
-    endif
-  endif
-endfunction
-
-function retval = scalar_args (x, y)
-  retval = (x + y - 2 * x * y) / (1 - x * y);
-endfunction
-
-function retval = vector_arg (real_vector)
-  x = 0;
-  for i = 1 : length (real_vector)
-    y = real_vector(i);
-    if (x == 1 && y == 1)
-      x = 1;
-    else
-      x = (x + y - 2 * x * y) / (1 - x * y);
-    endif
-  endfor
-  retval = x;
-endfunction
-
-function retval = matrix_arg (x)
-  num_cols = columns (x);
-  retval = zeros (1, num_cols);
-  for i = 1 : num_cols
-    retval(i) = vector_arg (x(:, i));
-  endfor
-endfunction
-
-function argument_error
-  puts ("Type 'help hamacher_sum' for more information.\n");
-  error ("invalid arguments to function hamacher_sum\n");
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/heart_disease_demo_1.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Script File} {} heart_disease_demo_1
-##
-## Demonstrate the use of newfis, addvar, addmf, addrule, and evalfis
-## to build and evaluate an FIS. Also demonstrate the use of the algebraic
-## product and sum as the T-norm/S-norm pair, and demonstrate the use of
-## hedges in the FIS rules.
-##
-## The demo:
-## @itemize @minus
-## @item
-## builds an FIS
-## @item
-## plots the input membership functions
-## @item
-## plots the constant output functions
-## @item
-## displays the FIS rules in verbose format in the Octave window
-## @item
-## plots the FIS output as a function of the inputs
-## @end itemize
-##
-## @seealso{cubic_approx_demo, heart_disease_demo_2, investment_portfolio_demo, linear_tip_demo, mamdani_tip_demo, sugeno_tip_demo}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Note:          This example is based on an assignment written by
-##                Dr. Bruce Segee (University of Maine Dept. of ECE).
-## Keywords:      fuzzy-logic-toolkit fuzzy tests demos
-## Directory:     fuzzy-logic-toolkit/inst
-## Filename:      heart_disease_demo_1.m
-## Last-Modified: 20 Aug 2012
-
-## Create new FIS.
-a = newfis ('Heart-Disease-Risk', 'sugeno', ...
-            'algebraic_product', 'algebraic_sum', ...
-            'min', 'max', 'wtaver');
-
-## Add two inputs and their membership functions.
-a = addvar (a, 'input', 'LDL-Level', [0 300]);
-a = addmf (a, 'input', 1, 'Low', 'trapmf', [-1 0 90 130]);
-a = addmf (a, 'input', 1, 'Moderate', 'trapmf', [90 130 160 200]);
-a = addmf (a, 'input', 1, 'High', 'trapmf', [160 200 300 301]);
-
-a = addvar (a, 'input', 'HDL-Level', [0 100]);
-a = addmf (a, 'input', 2, 'Low', 'trapmf', [-1 0 35 45]);
-a = addmf (a, 'input', 2, 'Moderate', 'trapmf', [35 45 55 65]);
-a = addmf (a, 'input', 2, 'High', 'trapmf', [55 65 100 101]);
-
-## Add one output and its membership functions.
-a = addvar (a, 'output', 'Heart-Disease-Risk', [-2 12]);
-a = addmf (a, 'output', 1, 'Negligible', 'constant', 0);
-a = addmf (a, 'output', 1, 'Low', 'constant', 2.5);
-a = addmf (a, 'output', 1, 'Medium', 'constant', 5);
-a = addmf (a, 'output', 1, 'High', 'constant', 7.5);
-a = addmf (a, 'output', 1, 'Extreme', 'constant', 10);
-
-## Plot the input and output membership functions.
-plotmf (a, 'input', 1);
-plotmf (a, 'input', 2);
-plotmf (a, 'output', 1);
-
-## Add 15 rules and display them in verbose format.
-a = addrule (a, [1 1 3 1 1; 1 2 2 1 1; 1 3 1 1 1; ...
-                 2 1 4 1 1; 2 2 3 1 1; 2 3 2 1 1; ...
-                 3 1 5 1 1; 3 2 4 1 1; 3 3 3 1 1; ...
-                 1.3 3.3 2 1 2; ...
-                 3.05 1.05 4 1 2; ...
-                 -3.2 -1.2 3 1 1]);
-puts ("\nOutput of showrule(a):\n\n");
-showrule (a);
-
-## Plot the output as a function of the two inputs.
-gensurf (a);
--- a/main/fuzzy-logic-toolkit/inst/heart_disease_demo_2.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Script File} {} heart_disease_demo_2
-##
-## Demonstrate the use of the Octave Fuzzy Logic Toolkit to read and evaluate a
-## Sugeno-type FIS stored in a file.
-##
-## The demo:
-## @itemize @minus
-## @item
-## reads the FIS structure from a file
-## @item
-## plots the input membership functions
-## @item
-## plots the (constant) output functions
-## @item
-## plots the FIS output as a function of the inputs
-## @item
-## evaluates the Sugeno-type FIS for four inputs
-## @end itemize
-##
-## @seealso{cubic_approx_demo, heart_disease_demo_1, investment_portfolio_demo, linear_tip_demo, mamdani_tip_demo, sugeno_tip_demo}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy tests demos
-## Note:          This example is based on an assignment written by
-##                Dr. Bruce Segee (University of Maine Dept. of ECE).
-## Directory:     fuzzy-logic-toolkit/inst
-## Filename:      heart_disease_demo_2.m
-## Last-Modified: 20 Aug 2012
-
-## Read the FIS structure from a file.
-## (Alternatively, to select heart_disease_risk.fis using the dialog,
-## replace the following line with
-##    fis = readfis ();
-fis = readfis('heart_disease_risk.fis');
-
-## Plot the input and output membership functions.
-plotmf (fis, 'input', 1);
-plotmf (fis, 'input', 2);
-plotmf (fis, 'output', 1);
-
-## Plot the Heart Disease Risk as a function of LDL-Level and HDL-Level.
-gensurf (fis);
-
-## Calculate the Heart Disease Risk for 4 sets of LDL-HDL values: 
-puts ("\nFor the following four sets of LDL-HDL values:\n\n");
-ldl_hdl = [129 59; 130 60; 90 65; 205 40]
-puts ("\nThe Heart Disease Risk is:\n\n");
-heart_disease_risk = evalfis (ldl_hdl, fis, 1001)
--- a/main/fuzzy-logic-toolkit/inst/heart_disease_risk.fis	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fis
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      heart_disease_risk.fis
-## Last-Modified: 28 Aug 2012
-
-## Heart Disease Risk FIS
-
-[System]
-
-  Name = 'Heart-Disease-Risk'
-  Type = 'sugeno'
-  Version = 2.0
-  NumInputs = 2
-  NumOutputs = 1
-  NumRules = 15
-  AndMethod = 'min'
-  OrMethod = 'max'
-  ImpMethod = 'min'
-  AggMethod = 'max'
-  DefuzzMethod = 'wtaver'
-
-[Input1]
-
-  Name = 'LDL-Level'
-  Range = [0 300]
-  NumMFs = 5
-  MF1 = 'Low'             : 'trapmf', [-1 0 90 110]
-  MF2 = 'Low-Borderline'  : 'trapmf', [90 110 120 140]
-  MF3 = 'Borderline'      : 'trapmf', [120 140 150 170]
-  MF4 = 'High-Borderline' : 'trapmf', [150 170 180 200]
-  MF5 = 'High'            : 'trapmf', [180 200 300 301]
-
-[Input2]
-
-  Name = 'HDL-Level'
-  Range = [0 100]
-  NumMFs = 3
-
-  MF1 = 'Low-HDL'      : 'trapmf', [-1 0 35 45]
-  MF2 = 'Moderate-HDL' : 'trapmf', [35 45 55 65]
-  MF3 = 'High-HDL'     : 'trapmf', [55 65 100 101]
-
-[Output1]
-
-  Name = 'Heart-Disease-Risk'
-  Range = [0 10]
-  NumMFs = 5
-
-  MF1 = 'No-Risk'      : 'constant', [0]
-  MF2 = 'Low-Risk'     : 'constant', [2.5]
-  MF3 = 'Medium-Risk'  : 'constant', [5]
-  MF4 = 'High-Risk'    : 'constant', [7.5]
-  MF5 = 'Extreme-Risk' : 'constant', [10]
-
-[Rules]
-
-  1 1, 3 (1) : 1
-  1 2, 2 (1) : 1
-  1 3, 1 (1) : 1
-  2 1, 3 (1) : 1
-  2 2, 2 (1) : 1
-  2 3, 2 (1) : 1
-  3 1, 4 (1) : 1
-  3 2, 3 (1) : 1
-  3 3, 2 (1) : 1
-  4 1, 4 (1) : 1
-  4 2, 4 (1) : 1
-  4 3, 3 (1) : 1
-  5 1, 5 (1) : 1
-  5 2, 4 (1) : 1
-  5 3, 3 (1) : 1
--- a/main/fuzzy-logic-toolkit/inst/investment_portfolio.fis	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fis
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      investment_portfolio.fis
-## Last-Modified: 28 Aug 2012
-
-[System]
-Name='Investment-Portfolio'
-Type='mamdani'
-Version=2.0
-NumInputs=2
-NumOutputs=1
-NumRules=4
-AndMethod='einstein_product'
-OrMethod='einstein_sum'
-ImpMethod='einstein_product'
-AggMethod='einstein_sum'
-DefuzzMethod='centroid'
-
-[Input1]
-Name='Age'
-Range=[20 100]
-NumMFs=2
-MF1='Young':'zmf',[30 90]
-MF2='Old':'smf',[30 90]
-
-[Input2]
-Name='Risk-Tolerance'
-Range=[0 10]
-NumMFs=2
-MF1='Low':'zmf',[2 8]
-MF2='High':'smf',[2 8]
-
-[Output1]
-Name='Percentage-In-Stocks'
-Range=[0 100]
-NumMFs=3
-MF1='About-Fifteen':'gaussmf',[10 15]
-MF2='About-Fifty':'gaussmf',[10 50]
-MF3='About-Eighty-Five':'gaussmf',[10 85]
-
-[Rules]
-1 2, 3 (1) : 2
-2 1, 1 (1) : 2
--2.3 -1.3, 2 (0.5) : 1
--1.3 -2.3, 2 (0.5) : 1
--- a/main/fuzzy-logic-toolkit/inst/investment_portfolio_demo.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Script File} {} investment_portfolio_demo
-## Demonstrate the use of the Octave Fuzzy Logic Toolkit to read and evaluate
-## a Mamdani-type FIS stored in a file. Also demonstrate the use of hedges and
-## weights in the FIS rules, the use of the Einstein product and sum as the
-## T-norm/S-norm pair, and the non-standard use of the Einstein sum as the
-## aggregation method.
-##
-## The demo:
-## @itemize @minus
-## @item
-## reads the FIS structure from a file
-## @item
-## plots the input and output membership functions
-## @item
-## plots the FIS output as a function of the inputs
-## @item
-## plots the output of the 4 individual rules for (Age, Risk-Tolerance) = (40, 7)
-## @item
-## plots the aggregated fuzzy output and the crisp output for
-## (Age, Risk-Tolerance) = (40, 7)
-## @item
-## shows the rules in verbose format in the Octave window
-## @end itemize
-##
-## @seealso{cubic_approx_demo, heart_disease_demo_1, heart_disease_demo_2, linear_tip_demo, mamdani_tip_demo, sugeno_tip_demo}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy tests demos
-## Directory:     fuzzy-logic-toolkit/inst
-## Filename:      investment_portfolio_demo.m
-## Last-Modified: 19 Aug 2012
-
-## Read the FIS structure from a file.
-fis=readfis ('investment_portfolio');
-
-## Plot the input and output membership functions.
-plotmf (fis, 'input', 1);
-plotmf (fis, 'input', 2);
-plotmf (fis, 'output', 1);
-
-## Plot the Percentage-In-Stocks a function of Age and Risk-Tolerance.
-gensurf (fis, [1 2], 1);
-
-## Calculate the Percentage-In-Stocks using
-## (Age, Risk-Tolerance) = (40, 7).
-[output, rule_input, rule_output, fuzzy_output] = ...
-  evalfis ([40 7], fis, 1001);
-
-## Plot the output (Percentage-In-Stocks) of the individual fuzzy rules
-## on one set of axes.
-x_axis = linspace (fis.output(1).range(1), ...
-                   fis.output(1).range(2), 1001);
-colors = ['r' 'b' 'm' 'g'];
-figure ('NumberTitle', 'off', 'Name', ...
-       'Output of Fuzzy Rules 1-4 for (Age, Risk Tolerance) = (40, 7)');
-
-for i = 1 : 4
-    y_label = [colors(i) ";Rule " num2str(i) ";"];
-    plot (x_axis, rule_output(:,i), y_label, 'LineWidth', 2);
-    hold on;
-endfor
-
-ylim ([-0.1, 1.1]);
-xlabel ('Percentage in Stocks', 'FontWeight', 'bold');
-grid;
-hold;
-
-## Plot the first aggregated fuzzy output and the crisp output
-## (Percentage-In-Stocks) on one set of axes.
-figure('NumberTitle', 'off', 'Name', ...
-  'Aggregation and Defuzzification for (Age, Risk Tolerace) = (40, 7)');
-plot (x_axis, fuzzy_output(:, 1), "b;Aggregated Fuzzy Output;", ...
-      'LineWidth', 2);
-hold on;
-crisp_output = evalmf(x_axis, output(1), 'constant');
-y_label = ["r;Crisp Output = " num2str(output(1)) "%;"];
-plot (x_axis, crisp_output, y_label, 'LineWidth', 2);
-ylim ([-0.1, 1.1]);
-xlabel ('Percentage in Stocks', 'FontWeight', 'bold');
-grid;
-hold;
-
-## Show the rules in English.
-puts ("\nInvestment Portfolio Calculator Rules:\n\n");
-showrule (fis);
--- a/main/fuzzy-logic-toolkit/inst/linear_tip_calculator.fis	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fis
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      linear_tip_calculator.fis
-## Last-Modified: 28 Aug 2012
-
-[System]
-Name='Linear-Tip-Calculator'
-Type='sugeno'
-Version=2.0
-NumInputs=2
-NumOutputs=1
-NumRules=4
-AndMethod='min'
-OrMethod='max'
-ImpMethod='min'
-AggMethod='max'
-DefuzzMethod='wtaver'
-
-[Input1]
-Name='Food-Quality'
-Range=[1 10]
-NumMFs=2
-MF1='Bad':'trapmf',[0 1 3 7]
-MF2='Good':'trapmf',[3 7 10 11]
-
-[Input2]
-Name='Service'
-Range=[1 10]
-NumMFs=2
-MF1='Bad':'trapmf',[0 1 3 7]
-MF2='Good':'trapmf',[3 7 10 11]
-
-[Output1]
-Name='Tip'
-Range=[10 20]
-NumMFs=3
-MF1='Ten-Percent':'linear',[0 0 10]
-MF2='Fifteen-Percent':'linear',[0 0 15]
-MF3='Twenty-Percent':'linear',[0 0 20]
-
-[Rules]
-1 1, 1 (1) : 1
-1 2, 2 (1) : 1
-2 1, 2 (1) : 1
-2 2, 3 (1) : 1
--- a/main/fuzzy-logic-toolkit/inst/linear_tip_demo.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Script File} {} linear_tip_demo
-##
-## Demonstrate the use of linear output membership functions to simulate
-## constant membership functions.
-##
-## The demo:
-## @itemize @minus
-## @item
-## reads the FIS structure from a file
-## @item
-## plots the input membership functions
-## @item
-## plots the FIS output as a function of the inputs
-## @item
-## evaluates the Sugeno-type FIS for six inputs
-## @end itemize
-##
-## @seealso{cubic_approx_demo, heart_disease_demo_1, heart_disease_demo_2, investment_portfolio_demo, mamdani_tip_demo, sugeno_tip_demo}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy tests demos
-## Note:          This example is based on an assignment written by
-##                Dr. Bruce Segee (University of Maine Dept. of ECE).
-## Directory:     fuzzy-logic-toolkit/inst
-## Filename:      linear_tip_demo.m
-## Last-Modified: 20 Aug 2012
-
-## Read the FIS structure from a file.
-fis = readfis ('linear_tip_calculator.fis');
-
-## Plot the input membership functions.
-plotmf (fis, 'input', 1);
-plotmf (fis, 'input', 2);
-
-## Plot the Tip as a function of Food-Quality and Service.
-gensurf (fis);
-
-## Calculate the Tip for 6 sets of input values: 
-puts ("\nFor the following values of (Food Quality, Service):\n\n");
-food_service = [1 1; 5 5; 10 10; 4 6; 6 4; 7 4]
-puts ("\nThe Tip is:\n\n");
-tip = evalfis (food_service, fis, 1001)
--- a/main/fuzzy-logic-toolkit/inst/mamdani_tip_calculator.fis	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fis
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      mamdani_tip_calculator.fis
-## Last-Modified: 28 Aug 2012
-
-[System]
-Name='Mamdani-Tip-Calculator'
-Type='mamdani'
-Version=2.0
-NumInputs=2
-NumOutputs=2
-NumRules=4
-AndMethod='min'
-OrMethod='max'
-ImpMethod='min'
-AggMethod='max'
-DefuzzMethod='centroid'
-
-[Input1]
-Name='Food-Quality'
-Range=[1 10]
-NumMFs=2
-MF1='Bad':'trapmf',[0 1 3 7]
-MF2='Good':'trapmf',[3 7 10 11]
-
-[Input2]
-Name='Service'
-Range=[1 10]
-NumMFs=2
-MF1='Bad':'trapmf',[0 1 3 7]
-MF2='Good':'trapmf',[3 7 10 11]
-
-[Output1]
-Name='Tip'
-Range=[0 30]
-NumMFs=3
-MF1='About-Ten-Percent':'gaussmf',[2 10]
-MF2='About-Fifteen-Percent':'gaussmf',[2 15]
-MF3='About-Twenty-Percent':'gaussmf',[2 20]
-
-[Output2]
-Name='Check-Plus-Tip'
-Range=[1 1.3]
-NumMFs=3
-MF1='Plus-About-Ten-Percent':'gaussmf',[0.02 1.10]
-MF2='Plus-About-Fifteen-Percent':'gaussmf',[0.02 1.15]
-MF3='Plus-About-Twenty-Percent':'gaussmf',[0.02 1.20]
-
-[Rules]
-1 1, 1 1 (1) : 1
-1 2, 2 2 (1) : 1
-2 1, 2 2 (1) : 1
-2 2, 3 3 (1) : 1
--- a/main/fuzzy-logic-toolkit/inst/mamdani_tip_demo.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Script File} {} mamdani_tip_demo
-## Demonstrate the use of the Octave Fuzzy Logic Toolkit to read and evaluate a
-## Mamdani-type FIS stored in a file.
-##
-## The demo:
-## @itemize @minus
-## @item
-## reads the FIS structure from a file
-## @item
-## plots the input and output membership functions
-## @item
-## plots each of the two FIS outputs as a function of the inputs
-## @item
-## plots the output of the 4 individual rules for (Food-Quality, Service) = (4, 6)
-## @item
-## plots the aggregated fuzzy output and the crisp output for
-## (Food-Quality, Service) = (4, 6)
-## @item
-## displays the FIS rules in symbolic format in the Octave window
-## @end itemize
-##
-## @seealso{cubic_approx_demo, heart_disease_demo_1, heart_disease_demo_2, investment_portfolio_demo, linear_tip_demo, sugeno_tip_demo}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy tests demos
-## Note:          This example is based on an assignment written by
-##                Dr. Bruce Segee (University of Maine Dept. of ECE).
-## Directory:     fuzzy-logic-toolkit/inst
-## Filename:      mamdani_tip_demo.m
-## Last-Modified: 19 Aug 2012
-
-## Read the FIS structure from a file.
-fis=readfis ('mamdani_tip_calculator');
-
-## Plot the input and output membership functions.
-plotmf (fis, 'input', 1);
-plotmf (fis, 'input', 2);
-plotmf (fis, 'output', 1);
-plotmf (fis, 'output', 2);
-
-## Plot the Tip and Check + Tip as functions of Food-Quality
-## and Service.
-gensurf (fis, [1 2], 1);
-gensurf (fis, [1 2], 2);
-
-## Calculate the Tip and Check + Tip using
-## (Food-Quality, Service) = (4, 6).
-[output, rule_input, rule_output, fuzzy_output] = ...
-  evalfis ([4 6], fis, 1001);
-
-## Plot the first output (Tip) of the individual fuzzy rules
-## on one set of axes.
-x_axis = linspace (fis.output(1).range(1), ...
-                   fis.output(1).range(2), 1001);
-colors = ['r' 'b' 'm' 'g'];
-figure ('NumberTitle', 'off', 'Name', ...
-        'Output of Fuzzy Rules 1-4 for Input = (4, 6)');
-
-for i = 1 : 4
-    y_label = [colors(i) ";Rule " num2str(i) ";"];
-    plot (x_axis, rule_output(:,i), y_label, 'LineWidth', 2);
-    hold on;
-endfor
-
-ylim ([-0.1, 1.1]);
-xlabel ('Tip', 'FontWeight', 'bold');
-grid;
-hold;
-
-## Plot the first aggregated fuzzy output and the first crisp output
-## (Tip) on one set of axes.
-figure('NumberTitle', 'off', 'Name', ...
-       'Aggregation and Defuzzification for Input = (4, 6)');
-plot (x_axis, fuzzy_output(:, 1), "b;Aggregated Fuzzy Output;", ...
-      'LineWidth', 2);
-hold on;
-crisp_output = evalmf(x_axis, output(1), 'constant');
-y_label = ["r;Crisp Output = " num2str(output(1)) "%;"];
-plot (x_axis, crisp_output, y_label, 'LineWidth', 2);
-ylim ([-0.1, 1.1]);
-xlabel ('Tip', 'FontWeight', 'bold');
-grid;
-hold;
-
-## Show the rules in symbolic format.
-puts ("\nMamdani Tip Calculator Rules:\n\n");
-showrule (fis, 1:columns(fis.rule), 'symbolic');
--- a/main/fuzzy-logic-toolkit/inst/newfis.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{a} =} newfis (@var{fis_name})
-## @deftypefnx {Function File} {@var{a} =} newfis (@var{fis_name}, @var{fis_type})
-## @deftypefnx {Function File} {@var{a} =} newfis (@var{fis_name}, @var{fis_type}, @var{and_method})
-## @deftypefnx {Function File} {@var{a} =} newfis (@var{fis_name}, @var{fis_type}, @var{and_method}, @var{or_method})
-## @deftypefnx {Function File} {@var{a} =} newfis (@var{fis_name}, @var{fis_type}, @var{and_method}, @var{or_method}, @var{imp_method})
-## @deftypefnx {Function File} {@var{a} =} newfis (@var{fis_name}, @var{fis_type}, @var{and_method}, @var{or_method}, @var{imp_method}, @var{agg_method})
-## @deftypefnx {Function File} {@var{a} =} newfis (@var{fis_name}, @var{fis_type}, @var{and_method}, @var{or_method}, @var{imp_method}, @var{agg_method}, @var{defuzz_method})
-## @deftypefnx {Function File} {@var{a} =} newfis (@var{fis_name}, @var{fis_type}, @var{and_method}, @var{or_method}, @var{imp_method}, @var{agg_method}, @var{defuzz_method}, @var{fis_version})
-##
-## Create and return a new FIS structure using the argument values provided.
-## Only the first argument is required. If fewer than eight arguments are given,
-## then some or all of the following default arguments will be used:
-## @itemize @bullet
-## @item
-## @var{fis_type} = 'mamdani'
-## @item
-## @var{and_method} = 'min'
-## @item
-## @var{or_method} = 'max'
-## @item
-## @var{imp_method} = 'min'
-## @item
-## @var{agg_method} = 'max'
-## @item
-## @var{defuzz_method} = 'centroid'
-## @item
-## @var{fis_version} = 1.0
-## @end itemize
-##
-## @seealso{addmf, addrule, addvar, setfis}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy inference system fis
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      newfis.m
-## Last-Modified: 20 Aug 2012
-
-function fis = newfis (fis_name, fis_type = 'mamdani', ...
-                       and_method = 'min', or_method = 'max', ...
-                       imp_method = 'min', agg_method = 'max', ...
-                       defuzz_method = 'centroid', fis_version = 1.0)
-
-  ## If the caller did not supply the between 1 and 8 argument values,
-  ## or if any of the argument values were not strings, print an error
-  ## message and halt.
-
-  if (!(nargin >= 1 && nargin <= 8))
-    puts ("Type 'help newfis' for more information.\n");
-    error ("newfis requires between 1 and 8 arguments\n");
-  elseif (!(is_string (fis_name) && is_string (fis_type) && ...
-           is_string (and_method) && is_string (or_method) && ...
-           is_string (imp_method) && is_string (agg_method) && ...
-           is_string (defuzz_method) && isfloat (fis_version)))
-    puts ("Type 'help newfis' for more information.\n");
-    error ("incorrect argument type in newfis argument list\n");
-  endif
-
-  ## Create and return the new FIS structure.
-
-  fis = struct ('name', fis_name, ...
-                'type', fis_type, ...
-                'version', fis_version, ...
-                'andMethod', and_method, ...
-                'orMethod', or_method, ...
-                'impMethod', imp_method, ...
-                'aggMethod', agg_method, ...
-                'defuzzMethod', defuzz_method, ...
-                'input', [], ...
-                'output', [], ...
-                'rule', []);
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/partition_coeff.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{vpc} =} partition_coeff (@var{soft_partition})
-##
-## Return the partition coefficient for a given soft partition.
-##
-## The argument to partition_coeff is:
-## @itemize @w
-## @item
-## @var{soft_partition} - the membership degree of each input data point in each cluster
-## @end itemize
-##
-## The return value is:
-## @itemize @w
-## @item
-## @var{vpc} - the partition coefficient for the given soft partition
-## @end itemize
-##
-## For demos of this function, please type:
-## @example
-## demo 'fcm'
-## demo 'gustafson_kessel'
-## @end example
-##
-## For more information about the @var{soft_partition} matrix, please see the
-## documentation for function fcm.
-##
-## @seealso{fcm, gustafson_kessel, partition_entropy, xie_beni_index}
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit partition coefficient cluster
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      partition_coeff.m
-## Last-Modified: 4 Sep 2012
-
-##----------------------------------------------------------------------
-## Note: This function is an implementation of Equation 13.9 (corrected
-##       -- the equation in the book omits the exponent 2) in
-##       Fuzzy Logic: Intelligence, Control and Information, by J. Yen
-##       and R. Langari, Prentice Hall, 1999, page 384 (International
-##       Edition). 
-##----------------------------------------------------------------------
-
-function vpc = partition_coeff (soft_partition)
-
-  ## If partition_coeff was called with an incorrect number of
-  ## arguments, or the argument does not have the correct type,
-  ## print an error message and halt.
-
-  if (nargin != 1)
-    puts ("Type 'help partition_coeff' for more information.\n");
-    error ("partition_coeff requires 1 argument\n");
-  elseif (!(is_real_matrix (soft_partition) &&
-            (min (min (soft_partition)) >= 0) &&
-            (max (max (soft_partition)) <= 1)))
-    puts ("Type 'help partition_coeff' for more information.\n");
-    puts ("partition_coeff's argument must be a matrix of real ");
-    puts ("numbers mu, with 0 <= mu <= 1\n");
-    error ("invalid argument to partition_coeff\n");
-  endif
-
-  ## Compute and return the partition coefficient.
-
-  soft_part_sqr = soft_partition .* soft_partition;
-  vpc = (sum (sum (soft_part_sqr))) / columns (soft_partition);
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/partition_entropy.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{vpe} =} partition_entropy (@var{soft_partition}, @var{a})
-##
-## Return the partition entropy for a given soft partition.
-##
-## The arguments to partition_entropy are:
-## @itemize @w
-## @item
-## @var{soft_partition} - the membership degree of each input data point in each cluster
-## @item
-## @var{a} - the log base to use in the calculation; must be a real number a > 1
-## @end itemize
-##
-## The return value is:
-## @itemize @w
-## @item
-## @var{vpe} - the partition entropy for the given soft partition
-## @end itemize
-##
-## For demos of this function, please type:
-## @example
-## demo 'fcm'
-## demo 'gustafson_kessel'
-## @end example
-##
-## For more information about the @var{soft_partition} matrix, please see the
-## documentation for function fcm.
-##
-## @seealso{fcm, gustafson_kessel, partition_coeff, xie_beni_index}
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit partition entropy cluster
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      partition_entropy.m
-## Last-Modified: 4 Sep 2012
-
-##----------------------------------------------------------------------
-## Note: This function is an implementation of Equation 13.10 in
-##       Fuzzy Logic: Intelligence, Control and Information, by J. Yen
-##       and R. Langari, Prentice Hall, 1999, page 384 (International
-##       Edition). 
-##----------------------------------------------------------------------
-
-function vpe = partition_entropy (soft_partition, a)
-
-  ## If partition_entropy was called with an incorrect number of
-  ## arguments, or the argument does not have the correct type, print an
-  ## error message and halt.
-
-  if (nargin != 2)
-    puts ("Type 'help partition_entropy' for more information.\n");
-    error ("partition_entropy requires 2 arguments\n");
-  elseif (!(is_real_matrix (soft_partition) &&
-            (min (min (soft_partition)) >= 0) &&
-            (max (max (soft_partition)) <= 1)))
-    puts ("Type 'help partition_entropy' for more information.\n");
-    puts ("partition_entropy's first argument must be a matrix of ");
-    puts ("real numbers mu, with 0 <= mu <= 1\n");
-    error ("invalid first argument to partition_entropy\n");
-  elseif (!(is_real (a) && a > 1))
-    puts ("Type 'help partition_entropy' for more information.\n");
-    puts ("partition_entropy's second argument argument must be a ");
-    puts ("real number a > 1\n");
-    error ("invalid second argument to partition_entropy\n");
-  endif
-
-  ## Compute and return the partition entropy.
-
-  n = columns (soft_partition);
-  Mu = soft_partition;
-  log_a_Mu = log (Mu) / log (a);
-  vpe = -(sum (sum (Mu .* log_a_Mu))) / n;
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/pimf.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,155 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} pimf (@var{x}, @var{params})
-## @deftypefnx {Function File} {@var{y} =} pimf (@var{[x1 x2 ... xn]}, @var{[a b c d]})
-##
-## For a given domain @var{x} and parameters @var{params} (or @var{[a b c d]}),
-## return the corresponding @var{y} values for the pi-shaped membership
-## function.
-##
-## The argument @var{x} must be a real number or a non-empty vector of real
-## numbers, and @var{a}, @var{b}, @var{c}, and @var{d} must be real numbers,
-## with @var{a} < @var{b} <= @var{c} < @var{d}. This membership function
-## satisfies:
-## @example
-## @group
-##         0                             if x <= a
-##         2 * ((x - a)/(b - a))^2       if a < x <= (a + b)/2
-##         1 - 2 * ((x - b)/(b - a))^2   if (a + b)/2 < x < b
-## f(x) =  1                             if b <= x <= c
-##         1 - 2 * ((x - c)/(d - c))^2   if c < x <= (c + d)/2
-##         2 * ((x - d)/(d - c))^2       if (c + d)/2 < x < d
-##         0                             if x >= d
-## @end group
-## @end example
-##
-## @noindent
-## which always returns values in the range [0, 1].
-##
-## @noindent
-## To run the demonstration code, type @t{demo('pimf')} at the Octave prompt.
-##
-## @seealso{dsigmf, gauss2mf, gaussmf, gbellmf, psigmf, sigmf, smf, trapmf, trimf, zmf}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy membership pi-shaped pi
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      pimf.m
-## Last-Modified: 19 August 2012
-
-function y = pimf (x, params)
-
-  ## If the caller did not supply 2 argument values with the correct
-  ## types, print an error message and halt.
-
-  if ((nargin != 2))
-    puts ("Type 'help pimf' for more information.\n");
-    error ("pimf requires 2 arguments\n");
-  elseif (!is_domain (x))
-    puts ("Type 'help pimf' for more information.\n");
-    error ("pimf's first argument must be a valid domain\n");
-  elseif (!are_mf_params ('pimf', params))
-    puts ("Type 'help pimf' for more information.\n");
-    error ("pimf's second argument must be a parameter vector\n");
-  endif
-
-  ## Calculate and return the y values of the membership function on the
-  ## domain x.
-
-  a = params(1);
-  b = params(2);
-  c = params(3);
-  d = params(4);
-
-  a_b_ave = (a + b) / 2;
-  b_minus_a = b - a;
-  c_d_ave = (c + d) / 2;
-  d_minus_c = d - c;
-
-  y_val = @(x_val) pimf_val (x_val, a, b, c, d, a_b_ave, b_minus_a, ...
-                             c_d_ave, d_minus_c);
-  y = arrayfun (y_val, x);
-
-endfunction
-
-##----------------------------------------------------------------------
-## Usage: y = pimf_val (x_val, a, b, c, d, a_b_ave, b_minus_a, c_d_ave,
-##                      d_minus_c)
-##
-## pimf_val returns one value of the S-shaped membership function, which
-## satisfies:
-##             0                                if x <= a
-##             2 * ((x - a)/(b - a))^2          if a < x <= (a + b)/2
-##             1 - 2 * ((x - b)/(b - a))^2      if (a + b)/2 < x < b
-##     f(x) =  1                                if b <= x <= c
-##             1 - 2 * ((x - c)/(d - c))^2      if c < x <= (c + d)/2
-##             2 * ((x - d)/(d - c))^2          if (c + d)/2 < x < d
-##             0                                if x >= d
-##
-## pimf_val is a private function, called only by pimf. Because pimf_val
-## is not intended for general use -- and because the parameters a, b,
-## c, and d are checked for errors in the function pimf (defined above),
-## the parameters are not checked for errors again here.
-##----------------------------------------------------------------------
-
-function y_val = pimf_val (x_val, a, b, c, d, a_b_ave, b_minus_a, ...
-                           c_d_ave, d_minus_c)
-
-  ## Calculate and return a single y value of the pi-shaped membership
-  ## function for the given x value and parameters specified by the
-  ## arguments.
-
-  if (x_val <= a)
-    y_val = 0;
-  elseif (x_val <= a_b_ave)
-    y_val = 2 * ((x_val - a)/b_minus_a)^2;
-  elseif (x_val < b)
-    y_val = 1 - 2 * ((x_val - b) / b_minus_a)^2;
-  elseif (x_val <= c)
-    y_val = 1;
-  elseif (x_val <= c_d_ave)
-    y_val = 1 - 2 * ((x_val - c) / d_minus_c)^2;
-  elseif (x_val < d)
-    y_val = 2 * ((x_val - d) / d_minus_c)^2;
-  else
-    y_val = 0;
-  endif
-
-endfunction
-
-%!demo
-%! x = 0:255;
-%! params = [70 80 100 140];
-%! y1 = pimf(x, params);
-%! params = [50 75 105 175];
-%! y2 = pimf(x, params);
-%! params = [30 70 110 200];
-%! y3 = pimf(x, params);
-%! figure('NumberTitle', 'off', 'Name', 'pimf demo');
-%! plot(x, y1, 'r;params = [70 80 100 140];', 'LineWidth', 2)
-%! hold on;
-%! plot(x, y2, 'b;params = [50 75 105 175];', 'LineWidth', 2)
-%! hold on;
-%! plot(x, y3, 'g;params = [30 70 110 200];', 'LineWidth', 2)
-%! ylim([-0.1 1.1]);
-%! xlabel('Crisp Input Value', 'FontWeight', 'bold');
-%! ylabel('Degree of Membership', 'FontWeight', 'bold');
-%! grid;
--- a/main/fuzzy-logic-toolkit/inst/plotmf.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,184 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {} plotmf (@var{fis}, @var{in_or_out}, @var{var_index})
-## @deftypefnx {Function File} {} plotmf (@var{fis}, @var{in_or_out}, @var{var_index}, @var{y_lower_limit})
-## @deftypefnx {Function File} {} plotmf (@var{fis}, @var{in_or_out}, @var{var_index}, @var{y_lower_limit}, @var{y_upper_limit})
-##
-## Plot the membership functions defined for the specified FIS input or output
-## variable on a single set of axes. Fuzzy output membership functions are
-## represented by the [0, 1]-valued fuzzy functions, and constant output
-## membership functions are represented by unit-valued singleton spikes.
-## Linear output membership functions, however, are represented by
-## two-dimensional lines y = ax + c, regardless of how many dimensions the
-## linear function is defined to have. In effect, all of the other dimensions
-## of the linear function are set to 0.
-##
-## If both constant and linear membership functions are used for a single FIS
-## output, then two sets of axes are used: one for the constant membership
-## functions, and another for the linear membership functions. To plot both
-## constant and linear membership functions together, or to plot constant
-## membership functions as horizontal lines instead of unit-valued spikes,
-## represent the constant membership functions using 'linear' functions, with
-## 0 for all except the last parameter, and with the desired constant value as
-## the last parameter.
-##
-## The types of the arguments are expected to be:
-## @itemize @bullet
-## @item
-## @var{fis} - an FIS structure
-## @item
-## @var{in_or_out} - either 'input' or 'output' (case-insensitive)
-## @item
-## @var{var_index} - an FIS input or output variable index
-## @item
-## @var{y_lower_limit} - a real scalar (default value = -0.1)
-## @item
-## @var{y_upper_limit} - a real scalar (default value = 1.1)
-## @end itemize
-##
-## Six examples that use plotmf are:
-## @itemize @bullet
-## @item
-## cubic_approx_demo.m
-## @item
-## heart_disease_demo_1.m
-## @item
-## heart_disease_demo_2.m
-## @item
-## investment_portfolio_demo.m
-## @item
-## linear_tip_demo.m
-## @item
-## mamdani_tip_demo.m
-## @item
-## sugeno_tip_demo.m
-## @end itemize
-##
-## @seealso{gensurf}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy membership plot
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      plotmf.m
-## Last-Modified: 19 Aug 2012
-
-function plotmf (fis, in_or_out, var_index, ...
-                 y_lower_limit = -0.1, y_upper_limit = 1.1)
-
-  ## If the caller did not supply 3 argument values with the correct
-  ## types, print an error message and halt.
-
-  if ((nargin < 3) || (nargin > 5))
-    puts ("Type 'help plotmf' for more information.\n");
-    error ("plotmf requires 3 - 5 arguments\n");
-  elseif (!is_fis (fis))
-    puts ("Type 'help plotmf' for more information.\n");
-    error ("plotmf's first argument must be an FIS structure\n");
-  elseif (!(is_string (in_or_out) && ...
-           ismember (tolower (in_or_out), {'input', 'output'})))
-    puts ("Type 'help plotmf' for more information.\n");
-    error ("plotmf's second argument must be 'input' or 'output'\n");
-  elseif (!is_var_index (fis, in_or_out, var_index))
-    puts ("Type 'help plotmf' for more information.\n");
-    error ("plotmf's third argument must be a variable index\n");
-  elseif (!(is_real (y_lower_limit) && is_real (y_upper_limit)))
-    puts ("Type 'help plotmf' for more information.\n");
-    error ("plotmf's 4th and 5th arguments must be real scalars\n");
-  endif
-
-  ## Select specified variable and construct the window title.
-
-  if (strcmpi (in_or_out, 'input'))
-    var = fis.input(var_index);
-    window_title = [' Input ' num2str(var_index) ' Term Set'];
-  else
-    var = fis.output(var_index);
-    window_title = [' Output ' num2str(var_index) ' Term Set'];
-  endif
-
-  ## Plot the membership functions for the specified variable.
-  ## Cycle through the five colors: red, blue, green, magenta, cyan.
-  ## Display the membership function names in a legend.
-
-  colors = ["r" "b" "g" "m" "c"];
-  x = linspace (var.range(1), var.range(2), 1001); 
-  num_mfs = columns (var.mf);
-
-  ## Define vectors to keep track of linear and non-linear mfs.
-
-  linear_mfs = zeros (1, num_mfs);
-  for i = 1 : num_mfs
-    if (strcmp ('linear', var.mf(i).type))
-      linear_mfs(i) = 1;
-    endif
-  endfor
-  fuzzy_and_constant_mfs = 1 - linear_mfs;
-
-  ## Plot the fuzzy or constant membership functions together on a set
-  ## of axes.
-
-  if (sum (fuzzy_and_constant_mfs))
-    figure ('NumberTitle', 'off', 'Name', window_title);
-
-    ## Plot the mfs.
-    for i = 1 : num_mfs
-      if (fuzzy_and_constant_mfs(i))
-        y = evalmf_private (x, var.mf(i).params, var.mf(i).type);
-        y_label = [colors(mod(i-1,5)+1) ";" var.mf(i).name ";"];
-        plot (x, y, y_label, 'LineWidth', 2);
-        hold on;
-      endif
-    endfor
-
-    ## Adjust the y-axis, label both axes, and display a dotted grid.
-    ylim ([y_lower_limit y_upper_limit]);
-    xlabel (var.name, 'FontWeight', 'bold');
-    ylabel ('Degree of Membership', 'FontWeight', 'bold');
-    grid;
-    hold;
-  endif
-
-  ## Plot the linear membership functions together on a separate set
-  ## of axes.
-
-  if (sum (linear_mfs))
-    figure ('NumberTitle', 'off', 'Name', window_title);
-
-    ## Plot the mfs.
-    for i = 1 : num_mfs
-      if (linear_mfs(i))
-        y = evalmf_private (x, var.mf(i).params, var.mf(i).type);
-        y_label = [colors(mod(i-1,5)+1) ";" var.mf(i).name ";"];
-        plot (x, y, y_label, 'LineWidth', 2);
-        hold on;
-      endif
-    endfor
-
-    ## Adjust the y-axis, label both axes, and display a dotted grid.
-    ylim ([y_lower_limit y_upper_limit]);
-    xlabel ('X', 'FontWeight', 'bold');
-    ylabel (var.name, 'FontWeight', 'bold');
-    grid;
-    hold;
-  endif
-
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/aggregate_output_mamdani.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{fuzzy_output} =} aggregate_output_mamdani (@var{fis}, @var{rule_output})
-##
-## @noindent
-## Given the:
-## @itemize @bullet
-## @item @var{fis.aggMethod}
-## the aggregation method for the given @var{fis}
-## @item @var{rule_output}
-## a matrix of the fuzzy output for each (rule, FIS output) pair
-## @end itemize
-##
-## @noindent
-## Return:
-## @itemize @bullet
-## @item @var{fuzzy_output}
-## a matrix of the aggregated output for each FIS output variable
-## @end itemize
-##
-## @var{rule_output} is a @var{num_points} x (Q * M) matrix, where
-## @var{num_points} is the number of points over which the fuzzy
-## values are evaluated, Q is the number of rules and M is the number
-## of FIS output variables. Each column of @var{rule_output} gives
-## the y-values of the fuzzy output for a single (rule, FIS output)
-## pair:
-##
-## @example
-## @group
-##                  Q cols            Q cols              Q cols 
-##             ---------------   ---------------     ---------------
-##             out_1 ... out_1   out_2 ... out_2 ... out_M ... out_M
-##          1 [                                                     ]
-##          2 [                                                     ]
-##        ... [                                                     ]
-## num_points [                                                     ]
-## @end group
-## @end example
-##
-## The return value @var{fuzzy_output} is a @var{num_points} x M matrix. Each
-## column of @var{fuzzy_output} gives the y-values of the fuzzy output for a
-## single FIS output variable, aggregated over all rules:
-##
-## @example
-## @group
-##             out_1  out_2  ...  out_M
-##          1 [                        ]
-##          2 [                        ]
-##        ... [                        ]
-## num_points [                        ]
-## @end group
-## @end example
-##
-## Because aggregate_output_mamdani is called only by the private
-## function evalfis_private, it does no error checking of the argument values.
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy inference system fis
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      aggregate_output_mamdani.m
-## Last-Modified: 20 Aug 2012
-
-function fuzzy_output = aggregate_output_mamdani (fis, rule_output)
-
-  num_rules = columns (fis.rule);            ## num_rules   == Q (above)
-  num_outputs = columns (fis.output);        ## num_outputs == L
-  num_points = rows (rule_output);
-
-  ## Initialize output matrix to prevent inefficient resizing.
-  fuzzy_output = zeros (num_points, num_outputs);
-
-  ## Compute the ith fuzzy output values, then store the values in the
-  ## ith column of the fuzzy_output matrix.
-  for i = 1 : num_outputs
-    indiv_fuzzy_out = ...
-      rule_output(:, (i - 1) * num_rules + 1 : i * num_rules);
-    agg_fuzzy_out = (str2func (fis.aggMethod) (indiv_fuzzy_out'))';
-    fuzzy_output(:, i) = agg_fuzzy_out;
-  endfor
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/aggregate_output_sugeno.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,158 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{fuzzy_output} =} aggregate_output_sugeno (@var{fis}, @var{rule_output})
-##
-## @noindent
-## Given the:
-## @itemize @bullet
-## @item @var{fis.aggMethod}
-## the aggregation method for the given @var{fis}
-## @item @var{rule_output}
-## a matrix of the singleton output of each (rule, FIS output) pair
-## @end itemize
-##
-## @noindent
-## Return:
-## @itemize @bullet
-## @item @var{fuzzy_output}
-## a vector of structures containing the aggregated output for each FIS output
-## @end itemize
-##
-## @var{rule_output} is a 2 x (Q * M) matrix, where Q is the number of rules
-## and M is the number of FIS output variables. Each column of @var{rule_output}
-## gives the (location, height) pair of the singleton output for one
-## (rule, FIS output) pair:
-##
-## @example
-## @group
-##                Q cols            Q cols                  Q cols 
-##           ---------------   ---------------         ---------------
-##           out_1 ... out_1   out_2 ... out_2   ...   out_M ... out_M
-## location [                                                         ]
-##   height [                                                         ]
-## @end group
-## @end example
-##
-## The return value @var{fuzzy_output} is a vector of M structures,
-## each of which has an index i and a matrix of singletons that form the
-## aggregated output for the ith FIS output variable.
-## For each FIS output variable, the matrix of singletons is a 2 x L matrix
-## where L is the number of distinct singleton locations in the fuzzy output
-## for that FIS output variable. The first row gives the (distinct) locations,
-## and the second gives the (non-zero) heights:
-##
-## @example
-## @group
-##           singleton_1  singleton_2 ... singleton_L
-## location [                                        ]
-##   height [                                        ]
-## @end group
-## @end example
-##
-## Because aggregate_output_sugeno is called only by the private
-## function evalfis_private, it does no error checking of the argument values.
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy inference system fis
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      aggregate_output_sugeno.m
-## Last-Modified: 20 Aug 2012
-
-##----------------------------------------------------------------------
-
-function fuzzy_output = aggregate_output_sugeno (fis, rule_output)
-
-  fuzzy_output = [];
-  num_outputs = columns (fis.output);
-  num_rules = columns (fis.rule);
-
-  ## For each FIS output, aggregate the slice of the rule_output matrix,
-  ## then store the result as a structure in fuzzy_output.
-
-  for i = 1 : num_outputs
-    unagg_output = rule_output(:, (i-1)*num_rules+1 : i*num_rules);
-    aggregated_output = aggregate_fis_output (fis.aggMethod, ...
-                                              unagg_output);
-    next_agg_output = struct ('index', i, ...
-                              'aggregated_output', aggregated_output);
-    if (i == 1)
-      fuzzy_output = next_agg_output;
-    else
-      fuzzy_output = [fuzzy_output, next_agg_output];
-    endif
-  endfor
-endfunction
-
-##----------------------------------------------------------------------
-## Function: aggregate_fis_output
-## Purpose:  Aggregate the multiple singletons for one FIS output.
-##----------------------------------------------------------------------
-
-function mult_singletons = aggregate_fis_output (fis_aggmethod, ...
-                                                 rule_output)
-
-  ## Initialize output matrix (multiple_singletons).
-
-  mult_singletons = sortrows (rule_output', 1);
-
-  ## If adjacent rows represent singletons at the same location, then
-  ## combine them using the FIS aggregation method.
-
-  for i = 1 : rows (mult_singletons) - 1
-    if (mult_singletons(i, 1) == mult_singletons(i+1, 1))
-      switch (fis_aggmethod)
-        case 'sum'
-          mult_singletons(i + 1, 2) = mult_singletons(i, 2) + ...
-                                      mult_singletons(i + 1, 2);
-        otherwise
-          mult_singletons(i + 1, 2) = str2func (fis_aggmethod) ...
-                                      (mult_singletons(i, 2), ...
-                                       mult_singletons(i + 1, 2));
-      endswitch
-      mult_singletons(i, 2) = 0;
-    endif
-  endfor
-
-  ## Return the transpose of the matrix after removing 0-height
-  ## singletons.
-
-  mult_singletons = (remove_null_rows (mult_singletons))';
-    
-endfunction
-
-##----------------------------------------------------------------------
-## Function: remove_null_rows
-## Purpose:  Return the argument without the rows with a 0 in the
-##           second column.
-##----------------------------------------------------------------------
-
-function y = remove_null_rows (x)
-  y = [];
-  for i = 1 : rows (x)
-    if (x(i, 2) != 0)
-      if (isequal (y, []))
-        y = x(i, :);
-      else
-        y = [y; x(i, :)];
-      endif
-    endif
-  endfor
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/are_bounds.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} are_bounds (@var{x})
-## @deftypefnx {Function File} {@var{y} =} are_bounds (@var{[x1 x2]})
-##
-## Return 1 if @var{x} is a vector of 2 real numbers @var{[x1 x2]},
-## with @var{x1} <= @var{x2}, and return 0 otherwise.
-##
-## are_bounds is a private function that localizes the test for validity of
-## bounds imposed on FIS input/output domains.
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy private parameter-test
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      are_bounds.m
-## Last-Modified: 20 Aug 2012
-
-function y = are_bounds (x)
-
-  y = isvector (x) && isreal (x) && (length (x) == 2) && (x(1) <= x(2));
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/are_input_indices.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} are_input_indices (@var{x}, @var{fis})
-##
-## Return 1 if @var{x} is a valid input index or a vector of two valid input
-## indices for the given FIS structure, and return 0 otherwise. The FIS
-## structure @var{fis} is assumed to be valid.
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy private parameter-test
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      are_input_indices.m
-## Last-Modified: 20 Aug 2012
-
-function y = are_input_indices (x, fis)
-
-  if (!(isreal (x) && isvector (x) && (length (x) <= 2)))
-    y = 0;
-  else
-    y = 1;
-    num_inputs = columns (fis.input);
-    for next_x = x
-      if (!(is_pos_int (next_x) && next_x <= num_inputs))
-        y = 0;
-      endif
-    endfor
-  endif
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/are_mf_params.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,200 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} are_mf_params (@var{type}, @var{params})
-##
-## Return 0 if @var{type} is a built-in membership function and @var{params}
-## are not valid parameters for that type, and return 1 otherwise.
-##
-## are_mf_params is a private function that localizes the test for validity of
-## membership function parameters. Note that for a custom membership function,
-## this function always returns 1.
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy private parameter-test
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      are_mf_params.m
-## Last-Modified: 20 Aug 2012
-
-function y = are_mf_params (type, params)
-
-  switch (type)
-    case 'constant' y = real_vector (params);
-    case 'dsigmf'   y = four_reals (params);
-    case 'gauss2mf' y = four_reals (params);
-    case 'gaussmf'  y = two_reals (params);
-    case 'gbellmf'  y = gbellmf_params (params);
-    case 'linear'   y = real_vector (params);
-    case 'pimf'     y = pimf_params (params);
-    case 'psigmf'   y = four_reals (params);
-    case 'sigmf'    y = two_reals (params);
-    case 'smf'      y = smf_params (params);
-    case 'trapmf'   y = trapmf_params (params);
-    case 'trimf'    y = trimf_params (params);
-    case 'zmf'      y = zmf_params (params);
-    otherwise       y = 1;
-  endswitch
-
-endfunction
-
-##----------------------------------------------------------------------
-## Usage: y = real_vector (params)
-##
-## Return 1 if params is a vector of real numbers, and
-## return 0 otherwise.
-##----------------------------------------------------------------------
-
-function y = real_vector (params)
-
-  y = isvector (params) && isreal (params);
-
-endfunction
-
-##----------------------------------------------------------------------
-## Usage: y = two_reals (params)
-##
-## Return 1 if params is a vector of 2 real numbers, and
-## return 0 otherwise.
-##----------------------------------------------------------------------
-
-function y = two_reals (params)
-
-  y = isvector (params) && isreal (params) && (length (params) == 2);
-
-endfunction
-
-##----------------------------------------------------------------------
-## Usage: y = three_reals (params)
-##
-## Return 1 if params is a vector of 3 real numbers, and
-## return 0 otherwise.
-##----------------------------------------------------------------------
-
-function y = three_reals (params)
-
-  y = isvector (params) && isreal (params) && (length (params) == 3);
-
-endfunction
-
-##----------------------------------------------------------------------
-## Usage: y = four_reals (params)
-##
-## Return 1 if params is a vector of 4 real numbers, and
-## return 0 otherwise.
-##----------------------------------------------------------------------
-
-function y = four_reals (params)
-
-  y = isvector (params) && isreal (params) && (length (params) == 4);
-
-endfunction
-
-##----------------------------------------------------------------------
-## Usage: y = gbellmf_params (params)
-##        y = gbellmf_params ([a b c])
-##
-## Return 1 if params is a vector of 3 real numbers, [a b c], with
-## a != 0 and integral-valued b, and return 0 otherwise.
-##----------------------------------------------------------------------
-
-function y = gbellmf_params (params)
-
-  y = three_reals (params) && (params(1) != 0) && is_int (params(2));
-
-endfunction
-
-##----------------------------------------------------------------------
-## Usage: y = pimf_params (params)
-##        y = pimf_params ([a b c d])
-##
-## Return 1 if params is a vector of 4 real numbers, [a b c d], with
-## a < b <= c < d, and return 0 otherwise.
-##----------------------------------------------------------------------
-
-function y = pimf_params (params)
-
-  y = four_reals (params) && ...
-      (params(1) < params(2)) && ...
-      (params(2) <= params(3)) && ...
-      (params(3) < params(4));
-
-endfunction
-
-##----------------------------------------------------------------------
-## Usage: y = smf_params (params)
-##        y = smf_params ([a b])
-##
-## Return 1 if params is a vector of 2 real numbers, [a b], with a < b,
-## and return 0 otherwise.
-##----------------------------------------------------------------------
-
-function y = smf_params (params)
-
-  y = two_reals (params) && (params(1) < params(2));
-
-endfunction
-
-##----------------------------------------------------------------------
-## Usage: y = trapmf_params (params)
-##        y = trapmf_params ([a b c d])
-##
-## Return 1 if params is a vector of 4 real numbers, [a b c d], with
-## a < b <= c < d, and return 0 otherwise.
-##----------------------------------------------------------------------
-
-function y = trapmf_params (params)
-
-  y = four_reals (params) && ...
-      (params(1) < params(2)) && ...
-      (params(2) <= params(3)) && ...
-      (params(3) < params(4));
-
-endfunction
-
-##----------------------------------------------------------------------
-## Usage: y = trimf_params (params)
-##        y = trimf_params ([a b c])
-##
-## Return 1 if params is a vector of 3 real numbers, [a b c], with
-## a < b < c, and return 0 otherwise.
-##----------------------------------------------------------------------
-
-function y = trimf_params (params)
-
-  y = three_reals (params) && ...
-      (params(1) < params(2)) && ...
-      (params(2) < params(3));
-
-endfunction
-
-##----------------------------------------------------------------------
-## Usage: y = zmf_params (params)
-##        y = zmf_params ([a b])
-##
-## Return 1 if params is a vector of 2 real numbers, [a b], with a < b,
-## and return 0 otherwise.
-##----------------------------------------------------------------------
-
-function y = zmf_params (params)
-
-  y = two_reals (params) && (params(1) < params(2));
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/defuzzify_output_mamdani.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{output} =} defuzzify_output_mamdani (@var{fis}, @var{fuzzy_output})
-##
-## @noindent
-## Given the:
-## @itemize @bullet
-## @item @var{fis.defuzzMethod}
-## the defuzzification method for the given @var{fis}
-## @item @var{fuzzy_output}
-## a matrix of the aggregated output for each FIS output variable
-## @end itemize
-##
-## @noindent
-## Return:
-## @itemize @bullet
-## @item @var{output}
-## a vector of crisp output values
-## @end itemize
-##
-## @var{fuzzy_output} is a @var{num_points} x M matrix, where @var{num_points}
-## is the number of points over which fuzzy values are evaluated and M is the 
-## number of FIS output variables. Each
-## column of @var{fuzzy_output} gives the y-values of the fuzzy output for a
-## single FIS output variable, aggregated over all rules:
-##
-## @example
-## @group
-##             out_1  out_2  ...  out_M
-##          1 [                        ]
-##          2 [                        ]
-##        ... [                        ]
-## num_points [                        ]
-## @end group
-## @end example
-##
-## The crisp @var{output} values are computed from the corresponding fuzzy
-## values using the FIS defuzzification method. The @var{output}
-## vector has the form:
-##
-## @example
-## output:  [output_1 output_2 ... output_M]
-## @end example
-##
-## Because defuzzify_output_mamdani is called only by the private
-## function evalfis_private, it does no error checking of the argument values.
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy inference system fis
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      defuzzify_output_mamdani.m
-## Last-Modified: 20 Aug 2012
-
-function output = defuzzify_output_mamdani (fis, fuzzy_output)
-
-  num_outputs = columns (fis.output);        ## num_outputs == L (above)
-  num_points = rows (fuzzy_output);
-  output = zeros (1, num_outputs);
-
-  for i = 1 : num_outputs
-    range = fis.output(i).range;
-    x = linspace (range(1), range(2), num_points);
-    y = (fuzzy_output(:, i))';
-    output(i) = defuzz (x, y, fis.defuzzMethod);
-  endfor
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/defuzzify_output_sugeno.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{output} =} defuzzify_output_sugeno (@var{fis}, @var{aggregated_output})
-##
-## @noindent
-## Given the:
-## @itemize @bullet
-## @item @var{fis.defuzzMethod}
-## the defuzzification method for the given @var{fis}
-## @item @var{aggregated_output}
-## a vector of structures containing the aggregated output for each FIS output variable
-## @end itemize
-##
-## @noindent
-## Return:
-## @itemize @bullet
-## @item @var{output}
-## a vector of crisp output values
-## @end itemize
-##
-## The @var{aggregated_output} is a vector of M structures, where M is the
-## number of FIS output variables. Each structure contains an index i and a
-## matrix of singletons that form the aggregated output for the ith FIS output.
-## For each FIS output variable, the matrix of singletons is a 2 x L matrix
-## where L is the number of distinct singleton locations in the fuzzy output
-## for that FIS output variable. The first row gives the (distinct) locations,
-## and the second gives the (non-zero) heights:
-##
-## @example
-## @group
-##           singleton_1  singleton_2 ... singleton_L
-## location [                                        ]
-##   height [                                        ]
-## @end group
-## @end example
-##
-## The crisp @var{output} values are computed from the corresponding fuzzy
-## values using the FIS defuzzification method. The @var{output}
-## vector has the form:
-##
-## @example
-## output:  [output_1 output_2 ... output_M]
-## @end example
-##
-## Because defuzzify_output_sugeno is called only by the private
-## function evalfis_private, it does no error checking of the argument values.
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy inference system fis
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      defuzzify_output_sugeno.m
-## Last-Modified: 20 Aug 2012
-
-function output = defuzzify_output_sugeno (fis, aggregated_output)
-
-  num_outputs = columns (fis.output);
-  output = zeros (1, num_outputs);
-
-  for i = 1 : num_outputs
-    next_agg_output = aggregated_output(i).aggregated_output;
-    x = next_agg_output(1, :);
-    y = next_agg_output(2, :);
-    output(i) = defuzz (x, y, fis.defuzzMethod);
-  endfor
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/eval_firing_strength.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,144 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{firing_strength} =} eval_firing_strength (@var{fis}, @var{rule_input})
-##
-## Return the firing strength for each FIS rule given a matrix of matching
-## degrees for each (rule, rule_input) pair.
-##
-## The second argument (@var{rule_input}) gives the fuzzified input values to
-## the FIS rules as a Q x N matrix:
-##
-## @example
-## @group
-##          in_1   in_2   ...  in_N
-## rule_1  [mu_11  mu_12  ...  mu_1N]
-## rule_2  [mu_21  mu_22  ...  mu_2N]
-##         [              ...       ]
-## rule_Q  [mu_Q1  mu_Q2  ...  mu_QN]
-## @end group
-## @end example
-##
-## @noindent
-## where Q is the number of rules and N is the number of FIS input variables.
-##
-## For i = 1 .. Q, the fuzzy antecedent, connection, and weight for rule i
-## are given by:
-## @itemize @bullet
-## @item
-## @var{fis.rule(i).antecedent}
-## @item
-## @var{fis.rule(i).connection}
-## @item
-## @var{fis.rule(i).weight}
-## @end itemize
-##
-## The output is a row vector of length Q.
-##
-## Because eval_firing_strength is called only by the private function
-## evalfis_private, it does no error checking of the argument values.
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy inference system fis
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      eval_firing_strength.m
-## Last-Modified: 20 Aug 2012
-
-function firing_strength = eval_firing_strength (fis, rule_input)
-
-  num_rules = columns (fis.rule);            ## num_rules   == Q (above)
-  num_inputs = columns (fis.input);          ## num_inputs  == N
-
-  ## Initialize output matrix to prevent inefficient resizing.
-  firing_strength = zeros (1, num_rules);
-
-  ## For each rule
-  ##    1. Apply connection to find matching degree of the antecedent.
-  ##    2. Multiply by weight of the rule to find degree of the rule.
-
-  for i = 1 : num_rules
-    rule = fis.rule(i);
-
-    ## Collect mu values for all input variables in the antecedent.
-    antecedent_mus = [];
-    for j = 1 : num_inputs
-      if (rule.antecedent(j) != 0)
-        mu = rule_input(i, j);
-        antecedent_mus = [antecedent_mus mu];
-      endif
-    endfor
-
-    ## Compute matching degree of the rule.
-    if (rule.connection == 1)
-      connect = fis.andMethod;
-    else
-      connect = fis.orMethod;
-    endif
-    switch (connect)
-      case 'min'
-        firing_strength(i) = rule.weight * ...
-                             min (antecedent_mus);
-      case 'max'
-        firing_strength(i) = rule.weight * ...
-                             max (antecedent_mus);
-      case 'prod'
-        firing_strength(i) = rule.weight * ...
-                             prod (antecedent_mus);
-      case 'sum'
-        firing_strength(i) = rule.weight * ...
-                             sum (antecedent_mus);
-      case 'algebraic_product'
-        firing_strength(i) = rule.weight * ...
-                             prod (antecedent_mus);
-      case 'algebraic_sum'
-        firing_strength(i) = rule.weight * ...
-                             algebraic_sum (antecedent_mus);
-      case 'bounded_difference'
-        firing_strength(i) = rule.weight * ...
-                             bounded_difference (antecedent_mus);
-      case 'bounded_sum'
-        firing_strength(i) = rule.weight * ...
-                             bounded_sum (antecedent_mus);
-      case 'einstein_product'
-        firing_strength(i) = rule.weight * ...
-                             einstein_product (antecedent_mus);
-      case 'einstein_sum'
-        firing_strength(i) = rule.weight * ...
-                             einstein_sum (antecedent_mus);
-      case 'hamacher_product'
-        firing_strength(i) = rule.weight * ...
-                             hamacher_product (antecedent_mus);
-      case 'hamacher_sum'
-        firing_strength(i) = rule.weight * ...
-                             hamacher_sum (antecedent_mus);
-      case 'drastic_product'
-        firing_strength(i) = rule.weight * ...
-                             drastic_product (antecedent_mus);
-      case 'drastic_sum'
-        firing_strength(i) = rule.weight * ...
-                             drastic_sum (antecedent_mus);
-      otherwise
-        firing_strength(i) = rule.weight * ...
-                             str2func (connect) (antecedent_mus);
-    endswitch
-  endfor
-endfunction
-
--- a/main/fuzzy-logic-toolkit/inst/private/eval_rules_mamdani.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,128 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{rule_output} =} eval_rules_mamdani (@var{fis}, @var{firing_strength}, @var{num_points})
-##
-## @noindent
-## Return the fuzzy output for each (rule, FIS output) pair
-## for a Mamdani-type FIS (an FIS that does not have constant or linear
-## output membership functions).
-##
-## The firing strength of each rule is given by a row vector of length Q, where
-## Q is the number of rules in the FIS:
-## @example
-## @group
-##  rule_1             rule_2             ... rule_Q
-## [firing_strength(1) firing_strength(2) ... firing_strength(Q)]
-## @end group
-## @end example
-##
-## The implication method and fuzzy consequent for each rule are given by:
-## @example
-## @group
-## fis.impMethod
-## fis.rule(i).consequent     for i = 1..Q
-## @end group
-## @end example
-##
-## The return value, @var{rule_output}, is a @var{num_points} x (Q * M)
-## matrix, where Q is the number of rules and M is the number of FIS output
-## variables. Each column of this matrix gives the y-values of the fuzzy
-## output for a single (rule, FIS output) pair.
-##
-## @example
-## @group
-##                  Q cols            Q cols              Q cols 
-##             ---------------   ---------------     ---------------
-##             out_1 ... out_1   out_2 ... out_2 ... out_M ... out_M
-##          1 [                                                     ]
-##          2 [                                                     ]
-##        ... [                                                     ]
-## num_points [                                                     ]
-## @end group
-## @end example
-##
-## Because eval_rules_mamdani is called only by the private function
-## evalfis_private, it does no error checking of the argument values.
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy inference system fis
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      eval_rules_mamdani.m
-## Last-Modified: 20 Aug 2012
-
-function rule_output = eval_rules_mamdani (fis, firing_strength, ...
-                                           num_points)
-
-  num_rules = columns (fis.rule);            ## num_rules   == Q (above)
-  num_outputs = columns (fis.output);        ## num_outputs == L
-
-  ## Initialize output matrix to prevent inefficient resizing.
-  rule_output = zeros (num_points, num_rules*num_outputs);
-
-  ## Compute the fuzzy output for each (rule, output) pair:
-  ##   1. Apply the FIS implication method to find the fuzzy outputs
-  ##      for the current (rule, output) pair.
-  ##   2. Store the result as a column in the rule_output matrix.
-
-  for i = 1 : num_rules
-    rule = fis.rule(i);
-    rule_matching_degree = firing_strength(i);
-
-    if (rule_matching_degree != 0)
-      for j = 1 : num_outputs
-
-        ## Compute the fuzzy output for this (rule, output) pair.
-
-        [mf_index hedge not_flag] = ...
-          get_mf_index_and_hedge (rule.consequent(j));
-        if (mf_index != 0)
-
-          ## First, get the fuzzy output, adjusting for the hedge and
-          ## not_flag, but not for the rule matching degree.
-
-          range = fis.output(j).range;
-          mf = fis.output(j).mf(mf_index);
-          x = linspace (range(1), range(2), num_points);
-          fuzzy_out = evalmf (x, mf.params, mf.type, hedge, not_flag);
-
-          ## Adjust the fuzzy output for the rule matching degree.
-
-          switch (fis.impMethod)
-            case 'min'
-              fuzzy_out = min (rule_matching_degree, fuzzy_out);
-            case 'prod'
-              fuzzy_out *= rule_matching_degree;
-            otherwise
-              fuzzy_out = str2func (fis.impMethod) ...
-                            (rule_matching_degree, fuzzy_out);
-          endswitch
-
-          ## Store result in column of rule_output corresponding
-          ## to the (rule, output) pair.
-
-          rule_output(:, (j - 1) * num_rules + i) = fuzzy_out';
-        endif
-      endfor
-    endif
-
-  endfor
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/eval_rules_sugeno.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,133 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{rule_output} =} eval_rules_sugeno (@var{fis}, @var{firing_strength}, @var{user_input})
-##
-## Return the fuzzy output for each (rule, FIS output) pair for a
-## Sugeno-type FIS (an FIS that has only constant and linear output
-## membership functions).
-##
-## The firing strength of each rule is given by a row vector of length Q, where
-## Q is the number of rules in the FIS:
-## @example
-## @group
-##  rule_1             rule_2             ... rule_Q
-## [firing_strength(1) firing_strength(2) ... firing_strength(Q)]
-## @end group
-## @end example
-##
-## The consequent for each rule is given by:
-## @example
-## fis.rule(i).consequent     for i = 1..Q
-## @end example
-##
-## The return value of the function is a 2 x (Q * M) matrix, where
-## M is the number of FIS output variables.
-## Each column of this matrix gives the (location, height) pair of the
-## singleton output for a single (rule, FIS output) pair.
-##
-## @example
-## @group
-##               Q cols            Q cols                  Q cols 
-##           ---------------   ---------------         ---------------
-##           out_1 ... out_1   out_2 ... out_2   ...   out_M ... out_M
-## location [                                                         ]
-##   height [                                                         ]
-## @end group
-## @end example
-##
-## Note that for Sugeno FISs, the hedge and not flag are handled by
-## adjusting the height of the singletons for each (rule, output) pair.
-##
-## Because eval_rules_sugeno is called only by the private function
-## evalfis_private, it does no error checking of the argument values.
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy inference system fis
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      eval_rules_sugeno.m
-## Last-Modified: 20 Aug 2012
-
-function rule_output = eval_rules_sugeno (fis, firing_strength, ...
-                                          user_input)
-
-  num_rules = columns (fis.rule);            ## num_rules   == Q (above)
-  num_outputs = columns (fis.output);        ## num_outputs == L
-
-  ## Initialize output matrix to prevent inefficient resizing.
-  rule_output = zeros (2, num_rules * num_outputs);
-
-  ## Compute the (location, height) of the singleton output by each
-  ## (rule, output) pair:
-  ##   1. The height is given by the firing strength of the rule, and
-  ##      by the hedge and the not flag for the (rule, output) pair.
-  ##   2. If the consequent membership function is constant, then the
-  ##      membership function's parameter gives the location of the
-  ##      singleton. If the consequent membership function is linear,
-  ##      then the location is the inner product of the the membership
-  ##      function's parameters and the vector formed by appending a 1
-  ##      to the user input vector.
-
-  for i = 1 : num_rules
-    rule = fis.rule(i);
-    rule_firing_strength = firing_strength(i);
-    
-    if (rule_firing_strength != 0)
-      for j = 1 : num_outputs
-
-        ## Compute the singleton height for this (rule, output) pair.
-        ## Note that for Sugeno FISs, the hedge and not flag are handled
-        ## by adjusting the height of the singletons for each
-        ## (rule, output) pair.
-
-        [mf_index hedge not_flag] = ...
-          get_mf_index_and_hedge (rule.consequent(j));
-        height = rule_firing_strength;
-        if (hedge != 0)
-          height = height ^ (1 / hedge);
-        endif
-        if (not_flag)
-          height = 1 - height;
-        endif
-
-        ## Compute the singleton location for this (rule, output) pair.
-
-        if (mf_index != 0)
-          mf = fis.output(j).mf(mf_index);
-          switch (mf.type)
-            case 'constant'
-              location = mf.params;
-            case 'linear'
-              location = mf.params * [user_input 1]';
-            otherwise
-              location = str2func (mf.type) (mf.params, user_input);
-          endswitch
-
-          ## Store result in column of rule_output corresponding
-          ## to the (rule, output) pair.
-
-          rule_output(1, (j - 1) * num_rules + i) = location;
-          rule_output(2, (j - 1) * num_rules + i) = height;
-        endif
-      endfor
-    endif
-  endfor
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/evalfis_private.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{output} =} evalfis_private (@var{input}, @var{fis})
-## @deftypefnx {Function File} {@var{output} =} evalfis_private (@var{input}, @var{fis}, @var{num_points})
-## @deftypefnx {Function File} {[@var{output}, @var{rule_input}, @var{rule_output}, @var{fuzzy_output}] =} evalfis_private (@var{input}, @var{fis})
-## @deftypefnx {Function File} {[@var{output}, @var{rule_input}, @var{rule_output}, @var{fuzzy_output}] =} evalfis_private (@var{input}, @var{fis}, @var{num_points})
-##
-## This function localizes the FIS evaluation common to the public functions
-## evalfis and gensurf. All of the arguments to evalfis_private are assumed to
-## be valid (limiting the inefficiency of the tests to the calling function).
-##
-## For more information, see the comments at the top of evalfis.m and gensurf.m.
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy inference system fis
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      evalfis_private.m
-## Last-Modified: 20 Aug 2012
-
-function [output, rule_input, rule_output, fuzzy_output] = ...
-           evalfis_private (user_input, fis, num_points = 101)
-
-  ## Initialize output matrix (to prevent repeated resizing).
-
-  output = zeros (rows (user_input), columns (fis.output));
-
-  ## Process one set of inputs at a time. For each row of crisp input
-  ## values in the input matrix, add a row of crisp output values to the
-  ## output matrix.
-
-  for i = 1 : rows (user_input)
-    rule_input = fuzzify_input (fis, user_input(i, :));
-    firing_strength = eval_firing_strength (fis, rule_input);
-    if (strcmp (fis.type, 'mamdani'))
-      rule_output = eval_rules_mamdani (fis, firing_strength, ...
-                                        num_points);
-      fuzzy_output = aggregate_output_mamdani (fis, rule_output);
-      output(i, :) = defuzzify_output_mamdani (fis, fuzzy_output);
-    else
-      rule_output = eval_rules_sugeno (fis, firing_strength, ...
-                                       user_input(i, :));
-      fuzzy_output = aggregate_output_sugeno (fis, rule_output);
-      output(i, :) = defuzzify_output_sugeno (fis, fuzzy_output);
-    endif
-  endfor
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/evalmf_private.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} evalmf_private (@var{x}, @var{param}, @var{mf_type})
-## @deftypefnx {Function File} {@var{y} =} evalmf_private (@var{x}, @var{param}, @var{mf_type}, @var{hedge})
-## @deftypefnx {Function File} {@var{y} =} evalmf_private (@var{x}, @var{param}, @var{mf_type}, @var{hedge}, @var{not_flag})
-## @deftypefnx {Function File} {@var{y} =} evalmf_private (@var{[x1 x2 ... xn]}, @var{[param1 ... ]}, '<@var{mf_type}>')
-## @deftypefnx {Function File} {@var{y} =} evalmf_private (@var{[x1 x2 ... xn]}, @var{[param1 ... ]}, '<@var{mf_type}>', @var{hedge})
-## @deftypefnx {Function File} {@var{y} =} evalmf_private (@var{[x1 x2 ... xn]}, @var{[param1 ... ]}, '<@var{mf_type}>', @var{hedge}, @var{not_flag})
-##
-## This function localizes the membership function evaluation without the
-## parameter tests. It is called by evalmf and plotmf. For more information,
-## see the comment at the top of evalmf.m.
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy membership-function evaluate
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      evalmf_private.m
-## Last-Modified: 3 Sep 2012
-
-function y = evalmf_private (x, params, mf_type, hedge = 0, ...
-                             not_flag = false)
-
-  ## Calculate and return the y values of the membership function on
-  ## the domain x. First, get the value of the membership function
-  ## without correcting for the hedge and not_flag. Then, for non-linear
-  ## functions, adjust the function values for non-zero hedge and
-  ## not_flag.
-
-  switch (mf_type)
-    case 'constant'
-      y = eval_constant (x, params);
-      if (not_flag)
-        y = 1 - y;
-      endif
-
-    case 'linear'
-      y = eval_linear (x, params);
-
-    otherwise
-      y = str2func (mf_type) (x, params);
-      if (hedge != 0)
-        y = y .^ hedge;
-      endif
-      if (not_flag)
-        y = 1 - y;
-      endif
-  endswitch
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: eval_constant
-## Purpose:  Return the y-values corresponding to the x-values in
-##           the domain for the constant function specified by the
-##           parameter c.
-##----------------------------------------------------------------------
-
-function y = eval_constant (x, c)
-  y = zeros (length (x));
-  delta = x(2) - x(1);
-  y_val = @(x_val) ((abs (c - x_val) < delta) * 1);
-  y = arrayfun (y_val, x);
-endfunction
-
-##----------------------------------------------------------------------
-## Function: eval_linear
-## Purpose:  For the parameters [a ... c]), return the y-values
-##           corresponding to the linear function y = a*x + c, where x
-##           takes on the the x-values in the domain. The remaining
-##           coefficients in the parameter list are not used -- this
-##           creates a two-dimensional intersection of the linear output
-##           membership function suitable for display together with
-##           other membership functions, but does not fully represent
-##           the output membership function.
-##----------------------------------------------------------------------
-
-function y = eval_linear (x, params)
-  if (length (params) == 1)
-    a = 0;
-    c = params;
-  else
-    a = params(1);
-    c = params(length (params));
-  endif
-
-  y = zeros (length (x));
-  y_val = @(x_val) (a * x_val + c);
-  y = arrayfun (y_val, x);
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/fcm_compute_convergence_criterion.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{convergence_criterion} =} fcm_compute_convergence_criterion (@var{V}, @var{V_previous})
-##
-## Compute the sum of the changes in position (using the Euclidean
-## distance) of the cluster centers.
-##
-## @seealso{fcm, fcm_init_prototype, fcm_update_membership_fcn, fcm_update_cluster_centers, fcm_compute_objective_fcn}
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy partition clustering fcm
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      fcm_compute_convergence_criterion.m
-## Last-Modified: 20 Aug 2012
-
-function convergence_criterion = ...
-  fcm_compute_convergence_criterion (V, V_previous)
-
-  V_delta = V - V_previous;
-  convergence_criterion = sum (sqrt (sum (V_delta .* V_delta)'));
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/fcm_compute_objective_fcn.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{obj_fcn} =} fcm_compute_objective_fcn (@var{Mu_m}, @var{sqr_dist})
-##
-## Compute the objective function for the current iteration.
-##
-## @seealso{fcm, fcm_init_prototype, fcm_update_membership_fcn, fcm_update_cluster_centers, fcm_compute_convergence_criterion}
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy partition clustering fcm
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      fcm_compute_objective_fcn.m
-## Last-Modified: 20 Aug 2012
-
-##----------------------------------------------------------------------
-## Note:     This function is an implementation of Equation 13.3 in
-##           Fuzzy Logic: Intelligence, Control and Information, by
-##           J. Yen and R. Langari, Prentice Hall, 1999, page 379
-##           (International Edition). 
-##----------------------------------------------------------------------
-
-function obj_fcn = fcm_compute_objective_fcn (Mu_m, sqr_dist)
-
-  obj_fcn = sum (sum (Mu_m .* sqr_dist));
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/fcm_init_prototype.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{V} =} fcm_init_prototype (@var{X}, @var{k})
-##
-## Initialize k cluster centers to random locations in the ranges
-## given by the min/max values of each feature of the dataset.
-##
-## @seealso{fcm, fcm_update_membership_fcn, fcm_update_cluster_centers, fcm_compute_objective_fcn, fcm_compute_convergence_criterion}
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy partition clustering fcm
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      fcm_init_prototype.m
-## Last-Modified: 20 Aug 2012
-
-function V = fcm_init_prototype (X, k)
-
-  num_features = columns (X);
-  min_feature_value = min (X);
-  max_feature_value = max (X);
-  V = rand (k, num_features);
-
-  for i = 1 : num_features
-    V(:, i) = (max_feature_value(i) - min_feature_value(i)) * ...
-                V(:, i) + min_feature_value(i);
-  endfor
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/fcm_update_cluster_centers.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{V} =} fcm_update_cluster_centers (@var{Mu_m}, @var{X}, @var{k})
-##
-## Update the cluster centers to correspond to the given membership
-## function values.
-##
-## @seealso{fcm, fcm_init_prototype, fcm_update_membership_fcn, fcm_compute_objective_fcn, fcm_compute_convergence_criterion}
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy partition clustering fcm
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      fcm_update_cluster_centers.m
-## Last-Modified: 20 Aug 2012
-
-##----------------------------------------------------------------------
-## Note:     This function is an implementation of Equation 13.5 in
-##           Fuzzy Logic: Intelligence, Control and Information, by
-##           J. Yen and R. Langari, Prentice Hall, 1999, page 380
-##           (International Edition). 
-##----------------------------------------------------------------------
-
-function V = fcm_update_cluster_centers (Mu_m, X, k)
-
-  V = Mu_m * X;
-  sum_Mu_m = sum (Mu_m');
-
-  if (prod (sum_Mu_m) == 0)
-    error ("division by 0 in function fcm_update_cluster_centers\n");
-  endif
-
-  for i = 1 : k
-    V(i, :) /= sum_Mu_m(i);
-  endfor
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/fcm_update_membership_fcn.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{Mu} =} fcm_update_membership_fcn (@var{V}, @var{X}, @var{m}, @var{k}, @var{n}, @var{sqr_dist})
-##
-## Compute Mu for each (cluster center, input point) pair.
-##
-## @seealso{fcm, fcm_init_prototype, fcm_update_cluster_centers, fcm_compute_objective_fcn, fcm_compute_convergence_criterion}
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy partition clustering fcm
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      fcm_update_membership_fcn.m
-## Last-Modified: 20 Aug 2012
-
-##----------------------------------------------------------------------
-## Note:     This function is an implementation of Equation 13.4 in
-##           Fuzzy Logic: Intelligence, Control and Information, by
-##           J. Yen and R. Langari, Prentice Hall, 1999, page 380
-##           (International Edition) and Step 3 of Algorithm 4.1 in
-##           Fuzzy and Neural Control, by Robert Babuska, November 2009,
-##           p. 63.
-##----------------------------------------------------------------------
-
-function Mu = fcm_update_membership_fcn (V, X, m, k, n, sqr_dist)
-
-  Mu = zeros (k, n);
-
-  if (min (min (sqr_dist)) > 0)
-    exponent = 1.0 / (m - 1);
-    for i = 1 : k
-      for j = 1 : n
-        summation = 0.0;
-        for l = 1 : k
-          summation += (sqr_dist(i, j) / sqr_dist(l, j))^exponent;
-        endfor
-        if (summation != 0)
-          Mu(i, j) = 1.0 / summation;
-        else
-          error ("division by 0 in fcm_update_membership_fcn'\n");
-        endif
-      endfor
-    endfor
-
-  else
-    num_zeros = 0;
-    for i = 1 : k
-      for j = 1 : n
-        if (sqr_dist(i, j) == 0)
-          num_zeros++;
-          Mu(i, j) = 1.0;
-        endif
-      endfor
-    endfor
-    Mu = Mu / num_zeros;
-  endif
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/fuzzify_input.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{rule_input} =} fuzzify_input (@var{fis}, @var{user_input})
-##
-## Return the matching degree for each (rule, input value) pair.
-## For an FIS that has Q rules and N FIS input variables, the return value
-## will be a Q x N matrix.
-##
-## @noindent
-## The crisp input values are given by a row vector:
-##
-## @example
-## user_input:  [input_1 input_2 ... input_N]
-## @end example
-##
-## @noindent
-## The rule antecedents are stored in the FIS structure as row vectors:
-##
-## @example
-## @group
-## rule 1 antecedent: [in_11 in_12 ... in_1N]
-## rule 2 antecedent: [in_21 in_22 ... in_2N]
-##        ...                 ...
-## rule Q antecedent: [in_Q1 in_Q2 ... in_QN]
-## @end group
-## @end example
-##
-## @noindent
-## Finally, the output of the function gives the matching degree
-## for each (rule, input value) pair as an Q x N matrix:
-##
-## @example
-## @group
-##          in_1  in_2 ...  in_N
-## rule_1 [mu_11 mu_12 ... mu_1N]
-## rule_2 [mu_21 mu_22 ... mu_2N]
-##        [            ...      ]
-## rule_Q [mu_Q1 mu_Q2 ... mu_QN]
-## @end group
-## @end example
-##
-## Because fuzzify_input is called only by the private function
-## evalfis_private, it does no error checking of the argument values.
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy inference system fis
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      fuzzify_input.m
-## Last-Modified: 20 Aug 2012
-
-function rule_input = fuzzify_input (fis, user_input)
-
-  num_rules = columns (fis.rule);             ## num_rules  == Q (above)
-  num_inputs = columns (fis.input);           ## num_inputs == N
-  rule_input = zeros (num_rules, num_inputs); ## to prevent resizing
-
-  ## For each rule i and each input j, compute the value of mu
-  ## in the result.
-
-  for i = 1 : num_rules
-    antecedent = fis.rule(i).antecedent;
-    for j = 1 : num_inputs
-      mu = 0;
-      crisp_x = user_input(j);
-
-      ## Get the value of mu (with adjustment for the hedge
-      ## and not_flag).
-
-      [mf_index hedge not_flag] = ...
-        get_mf_index_and_hedge (antecedent(j));
-      if (mf_index != 0)
-        mf = fis.input(j).mf(mf_index);
-        mu = evalmf (crisp_x, mf.params, mf.type, hedge, not_flag);
-      endif
-
-      ## Store the fuzzified input in rule_input.
-
-      rule_input(i, j) = mu;
-    endfor
-  endfor
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/get_mf_index_and_hedge.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{[mf_index hedge not_flag]} =} get_mf_index_and_hedge (@var{mf_index_and_hedge})
-##
-## Return the membership function index, hedge, and flag indicating "not"
-## indicated by the argument.
-##
-## The membership function index, @var{mf_index}, is the positive whole number
-## portion of the argument. The @var{hedge} is the fractional part of the
-## argument, rounded to 2 digits and multiplied by 10. The @var{not_flag},
-## a Boolean, is true iff the argument is negative.
-##
-## Because get_mf_index_and_hedge is a private function, it does no error
-## checking of its argument.
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy inference system fis
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      get_mf_index_and_hedge.m
-## Last-Modified: 20 Aug 2012
-
-function [mf_index hedge not_flag] = ...
-  get_mf_index_and_hedge (mf_index_and_hedge)
-
-  ## Set flag to handle "not", indicated by a minus sign in the
-  ## antecedent.
-
-  if (mf_index_and_hedge < 0)
-    not_flag = true;
-    mf_index_and_hedge = -mf_index_and_hedge;
-  else
-    not_flag = false;
-  endif
-
-  ## The membership function index is the positive whole number portion
-  ## of an element in the antecedent.
-
-  mf_index = fix (mf_index_and_hedge);
-
-  ## For custom hedges and the four built-in hedges "somewhat", "very",
-  ## "extremely", and "very very", return the power to which the
-  ## membership value should be raised. The hedges are indicated by the
-  ## fractional part of the corresponding rule_matrix entry (rounded to
-  ## 2 digits). 
-
-  if (mf_index != 0)
-    hedge = round (100 * (mf_index_and_hedge - mf_index)) / 10;
-  else
-    hedge = 0;
-  endif
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/is_builtin_language.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} is_builtin_language (@var{x})
-##
-## Return 1 if @var{x} is one of the strings representing the
-## built-in languages, and return 0 otherwise. The comparison is
-## case-insensitive.
-##
-## is_builtin_language is a private function that localizes the test 
-## for languages handled by showrule.
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy private parameter-test
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      is_builtin_language.m
-## Last-Modified: 3 Sep 2012
-
-function y = is_builtin_language (x)
-
-  y = ischar (x) && isvector (x) && ...
-      ismember (tolower (x), {'english', ...
-                              'chinese', 'mandarin', 'pinyin', ...
-                              'russian', 'russkij', 'pycckii', ...
-                              'french', 'francais', ...
-                              'spanish', 'espanol', ...
-                              'german', 'deutsch'});
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/is_domain.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} is_domain (@var{x})
-## @deftypefnx {Function File} {@var{y} =} is_domain (@var{[x1 x2 ... xn]})
-##
-## Return 1 if @var{x} is a real number of a vector of strictly increasing real
-## numbers, and return 0 otherwise.
-##
-## is_domain is a private function that localizes the test for validity of FIS
-## input variable domains.
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy private parameter-test
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      is_domain.m
-## Last-Modified: 20 Aug 2012
-
-function y = is_domain (x)
-
-  y = 1;
-  if (!(isvector (x) && isreal (x)))
-    y = 0;
-  elseif (length(x) > 1)
-    for i = 1 : length (x) - 1
-      if (x(i) >= x(i + 1))
-        y = 0;
-      endif
-    endfor
-  endif
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/is_fis.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} is_fis (@var{x})
-##
-## Return 1 if the argument @var{x} is a valid FIS (Fuzzy Inference System)
-## structure, and return 0 otherwise.
-##
-## is_fis is a private function that localizes the test for valid FIS structs.
-## For efficiency, is_fis only determines if the argument @var{x} is a structure
-## with the expected fields, and that these fields have the expected types.
-##
-## Examples:
-## @example
-## @group
-## fis = newfis('FIS');
-## is_fis(fis)            ==> 1
-## @end group
-## @end example
-##
-## @example
-## @group
-## x = pi;
-## is_fis(x)              ==> 0
-## @end group
-## @end example
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy private parameter-test
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      is_fis.m
-## Last-Modified: 20 Aug 2012
-
-function y = is_fis (x)
-
-  y = isstruct (x) && ...
-      isfield (x, 'name') && is_string (x.name) && ...
-      isfield (x, 'type') && is_string (x.type) && ...
-      isfield (x, 'andMethod') && is_string (x.andMethod) && ...
-      isfield (x, 'orMethod') && is_string (x.orMethod) && ...
-      isfield (x, 'impMethod') && is_string (x.impMethod) && ...
-      isfield (x, 'aggMethod') && is_string (x.aggMethod) && ...
-      isfield (x, 'defuzzMethod') && is_string (x.defuzzMethod) && ...
-      isfield (x, 'input') && is_io_vector (x.input) && ...
-      isfield (x, 'output') && is_io_vector (x.output) && ...
-      isfield (x, 'rule') && is_rule_vector (x.rule);
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/is_format.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} is_format (@var{x})
-##
-## Return 1 if @var{x} is one of the strings 'verbose', 'symbolic', and
-## 'indexed', and return 0 otherwise. The comparison is case-insensitive.
-##
-## is_format is a private function that localizes the test for valid fis rule
-## input/output formats.
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy private parameter-test
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      is_format.m
-## Last-Modified: 20 Aug 2012
-
-function y = is_format (x)
-
-  y = ischar (x) && isvector (x) && ...
-      ismember (tolower (x), {'verbose', 'symbolic', 'indexed'});
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/is_grid_spec.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} is_grid_spec (@var{x})
-##
-## Return 1 if @var{x} is an integer or vector of two integers, each >= 2,
-## and return 0 otherwise.
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy private parameter-test
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      is_grid_spec.m
-## Last-Modified: 20 Aug 2012
-
-function y = is_grid_spec (x, fis)
-
-  if (!(isvector (x) && (length (x) <= 2)))
-    y = 0;
-  else
-    y = 1;
-    for next_x = x
-      if (!(is_int (next_x) && next_x >= 2))
-        y = 0;
-      endif
-    endfor
-  endif
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/is_input_matrix.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} is_input_matrix (@var{x}, @var{fis})
-##
-## Return 1 if @var{x} is a valid matrix of input values for the given FIS
-## structure, and return 0 otherwise. The FIS structure @var{fis} is assumed
-## to be valid.
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy private parameter-test
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      is_input_matrix.m
-## Last-Modified: 20 Aug 2012
-
-function y = is_input_matrix (x, fis)
-
-  if (!(ismatrix (x) && isreal (x) && ...
-        (columns (x) == columns (fis.input))))
-    y = 0;
-  else
-    y = 1;
-    for j = 1 : columns (x)
-      range = fis.input(j).range;
-      for i = 1 : rows(x)
-        if (!(isscalar (x(i, j)) && ...
-             x(i,j) >= range(1) && ...
-             x(i,j) <= range(2)))
-          y = 0;
-        endif
-      endfor
-    endfor
-  endif
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/is_int.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} is_int (@var{x})
-##
-## Return 1 if @var{x} is an integer-valued real scalar, and return 0 otherwise.
-##
-## is_int is a private function that localizes the test for integers.
-## In Octave, integer constants such as 1 are not represented by ints
-## internally: isinteger(1) returns 0.
-##
-## Examples:
-## @example
-## @group
-## is_int(6)         ==> 1
-## is_int(6.2)       ==> 0
-## is_int(ones(2))   ==> 0
-## is_int(6 + 0i)    ==> 1
-## is_int(0)         ==> 1
-## @end group
-## @end example
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy private parameter-test
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      is_int.m
-## Last-Modified: 20 Aug 2012
-
-function y = is_int (x)
-
-  y = isscalar (x) && isreal (x) && (fix (x) == x);
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/is_io_struct.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} is_io_struct (@var{x})
-##
-## Return 1 if the argument @var{x} is a valid input or output structure for an
-## FIS (Fuzzy Inference System), and return 0 otherwise.
-##
-## is_io_struct is a private function that localizes the test for valid input
-## and output structs. For efficiency, is_io_struct only determines if the
-## argument @var{x} is a structure with the expected fields, and that these
-## fields have the expected types.
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy private parameter-test
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      is_io_struct.m
-## Last-Modified: 20 Aug 2012
-
-function y = is_io_struct (x)
-
-  y = isstruct (x) && ...
-      isfield (x, 'name') && is_string (x.name) && ...
-      isfield (x, 'range') && are_bounds (x.range) && ...
-      isfield (x, 'mf') && is_mf_vector (x.mf);
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/is_io_vector.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} is_io_vector (@var{x})
-##
-## Return 1 if @var{x} is a vector of FIS input/output variable structures,
-## and return 0 otherwise.
-##
-## is_io_vector is a private function that localizes the test for valid FIS
-## structure members 'input' and 'output'.
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy private parameter-test
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      is_io_vector.m
-## Last-Modified: 20 Aug 2012
-
-function y = is_io_vector (x)
-
-  y = 1;
-  if (isequal(x, []))
-    y = 1;
-  elseif (!isvector(x))
-    y = 0;
-  else
-    y = 1;
-    for i = 1 : length (x)
-      if (!is_io_struct (x(i)))
-        y = 0;
-      endif
-    endfor
-  endif
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/is_mf_index.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} is_mf_index (@var{fis}, @var{in_or_out}, @var{var_index}, @var{mf_index})
-##
-## If @var{in_or_out} == 'input', return 1 if @var{mf_index} is a valid
-## membership function index for the input variable with index @var{var_index},
-## and return 0 otherwise.
-##
-## If @var{in_or_out} == 'output', return 1 if @var{mf_index} is a valid
-## membership function index for the output variable with index @var{var_index},
-## and return 0 otherwise.
-##
-## is_mf_index is a private function that localizes the test for valid FIS
-## membership function indices. The arguments @var{fis}, @var{in_or_out}, and
-## @var{var_index} are assumed to be valid.
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy private parameter-test
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      is_mf_index.m
-## Last-Modified: 20 Aug 2012
-
-function y = is_mf_index (fis, in_or_out, var_index, mf_index)
-
-  y = is_int (mf_index) && (mf_index >= 1);
-  if (strcmp (in_or_out, 'input'))
-    y = y && (mf_index <= length (fis.input(var_index).mf));
-  else
-    y = y && (mf_index <= length (fis.output(var_index).mf));
-  endif
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/is_mf_struct.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} is_mf_struct (@var{x})
-##
-## Return 1 if the argument @var{x} is a valid FIS (Fuzzy Inference System)
-## membership function structure, and return 0 otherwise.
-##
-## is_mf_struct is a private function that localizes the test for valid FIS
-## membership function structs. For efficiency, is_mf_struct only determines if
-## the argument @var{x} is a structure with the expected fields, but the types
-## of the fields are not verified.
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy private parameter-test
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      is_mf_struct.m
-## Last-Modified: 20 Aug 2012
-
-function y = is_mf_struct (x)
-
-  y = isstruct (x) && ...
-      isfield (x, 'name') && ...
-      isfield (x, 'type') && ...
-      isfield (x, 'params');
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/is_mf_vector.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} is_mf_vector (@var{x})
-##
-## Return 1 if @var{x} is a vector of FIS membership function structures, and
-## return 0 otherwise.
-##
-## is_mf_vector is a private function that localizes the test for validity.
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy private parameter-test
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      is_mf_vector.m
-## Last-Modified: 20 Aug 2012
-
-function y = is_mf_vector (x)
-
-  y = 1;
-  if (isequal(x, []))
-    y = 1;
-  elseif (!isvector (x))
-    y = 0;
-  else
-    y = 1;
-    for i = 1 : length (x)
-      if (!is_mf_struct (x(i)))
-        y = 0;
-      endif
-    endfor
-  endif
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/is_output_index.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} is_output_index (@var{x}, @var{fis})
-##
-## Return 1 if @var{x} is a valid output index for the given FIS structure, and
-## return 0 otherwise. The FIS structure @var{fis} is assumed to be valid.
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy private parameter-test
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      is_output_index.m
-## Last-Modified: 20 Aug 2012
-
-function y = is_output_index (x, fis)
-
-  y = is_pos_int (x) && (x <= columns (fis.output));
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/is_pos_int.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} is_pos_int (@var{x})
-##
-## Return 1 if @var{x} is a positive integer-valued real scalar, and return 0
-## otherwise.
-##
-## Examples:
-## @example
-## @group
-## is_pos_int(6)         ==> 1
-## is_pos_int(6.2)       ==> 0
-## is_pos_int(ones(2))   ==> 0
-## is_pos_int(6 + 0i)    ==> 1
-## is_pos_int(0)         ==> 0
-## @end group
-## @end example
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy private parameter-test
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      is_pos_int.m
-## Last-Modified: 20 Aug 2012
-
-function y = is_pos_int (x)
-
-  y = is_int (x) && (x > 0);
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/is_real.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} is_real (@var{x})
-##
-## Return 1 if @var{x} is an real scalar, and return 0 otherwise.
-##
-## is_real is a private function that localizes the test for real scalars.
-##
-## Examples:
-## @example
-## @group
-## is_real(6)         ==> 1
-## is_real(6.2)       ==> 1
-## is_real(ones(2))   ==> 0
-## is_real(6 + 0i)    ==> 1
-## is_real(6 + i)     ==> 0
-## is_real([0])       ==> 1
-## is_real([0 0])     ==> 0
-## is_real('h')       ==> 0
-## @end group
-## @end example
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy private parameter-test
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      is_real.m
-## Last-Modified: 20 Aug 2012
-
-function y = is_real (x)
-
-  y = isnumeric(x) && isscalar (x) && isreal (x);
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/is_real_matrix.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} is_real_matrix (@var{x})
-##
-## Return 1 if @var{x} is a non-empty matrix of real or integer-valued scalars,
-## and return 0 otherwise.
-##
-## Examples:
-## @example
-## @group
-## is_real_matrix(6)            ==> 0
-## is_real_matrix([])           ==> 0
-## is_real_matrix([1 2; 3 4])   ==> 1
-## is_real_matrix([1 2 3])      ==> 1
-## is_real_matrix([i 2 3])      ==> 0
-## is_real_matrix("hello")      ==> 0
-## @end group
-## @end example
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy private parameter-test
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      is_real_matrix.m
-## Last-Modified: 20 Aug 2012
-
-function y = is_real_matrix (x)
-
-  if (!ismatrix (x))
-    y = 0;
-  else
-    y = 1;
-    for i = 1 : numel (x)
-      if (!(isnumeric (x(i)) && isscalar (x(i)) && isreal (x(i))))
-        y = 0;
-      endif
-    endfor
-  endif
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/is_ref_input.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} is_ref_input (@var{x}, @var{fis}, @var{graphed_inputs})
-##
-## Return 1 if @var{x} is a vector of constants for the FIS structure inputs
-## that are not included in the list of inputs, and return 0 otherwise.
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy private parameter-test
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      is_ref_input.m
-## Last-Modified: 20 Aug 2012
-
-function y = is_ref_input (x, fis, graphed_inputs)
-
-  y = 1;
-  num_fis_inputs = columns (fis.input);
-  num_graphed_inputs = length (graphed_inputs);
-
-  if (!(is_row_vector (x) && (length (x) == num_fis_inputs)))
-    y = 0;
-  else
-    for i = 1 : num_fis_inputs
-      range = fis.input(i).range;
-      if (!(isreal (x(i)) && isscalar (x(i))))
-        y = 0;
-      elseif (!ismember (i, graphed_inputs) && ...
-             (x(i) < range(1) || x(i) > range(2)))
-        y = 0;
-      endif
-    endfor
-  endif
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/is_row_vector.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} is_row_vector (@var{x})
-##
-## Return 1 if @var{x} is a non-empty row vector, and return 0 otherwise.
-##
-## Examples:
-## @example
-## @group
-## is_row_vector([])         ==> 0
-## is_row_vector([1 2 3])    ==> 1
-## is_row_vector([1; 2; 3])  ==> 0
-## @end group
-## @end example
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy private parameter-test
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      is_row_vector.m
-## Last-Modified: 20 Aug 2012
-
-function y = is_row_vector (x)
-
-  y = isvector (x) && (rows (x) == 1);
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/is_rule_index_list.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} is_rule_index_list (@var{x}, @var{max_index})
-##
-## Return 1 if @var{x} is a valid rule index or a vector of valid rule indices,
-## and return 0 otherwise.
-##
-## Examples:
-## @example
-## @group
-## is_rule_index_list(2, 5)        ==> 1
-## is_rule_index_list([1 2], 5)    ==> 1
-## is_rule_index_list([1, 2], 5)   ==> 1
-## is_rule_index_list([1; 2], 5)   ==> 1
-## is_rule_index_list(0, 0)        ==> 0
-## is_rule_index_list([4 5], 2)    ==> 0
-## is_rule_index_list([], 2)       ==> 0
-## @end group
-## @end example
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy private parameter-test
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      is_rule_index_list.m
-## Last-Modified: 20 Aug 2012
-
-function y = is_rule_index_list (x, max_index)
-
-  if (is_pos_int (x))
-    y = (x <= max_index);
-  elseif (!isvector (x))
-    y = 0;
-  else
-    y = 1;
-    for i = 1 : length (x)
-      if (!(is_pos_int (x(i)) && (x(i) <= max_index)))
-        y = 0;
-      endif
-    endfor
-  endif
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/is_rule_struct.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} is_rule_struct (@var{x})
-##
-## Return 1 if the argument @var{x} is a valid FIS (Fuzzy Inference System) rule
-## structure, and return 0 otherwise.
-##
-## is_rule_struct is a private function that localizes the test for valid FIS
-## rule structs. For efficiency, is_rule_struct only determines if the argument
-## @var{x} is a structure with the expected fields, but the types of the fields
-## are not verified.
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy private parameter-test
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      is_rule_struct.m
-## Last-Modified: 20 Aug 2012
-
-function y = is_rule_struct (x)
-
-  y = isstruct (x) && ...
-      isfield (x, 'antecedent') && ...
-      isfield (x, 'consequent') && ...
-      isfield (x, 'weight') && ...
-      isfield (x, 'connection');
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/is_rule_vector.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} is_rule_vector (@var{x})
-##
-## Return 1 if @var{x} is a vector of FIS rule structures, and return 0
-## otherwise.
-##
-## is_rule_vector is a private function that localizes the test for valid FIS
-## 'rule' members.
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy private parameter-test
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      is_rule_vector.m
-## Last-Modified: 20 Aug 2012
-
-function y = is_rule_vector (x)
-
-  if (isequal(x, []))
-    y = 1;
-  elseif (!isvector (x))
-    y = 0;
-  else
-    y = 1;
-    for i = 1 : length (x)
-      if (!is_rule_struct (x(i)))
-        y = 0;
-      endif
-    endfor
-  endif
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/is_string.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} is_string (@var{x})
-##
-## Return 1 if @var{x} is a character vector, and return 0 otherwise.
-##
-## is_string is a private function that localizes the test for valid Octave
-## strings, which may need to be changed in the future. Octave 3.2.4 implements
-## strings as character vectors. In subsequent versions of Octave, the internal
-## implementation of strings may change, or a built-in Octave test 'isstring'
-## may be implemented. 
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy private parameter-test
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      is_string.m
-## Last-Modified: 20 Aug 2012
-
-function y = is_string (x)
-
-  y = ischar (x) && isvector (x);
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/is_var_index.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} is_var_index (@var{fis}, @var{in_or_out}, @var{var_index})
-##
-## If @var{in_or_out} == 'input', return 1 if @var{var_index} is a valid input
-## variable index for the given FIS structure, and return 0 otherwise.
-##
-## If @var{in_or_out} == 'output', return 1 if @var{var_index} is a valid output
-## variable index for the given FIS structure, and return 0 otherwise.
-##
-## is_var_index is a private function that localizes the test for valid FIS
-## input and output variable indices. The arguments @var{fis} and
-## @var{in_or_out} are assumed to be valid.
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy private parameter-test
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      is_var_index.m
-## Last-Modified: 20 Aug 2012
-
-function y = is_var_index (fis, in_or_out, var_index)
-
-  y = is_int (var_index) && (var_index >= 1);
-  if (strcmp (in_or_out, 'input'))
-    y = y && (var_index <= length (fis.input));
-  else
-    y = y && (var_index <= length (fis.output));
-  endif
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/probor.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} probor(@var{a}, @var{b})
-##
-## If @var{a} and @var{b} are scalars, return
-## @var{y} = @var{a} + @var{b} - @var{ab}.
-## If @var{a} and @var{b} are vectors,
-## return a vector @var{y} for which
-## @var{y(i)} = @var{a(i)} + @var{b(i)} - @var{a(i)b(i)}.
-##
-## The arguments are assumed to be either two real scalars or two equal-length
-## vectors of real scalars.
-##
-## Examples:
-## @example
-## @group
-## probor(1, 1)       ==> 1
-## probor(1, 0)       ==> 1
-## probor(0, 0)       ==> 0
-## probor(0.5, 0.5)   ==> 0.75 
-## probor(0.5, 1)     ==> 1
-## probor([1 1 0 0.5 0.5], [1 0 0 0.5 1]) ==> [1 1 0 0.75 1]
-## @end group
-## @end example
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy private probor
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      probor.m
-## Last-Modified: 20 May 2011
-
-function y = probor (a, b)
-
-  y = a + b - a .* b;
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/private/square_distance_matrix.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{sqr_dist} =} square_distance_matrix (@var{X}, @var{V})
-##
-## Return a k x n matrix of ||x - v||^2 values (the squares of the
-## distances between input data points x and cluster centers v), where
-## k is the number of cluster centers and n is the number of data points.
-##
-## The element sqr_dist(i, j) will contain the square of the distance
-## between the cluster center V(i, :) and the data point X(j, :).
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy private
-## Directory:     fuzzy-logic-toolkit/inst/private/
-## Filename:      square_dist_matrix.m
-## Last-Modified: 20 Aug 2012
-
-function sqr_dist = square_distance_matrix (X, V)
-
-  k = rows (V);
-  n = rows (X);
-  sqr_dist = zeros (k, n);
-  for i = 1 : k
-    Vi = V(i, :);
-    for j = 1 : n
-      Vi_to_Xj = X(j, :) - Vi;
-      sqr_dist(i, j) = sum (Vi_to_Xj .* Vi_to_Xj);
-    endfor
-  endfor
-
-endfunction
-
--- a/main/fuzzy-logic-toolkit/inst/private/strsplit.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,125 +0,0 @@
-## Copyright (C) 2009-2012 Jaroslav Hajek
-##
-## This file is part of Octave.
-##
-## Octave is free software; you can redistribute it and/or modify it
-## under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 3 of the License, or (at
-## your option) any later version.
-##
-## Octave is distributed in the hope that it will be useful, but
-## WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-## General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with Octave; see the file COPYING.  If not, see
-## <http://www.gnu.org/licenses/>.
-##
-## FIXME: this file is here to avoid conflicts with new Octave versions. Matlab
-##        has recently added strplit function (used to exist in Octave only) but
-##        their syntax is not compatible with ours. Rather than timing the
-##        release of each octave forge package that used strsplit, a copy of the
-##        old version was placed as private. Once the new Octave version is
-##        released, this file can be removed, and the calls to strsplit fixed.
-
-## -*- texinfo -*-
-## @deftypefn  {Function File} {[@var{cstr}] =} strsplit (@var{s}, @var{sep})
-## @deftypefnx {Function File} {[@var{cstr}] =} strsplit (@var{s}, @var{sep}, @var{strip_empty})
-## Split the string @var{s} using one or more separators @var{sep} and return
-## a cell array of strings.  Consecutive separators and separators at
-## boundaries result in empty strings, unless @var{strip_empty} is true.
-## The default value of @var{strip_empty} is false.
-##
-## 2-D character arrays are split at separators and at the original column
-## boundaries.
-##
-## Example:
-##
-## @example
-## @group
-## strsplit ("a,b,c", ",")
-##       @result{}
-##           @{
-##             [1,1] = a
-##             [1,2] = b
-##             [1,3] = c
-##           @}
-##
-## strsplit (["a,b" ; "cde"], ",")
-##       @result{}
-##           @{
-##             [1,1] = a
-##             [1,2] = b
-##             [1,3] = cde
-##           @}
-## @end group
-## @end example
-## @seealso{strtok}
-## @end deftypefn
-
-function cstr = strsplit (s, sep, strip_empty = false)
-
-  if (nargin < 2 || nargin > 3)
-    print_usage ();
-  elseif (! ischar (s) || ! ischar (sep))
-    error ("strsplit: S and SEP must be string values");
-  elseif (! isscalar (strip_empty))
-    error ("strsplit: STRIP_EMPTY must be a scalar value");
-  endif
-
-  if (isempty (s))
-    cstr = cell (size (s));
-  else
-    if (rows (s) > 1)
-      ## For 2-D arrays, add separator character at line boundaries
-      ## and transform to single string
-      s(:, end+1) = sep(1);
-      s = reshape (s.', 1, numel (s));
-      s(end) = []; 
-    endif
-
-    ## Split s according to delimiter
-    if (isscalar (sep))
-      ## Single separator
-      idx = find (s == sep);
-    else
-      ## Multiple separators
-      idx = strchr (s, sep);
-    endif
-
-    ## Get substring lengths.
-    if (isempty (idx))
-      strlens = length (s);
-    else
-      strlens = [idx(1)-1, diff(idx)-1, numel(s)-idx(end)];
-    endif
-    ## Remove separators.
-    s(idx) = [];
-    if (strip_empty)
-      ## Omit zero lengths.
-      strlens = strlens(strlens != 0);
-    endif
-
-    ## Convert!
-    cstr = mat2cell (s, 1, strlens);
-  endif
-
-endfunction
-
-
-%!assert (strsplit ("road to hell", " "), {"road", "to", "hell"})
-%!assert (strsplit ("road to^hell", " ^"), {"road", "to", "hell"})
-%!assert (strsplit ("road   to--hell", " -", true), {"road", "to", "hell"})
-%!assert (strsplit (["a,bc";",de"], ","), {"a", "bc", char(ones(1,0)), "de "})
-%!assert (strsplit (["a,bc";",de"], ",", true), {"a", "bc", "de "})
-%!assert (strsplit (["a,bc";",de"], ", ", true), {"a", "bc", "de"})
-
-%% Test input validation
-%!error strsplit ()
-%!error strsplit ("abc")
-%!error strsplit ("abc", "b", true, 4)
-%!error <S and SEP must be string values> strsplit (123, "b")
-%!error <S and SEP must be string values> strsplit ("abc", 1)
-%!error <STRIP_EMPTY must be a scalar value> strsplit ("abc", "def", ones (3,3))
-
--- a/main/fuzzy-logic-toolkit/inst/psigmf.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,119 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} psigmf (@var{x}, @var{params})
-## @deftypefnx {Function File} {@var{y} =} psigmf (@var{[x1 x2 ... xn]}, @var{[a1 c1 a2 c2]})
-##
-## For a given domain @var{x} and parameters @var{params} (or
-## @var{[a1 c1 a2 c2]}), return the corresponding @var{y} values for the product
-## of two sigmoidal membership functions.
-##
-## The argument @var{x} must be a real number or a non-empty vector of strictly
-## increasing real numbers, and @var{a1}, @var{c1}, @var{a2}, and @var{c2} must
-## be real numbers. This membership function satisfies the equation:
-## @example
-## f(x) = (1/(1 + exp(-a1*(x - c1)))) * (1/(1 + exp(-a2*(x - c2))))
-## @end example
-##
-## @noindent
-## The function is bounded above by 1 and below by 0.
-##
-## If @var{a1} is positive, @var{a2} is negative, and @var{c1} and @var{c2} are
-## far enough apart with @var{c1} < @var{c2}, then:
-## @itemize @w
-## @item
-## (a1)/4 ~ the rising slope at c1
-## @item
-## c1 ~ the left inflection point
-## @item
-## (a2)/4 ~ the falling slope at c2
-## @item
-## c2 ~ the right inflection point
-## @end itemize
-##
-## @noindent
-## and at each inflection point, the value of the function is about 0.5:
-## @itemize @w
-## @item
-## f(c1) ~ f(c2) ~ 0.5.
-## @end itemize
-##
-## @noindent
-## (Here, the symbol ~ means "approximately equal".)
-##
-## @noindent
-## To run the demonstration code, type @t{demo('psigmf')} at the Octave prompt.
-##
-## @seealso{dsigmf, gauss2mf, gaussmf, gbellmf, pimf, sigmf, smf, trapmf, trimf, zmf}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy membership sigmoidal
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      psigmf.m
-## Last-Modified: 19 Aug 2012
-
-function y = psigmf (x, params)
-
-  ## If the caller did not supply 2 argument values with the correct
-  ## types, print an error message and halt.
-
-  if (nargin != 2)
-    puts ("Type 'help psigmf' for more information.\n");
-    error ("psigmf requires 2 arguments\n");
-  elseif (!is_domain (x))
-    puts ("Type 'help psigmf' for more information.\n");
-    error ("psigmf's first argument must be a valid domain\n");
-  elseif (!are_mf_params ('psigmf', params))
-    puts ("Type 'help psigmf' for more information.\n");
-    error ("psigmf's second argument must be a parameter vector\n");
-  endif
-
-  ## Calculate and return the y values of the membership function on
-  ## the domain x.
-
-  a1 = params(1);
-  c1 = params(2);
-  a2 = params(3);
-  c2 = params(4);
-
-  y_val = @(x_val) 1 / (1 + exp (-a1 * (x_val - c1))) * ...
-                   1 / (1 + exp (-a2 * (x_val - c2)));
-  y = arrayfun (y_val, x);
-
-endfunction
-
-%!demo
-%! x = 0:100;
-%! params = [0.5 20 -0.3 60];
-%! y1 = psigmf(x, params);
-%! params = [0.3 20 -0.2 60];
-%! y2 = psigmf(x, params);
-%! params = [0.2 20 -0.1 60];
-%! y3 = psigmf(x, params);
-%! figure('NumberTitle', 'off', 'Name', 'psigmf demo');
-%! plot(x, y1, 'r;params = [0.5 20 -0.3 60];', 'LineWidth', 2)
-%! hold on;
-%! plot(x, y2, 'b;params = [0.3 20 -0.2 60];', 'LineWidth', 2)
-%! hold on;
-%! plot(x, y3, 'g;params = [0.2 20 -0.1 60];', 'LineWidth', 2)
-%! ylim([-0.1 1.1]);
-%! xlabel('Crisp Input Value', 'FontWeight', 'bold');
-%! ylabel('Degree of Membership', 'FontWeight', 'bold');
-%! grid;
--- a/main/fuzzy-logic-toolkit/inst/readfis.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,603 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{fis} =} readfis ()
-## @deftypefnx {Function File} {@var{fis} =} readfis (@var{filename})
-##
-## Read the information in an FIS file, and using this information, create and
-## return an FIS structure. If called without any arguments or with an empty
-## string as an argument, present the user with a file dialog GUI. If called
-## with a @var{filename} that does not end with '.fis', append '.fis' to the
-## @var{filename}. The @var{filename} is expected to be a string.
-##
-## Three examples of the input file format:
-## @itemize @bullet
-## @item
-## heart_disease_risk.fis
-## @item
-## mamdani_tip_calculator.fis
-## @item
-## sugeno_tip_calculator.fis
-## @end itemize
-##
-## Six example scripts that use readfis:
-## @itemize @bullet
-## @item
-## cubic_approx_demo.m
-## @item
-## heart_disease_demo_2.m
-## @item
-## investment_portfolio_demo.m
-## @item
-## linear_tip_demo.m
-## @item
-## mamdani_tip_demo.m
-## @item
-## sugeno_tip_demo.m
-## @end itemize
-##
-## @seealso{writefis}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy inference system fis
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      readfis.m
-## Last-Modified: 20 Aug 2012
-
-function fis = readfis (filename = '')
-
-  ## If readfis was not called with 0 or 1 arguments, or if the argument
-  ## is not a string, print an error message and halt.
-
-  if (nargin > 1)
-    puts ("Type 'help readfis' for more information.\n");
-    error ("readfis requires 0 or 1 arguments\n");
-  elseif ((nargin == 1) && !is_string (filename))
-    puts ("Type 'help readfis' for more information.\n");
-    error ("readfis's argument must be a string\n");
-  endif
-
-  ## Open the input file.
-
-  fid = open_input_file (filename);
-
-  ## Read the [System], [Input<number>], [Output<number>], and [Rules]
-  ## sections of the input file.
-
-  [fis, num_inputs, num_outputs, num_rules, line_num] = ...
-    init_fis_struct (fid);
-  [fis, line_num] = read_fis_inputs (fid, fis, num_inputs, line_num);
-  [fis, line_num] = read_fis_outputs (fid, fis, num_outputs, line_num);
-  fis = read_rules (fid, fis, num_inputs, num_outputs, num_rules, ...
-                    line_num);
-
-  ## Close the input file.
-
-  fclose (fid);
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: open_input_file
-## Purpose:  Open the input file specified by the filename. If the
-##           filename does not end with ".fis", then append ".fis" to
-##           the filename before opening. Return an fid if successful.
-##           Otherwise, print an error message and halt.
-##----------------------------------------------------------------------
-
-function fid = open_input_file (filename)
-
-  ##--------------------------------------------------------------------
-  ## If the filename is not empty, and if the last four characters of
-  ## the filename are not '.fis', append '.fis' to the filename. If the
-  ## filename is empty, use a dialog to select the input file.
-  ##--------------------------------------------------------------------
-
-  fn_len = length (filename);
-  if (fn_len == 0)
-    dialog = 1;
-  else
-    dialog = 0;
-  endif
-  if (((fn_len >= 4) && ...
-       !strcmp(".fis",filename(fn_len-3:fn_len))) || ...
-      ((fn_len > 0) && (fn_len < 4)))
-    filename = [filename ".fis"];
-  elseif (dialog)
-    system_command = sprintf ("zenity --file-selection; echo $file", ...
-                              filename);
-    [dialog_error, filename] = system (file = system_command);
-    if (dialog_error)
-      puts ("Type 'help readfis' for more information.\n");
-      error ("error selecting file using dialog\n");
-    endif
-    filename = strtrim (filename);
-  endif
-
-  ##--------------------------------------------------------------------
-  ## Open input file.
-  ##--------------------------------------------------------------------
-
-  [fid, msg] = fopen (filename, "r");
-  if (fid == -1)
-    if (dialog)
-      system ('zenity --error --text "Error opening input file."');
-    endif
-    puts ("Type 'help readfis' for more information.\n");
-    printf ("Error opening input file: %s\n", msg);
-    error ("error opening input file\n");
-  endif
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: init_fis_struct
-## Purpose:  Read the [System] section of the input file. Using the
-##           strings read from the input file, create a new FIS. If an
-##           error in the format of the input file is found, print an
-##           error message and halt.
-##----------------------------------------------------------------------
-
-function [fis, num_inputs, num_outputs, num_rules, line_num] = ...
-            init_fis_struct (fid)
-
-  ##--------------------------------------------------------------------
-  ## Read the [System] section.
-  ##--------------------------------------------------------------------
-
-  line_num = 1;
-  [line, line_num] = get_line (fid, line_num);
-  [line, line_num] = get_line (fid, line_num);
-  [fis_name, count] = sscanf (line, "Name = '%s", "C");
-  if (count != 1)
-    error ("line %d: name of FIS expected\n", --line_num);
-  endif
-  fis_name = trim_last_char (fis_name);
-
-  [line, line_num] = get_line (fid, line_num);
-  [fis_type, count] = sscanf (line, "Type = '%s", "C");
-  if (count != 1)
-    error ("line %d: type of FIS expected\n", --line_num);
-  endif
-  fis_type = trim_last_char (fis_type);
-
-  [line, line_num] = get_line (fid, line_num);
-  [fis_version, count] = sscanf (line, "Version = %f", "C");
-  if (count != 1)
-    error ("line %d: version of FIS expected\n", --line_num);
-  endif
-
-  [line, line_num] = get_line (fid, line_num);
-  [num_inputs, count] = sscanf (line, "NumInputs = %d", "C");
-  if (count != 1)
-    error ("line %d: number of inputs expected\n", --line_num);
-  endif
-
-  [line, line_num] = get_line (fid, line_num);
-  [num_outputs, count] = sscanf (line, "NumOutputs = %d", "C");
-  if (count != 1)
-    error ("line %d: number of oututs expected\n", --line_num);
-  endif
-
-  [line, line_num] = get_line (fid, line_num);
-  [num_rules, count] = sscanf (line, "NumRules = %d", "C");
-  if (count != 1)
-    error ("line %d: number of rules expected\n", --line_num);
-  endif
-
-  [line, line_num] = get_line (fid, line_num);
-  [and_method, count] = sscanf (line, "AndMethod = '%s", "C");
-  if (count != 1)
-    error ("line %d: and method expected\n", --line_num);
-  endif
-  and_method = trim_last_char (and_method);
-
-  [line, line_num] = get_line (fid, line_num);
-  [or_method, count] = sscanf (line, "OrMethod = '%s", "C");
-  if (count != 1)
-    error ("line %d: or method expected\n", --line_num);
-  endif
-  or_method = trim_last_char (or_method);
-
-  [line, line_num] = get_line (fid, line_num);
-  [imp_method, count] = sscanf (line, "ImpMethod = '%s", "C");
-  if (count != 1)
-    error ("line %d: implication method expected\n", --line_num);
-  endif
-  imp_method = trim_last_char (imp_method);
-
-  [line, line_num] = get_line (fid, line_num);
-  [agg_method, count] = sscanf (line, "AggMethod = '%s", "C");
-  if (count != 1)
-    error ("line %d: aggregation method expected\n", --line_num);
-  endif
-  agg_method = trim_last_char (agg_method);
-
-  [line, line_num] = get_line (fid, line_num);
-  [defuzz_method, count] = sscanf (line, "DefuzzMethod = '%s", "C");
-  if (count != 1)
-    error ("line %d: defuzzification method expected\n", --line_num);
-  endif
-  defuzz_method = trim_last_char (defuzz_method);
-
-  ##--------------------------------------------------------------------
-  ## Create a new FIS structure using the strings read from the
-  ## input file.
-  ##--------------------------------------------------------------------
-
-  fis = struct ('name', fis_name, ...
-                'type', fis_type, ...
-                'version', fis_version, ...
-                'andMethod', and_method, ...
-                'orMethod', or_method, ...
-                'impMethod', imp_method, ...
-                'aggMethod', agg_method, ...
-                'defuzzMethod', defuzz_method, ...
-                'input', [], ...
-                'output', [], ...
-                'rule', []);
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: read_fis_inputs
-## Purpose:  For each FIS input, read the [Input<number>] section from
-##           file. Add each new input and its membership functions to
-##           the FIS structure.
-##----------------------------------------------------------------------
-
-function [fis, line_num] = read_fis_inputs (fid, fis, num_inputs, ...
-                                            line_num)
-
-  for i = 1 : num_inputs
-    [next_fis_input, num_mfs, line_num] = ...
-      get_next_fis_io (fid, line_num, i, 'input');
-    if (i == 1)
-      fis.input = next_fis_input;
-    else
-      fis.input = [fis.input, next_fis_input];
-    endif
-
-    ##------------------------------------------------------------------
-    ## Read membership function info for the current FIS input from
-    ## file. Add each new membership function to the FIS struct.
-    ##------------------------------------------------------------------
-
-    for j = 1 : num_mfs
-      [next_mf, line_num] = get_next_mf (fid, line_num, i, j, 'input');
-      if (j == 1)
-        fis.input(i).mf = next_mf;
-      else
-        fis.input(i).mf = [fis.input(i).mf, next_mf];
-      endif
-    endfor
-  endfor
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: read_fis_outputs
-## Purpose:  For each FIS output, read the [Output<number>] section from
-##           file. Add each new output and its membership functions to
-##           the FIS structure.
-##----------------------------------------------------------------------
-
-function [fis, line_num] = read_fis_outputs (fid, fis, num_outputs, ...
-                                             line_num)
-
-  for i = 1 : num_outputs
-    [next_fis_output, num_mfs, line_num] = ...
-      get_next_fis_io (fid, line_num, i, 'output');
-    if (i == 1)
-      fis.output = next_fis_output;
-    else
-      fis.output = [fis.output, next_fis_output];
-    endif
-
-    ##------------------------------------------------------------------
-    ## Read membership function info for the current FIS output from
-    ## file. Add each new membership function to the FIS struct.
-    ##------------------------------------------------------------------
-
-    for j = 1 : num_mfs
-      [next_mf, line_num] = get_next_mf (fid, line_num, i, j, 'output');
-      if (j == 1)
-        fis.output(i).mf = next_mf;
-      else
-        fis.output(i).mf = [fis.output(i).mf, next_mf];
-      endif
-    endfor
-  endfor
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: read_rules
-## Purpose:  Read the [Rules] section from file, and add the rules to
-##           the FIS.
-##----------------------------------------------------------------------
-
-function fis = read_rules (fid, fis, num_inputs, num_outputs, ...
-                           num_rules, line_num)
-
-  [line, line_num] = get_line (fid, line_num);
-  for i = 1 : num_rules
-    [next_rule, line_num] = ...
-      get_next_rule (fid, line_num, num_inputs, num_outputs);
-    if (i == 1)
-      fis.rule = next_rule;
-    else
-      fis.rule = [fis.rule, next_rule];
-    endif
-  endfor
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: get_next_fis_io
-## Purpose:  Read the next [Input<i>] or [Output<i>] section of the
-##           input file. Using the info read from the input file, create
-##           a new FIS input or output structure. If an error in the
-##           format of the input file is found, print an error message
-##           and halt.
-##----------------------------------------------------------------------
-
-function [next_fis_io, num_mfs, line_num] = ...
-             get_next_fis_io (fid, line_num, i, in_or_out)
-
-  ##--------------------------------------------------------------------
-  ## Read [Input<i>] or [Output<i>] section from file.
-  ##--------------------------------------------------------------------
-
-  [line, line_num] = get_line (fid, line_num);
-  if (strcmp ('input', in_or_out))
-    [io_index, count] = sscanf (line, "[Input %d", "C");
-  else
-    [io_index, count] = sscanf (line, "[Output %d", "C");
-  endif
-  if ((count != 1) || (io_index != i))
-    error ("line %d: next input or output expected\n", --line_num);
-  endif
-
-  [line, line_num] = get_line (fid, line_num);
-  [var_name, count] = sscanf (line, "Name = '%s", "C");
-  if (count != 1)
-    error ("line %d: name of %s %d expected\n", --line_num, ...
-           in_or_out, i);
-  endif
-  var_name = trim_last_char (var_name);
-
-  [line, line_num] = get_line (fid, line_num);
-  [range_low, range_high, count] = sscanf (line, ...
-                                           "Range = [ %f %f ]", "C");
-  if ((count != 2) || (range_low > range_high))
-    error ("line %d: range for %s %d expected\n", --line_num, ...
-           in_or_out, i);
-  endif
-
-  [line, line_num] = get_line (fid, line_num);
-  [num_mfs, count] = sscanf (line, "NumMFs = %d", "C");
-  if (count != 1)
-    error ("line %d: number of MFs for %s %d expected\n", ...
-           --line_num, in_or_out, i);
-  endif
-
-  ##--------------------------------------------------------------------
-  ## Create a new FIS input or output structure.
-  ##--------------------------------------------------------------------
-
-  next_fis_io = struct ('name', var_name, 'range', ...
-                        [range_low, range_high], 'mf', []);
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: get_next_mf
-## Purpose:  Read information specifying the jth membership function for
-##           Input<i> or Output<i> (if in_or_out is 'input' or 'output',
-##           respectively) from the input file. Create a new membership
-##           function structure using the info read. If an error in the
-##           format of the input file is found, print an error message
-##           and halt.
-##----------------------------------------------------------------------
-
-function [next_mf, line_num] = get_next_mf (fid, line_num, i, j, ...
-                                            in_or_out)
-            
-  ##--------------------------------------------------------------------
-  ## Read membership function info for the new FIS input or output
-  ## from file.
-  ##--------------------------------------------------------------------
-
-  [line, line_num] = get_line (fid, line_num);
-  line_vec = discard_empty_strings (strsplit (line, "=':,[] \t", true));
-  mf_index = sscanf (line_vec{1}, "MF %d", "C");
-  mf_name = line_vec{2};
-  mf_type = line_vec{3};
-  if (mf_index != j)
-    error ("line %d: next MF for %s %d expected\n", --line_num,
-           in_or_out, i);
-  endif
-
-  j = 1;
-  for i = 4 : length (line_vec)
-    [mf_params(j++), count] = sscanf (line_vec{i}, "%f", "C");
-    if (count != 1)
-      error ("line %d: %s %d MF%d params expected\n", --line_num,
-             in_or_out, i, j);
-    endif
-  endfor
-
-  ##--------------------------------------------------------------------
-  ## Create a new membership function structure.
-  ##--------------------------------------------------------------------
-
-  next_mf = struct ('name', mf_name, 'type', mf_type, 'params', ...
-                    mf_params);
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: get_next_rule
-## Purpose:  Read the next rule from the input file. Create a struct for
-##           the new rule. If an error in the format of the input file
-##           is found, print an error message and halt.
-##----------------------------------------------------------------------
-
-function [next_rule, line_num] = get_next_rule (fid, line_num, ...
-                                                num_inputs, num_outputs)
-
-  [line, line_num] = get_line (fid, line_num);
-  line_vec = strsplit (line, ",():", true);
-
-  ##--------------------------------------------------------------------
-  ## Read antecedent.
-  ##--------------------------------------------------------------------
-  format_str = "";
-  for j = 1 : num_inputs
-    format_str = [format_str " %f"];
-  endfor
-  [antecedent, count] = sscanf (line_vec{1}, format_str, ...
-                                [1, num_inputs]);
-  if (length (antecedent) != num_inputs)
-    error ("Line %d: Rule antecedent expected.\n", line_num);
-  endif
-
-  ##--------------------------------------------------------------------
-  ## Read consequent.
-  ##--------------------------------------------------------------------
-  format_str = "";
-  for j = 1 : num_outputs
-    format_str = [format_str " %f"];
-  endfor
-  [consequent, count] = sscanf (line_vec{2}, format_str, ...
-                                [1, num_outputs]);
-  if (length (consequent) != num_outputs)
-    error ("Line %d: Rule consequent expected.\n", line_num);
-  endif
-
-  ##--------------------------------------------------------------------
-  ## Read weight.
-  ##--------------------------------------------------------------------
-  [weight, count] = sscanf (line_vec{3}, "%f", "C");
-  if (count != 1)
-    error ("Line %d: Rule weight expected.\n", line_num);
-  endif
-
-  ##--------------------------------------------------------------------
-  ## Read connection.
-  ##--------------------------------------------------------------------
-  [connection, count] = sscanf (line_vec{5}, "%d", "C");
-  if ((count != 1) || (connection < 1) || (connection > 2))
-    error ("Line %d: Antecedent connection expected.\n", line_num);
-  endif
-
-  ##--------------------------------------------------------------------
-  ## Create a new rule struct.
-  ##--------------------------------------------------------------------
-  next_rule = struct ('antecedent', antecedent, ...
-                      'consequent', consequent, ...
-                      'weight', weight, ...
-                      'connection', connection);
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: get_line
-## Purpose:  Read the next line of the input file (without the newline)
-##           into line. Print an error message and halt on eof.
-##----------------------------------------------------------------------
-
-function [line, line_num] = get_line (fid, line_num)
-
-  do
-    line = fgetl (fid);
-    if (isequal (line, -1))
-      error ("unexpected end of file at line %d", line_num);
-    endif
-    line = trim_leading_whitespace (line);
-    line_num++;
-  until (!comment_or_empty (line))
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: discard_empty_strings
-## Purpose:  Return a copy of the input cell array without any 
-##           empty string elements.
-##----------------------------------------------------------------------
-
-function ret_val =  discard_empty_strings (cell_array)
-
-  ret_val = {};
-  j = 1;
-  for i = 1 : length (cell_array)
-    if (!strcmp (cell_array{i}, ""))
-      ret_val{j++} = cell_array{i};
-    endif
-  endfor
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: trim_last_char
-## Purpose:  Return a copy of the input string without its final
-##           character.
-##----------------------------------------------------------------------
-
-function str = trim_last_char (str)
-
-  str = str(1 : length (str) - 1);
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: trim_leading_whitespace
-## Purpose:  Return a copy of the input string without leading
-##           whitespace.
-##----------------------------------------------------------------------
-
-function str = trim_leading_whitespace (str)
-  str_length = length (str);
-  i = 1;
-  while (i <= str_length && ...
-         (str (i) == ' ' || str (i) == '\t' || str (i) == '\n' || ...
-          str (i) == '\f' || str (i) == '\r' || str (i) == '\v'))
-    i++;
-  endwhile
-  if (i > str_length)
-    str = "";
-  else
-    str = str (i : str_length);
-  endif
-endfunction
-
-##----------------------------------------------------------------------
-## Function: comment_or_empty
-## Purpose:  Return true if the line is a comment (that is, it begins
-##           with '#' or '%') or an empty line, and return false
-##           otherwise. It is assumed that leading whitespace has been
-##           removed from the input line.
-##----------------------------------------------------------------------
-
-function ret_val = comment_or_empty (line)
-  ret_val = (length (line) == 0) || (line (1) == '#') || ...
-            (line (1) == '%');
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/rmmf.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{fis} =} rmmf (@var{fis}, @var{in_or_out}, @var{var_index}, @var{mf}, @var{mf_index})
-##
-## Remove a membership function from an existing FIS
-## structure and return the updated FIS.
-##
-## The types of the arguments are expected to be:
-## @itemize @bullet
-## @item
-## @var{fis} - an FIS structure
-## @item
-## @var{in_or_out} - either 'input' or 'output' (case-insensitive)
-## @item
-## @var{var_index} - an FIS input or output variable index
-## @item
-## @var{mf} - the string 'mf'
-## @item
-## @var{mf_index} - a string
-## @end itemize
-##
-## Note that rmmf will allow the user to delete membership functions that are
-## currently in use by rules in the FIS.
-##
-## @seealso{addmf, rmvar}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy membership
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      rmmf.m
-## Last-Modified: 20 Aug 2012
-
-function fis = rmmf (fis, in_or_out, var_index, mf, mf_index)
-
-  ## If the caller did not supply 5 argument values with the correct
-  ## types, print an error message and halt.
-
-  if (nargin != 5)
-    puts ("Type 'help rmmf' for more information.\n");
-    error ("rmmf requires 5 arguments\n");
-  elseif (!is_fis (fis))
-    puts ("Type 'help rmmf' for more information.\n");
-    error ("rmmf's first argument must be an FIS structure\n");
-  elseif (!(is_string(in_or_out) && ...
-           ismember (tolower (in_or_out), {'input', 'output'})))
-    puts ("Type 'help rmmf' for more information.\n");
-    error ("rmmf's second argument must be 'input' or 'output'\n");
-  elseif (!is_var_index (fis, in_or_out, var_index))
-    puts ("Type 'help rmmf' for more information.\n");
-    error ("rmmf's third argument must be a variable index\n");
-  elseif (!isequal (mf, 'mf'))
-    puts ("Type 'help rmmf' for more information.\n");
-    error ("rmmf's fourth argument must be the string 'mf'\n");
-  elseif (!is_int (mf_index))
-    puts ("Type 'help rmmf' for more information.\n");
-    error ("rmmf's fifth argument must be an integer\n");
-  endif
-
-  ## Delete the membership function struct and update the FIS structure.
-
-  if (strcmp (tolower (in_or_out), 'input'))
-    all_mfs = fis.input(var_index).mf;
-    fis.input(var_index).mf = [all_mfs(1 : mf_index - 1), ...
-                               all_mfs(mf_index + 1 : numel(all_mfs))];
-  else
-    all_mfs = fis.output(var_index).mf;
-    fis.output(var_index).mf = [all_mfs(1 : mf_index - 1), ...
-                                all_mfs(mf_index + 1 : numel(all_mfs))];
-  endif
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/rmvar.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{fis} =} rmvar (@var{fis}, @var{in_or_out}, @var{var_index})
-##
-## Remove an input or output variable from an existing FIS
-## structure and return the updated FIS.
-##
-## The types of the arguments are expected to be:
-## @itemize @bullet
-## @item
-## @var{fis} - an FIS structure
-## @item
-## @var{in_or_out} - either 'input' or 'output' (case-insensitive)
-## @item
-## @var{var_index} - an FIS input or output variable index
-## @end itemize
-##
-## Note that rmvar will allow the user to delete an input or output variable
-## that is currently in use by rules in the FIS.
-##
-## @seealso{addvar, rmmf}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy variable
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      rmvar.m
-## Last-Modified: 20 Aug 2012
-
-function fis = rmvar (fis, in_or_out, var_index)
-
-  ## If the caller did not supply 3 argument values with the correct
-  ## types, print an error message and halt.
-
-  if (nargin != 3)
-    puts ("Type 'help rmvar' for more information.\n");
-    error ("rmvar requires 3 arguments\n");
-  elseif (!is_fis (fis))
-    puts ("Type 'help rmvar' for more information.\n");
-    error ("rmvar's first argument must be an FIS structure\n");
-  elseif (!(is_string (in_or_out) && ...
-           ismember (tolower (in_or_out), {'input', 'output'})))
-    puts ("Type 'help rmvar' for more information.\n");
-    error ("rmvar's second argument must be 'input' or 'output'\n");
-  elseif (!is_var_index (fis, in_or_out, var_index))
-    puts ("Type 'help rmvar' for more information.\n");
-    error ("rmvar's third argument must be a variable index\n");
-  endif
-
-  ## Delete the variable struct and update the FIS structure.
-
-  if (strcmp (tolower (in_or_out), 'input'))
-    all_vars = fis.input;
-    fis.input = [all_vars(1 : var_index - 1), ...
-                 all_vars(var_index + 1 : numel (all_vars))];
-  else
-    all_vars = fis.output;
-    fis.output = [all_vars(1 : var_index - 1), ...
-                  all_vars(var_index + 1 : numel (all_vars))];
-  endif
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/setfis.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,253 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{fis} =} setfis (@var{fis}, @var{property}, @var{property_value})
-## @deftypefnx {Function File} {@var{fis} =} setfis (@var{fis}, @var{in_or_out}, @var{var_index}, @var{var_property}, @var{var_property_value})
-## @deftypefnx {Function File} {@var{fis} =} setfis (@var{fis}, @var{in_or_out}, @var{var_index}, @var{mf}, @var{mf_index}, @var{mf_property}, @var{mf_property_value})
-##
-## Set a property (field) value of an FIS structure and return the
-## updated FIS. There are three forms of setfis:
-##
-## @table @asis
-## @item # Arguments
-## Action Taken
-## @item 3
-## Set a property of the FIS structure. The properties that may
-## be set are: name, type, andmethod, ormethod, impmethod,
-## addmethod, defuzzmethod, and version.
-## @item 5
-## Set a property of an input or output variable of the FIS
-## structure. The properties that may be set are: name and range.
-## @item 7
-## Set a property of a membership function. The properties that
-## may be set are: name, type, and params.
-## @end table
-##
-## The types of the arguments are expected to be:
-## @table @var
-## @item fis
-## an FIS structure
-## @item property
-## a string; one of 'name', 'type', 'andmethod',
-## 'ormethod', 'impmethod', 'addmethod', 
-## 'defuzzmethod', and 'version' (case-insensitive)
-## @item property_value
-## a number (if property is 'version'); a string (otherwise)
-## @item in_or_out
-## either 'input' or 'output' (case-insensitive)
-## @item var_index
-## a valid integer index of an input or output FIS variable
-## @item var_property
-## a string; either 'name' or 'range'
-## @item var_property_value
-## a string (if var_property is 'name') or 
-## a vector range (if var_property is 'range')
-## @item mf
-## the string 'mf'
-## @item mf_index
-## a valid integer index of a membership function 
-## @item mf_property
-## a string; one of 'name', 'type', or 'params'
-## @item mf_property_value
-## a string (if mf_property is 'name' or 'type');
-## an array (if mf_property is 'params')
-## @end table
-##
-## @noindent
-## Note that all of the strings representing properties above are case
-## insensitive.
-##
-## @seealso{newfis, getfis, showfis}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy inference system fis
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      setfis.m
-## Last-Modified: 20 Aug 2012
-
-##----------------------------------------------------------------------
-
-function fis = setfis (fis, arg2, arg3, arg4 = 'dummy', ...
-                       arg5 = 'dummy', arg6 = 'dummy', arg7 = 'dummy')
-
-  switch (nargin)
-    case 3  fis = setfis_three_args (fis, arg2, arg3);
-    case 5  fis = setfis_five_args (fis, arg2, arg3, arg4, arg5);
-    case 7  fis = setfis_seven_args (fis, arg2, arg3, arg4, arg5, ...
-                                   arg6, arg7);
-    otherwise
-            puts ("Type 'help setfis' for more information.\n");
-            error ("setfis requires 3, 5, or 7 arguments\n");
-  endswitch
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: setfis_three_args
-## Purpose:  Handle calls to setfis that have 3 arguments. See the
-##           comment at the top of this file for more complete info.
-##----------------------------------------------------------------------
-
-function fis = setfis_three_args (fis, arg2, arg3)
-
-  ## If not all of the arguments have the correct types, print an error
-  ## message and halt.
-
-  if (!is_fis (fis))
-    puts ("Type 'help setfis' for more information.\n");
-    error ("setfis's first argument must be an FIS structure\n");
-  elseif (!(is_string (arg2) && ismember (tolower (arg2), ...
-          {'name', 'type', 'andmethod', 'ormethod', 'impmethod', ...
-           'aggmethod', 'defuzzmethod', 'version'})))
-    puts ("Type 'help setfis' for more information.\n");
-    error ("incorrect second argument to setfis\n");
-  elseif (strcmp(tolower (arg2), 'version') && !is_real (arg3))
-    puts ("Type 'help setfis' for more information.\n");
-    error ("the third argument to setfis must be a number\n");
-  elseif (!strcmp(tolower (arg2), 'version') && !is_string (arg3))
-    puts ("Type 'help setfis' for more information.\n");
-    error ("the third argument to setfis must be a string\n");
-  endif
-
-  ## Set the property (arg2) of the FIS to the property value (arg3).
-
-  switch (tolower(arg2))
-    case 'name'         fis.name = arg3;
-    case 'version'      fis.version = arg3;
-    case 'type'         fis.type = arg3;
-    case 'andmethod'    fis.andMethod = arg3;
-    case 'ormethod'     fis.orMethod = arg3;
-    case 'impmethod'    fis.impMethod = arg3;
-    case 'aggmethod'    fis.aggMethod = arg3;
-    case 'defuzzmethod' fis.defuzzMethod = arg3;
-  endswitch
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: setfis_five_args
-## Purpose:  Handle calls to setfis that have 5 arguments. See the
-##           comment at the top of this file for more complete info.
-##----------------------------------------------------------------------
-
-function fis = setfis_five_args (fis, arg2, arg3, arg4, arg5)
-
-  ## If not all of the arguments have the correct types, print an error
-  ## message and halt.
-
-  if (!is_fis (fis))
-    puts ("Type 'help setfis' for more information.\n");
-    error ("setfis's first argument must be an FIS structure\n");
-  elseif (!(is_string (arg2) && ...
-            ismember (tolower (arg2), {'input','output'})))
-    puts ("Type 'help setfis' for more information.\n");
-    error ("setfis's second argument must be 'input' or 'output'\n");
-  elseif (!is_var_index (fis, arg2, arg3))
-    puts ("Type 'help setfis' for more information.\n");
-    error ("setfis's third argument must be a variable index\n");
-  elseif (!(is_string (arg4) && ...
-            ismember (tolower (arg4), {'name', 'range'})))
-    puts ("Type 'help setfis' for more information.\n");
-    error ("setfis's fourth argument must be 'name' or 'range'\n");
-  elseif (strcmp (arg4, 'name') && !is_string (arg5))
-    puts ("Type 'help setfis' for more information.\n");
-    error ("incorrect fifth argument to setfis\n");
-  elseif (strcmp (arg4, 'range') && !is_real_matrix (arg5))
-    puts ("Type 'help setfis' for more information.\n");
-    error ("incorrect fifth argument to setfis\n");
-  endif
-
-  ## Set the input or output variable property (arg4) to the
-  ## value (arg5).
-
-  switch (tolower (arg2))
-    case 'input'
-      switch (tolower (arg4))
-        case 'name'  fis.input(arg3).name = arg5;
-        case 'range' fis.input(arg3).range = arg5;
-      endswitch
-    case 'output'
-      switch (tolower (arg4))
-        case 'name'  fis.output(arg3).name = arg5;
-        case 'range' fis.output(arg3).range = arg5;
-      endswitch
-  endswitch
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: setfis_seven_args
-## Purpose:  Handle calls to setfis that have 7 arguments. See the
-##           comment at the top of this file for more complete info.
-##----------------------------------------------------------------------
-
-function fis = setfis_seven_args (fis, arg2, arg3, arg4, arg5, ...
-                                  arg6, arg7)
-
-  ## If not all of the arguments have the correct types, print an error
-  ## message and halt.
-
-  if (!is_fis (fis))
-    puts ("Type 'help setfis' for more information.\n");
-    error ("setfis's first argument must be an FIS structure\n");
-  elseif (!(is_string (arg2) && ...
-            ismember (tolower (arg2), {'input','output'})))
-    puts ("Type 'help setfis' for more information.\n");
-    error ("setfis's second argument must be 'input' or 'output'\n");
-  elseif (!is_var_index (fis, arg2, arg3))
-    puts ("Type 'help setfis' for more information.\n");
-    error ("setfis's third argument must be a variable index\n");
-  elseif (!(is_string (arg4) && strcmp (tolower (arg4), 'mf')))
-    puts ("Type 'help setfis' for more information.\n");
-    error ("setfis's fourth argument must be 'mf'\n");
-  elseif (!is_mf_index (fis, arg2, arg3, arg5))
-    puts ("Type 'help setfis' for more information.\n");
-    error ("setfis's fifth arg must be a membership function index\n");
-  elseif (!(is_string (arg6) && ismember (tolower(arg6), ...
-           {'name', 'type', 'params'})))
-    puts ("Type 'help setfis' for more information.\n");
-    error ("incorrect sixth argument to setfis\n");
-  elseif (ismember (tolower (arg6), {'name', 'type'}) && ...
-          !is_string (arg7))
-    puts ("Type 'help setfis' for more information.\n");
-    error ("incorrect seventh argument to setfis\n");
-  elseif (strcmp (tolower (arg6), 'params') && !is_real_matrix (arg7))
-    puts ("Type 'help setfis' for more information.\n");
-    error ("incorrect seventh argument to setfis\n");
-  endif
-
-  ## Set the membership function property (arg6) to the value (arg7).
-
-  switch (tolower (arg2))
-    case 'input'
-      switch (tolower (arg6))
-        case 'name'   fis.input(arg3).mf(arg5).name = arg7;
-        case 'type'   fis.input(arg3).mf(arg5).type = arg7;
-        case 'params' fis.input(arg3).mf(arg5).params = arg7;
-      endswitch
-    case 'output'
-      switch (tolower (arg6))
-        case 'name'   fis.output(arg3).mf(arg5).name = arg7;
-        case 'type'   fis.output(arg3).mf(arg5).type = arg7;
-        case 'params' fis.output(arg3).mf(arg5).params = arg7;
-      endswitch
-  endswitch
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/showfis.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,318 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {} showfis (@var{fis})
-##
-## Print all of the property (field) values of the FIS structure and its
-## substructures.
-##
-## @seealso{getfis, showrule}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy inference system fis
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      showfis.m
-## Last-Modified: 20 Aug 2012
-
-function showfis (fis)
-
-  ## If getfis was called with an incorrect number of arguments,
-  ## or the argument does not have the correct type, print an error
-  ## message and halt.
-
-  if (nargin != 1)
-    puts ("Type 'help showfis' for more information.\n");
-    error ("showfis requires 1 argument\n");
-  elseif (!is_fis (fis))
-    puts ("Type 'help showfis' for more information.\n");
-    error ("showfis's argument must be an FIS structure\n");
-  endif
-
-  ## Print properties of the FIS structure.
-
-  ## Determine:
-  ##     the number of input variables
-  ##     number of output variables
-  ##     number of rules
-  ##     input membership function names
-  ##     input membership function types
-  ##     input membership functions parameters
-  ##     number of input membership functions
-  ##     output membership function names
-  ##     output membership function types
-  ##     output membership function parameters
-  ##     number of output membership functions
-
-  num_inputs = columns(fis.input);
-  num_outputs = columns(fis.output);
-  num_rules = columns(fis.rule);
-
-  k = 1;
-  in_mf_labels = {};
-  in_mf_types = {};
-  in_mf_params{k} = [];
-  for i = 1 : num_inputs
-    for j = 1 : columns (fis.input(i).mf)
-      in_mf_labels{k} = fis.input(i).mf(j).name;
-      in_mf_types{k} = fis.input(i).mf(j).type;
-      in_mf_params{k++} = fis.input(i).mf(j).params;
-    endfor
-  endfor
-
-  num_input_mf = k - 1;
-
-  k = 1;
-  out_mf_labels = {};
-  out_mf_types = {};
-  out_mf_params{k} = [];
-  for i = 1 : num_outputs
-    for j = 1 : columns (fis.output(i).mf)
-      out_mf_labels{k} = fis.output(i).mf(j).name;
-      out_mf_types{k} = fis.output(i).mf(j).type;
-      out_mf_params{k++} = fis.output(i).mf(j).params;
-    endfor
-  endfor
-
-  num_output_mf = k - 1;
-
-  ## Print the name, type, and number of inputs/outputs.
-
-  line = 1;
-  printf ("%d.  Name             %s\n", line++, fis.name);
-  printf ("%d.  Type             %s\n", line++, fis.type);
-  printf ("%d.  Inputs/Outputs   [%d %d]\n", line++, num_inputs, ...
-          num_outputs);
-
-  ## Print the number of input membership functions.
-
-  printf ("%d.  NumInputMFs      ", line++);
-  if (num_inputs == 0)
-    printf ("0\n");
-  elseif (num_inputs == 1)
-    printf ("%d\n", columns(fis.input(1).mf));
-  else
-    printf("[");
-    for i = 1 : num_inputs-1
-      printf ("%d ", columns(fis.input(i).mf));
-    endfor
-    printf ("%d]\n", columns(fis.input(num_inputs).mf));
-  endif
-
-  ## Print the number of output membership functions.
-
-  printf ("%d.  NumOutputMFs     ", line++);
-  if (num_outputs == 0)
-    printf("0\n");
-  elseif (num_outputs == 1)
-    printf ("%d\n", columns(fis.output(1).mf));
-  else
-    printf ("[");
-    for i = 1 : num_outputs - 1
-      printf ("%d ", columns (fis.output(i).mf));
-    endfor
-    printf ("%d]\n", columns (fis.output(num_outputs).mf));
-  endif
-
-  ## Print the number of rules, 'And' method, 'Or' method, 'Implication'
-  ## method, 'Aggregation' method, and 'Defuzzification' method.
-
-  printf ("%d.  NumRules         %d\n", line++, num_rules);
-  printf ("%d.  AndMethod        %s\n", line++, fis.andMethod);
-  printf ("%d.  OrMethod         %s\n", line++, fis.orMethod);
-  printf ("%d.  ImpMethod        %s\n", line++, fis.impMethod);
-  printf ("%d. AggMethod        %s\n", line++, fis.aggMethod);
-  printf ("%d. DefuzzMethod     %s\n", line++, fis.defuzzMethod);
-
-  ## Print the input variable names (labels).
-
-  printf ("%d. InLabels         ", line++);
-  if (num_inputs == 0)
-    printf ("\n");
-  else
-    printf ("%s\n", fis.input(1).name);
-    for i = 2 : num_inputs
-      printf ("%d.                  %s\n", line++, fis.input(i).name);
-    endfor
-  endif
-
-  ## Print the output variable names (labels).
-
-  printf ("%d. OutLabels        ", line++);
-  if (num_outputs == 0)
-    printf ("\n");
-  else
-    printf ("%s\n", fis.output(1).name);
-    for i = 2 : num_outputs
-      printf ("%d.                  %s\n", line++, fis.output(i).name);
-    endfor
-  endif
-
-  ## Print the ranges of the input variables.
-
-  printf ("%d. InRange          ", line++);
-  if (num_inputs == 0)
-    printf ("\n");
-  else
-    printf ("%s\n", mat2str(fis.input(1).range));
-    for i = 2 : num_inputs
-      printf ("%d.                  ", line++);
-      printf ("%s\n", mat2str(fis.input(i).range));
-    endfor
-  endif
-
-  ## Print the ranges of the output variables.
-
-  printf ("%d. OutRange         ", line++);
-  if (num_outputs == 0)
-    printf ("\n");
-  else
-    printf ("%s\n", mat2str(fis.output(1).range));
-    for i = 2 : num_outputs
-      printf ("%d.                  ", line++);
-      printf ("%s\n", mat2str (fis.output(i).range));
-    endfor
-  endif
-
-  ## Print the input variables' membership function labels.
-
-  printf ("%d. InMFLabels       ", line++);
-  if (num_input_mf == 0)
-    printf ("\n");
-  else
-    printf ("%s\n", in_mf_labels{1});
-    for i = 2 : num_input_mf
-      printf ("%d.                  %s\n", line++, in_mf_labels{i});
-    endfor
-  endif
-
-  ## Print the output variables' membership function labels.
-
-  printf ("%d. OutMFLabels      ", line++);
-  if (num_output_mf == 0)
-    printf ("\n");
-  else
-    printf ("%s\n", out_mf_labels{1});
-    for i = 2 : num_output_mf
-      printf ("%d.                  %s\n", line++, out_mf_labels{i});
-    endfor
-  endif
-
-  ## Print the input variables' membership function types.
-
-  printf ("%d. InMFTypes        ", line++);
-  if (num_input_mf == 0)
-    printf ("\n");
-  else
-    printf ("%s\n", in_mf_types{1});
-    for i = 2 : num_input_mf
-      printf ("%d.                  %s\n", line++, in_mf_types{i});
-    endfor
-  endif
-
-  ## Print the output variables' membership function types.
-
-  printf ("%d. OutMFTypes       ", line++);
-  if (num_output_mf == 0)
-    printf ("\n");
-  else
-    printf ("%s\n", out_mf_types{1});
-    for i = 2 : num_output_mf
-      printf ("%d.                  %s\n", line++, out_mf_types{i});
-    endfor
-  endif
-
-  ## Print the input variables' membership function parameters.
-
-  printf ("%d. InMFParams       ", line++);
-  if (num_input_mf == 0)
-    printf ("\n");
-  else
-    printf ("%s\n", mat2str(in_mf_params{1}));
-    for i = 2 : num_input_mf
-      printf ("%d.                  ", line++);
-      printf ("%s\n", mat2str (in_mf_params{i}));
-    endfor
-  endif
-
-  ## Print the output variables' membership function parameters.
-
-  printf ("%d. OutMFParams      ", line++);
-  if (num_output_mf == 0)
-    printf ("\n");
-  else
-    printf ("%s\n", mat2str (out_mf_params{1}));
-    for i = 2 : num_output_mf
-      printf ("%d.                  ", line++);
-      printf ("%s\n", mat2str (out_mf_params{i}));
-    endfor
-  endif
-
-  ## Print the rule antecedents.
-
-  printf("%d. Rule Antecedent  ", line++);
-  if (num_rules == 0)
-    printf ("\n");
-  else
-    printf ("%s\n", mat2str (fis.rule(1).antecedent));
-    for i = 2 : num_rules
-      printf ("%d.                  ", line++);
-      printf ("%s\n", mat2str (fis.rule(i).antecedent));
-    endfor
-  endif
-
-  ## Print the rule consequents.
-
-  printf ("%d. Rule Consequent  ", line++);
-  if (num_rules == 0)
-    printf ("\n");
-  else
-    printf ("%s\n", mat2str (fis.rule(1).consequent));
-    for i = 2 : num_rules
-      printf ("%d.                  ", line++);
-      printf ("%s\n", mat2str (fis.rule(i).consequent));
-    endfor
-  endif
-
-  ## Print the rule weights.
-
-  printf("%d. Rule Weight      ", line++);
-  if (num_rules == 0)
-    printf ("\n");
-  else
-    printf ("%d\n", fis.rule(1).weight);
-    for i = 2 : num_rules
-      printf ("%d.                  %d\n", line++, fis.rule(i).weight);
-    endfor
-  endif
-
-  ## Print the rule connections.
-
-  printf ("%d. Rule Connection  ", line++);
-  if (num_rules == 0)
-    printf ("\n");
-  else
-    printf ("%d\n", fis.rule(1).connection);
-    for i = 2 : num_rules
-      printf ("%d.                  %d\n", line++, ...
-              fis.rule(i).connection);
-    endfor
-  endif
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/showrule.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,466 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {} showrule (@var{fis})
-## @deftypefnx {Function File} {} showrule (@var{fis}, @var{index_list})
-## @deftypefnx {Function File} {} showrule (@var{fis}, @var{index_list}, @var{format})
-## @deftypefnx {Function File} {} showrule (@var{fis}, @var{index_list}, @var{'verbose'}, @var{language})
-## @deftypefnx {Function File} {} showrule (@var{fis}, @var{index_list}, @var{'verbose'}, @var{'custom'}, @var{"and" "or" "If" "then" "is" "isn't" "somewhat" "very" "extremely" "very very"})
-##
-##
-## Show the rules for an FIS structure in verbose, symbolic, or indexed format.
-## Built in languages for the 'verbose' format are: English,
-## Chinese (or Mandarin, Pinyin), Russian (or Pycckii, Russkij), French (or Francais),
-## Spanish (or Espanol), and German (or Deutsch). The names of the languages are
-## case-insensitive, Chinese is written in Pinyin, and Russian is transliterated.
-##
-## To use a custom language, enter 'verbose' and 'custom' for the third and
-## fourth parameters, respectively, and a cell array of ten strings (to specify
-## the custom language) corresponding to the English @{"and" "or" "If" "then"
-## "is" "isn't" "somewhat" "very" "extremely" "very very"@} for the fifth
-## parameter.
-##
-## @noindent
-## To run the demonstration code, type @t{demo('showrule')} at the
-## Octave prompt.
-##
-## @seealso{addrule, getfis, showfis}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy rule
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      showrule.m
-## Last-Modified: 20 Aug 2012
-
-function showrule (fis, index_list = [], format = 'verbose', ...
-                   language = 'english', ...
-                   verbose_strings = {"and" "or" "If" "then" "is" ...
-                                      "isn't" "somewhat" "very" ...
-                                      "extremely" "very very"})
-
-  ##--------------------------------------------------------------------
-  ## If the caller did not supply between 1 and 5 arguments with the
-  ## correct types, print an error message and halt.
-  ##--------------------------------------------------------------------
-
-  if (!(nargin >= 1 && nargin <= 5))
-    puts ("Type 'help showrule' for more information.\n");
-    error ("showrule requires between 1 and 5 arguments\n");
-  elseif (!is_fis (fis))
-    puts ("Type 'help showrule' for more information.\n");
-    error ("showrule's first argument must be an FIS structure\n");
-  elseif ((nargin >= 2) && ...
-          !is_rule_index_list (index_list, length (fis.rule)))
-    puts ("Type 'help showrule' for more information.\n");
-    error ("showrule's second arg must be a vector of rule indices\n");
-  elseif ((nargin >= 3) && !is_format (format))
-    puts ("Type 'help showrule' for more information.\n");
-    error ("showrule's third argument must specify the format\n");
-  elseif ((nargin == 4) && isequal (tolower (language), "custom"))
-    puts ("Type 'help showrule' for more information.\n");
-    error ("please specify custom verbose strings in the fifth arg\n");
-  elseif ((nargin == 4) && !is_builtin_language (language))
-    puts ("Type 'help showrule' for more information.\n");
-    error ("showrule's fourth arg must specify a built-in language\n");
-  elseif ((nargin == 5) && !isequal (tolower (language), "custom"))
-    puts ("Type 'help showrule' for more information.\n");
-    error ("use 'custom' for the 4th arg to specify custom strings\n");
-  endif
-
-  ##--------------------------------------------------------------------
-  ## If showrule was called with only one argument, create the default
-  ## index list (all rule indices, in ascending order).
-  ##--------------------------------------------------------------------
-
-  if (nargin == 1)
-    index_list = 1 : length (fis.rule);
-  endif
-
-  ##--------------------------------------------------------------------
-  ## Show the rules in indexed, symbolic, or verbose format.
-  ##--------------------------------------------------------------------
-
-  switch (tolower (format))
-    case 'indexed'
-      showrule_indexed_format (fis, index_list);
-    case 'symbolic'
-      showrule_symbolic_format (fis, index_list);
-    case 'verbose'
-      showrule_verbose_format (fis, index_list, language, ...
-                               verbose_strings);
-  endswitch
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: get_verbose_hedge
-## Purpose:  For no hedge, return the empty string.
-##           For the built-in hedges, return the verbose string in the
-##           language used in the cell array verbose_strings (the second
-##           parameter). For custom hedges, return the power (rounded to
-##           two digits) to which the membership function matching value
-##           will be raised.
-##----------------------------------------------------------------------
-
-function hedge = get_verbose_hedge (mf_index_and_hedge, verbose_strings)
-
-  mf_index_and_hedge = abs (mf_index_and_hedge);
-  mf_index = fix (mf_index_and_hedge);
-  hedge_num = round (100 * (mf_index_and_hedge - mf_index));
-
-  switch (hedge_num)
-    case 0                         ## .00 <=> no hedge <=> mu(x)
-      hedge = "";
-    case 5                         ## .05 <=> somewhat x <=> mu(x)^0.5
-      hedge = verbose_strings{7};
-    case 20                        ## .20 <=> very x <=> mu(x)^2
-      hedge = verbose_strings{8};
-    case 30                        ## .30 <=> extremely x <=> mu(x)^3
-      hedge = verbose_strings{9};
-    case 40                        ## .40 <=> very very x <=> mu(x)^4
-      hedge = verbose_strings{10};
-    otherwise                      ## For custom hedge, return the
-      hedge = hedge_num / 10;      ## power dd/10. That is:
-  endswitch                        ##   .dd <=> <custom hedge> x
-                                   ##       <=> mu(x)^(dd/10)
-endfunction
-
-##----------------------------------------------------------------------
-## Function: get_is_or_isnt
-## Purpose:  Return the verbose string for "is" or "isn't" for the given 
-##           membership function value. If the membership function value
-##           is 0, return the empty string.
-##----------------------------------------------------------------------
-
-function is_or_isnt = get_is_or_isnt (mem_fcn_value, verbose_strings)
-
-  if (mem_fcn_value > 0)
-    is_or_isnt = verbose_strings{5};
-  elseif (mem_fcn_value < 0)
-    is_or_isnt = verbose_strings{6};
-  else
-    is_or_isnt = "";
-  endif
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: get_mf_name
-## Purpose:  Return the specified membership function name.
-##----------------------------------------------------------------------
-
-function mf_name = get_mf_name (mem_fcn_value, fis_input_or_output)
-
-  mf_name = fis_input_or_output.mf(abs(fix(mem_fcn_value))).name;
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: get_verbose_strings
-## Purpose:  Return a cell array of ten strings corresponding to:
-##              {"and" "or" "If" "then" "is" "isn't" ...
-##               "somewhat" "very" "extremely" "very very"}
-##           for the (built-in) language specified by the argument.
-##           Custom verbose strings are specified by an argument to
-##           showrule -- they are not handled by this function.
-##----------------------------------------------------------------------
-
-function str = get_verbose_strings (language)
-
-  switch (language)
-    case 'english'
-      str = {"and" "or" "If" "then" "is" "isn't" ...
-             "somewhat" "very" "extremely" "very very"};
-    case {'chinese' 'mandarin' 'pinyin'}
-      str = {"he" "huo" "Ruguo" "name" "shi" "bu shi" ...
-             "youdian" "hen" "feichang" "feichang feichang"};
-    case {'russian' 'russkij' 'pycckii'}
-      str = {"i" "ili" "ecli" "togda" "" "ne" ...
-             "nemnogo" "ochen" "prevoshodnoye" "ochen ochen"};
-    case {'spanish' 'espanol'}
-      str = {"y" "o" "Si" "entonces" "es" "no es" ...
-             "un poco" "muy" "extremadamente" "muy muy"};
-    case {'francais' 'french'}
-      str = {"et" "ou" "Si" "alors" "est" "n'est pas" ...
-             "un peu" "tres" "extremement" "tres tres"};
-    case {'deutsch' 'german'}
-      str = {"und" "oder" "Wenn" "dann" "ist" "ist nicht" ...
-             "ein wenig" "sehr" "auBerst" "sehr sehr"};
-  endswitch
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: showrule_indexed_format
-## Purpose:  Show the rules in indexed format.
-##----------------------------------------------------------------------
-
-function showrule_indexed_format (fis, index_list)
-
-  num_inputs = columns (fis.input);
-  num_outputs = columns (fis.output);
-
-  for i = 1 : length (index_list)
-    current_ant = fis.rule(index_list(i)).antecedent;
-    current_con = fis.rule(index_list(i)).consequent;
-    current_wt = fis.rule(index_list(i)).weight;
-    current_connect = fis.rule(index_list(i)).connection;
-
-    ##------------------------------------------------------------------
-    ## Print membership functions for the inputs.
-    ##------------------------------------------------------------------
-    for j = 1 : num_inputs
-      if (is_int (current_ant(j)))
-        printf ("%d", current_ant(j));
-      else
-        printf ("%.2f", current_ant(j));
-      endif
-      if (j == num_inputs)
-        puts (",");
-      endif
-      puts (" ");
-    endfor
-
-    ##------------------------------------------------------------------
-    ## Print membership functions for the outputs.
-    ##------------------------------------------------------------------
-    for j = 1 : num_outputs
-      if (is_int (current_con(j)))
-        printf ("%d", current_con(j));
-      else
-        printf ("%.2f", current_con(j));
-      endif
-      if (j < num_outputs)
-        puts (" ");
-      endif
-    endfor
-
-    ##------------------------------------------------------------------
-    ## Print the weight in parens.
-    ##------------------------------------------------------------------
-    if (is_int (current_wt))
-      printf (" (%d) : ", current_wt);
-    else
-      printf (" (%.4f) : ", current_wt);
-    endif
-
-    ##------------------------------------------------------------------
-    ## Print the connection and a newline.
-    ##------------------------------------------------------------------
-    printf ("%d\n", current_connect);
-  endfor
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: showrule_symbolic_format
-## Purpose:  Show the rules in symbolic format.
-##----------------------------------------------------------------------
-
-function showrule_symbolic_format (fis, index_list)
-
-  verbose_strings = {"&&"  "||"  ""  "=>"  "=="  "!="  ...
-                     0.5  2.0  3.0  4.0};
-  showrule_verbose_format (fis, index_list, "custom", ...
-                           verbose_strings, true);
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: showrule_verbose_format
-## Purpose:  Show the rules in verbose format.
-##----------------------------------------------------------------------
-
-function showrule_verbose_format (fis, index_list, language, ...
-                                  verbose_strings, ...
-                                  suppress_comma = false)
-
-  num_inputs = columns (fis.input);
-  num_outputs = columns (fis.output);
-
-  ##--------------------------------------------------------------------
-  ## Get verbose strings in the (built-in) language specified. Note
-  ## that the strings for custom languages are supplied by the user.
-  ##--------------------------------------------------------------------
-
-  language = tolower (language);
-  if (isequal ("custom", language))
-    str = verbose_strings;
-  else
-    str = get_verbose_strings (language);
-  endif
-
-  and_str = str{1};
-  if_str = str{3};
-  then_str = str{4};
-
-  ##--------------------------------------------------------------------
-  ## For each index in the index_list, print the index number, the rule,
-  ## and the weight.
-  ##--------------------------------------------------------------------
-
-  for i = 1 : length (index_list)
-
-    connect_str = str{fis.rule(index_list(i)).connection};
-    current_ant = fis.rule(index_list(i)).antecedent;
-    current_con = fis.rule(index_list(i)).consequent;
-    current_wt = fis.rule(index_list(i)).weight;
-
-    ##------------------------------------------------------------------
-    ## For j = 1, print:
-    ##     <rule num>. If (<var name> <is or isn't> [<hedge>] <mf name>)
-    ## and for 2 <= j <= num_inputs, print:
-    ##     <connection> (<var name> <is or isn't> [<hedge>] <mf name>)
-    ## in the specified language. Custom hedges are printed in the form:
-    ##     <connection> (<var name> <is or isn't> <mf name>^<hedge>)
-    ##------------------------------------------------------------------
-
-    first_input_printed = true;
-    for j = 1 : num_inputs
-
-      if (j == 1)
-        printf ("%d.", index_list(i));
-      endif
-
-      input_name = fis.input(j).name;
-      is_or_isnt = get_is_or_isnt (current_ant(j), str);
-
-      if (!isempty (is_or_isnt))
-        hedge = get_verbose_hedge (current_ant(j), str);
-        mf_name = get_mf_name (current_ant(j), fis.input(j));
-
-        if (first_input_printed)
-          first_input_printed = false;
-          printf (" %s", if_str);
-        else
-          printf (" %s", connect_str);
-        endif
-
-        if (isempty (hedge))
-          printf (" (%s %s %s)", input_name, is_or_isnt, mf_name);
-        elseif (ischar (hedge))
-          printf (" (%s %s %s %s)", input_name, is_or_isnt, hedge, ...
-                  mf_name);
-        else
-          printf (" (%s %s %s^%3.1f)", input_name, is_or_isnt, ...
-                  mf_name, hedge);
-        endif
-      endif
-
-    endfor
-
-    ##------------------------------------------------------------------
-    ## Print the consequent in the form:
-    ##     ", then (output-name is [hedge] mem-fcn-name) and
-    ##             (output-name is [hedge] mem-fcn-name) and 
-    ##             ...
-    ##             (output-name is [hedge] mem-fcn-name)"
-    ##
-    ## Only the outputs for which the membership function index is
-    ## non-zero are printed. Negative membership function indices
-    ## indicate "isn't" instead of "is", and the fractional part of
-    ## the membership function index indicates a hedge, which is also
-    ## printed.
-    ##
-    ## For non-numeric and empty hedges, print each of the outputs
-    ## using the form:
-    ##     <and> (<var name> <is or isn't> [<hedge>] <mf name>)
-    ## For custom and numeric hedges, use the form:
-    ##     <and> (<var name> <is or isn't> <mf name>^<hedge>)
-    ##
-    ## The comma may be suppressed (as it is for symbolic output) by
-    ## calling the function with suppress_comma == true.
-    ##------------------------------------------------------------------
-
-    first_output_printed = true;
-    for j = 1 : num_outputs
-
-      output_name = fis.output(j).name;
-      is_or_isnt = get_is_or_isnt (current_con(j), str);
-
-      if (!isempty (is_or_isnt))
-        hedge = get_verbose_hedge (current_con(j), str);
-        mf_name = get_mf_name (current_con(j), fis.output(j));
-
-        if (first_output_printed)
-          first_output_printed = false;
-          if (suppress_comma)
-            printf (" %s", then_str);
-          else
-            printf (", %s", then_str);
-          endif
-        else
-          printf (" %s", and_str);
-        endif
-
-        if (isempty (hedge))
-          printf (" (%s %s %s)", output_name, is_or_isnt, mf_name);
-        elseif (ischar (hedge))
-          printf (" (%s %s %s %s)", output_name, is_or_isnt, hedge, ...
-                  mf_name);
-        else
-          printf (" (%s %s %s^%3.1f)", output_name, is_or_isnt, ...
-                  mf_name, hedge);
-        endif
-      endif
-
-    endfor
-
-    ##------------------------------------------------------------------
-    ## Finally, print the weight in parens and a newline:
-    ##     " (<weight>)"
-    ##------------------------------------------------------------------
-
-    if is_int (current_wt)
-      printf (" (%d)\n", current_wt);
-    else
-      printf (" (%.4f)\n", current_wt);
-    endif
-  endfor
-
-endfunction
-
-##----------------------------------------------------------------------
-## Embedded Demos
-##----------------------------------------------------------------------
-
-%!demo
-%! fis = readfis ('sugeno_tip_calculator.fis');
-%! puts ("Output of: showrule(fis)\n");
-%! showrule (fis)
-%! puts ("\n");
-
-%!demo
-%! fis = readfis ('sugeno_tip_calculator.fis');
-%! puts ("Output of: showrule(fis, [2 4], 'symbolic')\n");
-%! showrule (fis, [2 4], 'symbolic')
-%! puts ("\n");
-
-%!demo
-%! fis = readfis ('sugeno_tip_calculator.fis');
-%! puts ("Output of: showrule(fis, 1:4, 'indexed')\n");
-%! showrule (fis, 1:4, 'indexed')
-%! puts ("\n");
-
-%!demo
-%! fis = readfis ('sugeno_tip_calculator.fis');
-%! puts ("Output of: showrule(fis, 1, 'verbose', 'francais')\n");
-%! showrule (fis, 1, 'verbose', 'francais')
-%! puts ("\n");
--- a/main/fuzzy-logic-toolkit/inst/sigmf.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,109 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} sigmf (@var{x}, @var{params})
-## @deftypefnx {Function File} {@var{y} =} sigmf (@var{[x1 x2 ... xn]}, @var{[a c]})
-##
-## For a given domain @var{x} and parameters @var{params} (or @var{[a c]}),
-## return the corresponding @var{y} values for the sigmoidal membership
-## function.
-##
-## The argument @var{x} must be a real number or a non-empty vector of strictly
-## increasing real numbers, and @var{a} and @var{c} must be real numbers. This
-## membership function satisfies the equation:
-## @itemize @w
-## @item
-## f(x) = 1/(1 + exp(-a*(x - c)))
-## @end itemize
-##
-## @noindent
-## which always returns values in the range [0, 1].
-##
-## The parameters a and c specify:
-## @itemize @w
-## @item
-## a == the slope at c
-## @item
-## c == the inflection point
-## @end itemize
-##
-## @noindent
-## and at the inflection point, the value of the function is 0.5:
-## @itemize @w
-## @item
-## f(c) == 0.5.
-## @end itemize
-##
-## @noindent
-## To run the demonstration code, type @t{demo('sigmf')} at the Octave prompt.
-##
-## @seealso{dsigmf, gauss2mf, gaussmf, gbellmf, pimf, psigmf, smf, trapmf, trimf, zmf}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy membership sigmoidal
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      sigmf.m
-## Last-Modified: 19 Aug 2012
-
-function y = sigmf (x, params)
-
-  ## If the caller did not supply 2 argument values with the correct
-  ## types, print an error message and halt.
-
-  if (nargin != 2)
-    puts ("Type 'help sigmf' for more information.\n");
-    error ("sigmf requires 2 arguments\n");
-  elseif (!is_domain (x))
-    puts ("Type 'help sigmf' for more information.\n");
-    error ("sigmf's first argument must be a valid domain\n");
-  elseif (!are_mf_params ('sigmf', params))
-    puts ("Type 'help sigmf' for more information.\n");
-    error ("sigmf's second argument must be a parameter vector\n");
-  endif
-
-  ## Calculate and return the y values of the membership function on the
-  ## domain x.
-
-  a = params(1);
-  c = params(2);
-
-  y_val = @(x_val) 1 / (1 + exp (-a * (x_val - c)));
-  y = arrayfun (y_val, x);
-
-endfunction
-
-%!demo
-%! x = 0:100;
-%! params = [0.3 40];
-%! y1 = sigmf(x, params);
-%! params = [0.2 40];
-%! y2 = sigmf(x, params);
-%! params = [0.1 40];
-%! y3 = sigmf(x, params);
-%! figure('NumberTitle', 'off', 'Name', 'sigmf demo');
-%! plot(x, y1, 'r;params = [0.3 40];', 'LineWidth', 2)
-%! hold on;
-%! plot(x, y2, 'b;params = [0.2 40];', 'LineWidth', 2)
-%! hold on;
-%! plot(x, y3, 'g;params = [0.1 40];', 'LineWidth', 2)
-%! ylim([-0.1 1.2]);
-%! xlabel('Crisp Input Value', 'FontWeight', 'bold');
-%! ylabel('Degree of Membership', 'FontWeight', 'bold');
-%! grid;
--- a/main/fuzzy-logic-toolkit/inst/smf.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,133 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} smf (@var{x}, @var{params})
-## @deftypefnx {Function File} {@var{y} =} smf (@var{[x1 x2 ... xn]}, @var{[a b]})
-##
-## For a given domain @var{x} and parameters @var{params} (or @var{[a b]}),
-## return the corresponding @var{y} values for the S-shaped membership function.
-##
-## The argument @var{x} must be a real number or a non-empty vector of strictly
-## increasing real numbers, and @var{a} and @var{b} must be real numbers, with
-## @var{a} < @var{b}. This membership function satisfies:
-## @example
-## @group
-##         0                                if x <= a
-## f(x) =  2 * ((x - a)/(b - a))^2          if a < x <= (a + b)/2
-##         1 - 2 * ((x - b)/(b - a))^2      if (a + b)/2 < x < b
-##         1                                if x >= b
-## @end group
-## @end example
-##
-## @noindent
-## which always returns values in the range [0, 1].
-##
-## @noindent
-## To run the demonstration code, type @t{demo('smf')} at the Octave prompt.
-##
-## @seealso{dsigmf, gauss2mf, gaussmf, gbellmf, pimf, psigmf, sigmf, trapmf, trimf, zmf}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy membership s-shaped
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      smf.m
-## Last-Modified: 19 Aug 2012
-
-function y = smf (x, params)
-
-  ## If the caller did not supply 2 argument values with the correct
-  ## types, print an error message and halt.
-
-  if (nargin != 2)
-    puts ("Type 'help smf' for more information.\n");
-    error ("smf requires 2 arguments\n");
-  elseif (!is_domain (x))
-    puts ("Type 'help smf' for more information.\n");
-    error ("smf's first argument must be a valid domain\n");
-  elseif (!are_mf_params ('smf', params))
-    puts ("Type 'help smf' for more information.\n");
-    error ("smf's second argument must be a parameter vector\n");
-  endif
-
-  ## Calculate and return the y values of the membership function on the
-  ## domain x.
-
-  a = params(1);
-  b = params(2);
-  a_b_ave = (a + b) / 2;
-  b_minus_a = b - a;
-
-  y_val = @(x_val) smf_val (x_val, a, b, a_b_ave, b_minus_a);
-  y = arrayfun (y_val, x);
-
-endfunction
-
-##----------------------------------------------------------------------
-## Usage: y = smf_val (x_val, a, b, a_b_ave, b_minus_a)
-##
-## smf_val returns one value of the S-shaped membership function, which
-## satisfies:
-##             0                                if x <= a
-##     f(x) =  2 * ((x - a)/(b - a))^2          if a < x <= (a + b)/2
-##             1 - 2 * ((x - b)/(b - a))^2      if (a + b)/2 < x < b
-##             1                                if x >= b
-##
-## smf_val is a private function, called only by smf. Because smf_val
-## is not intended for general use -- and because the parameters a and b
-## are checked for errors in the function smf (defined above), the
-## parameters are not checked for errors again here.
-##----------------------------------------------------------------------
-
-function y_val = smf_val (x_val, a, b, a_b_ave, b_minus_a)
-
-  ## Calculate and return a single y value of the S-shaped membership
-  ## function for the given x value and parameters specified by the
-  ## arguments.
-
-  if (x_val <= a)
-    y_val = 0;
-  elseif (x_val <= a_b_ave)
-    y_val = 2 * ((x_val - a) / b_minus_a)^2;
-  elseif (x_val < b)
-    y_val = 1 - 2 * ((x_val - b) / b_minus_a)^2;
-  else
-    y_val = 1;
-  endif
-
-endfunction
-
-%!demo
-%! x = 0:100;
-%! params = [40 60];
-%! y1 = smf(x, params);
-%! params = [25 75];
-%! y2 = smf(x, params);
-%! params = [10 90];
-%! y3 = smf(x, params);
-%! figure('NumberTitle', 'off', 'Name', 'smf demo');
-%! plot(x, y1, 'r;params = [40 60];', 'LineWidth', 2)
-%! hold on;
-%! plot(x, y2, 'b;params = [25 75];', 'LineWidth', 2)
-%! hold on;
-%! plot(x, y3, 'g;params = [10 90];', 'LineWidth', 2)
-%! ylim([-0.1 1.2]);
-%! xlabel('Crisp Input Value', 'FontWeight', 'bold');
-%! ylabel('Degree of Membership', 'FontWeight', 'bold');
-%! grid;
--- a/main/fuzzy-logic-toolkit/inst/sugeno_tip_calculator.fis	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fis
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      sugeno_tip_calculator.fis
-## Last-Modified: 28 Aug 2012
-
-% Sugeno Tip Calculator
-
-% Computes cheap, average, and generous tips
-% given food quality and service ratings.
-
-[System]
-
-Name = 'Sugeno-Tip-Calculator'
-Type = 'sugeno'
-Version = 1.0
-NumInputs = 2
-NumOutputs = 3
-NumRules = 10
-AndMethod = 'einstein_product'
-OrMethod = 'einstein_sum'
-ImpMethod = 'prod'
-AggMethod = 'sum'
-DefuzzMethod = 'wtaver'
-
-[Input1]
-
-Name = 'Food-Quality'
-Range = [1 10]
-NumMFs = 2
-MF1 = 'Bad'  : 'trapmf', [0 1 3 7]
-MF2 = 'Good' : 'trapmf', [3 7 10 11]
-
-[Input2]
-
-Name = 'Service'
-Range = [1 10]
-NumMFs = 2
-MF1 = 'Bad'  : 'trapmf', [0 1 3 7]
-MF2 = 'Good' : 'trapmf', [3 7 10 11]
-
-[Output1]
-
-Name = 'Cheap-Tip'
-Range = [5 25]
-NumMFs = 3
-MF1 = 'Low'     : 'constant', [10]
-MF2 = 'Medium'  : 'constant', [15]
-MF3 = 'High'    : 'constant', [20]
-
-[Output2]
-
-Name = 'Average-Tip'
-Range = [5 25]
-NumMFs = 3
-MF1 = 'Low'     : 'constant', [10]
-MF2 = 'Medium'  : 'constant', [15]
-MF3 = 'High'    : 'constant', [20]
-
-[Output3]
-
-Name = 'Generous-Tip'
-Range = [5 25]
-NumMFs = 3
-MF1 = 'Low'     : 'constant', [10]
-MF2 = 'Medium'  : 'constant', [15]
-MF3 = 'High'    : 'constant', [20]
-
-[Rules]
-
- 1.30   1.30,   1.30   1.20   1.00 (1) : 1
- 2.00   1.30,   1.00   1.00   2.00 (1) : 1
- 2.20   1.20,   1.00   2.00   3.00 (1) : 1
- 1.00   1.00,   1.00   1.00   2.00 (1) : 1
- 2.00   1.00,   1.00   2.00   3.00 (1) : 1
- 2.30   1.00,   1.00   2.00   3.20 (1) : 1
- 1.00   2.00,   1.00   2.00   3.00 (1) : 1
- 2.00   2.00,   2.00   2.00   3.20 (1) : 1
- 1.20   2.20,   1.00   2.00   3.00 (1) : 1
- 2.40   2.40,   3.00   3.20   3.30 (1) : 1
--- a/main/fuzzy-logic-toolkit/inst/sugeno_tip_demo.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Script File} {} sugeno_tip_demo
-##
-## Demonstrate the use of the Octave Fuzzy Logic Toolkit to read and
-## evaluate a Sugeno-type FIS with multiple outputs stored in a text
-## file. Also demonstrate the use of hedges in the FIS rules and the
-## Einstein product and sum as the T-norm/S-norm pair.
-##
-## The demo:
-## @itemize @minus
-## @item
-## reads the FIS structure from a file
-## @item
-## plots the input membership functions
-## @item
-## plots the (constant) output functions
-## @item
-## plots each of the three FIS outputs as a function of the inputs
-## @item
-## displays the FIS rules in verbose format in the Octave window
-## @item
-## evaluates the Sugeno-type FIS for six inputs
-## @end itemize
-##
-## @seealso{cubic_approx_demo, heart_disease_demo_1, heart_disease_demo_2, investment_portfolio_demo, linear_tip_demo, mamdani_tip_demo}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy tests demos
-## Note:          This example is based on an assignment written by
-##                Dr. Bruce Segee (University of Maine Dept. of ECE).
-## Directory:     fuzzy-logic-toolkit/inst
-## Filename:      sugeno_tip_demo.m
-## Last-Modified: 20 Aug 2012
-
-## Read the FIS structure from a file.
-fis = readfis ('sugeno_tip_calculator.fis');
-
-## Plot the input and output membership functions.
-plotmf (fis, 'input', 1);
-plotmf (fis, 'input', 2);
-plotmf (fis, 'output', 1);
-plotmf (fis, 'output', 2);
-plotmf (fis, 'output', 3);
-
-## Plot the cheap, average, and generous tips as a function of
-## Food-Quality and Service.
-gensurf (fis, [1 2], 1);
-gensurf (fis, [1 2], 2);
-gensurf (fis, [1 2], 3);
-
-## Demonstrate showrule with hedges.
-showrule (fis);
-
-## Calculate the Tip for 6 sets of input values: 
-puts ("\nFor the following values of (Food Quality, Service):\n\n");
-food_service = [1 1; 5 5; 10 10; 4 6; 6 4; 7 4]
-puts ("\nThe cheap, average, and generous tips are:\n\n");
-tip = evalfis (food_service, fis, 1001)
--- a/main/fuzzy-logic-toolkit/inst/trapmf.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} trapmf (@var{x}, @var{params})
-## @deftypefnx {Function File} {@var{y} =} trapmf (@var{[x1 x2 ... xn]}, @var{[a b c d]})
-##
-## For a given domain @var{x} and parameters @var{params} (or @var{[a b c d]}),
-## return the corresponding @var{y} values for the trapezoidal membership
-## function. The argument @var{x} must be a real number or a non-empty vector of
-## strictly increasing real numbers, and parameters @var{a}, @var{b}, @var{c},
-## and @var{d} must satisfy the inequalities:
-## @var{a} < @var{b} <= @var{c} < @var{d}. None of the parameters @var{a},
-## @var{b}, @var{c}, @var{d} are required to be in the domain @var{x}. The
-## minimum and maximum values of the trapezoid are assumed to be 0 and 1.
-##
-## The parameters @var{[a b c d]} correspond to the x values
-## of the corners of the trapezoid:
-##
-## @example
-## @group
-##        1-|      --------
-##          |     /        \
-##          |    /          \
-##          |   /            \
-##        0-----------------------
-##             a   b      c   d
-## @end group
-## @end example
-##
-## @noindent
-## To run the demonstration code, type @t{demo('trapmf')} at the Octave prompt.
-##
-## @seealso{dsigmf, gauss2mf, gaussmf, gbellmf, pimf, psigmf, sigmf, smf, trimf, zmf}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy membership trapezoidal
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      trapmf.m
-## Last-Modified: 19 Aug 2012
-
-function y = trapmf (x, params)
-
-  ## If the caller did not supply 2 argument values with the correct
-  ## types, print an error message and halt.
-
-  if (nargin != 2)
-    puts ("Type 'help trapmf' for more information.\n");
-    error ("trapmf requires 2 arguments\n");
-  elseif (!is_domain (x))
-    puts ("Type 'help trapmf' for more information.\n");
-    error ("trapmf's first argument must be a valid domain\n");
-  elseif (!are_mf_params ('trapmf', params))
-    puts ("Type 'help trapmf' for more information.\n");
-    error ("trapmf's second argument must be a parameter vector\n");
-  endif
-
-  ## Calculate and return the y values of the trapezoid on the domain x.
-
-  a = params(1);
-  b = params(2);
-  c = params(3);
-  d = params(4);
-
-  b_minus_a = b - a;
-  d_minus_c = d - c;
-
-  y_val = @(x_val) max (0, min (min (1, (x_val - a) / b_minus_a), ...
-                               (d - x_val) / d_minus_c));
-  y = arrayfun (y_val, x);
-
-endfunction
-
-%!demo
-%! x = 0:100;
-%! params = [-1 0 20 40];
-%! y1 = trapmf(x, params);
-%! params = [20 40 60 80];
-%! y2 = trapmf(x, params);
-%! params = [60 80 100 101];
-%! y3 = trapmf(x, params);
-%! figure('NumberTitle', 'off', 'Name', 'trapmf demo');
-%! plot(x, y1, 'r;params = [-1 0 20 40];', 'LineWidth', 2)
-%! hold on;
-%! plot(x, y2, 'b;params = [20 40 60 80];', 'LineWidth', 2)
-%! hold on;
-%! plot(x, y3, 'g;params = [60 80 100 101];', 'LineWidth', 2)
-%! ylim([-0.1 1.2]);
-%! xlabel('Crisp Input Value', 'FontWeight', 'bold');
-%! ylabel('Degree of Membership', 'FontWeight', 'bold');
-%! grid;
--- a/main/fuzzy-logic-toolkit/inst/trimf.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} trimf (@var{x}, @var{params})
-## @deftypefnx {Function File} {@var{y} =} trimf (@var{[x1 x2 ... xn]}, @var{[a b c]})
-##
-## For a given domain @var{x} and parameters @var{params} (or @var{[a b c]}),
-## return the corresponding @var{y} values for the triangular membership
-## function.
-##
-## The argument @var{x} must be a real number or a non-empty vector of strictly
-## increasing real numbers, and parameters @var{a}, @var{b}, and @var{c} must be
-## real numbers that satisfy @var{a} < @var{b} < @var{c}. None of the parameters
-## @var{a}, @var{b}, and @var{c} are required to be in the domain @var{x}. The
-## minimum and maximum values of the triangle are assumed to be 0 and 1.
-##
-## The parameters [@var{a} @var{b} @var{c}] correspond to the x values of the
-## vertices of the triangle:
-##
-## @example
-## @group
-## 1-|         /\
-##   |        /  \
-##   |       /    \
-##   |      /      \
-## 0-----------------------
-##         a   b   c
-## @end group
-## @end example
-##
-## @noindent
-## To run the demonstration code, type @t{demo('trimf')} at the Octave prompt.
-##
-## @seealso{dsigmf, gauss2mf, gaussmf, gbellmf, pimf, psigmf, sigmf, smf, trapmf, trimf_demo, zmf}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy membership triangular
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      trimf.m
-## Last-Modified: 20 Aug 2012
-
-function y = trimf (x, params)
-
-  ## If the caller did not supply 2 argument values with the correct
-  ## types, print an error message and halt.
-
-  if (nargin != 2)
-    puts ("Type 'help trimf' for more information.\n");
-    error ("trimf requires 2 arguments\n");
-  elseif (!is_domain (x))
-    puts ("Type 'help trimf' for more information.\n");
-    error ("trimf's first argument must be a valid domain\n");
-  elseif (!are_mf_params ('trimf', params))
-    puts ("Type 'help trimf' for more information.\n");
-    error ("trimf's second argument must be a parameter vector\n");
-  endif
-
-  ## Calculate and return the y values of the triangle on the domain x.
-
-  a = params(1);
-  b = params(2);
-  c = params(3);
-
-  b_minus_a = b - a;
-  c_minus_b = c - b;
-
-  y_val = @(x_val) max (0, min (min (1, (x_val - a) / b_minus_a), ...
-                               (c - x_val)/c_minus_b));
-  y = arrayfun (y_val, x);
-
-endfunction
-
-%!demo
-%! x = 0:100;
-%! params = [-1 0 50];
-%! y1 = trimf(x, params);
-%! params = [0 50 100];
-%! y2 = trimf(x, params);
-%! params = [50 100 101];
-%! y3 = trimf(x, params);
-%! figure('NumberTitle', 'off', 'Name', 'trimf demo');
-%! plot(x, y1, 'r;params = [-1 0 50];', 'LineWidth', 2)
-%! hold on;
-%! plot(x, y2, 'b;params = [0 50 100];', 'LineWidth', 2)
-%! hold on;
-%! plot(x, y3, 'g;params = [50 100 101];', 'LineWidth', 2)
-%! ylim([-0.1 1.2]);
-%! xlabel('Crisp Input Value', 'FontWeight', 'bold');
-%! ylabel('Degree of Membership', 'FontWeight', 'bold');
-%! grid;
--- a/main/fuzzy-logic-toolkit/inst/writefis.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,304 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {} writefis (@var{fis})
-## @deftypefnx {Function File} {} writefis (@var{fis}, @var{filename})
-## @deftypefnx {Function File} {} writefis (@var{fis}, @var{filename}, @var{dialog})
-##
-## Save the specified FIS currently in the Octave workspace to a file
-## named by the user. There are three forms of writefis:
-##
-## @table @asis
-## @item # Arguments
-## Action Taken
-## @item 1
-## Open a dialog GUI to help the user choose a directory and name
-## for the output file.
-## @item 2
-## Do not open a dialog GUI. Save the FIS to a file in the
-## current directory with the specified @var{filename}. If the
-## specified @var{filename} does not end in '.fis', append '.fis'
-## to the @var{filename}.
-## @item 3
-## Open a dialog GUI with the specified @var{filename} in the
-## 'filename' textbox of the GUI. If the specified @var{filename}
-## does not end in '.fis', append '.fis' to the @var{filename}.
-## @end table
-##
-## The types of the arguments are expected to be:
-## @table @var
-## @item fis
-## an FIS structure satisfying is_fis (see private/is_fis.m)
-## @item filename
-## a string; if the string does not already end with the extension
-## ".fis", then ".fis" is added
-## @item dialog
-## the string 'dialog' (case insensitive)
-## @end table
-##
-## @noindent
-## Note:
-## The GUI dialog requires zenity to be installed on the system.
-##
-## @noindent
-## Known error:
-## When using the file dialog, if the user clicks "Cancel" instead of
-## saving the file, an error message is generated.
-##
-## @seealso{readfis}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy inference system fis
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      writefis.m
-## Last-Modified: 20 Aug 2012
-
-function writefis (fis, filename = 'filename.fis', dialog = 'dummy')
-
-  ## If writefis was not called with between 1 and 3 arguments, or if
-  ## the argument values were of the wrong type, print an error message
-  ## and halt.
-
-  if (!(nargin >= 1 && nargin <= 3))
-    puts ("Type 'help writefis' for more information.\n");
-    error ("writefis requires between 1 and 3 arguments\n");
-  elseif (!is_fis (fis))
-    puts ("Type 'help writefis' for more information.\n");
-    error ("writefis's first argument must be an FIS structure\n");
-  elseif ((nargin >= 2) && !is_string (filename))
-    puts ("Type 'help writefis' for more information.\n");
-    error ("writefis's second argument must be a string\n");
-  elseif ((nargin == 3) && ...
-          !(is_string (dialog) && strcmpi (dialog, 'dialog')))
-    puts ("Type 'help writefis' for more information.\n");
-    error ("writefis's third argument must the string 'dialog'\n");
-  endif
-
-  ## Open the output file.
-
-  use_gui = (nargin != 2);
-  fid = open_output_file (filename, use_gui);
-
-  ## Write the [System], [Input<number>], [Output<number>], and [Rules]
-  ## sections of the output file.
-
-  write_system_section (fid, fis);
-  write_input_sections (fid, fis);
-  write_output_sections (fid, fis);
-  write_rules_section (fid, fis);
-
-  ## Close the output file.
-
-  fclose (fid);
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: open_output_file
-## Purpose:  Open the output file. Return the fid if successful.
-##           Otherwise, print an error message and halt.
-##----------------------------------------------------------------------
-
-function fid = open_output_file (filename, use_gui)
-
-  ## If the filename is not empty, and if the last four characters of
-  ## the filename are not '.fis', append '.fis' to the filename.
-
-  fn_len = length (filename);
-  if (((fn_len >= 4) && ...
-       !strcmp(".fis",filename(fn_len-3:fn_len))) || ...
-      ((fn_len > 0) && (fn_len < 4)))
-    filename = [filename ".fis"];
-  endif
-
-  ## If writefis was called with 1 or 3 arguments, use a dialog to
-  ## choose an output filename.
-
-  if (use_gui)
-    system_command = sprintf ("zenity --file-selection --filename=%s --save --confirm-overwrite; echo $file",
-                              filename);
-    [dialog_error, filename] = system (file=system_command);
-    if (dialog_error)
-      puts ("Type 'help writefis' for more information.\n");
-      error ("error selecting file using dialog\n");
-    endif
-    filename = strtrim (filename);
-  endif
-
-  ## Open output file. 
-
-  [fid, msg] = fopen (filename, "w");
-  if (fid == -1)
-    if (use_gui)
-      system ('zenity --error --text "Error opening output file."');
-    endif
-    puts ("Type 'help writefis' for more information.\n");
-    error ("error opening output file: %s\n", msg);
-  endif
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: write_system_section
-## Purpose:  Write [System] section of the output file.
-##----------------------------------------------------------------------
-
-function write_system_section (fid, fis)
-
-  fprintf (fid, "[System]\n");
-  fprintf (fid, "Name='%s'\n", fis.name);
-  fprintf (fid, "Type='%s'\n", fis.type);
-  fprintf (fid, "Version=%.1f\n", fis.version);
-  fprintf (fid, "NumInputs=%d\n", columns(fis.input));
-  fprintf (fid, "NumOutputs=%d\n", columns(fis.output));
-  fprintf (fid, "NumRules=%d\n", columns(fis.rule));
-  fprintf (fid, "AndMethod='%s'\n", fis.andMethod);
-  fprintf (fid, "OrMethod='%s'\n", fis.orMethod);
-  fprintf (fid, "ImpMethod='%s'\n", fis.impMethod);
-  fprintf (fid, "AggMethod='%s'\n", fis.aggMethod);
-  fprintf (fid, "DefuzzMethod='%s'\n", fis.defuzzMethod);
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: write_input_sections
-## Purpose:  For each FIS input, write [Input<number>] section to
-##           output file.
-##----------------------------------------------------------------------
-
-function write_input_sections (fid, fis)
-
-  num_inputs = columns (fis.input);
-
-  for i = 1 : num_inputs
-    num_mfs = columns (fis.input(i).mf);
-
-    fprintf (fid, "\n[Input%d]\n", i);
-    fprintf (fid, "Name='%s'\n", fis.input(i).name);
-    fprintf (fid, "Range=%s\n", ...
-             strrep (mat2str (fis.input(i).range),","," "));
-    fprintf (fid, "NumMFs=%d\n", num_mfs);
-    for j = 1 : num_mfs
-      fprintf (fid, "MF%d='%s':'%s',%s\n", j, ...
-               fis.input(i).mf(j).name, fis.input(i).mf(j).type, ...
-               params2str (fis.input(i).mf(j).params));
-    endfor
-  endfor
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: write_output_sections
-## Purpose:  For each FIS output, write [Output<number>] section to
-##           output file.
-##----------------------------------------------------------------------
-
-function write_output_sections (fid, fis)
-
-  num_outputs = columns (fis.output);
-
-  for i = 1 : num_outputs
-    num_mfs = columns (fis.output(i).mf);
-
-    fprintf (fid, "\n[Output%d]\n", i);
-    fprintf (fid, "Name='%s'\n", fis.output(i).name);
-    fprintf (fid, "Range=%s\n", ...
-             strrep(mat2str(fis.output(i).range),","," "));
-    fprintf (fid, "NumMFs=%d\n", num_mfs);
-    for j = 1 : num_mfs
-      fprintf (fid, "MF%d='%s':'%s',%s\n", j, ...
-               fis.output(i).mf(j).name, fis.output(i).mf(j).type, ...
-               params2str (fis.output(i).mf(j).params));
-    endfor
-  endfor
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: write_rules_section
-## Purpose:  Write [Rules] section to output file.
-##----------------------------------------------------------------------
-
-function write_rules_section (fid, fis)
-
-  num_inputs = columns (fis.input);
-  num_outputs = columns (fis.output);
-  num_rules = columns (fis.rule);
-
-  fprintf (fid, "\n[Rules]\n");
-
-  for i = 1 : num_rules
-    next_ant = fis.rule(i).antecedent;
-    next_con = fis.rule(i).consequent;
-    next_wt = fis.rule(i).weight;
-    next_connect = fis.rule(i).connection;
-
-    ## Print membership functions for the inputs.
-    if (num_inputs > 0)
-      if (is_int (next_ant(1)))
-        fprintf (fid, "%d", next_ant(1));
-      else
-        fprintf (fid, "%.2f", next_ant(1));
-      endif
-    endif
-    for j = 2 : num_inputs
-      if (is_int (next_ant(j)))
-        fprintf (fid, " %d", next_ant(j));
-      else
-        fprintf (fid, " %.2f", next_ant(j));
-      endif
-    endfor
-    fprintf(fid, ", ");
-
-    ## Print membership functions for the outputs.
-    for j = 1 : num_outputs
-      if (is_int (next_con(j)))
-        fprintf (fid, "%d ", next_con(j));
-      else
-        fprintf (fid, "%.2f ", next_con(j));
-      endif
-    endfor
-
-    ## Print the weight in parens.
-    if (is_int (next_wt))
-      fprintf (fid, "(%d) : ", next_wt);
-    else
-      fprintf (fid, "(%.4f) : ", next_wt);
-    endif
-
-    ## Print the connection and a newline.
-    fprintf (fid, "%d\n", next_connect);
-  endfor
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: params2str
-## Purpose:  Convert membership function parameters to string
-##           representation.
-##----------------------------------------------------------------------
-
-function str = params2str (params)
-  if (length (params) < 2)
-    str = ['[' num2str(params) ']'];
-  else
-    str = strrep (mat2str (params), ",", " ");
-  endif
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/xie_beni_index.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,134 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{vxb} =} xie_beni_index (@var{input_data}, @var{cluster_centers}, @var{soft_partition})
-##
-## Return the Xie-Beni validity index for a given soft partition.
-##
-## The arguments to xie_beni_index are:
-## @itemize @w
-## @item
-## @var{input_data} - a matrix of input data points; each row corresponds to one point
-## @item
-## @var{cluster_centers} - a matrix of cluster centers; each row corresponds to one point
-## @item
-## @var{soft_partition} - the membership degree of each input data point in each cluster
-## @end itemize
-##
-## The return value is:
-## @itemize @w
-## @item
-## @var{vxb} - the Xie-Beni validity index for the given partition
-## @end itemize
-##
-## For demos of this function, please type:
-## @example
-## demo 'fcm'
-## demo 'gustafson_kessel'
-## @end example
-##
-## For more information about the @var{input_data}, @var{cluster_centers},
-## and @var{soft_partition} matrices, please see the documentation for function
-## fcm.
-##
-## @seealso{fcm, gustafson_kessel, partition_coeff, partition_entropy}
-##
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy xie beni cluster validity
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      xie_beni_index.m
-## Last-Modified: 4 Sep 2012
-
-function vxb = xie_beni_index (input_data, cluster_centers, ...
-                               soft_partition)
-
-  ## If xie_beni_index was called with an incorrect number of arguments,
-  ## or the argument does not have the correct type, print an error
-  ## message and halt.
-
-  if (nargin != 3)
-    puts ("Type 'help xie_beni_index' for more information.\n");
-    error ("xie_beni_index requires 3 arguments\n");
-  elseif (!is_real_matrix (input_data))
-    puts ("Type 'help xie_beni_index' for more information.\n");
-    error ("xie_beni_index's first argument must be matrix of reals\n");
-  elseif (!(is_real_matrix (cluster_centers) &&
-            (columns (cluster_centers) == columns (input_data))))
-    puts ("Type 'help xie_beni_index' for more information.\n");
-    puts ("xie_beni_index's second argument must be matrix of reals\n");
-    puts ("with the same number of columns as the input_data\n");
-    error ("invalid second argument to xie_beni_index\n");
-  elseif (!(is_real_matrix (soft_partition) &&
-            (min (min (soft_partition)) >= 0) &&
-            (max (max (soft_partition)) <= 1)))
-    puts ("Type 'help xie_beni_index' for more information.\n");
-    puts ("xie_beni_index's third argument must be a matrix of\n");
-    puts ("real numbers mu, with 0 <= mu <= 1\n");
-    error ("invalid third argument to xie_beni_index\n");
-  endif
-
-  ## Compute and return the Xie-Beni index.
-
-  vxb = xie_beni_private (input_data, cluster_centers, soft_partition);
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: xie_beni_private
-## Purpose:  Return the Xie-Beni index for the given soft partition.
-## Note:     The following is an implementation of Equations 13.11,
-##           13.12, and 13.13 in Fuzzy Logic: Intelligence, Control and
-##           Information, by J. Yen and R. Langari, Prentice Hall, 1999,
-##           page 384 (International Edition). 
-##----------------------------------------------------------------------
-
-function vxb = xie_beni_private (X, V, Mu)
-
-  sqr_dist = square_distance_matrix (X, V);
-  sum_sigma = sum (sum (Mu .* sqr_dist));
-  n = rows (X);
-  d_sqr_min = min_sqr_dist_between_centers (V);
-  vxb = sum_sigma / (n * d_sqr_min);
-
-endfunction
-
-##----------------------------------------------------------------------
-## Function: min_sqr_dist_between_centers
-## Purpose:  Return the square of the minimum distance between
-##           cluster centers.
-##----------------------------------------------------------------------
-
-function d_sqr_min = min_sqr_dist_between_centers (V)
-
-  k = rows (V);
-  d_sqr_matrix = NaN(k, k);
-
-  for i = 1 : (k - 1)
-    Vi = V(i, :);
-    for j = (i + 1) : k
-      Vi_to_Vj = V(j, :) - Vi;
-      d_sqr_matrix(i, j) = sum (Vi_to_Vj .* Vi_to_Vj);
-    endfor
-  endfor
-
-  d_sqr_min = min (min (d_sqr_matrix));
-
-endfunction
--- a/main/fuzzy-logic-toolkit/inst/zmf.m	Wed Jan 08 22:25:55 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,148 +0,0 @@
-## Copyright (C) 2011-2012 L. Markowsky <lmarkov@users.sourceforge.net>
-##
-## This file is part of the fuzzy-logic-toolkit.
-##
-## The fuzzy-logic-toolkit is free software; you can redistribute it
-## and/or modify it under the terms of the 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 fuzzy-logic-toolkit is distributed in the hope that it will be
-## useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-## of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 fuzzy-logic-toolkit; see the file COPYING.  If not,
-## see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{y} =} zmf (@var{x}, @var{params})
-## @deftypefnx {Function File} {@var{y} =} zmf (@var{[x1 x2 ... xn]}, @var{[a b]})
-##
-## For a given domain @var{x} and parameters @var{params} (or @var{[a b]}),
-## return the corresponding @var{y} values for the Z-shaped membership function.
-##
-## The argument @var{x} must be a real number or a non-empty vector of strictly
-## increasing real numbers, and @var{a} and @var{b} must be real numbers, with
-## @var{a} < @var{b}. This membership function satisfies:
-## @example
-## @group
-##         1                                if x <= a
-## f(x) =  1 - 2 * ((x - a)/(b - a))^2      if a < x <= (a + b)/2
-##         2 * ((x - b)/(b - a))^2          if (a + b)/2 < x < b
-##         0                                if x >= b
-## @end group
-## @end example
-##
-## @noindent
-## which always returns values in the range [0, 1].
-##
-## The parameters a and b specify:
-## @itemize @w
-## @item
-## a == the rightmost point at which f(x) = 1
-## @item
-## b == the leftmost point at which f(x) = 0
-## @end itemize
-##
-## @noindent
-## At the midpoint of the segment [a, b], the function value is 0.5:
-## @itemize @w
-## @item
-## f((a + b)/2) = 0.5
-## @end itemize
-##
-## @noindent
-## To run the demonstration code, type @t{demo('zmf')} at the Octave prompt.
-##
-## @seealso{dsigmf, gauss2mf, gaussmf, gbellmf, pimf, psigmf, sigmf, smf, trapmf, trimf, zmf_demo}
-## @end deftypefn
-
-## Author:        L. Markowsky
-## Keywords:      fuzzy-logic-toolkit fuzzy membership z-shaped
-## Directory:     fuzzy-logic-toolkit/inst/
-## Filename:      zmf.m
-## Last-Modified: 19 Aug 2012
-
-function y = zmf (x, params)
-
-  ## If the caller did not supply 2 argument values with the correct
-  ## types, print an error message and halt.
-
-  if (nargin != 2)
-    puts ("Type 'help zmf' for more informaion.\n");
-    error ("zmf requires 2 arguments\n");
-  elseif (!is_domain (x))
-    puts ("Type 'help zmf' for more informaion.\n");
-    error ("zmf's first argument must be a valid domain\n");
-  elseif (!are_mf_params ('zmf', params))
-    puts ("Type 'help zmf' for more informaion.\n");
-    error ("zmf's second argument must be a parameter vector\n");
-  endif
-
-  ## Calculate and return the y values of the membership function on the
-  ## domain x.
-
-  a = params(1);
-  b = params(2);
-  a_b_ave = (a + b) / 2;
-  b_minus_a = b - a;
-
-  y_val = @(x_val) zmf_val (x_val, a, b, a_b_ave, b_minus_a);
-  y = arrayfun (y_val, x);
-
-endfunction
-
-##----------------------------------------------------------------------
-## Usage: y_val = zmf_val (x_val, a, b, a_b_ave, b_minus_a)
-##
-## zmf_val returns one value of the Z-shaped membership function, which
-## satisfies:
-##                1                                if x <= a
-##        f(x) =  1 - 2 * ((x - a)/(b - a))^2      if a < x <= (a + b)/2
-##                2 * ((x - b)/(b - a))^2          if (a + b)/2 < x < b
-##                0                                if x >= b
-##
-## zmf_val is a private function, called only by zmf. Because zmf_val
-## is not intended for general use -- and because the parameters a and b
-## are checked for errors in the function zmf (defined above), the
-## parameters are not checked for errors again here.
-##----------------------------------------------------------------------
-
-function y_val = zmf_val (x_val, a, b, a_b_ave, b_minus_a)
-
-  ## Calculate and return a single y value of the Z-shaped membership
-  ## function for the given x value and parameters specified by the
-  ## arguments.
-
-  if (x_val <= a)
-    y_val = 1;
-  elseif (x_val <= a_b_ave)
-    y_val = 1 - 2 * ((x_val - a) / b_minus_a)^2;
-  elseif (x_val < b)
-    y_val = 2 * ((x_val - b) / b_minus_a)^2;
-  else
-    y_val = 0;
-  endif
-
-endfunction
-
-%!demo
-%! x = 0:100;
-%! params = [40 60];
-%! y1 = zmf(x, params);
-%! params = [25 75];
-%! y2 = zmf(x, params);
-%! params = [10 90];
-%! y3 = zmf(x, params);
-%! figure('NumberTitle', 'off', 'Name', 'zmf demo');
-%! plot(x, y1, 'r;params = [40 60];', 'LineWidth', 2)
-%! hold on;
-%! plot(x, y2, 'b;params = [25 75];', 'LineWidth', 2)
-%! hold on;
-%! plot(x, y3, 'g;params = [10 90];', 'LineWidth', 2)
-%! ylim([-0.1 1.1]);
-%! xlabel('Crisp Input Value', 'FontWeight', 'bold');
-%! ylabel('Degree of Membership', 'FontWeight', 'bold');
-%! grid;