summaryrefslogtreecommitdiff
path: root/fuzzylite/src/norm
diff options
context:
space:
mode:
Diffstat (limited to 'fuzzylite/src/norm')
-rw-r--r--fuzzylite/src/norm/s/AlgebraicSum.cpp45
-rw-r--r--fuzzylite/src/norm/s/BoundedSum.cpp45
-rw-r--r--fuzzylite/src/norm/s/DrasticSum.cpp48
-rw-r--r--fuzzylite/src/norm/s/EinsteinSum.cpp45
-rw-r--r--fuzzylite/src/norm/s/HamacherSum.cpp45
-rw-r--r--fuzzylite/src/norm/s/Maximum.cpp45
-rw-r--r--fuzzylite/src/norm/s/NilpotentMaximum.cpp50
-rw-r--r--fuzzylite/src/norm/s/NormalizedSum.cpp46
-rw-r--r--fuzzylite/src/norm/t/AlgebraicProduct.cpp45
-rw-r--r--fuzzylite/src/norm/t/BoundedDifference.cpp46
-rw-r--r--fuzzylite/src/norm/t/DrasticProduct.cpp48
-rw-r--r--fuzzylite/src/norm/t/EinsteinProduct.cpp45
-rw-r--r--fuzzylite/src/norm/t/HamacherProduct.cpp46
-rw-r--r--fuzzylite/src/norm/t/Minimum.cpp46
-rw-r--r--fuzzylite/src/norm/t/NilpotentMinimum.cpp50
15 files changed, 695 insertions, 0 deletions
diff --git a/fuzzylite/src/norm/s/AlgebraicSum.cpp b/fuzzylite/src/norm/s/AlgebraicSum.cpp
new file mode 100644
index 0000000..e96c1a7
--- /dev/null
+++ b/fuzzylite/src/norm/s/AlgebraicSum.cpp
@@ -0,0 +1,45 @@
+/*
+ Author: Juan Rada-Vilela, Ph.D.
+ Copyright (C) 2010-2014 FuzzyLite Limited
+ All rights reserved
+
+ This file is part of fuzzylite.
+
+ fuzzylite is free software: you can redistribute it and/or modify it under
+ the terms of the GNU Lesser General Public License as published by the Free
+ Software Foundation, either version 3 of the License, or (at your option)
+ any later version.
+
+ fuzzylite is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with fuzzylite. If not, see <http://www.gnu.org/licenses/>.
+
+ fuzzylite™ is a trademark of FuzzyLite Limited.
+
+ */
+
+#include "fl/norm/s/AlgebraicSum.h"
+
+namespace fl {
+
+ std::string AlgebraicSum::className() const {
+ return "AlgebraicSum";
+ }
+
+ scalar AlgebraicSum::compute(scalar a, scalar b) const {
+ return a + b - (a * b);
+ }
+
+ AlgebraicSum* AlgebraicSum::clone() const {
+ return new AlgebraicSum(*this);
+ }
+
+ SNorm* AlgebraicSum::constructor() {
+ return new AlgebraicSum;
+ }
+
+}
diff --git a/fuzzylite/src/norm/s/BoundedSum.cpp b/fuzzylite/src/norm/s/BoundedSum.cpp
new file mode 100644
index 0000000..9c050c8
--- /dev/null
+++ b/fuzzylite/src/norm/s/BoundedSum.cpp
@@ -0,0 +1,45 @@
+/*
+ Author: Juan Rada-Vilela, Ph.D.
+ Copyright (C) 2010-2014 FuzzyLite Limited
+ All rights reserved
+
+ This file is part of fuzzylite.
+
+ fuzzylite is free software: you can redistribute it and/or modify it under
+ the terms of the GNU Lesser General Public License as published by the Free
+ Software Foundation, either version 3 of the License, or (at your option)
+ any later version.
+
+ fuzzylite is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with fuzzylite. If not, see <http://www.gnu.org/licenses/>.
+
+ fuzzylite™ is a trademark of FuzzyLite Limited.
+
+ */
+
+#include "fl/norm/s/BoundedSum.h"
+
+namespace fl {
+
+ std::string BoundedSum::className() const {
+ return "BoundedSum";
+ }
+
+ scalar BoundedSum::compute(scalar a, scalar b) const {
+ return Op::min(scalar(1.0), a + b);
+ }
+
+ BoundedSum* BoundedSum::clone() const {
+ return new BoundedSum(*this);
+ }
+
+ SNorm* BoundedSum::constructor() {
+ return new BoundedSum;
+ }
+
+}
diff --git a/fuzzylite/src/norm/s/DrasticSum.cpp b/fuzzylite/src/norm/s/DrasticSum.cpp
new file mode 100644
index 0000000..c0629db
--- /dev/null
+++ b/fuzzylite/src/norm/s/DrasticSum.cpp
@@ -0,0 +1,48 @@
+/*
+ Author: Juan Rada-Vilela, Ph.D.
+ Copyright (C) 2010-2014 FuzzyLite Limited
+ All rights reserved
+
+ This file is part of fuzzylite.
+
+ fuzzylite is free software: you can redistribute it and/or modify it under
+ the terms of the GNU Lesser General Public License as published by the Free
+ Software Foundation, either version 3 of the License, or (at your option)
+ any later version.
+
+ fuzzylite is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with fuzzylite. If not, see <http://www.gnu.org/licenses/>.
+
+ fuzzylite™ is a trademark of FuzzyLite Limited.
+
+ */
+
+#include "fl/norm/s/DrasticSum.h"
+
+namespace fl {
+
+ std::string DrasticSum::className() const {
+ return "DrasticSum";
+ }
+
+ scalar DrasticSum::compute(scalar a, scalar b) const {
+ if (Op::isEq(Op::min(a, b), 0.0)) {
+ return Op::max(a, b);
+ }
+ return 1.0;
+ }
+
+ DrasticSum* DrasticSum::clone() const {
+ return new DrasticSum(*this);
+ }
+
+ SNorm* DrasticSum::constructor() {
+ return new DrasticSum;
+ }
+
+}
diff --git a/fuzzylite/src/norm/s/EinsteinSum.cpp b/fuzzylite/src/norm/s/EinsteinSum.cpp
new file mode 100644
index 0000000..ec0fbd8
--- /dev/null
+++ b/fuzzylite/src/norm/s/EinsteinSum.cpp
@@ -0,0 +1,45 @@
+/*
+ Author: Juan Rada-Vilela, Ph.D.
+ Copyright (C) 2010-2014 FuzzyLite Limited
+ All rights reserved
+
+ This file is part of fuzzylite.
+
+ fuzzylite is free software: you can redistribute it and/or modify it under
+ the terms of the GNU Lesser General Public License as published by the Free
+ Software Foundation, either version 3 of the License, or (at your option)
+ any later version.
+
+ fuzzylite is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with fuzzylite. If not, see <http://www.gnu.org/licenses/>.
+
+ fuzzylite™ is a trademark of FuzzyLite Limited.
+
+ */
+
+#include "fl/norm/s/EinsteinSum.h"
+
+namespace fl {
+
+ std::string EinsteinSum::className() const {
+ return "EinsteinSum";
+ }
+
+ scalar EinsteinSum::compute(scalar a, scalar b) const {
+ return (a + b) / (1.0 + a * b);
+ }
+
+ EinsteinSum* EinsteinSum::clone() const {
+ return new EinsteinSum(*this);
+ }
+
+ SNorm* EinsteinSum::constructor() {
+ return new EinsteinSum;
+ }
+
+}
diff --git a/fuzzylite/src/norm/s/HamacherSum.cpp b/fuzzylite/src/norm/s/HamacherSum.cpp
new file mode 100644
index 0000000..f9c0994
--- /dev/null
+++ b/fuzzylite/src/norm/s/HamacherSum.cpp
@@ -0,0 +1,45 @@
+/*
+ Author: Juan Rada-Vilela, Ph.D.
+ Copyright (C) 2010-2014 FuzzyLite Limited
+ All rights reserved
+
+ This file is part of fuzzylite.
+
+ fuzzylite is free software: you can redistribute it and/or modify it under
+ the terms of the GNU Lesser General Public License as published by the Free
+ Software Foundation, either version 3 of the License, or (at your option)
+ any later version.
+
+ fuzzylite is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with fuzzylite. If not, see <http://www.gnu.org/licenses/>.
+
+ fuzzylite™ is a trademark of FuzzyLite Limited.
+
+ */
+
+#include "fl/norm/s/HamacherSum.h"
+
+namespace fl {
+
+ std::string HamacherSum::className() const {
+ return "HamacherSum";
+ }
+
+ scalar HamacherSum::compute(scalar a, scalar b) const {
+ return (a + b - 2.0 * a * b) / (1.0 - a * b);
+ }
+
+ HamacherSum* HamacherSum::clone() const {
+ return new HamacherSum(*this);
+ }
+
+ SNorm* HamacherSum::constructor() {
+ return new HamacherSum;
+ }
+
+}
diff --git a/fuzzylite/src/norm/s/Maximum.cpp b/fuzzylite/src/norm/s/Maximum.cpp
new file mode 100644
index 0000000..ed8a839
--- /dev/null
+++ b/fuzzylite/src/norm/s/Maximum.cpp
@@ -0,0 +1,45 @@
+/*
+ Author: Juan Rada-Vilela, Ph.D.
+ Copyright (C) 2010-2014 FuzzyLite Limited
+ All rights reserved
+
+ This file is part of fuzzylite.
+
+ fuzzylite is free software: you can redistribute it and/or modify it under
+ the terms of the GNU Lesser General Public License as published by the Free
+ Software Foundation, either version 3 of the License, or (at your option)
+ any later version.
+
+ fuzzylite is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with fuzzylite. If not, see <http://www.gnu.org/licenses/>.
+
+ fuzzylite™ is a trademark of FuzzyLite Limited.
+
+ */
+
+#include "fl/norm/s/Maximum.h"
+
+namespace fl {
+
+ std::string Maximum::className() const {
+ return "Maximum";
+ }
+
+ scalar Maximum::compute(scalar a, scalar b) const {
+ return Op::max(a, b);
+ }
+
+ Maximum* Maximum::clone() const {
+ return new Maximum(*this);
+ }
+
+ SNorm* Maximum::constructor() {
+ return new Maximum;
+ }
+
+}
diff --git a/fuzzylite/src/norm/s/NilpotentMaximum.cpp b/fuzzylite/src/norm/s/NilpotentMaximum.cpp
new file mode 100644
index 0000000..0a09136
--- /dev/null
+++ b/fuzzylite/src/norm/s/NilpotentMaximum.cpp
@@ -0,0 +1,50 @@
+/*
+ Author: Juan Rada-Vilela, Ph.D.
+ Copyright (C) 2010-2014 FuzzyLite Limited
+ All rights reserved
+
+ This file is part of fuzzylite.
+
+ fuzzylite is free software: you can redistribute it and/or modify it under
+ the terms of the GNU Lesser General Public License as published by the Free
+ Software Foundation, either version 3 of the License, or (at your option)
+ any later version.
+
+ fuzzylite is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with fuzzylite. If not, see <http://www.gnu.org/licenses/>.
+
+ fuzzylite™ is a trademark of FuzzyLite Limited.
+
+ */
+
+#include "fl/norm/s/NilpotentMaximum.h"
+
+namespace fl {
+
+ std::string NilpotentMaximum::className() const {
+ return "NilpotentMaximum";
+ }
+
+ scalar NilpotentMaximum::compute(scalar a, scalar b) const {
+ if (Op::isLt(a + b, 1.0)) {
+ return std::max(a, b);
+ }
+ return 1.0;
+ }
+
+ NilpotentMaximum* NilpotentMaximum::clone() const {
+ return new NilpotentMaximum(*this);
+ }
+
+ SNorm* NilpotentMaximum::constructor() {
+ return new NilpotentMaximum;
+ }
+
+
+}
+
diff --git a/fuzzylite/src/norm/s/NormalizedSum.cpp b/fuzzylite/src/norm/s/NormalizedSum.cpp
new file mode 100644
index 0000000..94ad5ea
--- /dev/null
+++ b/fuzzylite/src/norm/s/NormalizedSum.cpp
@@ -0,0 +1,46 @@
+/*
+ Author: Juan Rada-Vilela, Ph.D.
+ Copyright (C) 2010-2014 FuzzyLite Limited
+ All rights reserved
+
+ This file is part of fuzzylite.
+
+ fuzzylite is free software: you can redistribute it and/or modify it under
+ the terms of the GNU Lesser General Public License as published by the Free
+ Software Foundation, either version 3 of the License, or (at your option)
+ any later version.
+
+ fuzzylite is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with fuzzylite. If not, see <http://www.gnu.org/licenses/>.
+
+ fuzzylite™ is a trademark of FuzzyLite Limited.
+
+ */
+
+#include "fl/norm/s/NormalizedSum.h"
+
+namespace fl {
+
+ std::string NormalizedSum::className() const {
+ return "NormalizedSum";
+ }
+
+ scalar NormalizedSum::compute(scalar a, scalar b) const {
+ return a + b / Op::max(scalar(1.0), Op::max(a, b));
+ }
+
+ NormalizedSum* NormalizedSum::clone() const {
+ return new NormalizedSum(*this);
+ }
+
+ SNorm* NormalizedSum::constructor() {
+ return new NormalizedSum;
+ }
+
+
+}
diff --git a/fuzzylite/src/norm/t/AlgebraicProduct.cpp b/fuzzylite/src/norm/t/AlgebraicProduct.cpp
new file mode 100644
index 0000000..eee1061
--- /dev/null
+++ b/fuzzylite/src/norm/t/AlgebraicProduct.cpp
@@ -0,0 +1,45 @@
+/*
+ Author: Juan Rada-Vilela, Ph.D.
+ Copyright (C) 2010-2014 FuzzyLite Limited
+ All rights reserved
+
+ This file is part of fuzzylite.
+
+ fuzzylite is free software: you can redistribute it and/or modify it under
+ the terms of the GNU Lesser General Public License as published by the Free
+ Software Foundation, either version 3 of the License, or (at your option)
+ any later version.
+
+ fuzzylite is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with fuzzylite. If not, see <http://www.gnu.org/licenses/>.
+
+ fuzzylite™ is a trademark of FuzzyLite Limited.
+
+ */
+
+#include "fl/norm/t/AlgebraicProduct.h"
+
+namespace fl {
+
+ std::string AlgebraicProduct::className() const {
+ return "AlgebraicProduct";
+ }
+
+ scalar AlgebraicProduct::compute(scalar a, scalar b) const {
+ return a * b;
+ }
+
+ AlgebraicProduct* AlgebraicProduct::clone() const {
+ return new AlgebraicProduct(*this);
+ }
+
+ TNorm* AlgebraicProduct::constructor() {
+ return new AlgebraicProduct;
+ }
+
+}
diff --git a/fuzzylite/src/norm/t/BoundedDifference.cpp b/fuzzylite/src/norm/t/BoundedDifference.cpp
new file mode 100644
index 0000000..aa4fead
--- /dev/null
+++ b/fuzzylite/src/norm/t/BoundedDifference.cpp
@@ -0,0 +1,46 @@
+/*
+ Author: Juan Rada-Vilela, Ph.D.
+ Copyright (C) 2010-2014 FuzzyLite Limited
+ All rights reserved
+
+ This file is part of fuzzylite.
+
+ fuzzylite is free software: you can redistribute it and/or modify it under
+ the terms of the GNU Lesser General Public License as published by the Free
+ Software Foundation, either version 3 of the License, or (at your option)
+ any later version.
+
+ fuzzylite is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with fuzzylite. If not, see <http://www.gnu.org/licenses/>.
+
+ fuzzylite™ is a trademark of FuzzyLite Limited.
+
+ */
+
+#include "fl/norm/t/BoundedDifference.h"
+
+
+namespace fl {
+
+ std::string BoundedDifference::className() const {
+ return "BoundedDifference";
+ }
+
+ scalar BoundedDifference::compute(scalar a, scalar b) const {
+ return Op::max(scalar(0.0), a + b - scalar(1.0));
+ }
+
+ BoundedDifference* BoundedDifference::clone() const {
+ return new BoundedDifference(*this);
+ }
+
+ TNorm* BoundedDifference::constructor() {
+ return new BoundedDifference;
+ }
+
+}
diff --git a/fuzzylite/src/norm/t/DrasticProduct.cpp b/fuzzylite/src/norm/t/DrasticProduct.cpp
new file mode 100644
index 0000000..124b79d
--- /dev/null
+++ b/fuzzylite/src/norm/t/DrasticProduct.cpp
@@ -0,0 +1,48 @@
+/*
+ Author: Juan Rada-Vilela, Ph.D.
+ Copyright (C) 2010-2014 FuzzyLite Limited
+ All rights reserved
+
+ This file is part of fuzzylite.
+
+ fuzzylite is free software: you can redistribute it and/or modify it under
+ the terms of the GNU Lesser General Public License as published by the Free
+ Software Foundation, either version 3 of the License, or (at your option)
+ any later version.
+
+ fuzzylite is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with fuzzylite. If not, see <http://www.gnu.org/licenses/>.
+
+ fuzzylite™ is a trademark of FuzzyLite Limited.
+
+ */
+
+#include "fl/norm/t/DrasticProduct.h"
+
+namespace fl {
+
+ std::string DrasticProduct::className() const {
+ return "DrasticProduct";
+ }
+
+ scalar DrasticProduct::compute(scalar a, scalar b) const {
+ if (Op::isEq(Op::max(a, b), 1.0)) {
+ return Op::min(a, b);
+ }
+ return 0.0;
+ }
+
+ DrasticProduct* DrasticProduct::clone() const {
+ return new DrasticProduct(*this);
+ }
+
+ TNorm* DrasticProduct::constructor() {
+ return new DrasticProduct;
+ }
+
+}
diff --git a/fuzzylite/src/norm/t/EinsteinProduct.cpp b/fuzzylite/src/norm/t/EinsteinProduct.cpp
new file mode 100644
index 0000000..ea79188
--- /dev/null
+++ b/fuzzylite/src/norm/t/EinsteinProduct.cpp
@@ -0,0 +1,45 @@
+/*
+ Author: Juan Rada-Vilela, Ph.D.
+ Copyright (C) 2010-2014 FuzzyLite Limited
+ All rights reserved
+
+ This file is part of fuzzylite.
+
+ fuzzylite is free software: you can redistribute it and/or modify it under
+ the terms of the GNU Lesser General Public License as published by the Free
+ Software Foundation, either version 3 of the License, or (at your option)
+ any later version.
+
+ fuzzylite is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with fuzzylite. If not, see <http://www.gnu.org/licenses/>.
+
+ fuzzylite™ is a trademark of FuzzyLite Limited.
+
+ */
+
+#include "fl/norm/t/EinsteinProduct.h"
+
+namespace fl {
+
+ std::string EinsteinProduct::className() const {
+ return "EinsteinProduct";
+ }
+
+ scalar EinsteinProduct::compute(scalar a, scalar b) const {
+ return (a * b) / (2.0 - (a + b - a * b));
+ }
+
+ EinsteinProduct* EinsteinProduct::clone() const {
+ return new EinsteinProduct(*this);
+ }
+
+ TNorm* EinsteinProduct::constructor() {
+ return new EinsteinProduct;
+ }
+
+}
diff --git a/fuzzylite/src/norm/t/HamacherProduct.cpp b/fuzzylite/src/norm/t/HamacherProduct.cpp
new file mode 100644
index 0000000..e3f093e
--- /dev/null
+++ b/fuzzylite/src/norm/t/HamacherProduct.cpp
@@ -0,0 +1,46 @@
+/*
+ Author: Juan Rada-Vilela, Ph.D.
+ Copyright (C) 2010-2014 FuzzyLite Limited
+ All rights reserved
+
+ This file is part of fuzzylite.
+
+ fuzzylite is free software: you can redistribute it and/or modify it under
+ the terms of the GNU Lesser General Public License as published by the Free
+ Software Foundation, either version 3 of the License, or (at your option)
+ any later version.
+
+ fuzzylite is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with fuzzylite. If not, see <http://www.gnu.org/licenses/>.
+
+ fuzzylite™ is a trademark of FuzzyLite Limited.
+
+ */
+
+#include "fl/norm/t/HamacherProduct.h"
+
+
+namespace fl {
+
+ std::string HamacherProduct::className() const {
+ return "HamacherProduct";
+ }
+
+ scalar HamacherProduct::compute(scalar a, scalar b) const {
+ return (a * b) / (a + b - a * b);
+ }
+
+ HamacherProduct* HamacherProduct::clone() const {
+ return new HamacherProduct(*this);
+ }
+
+ TNorm* HamacherProduct::constructor() {
+ return new HamacherProduct;
+ }
+
+}
diff --git a/fuzzylite/src/norm/t/Minimum.cpp b/fuzzylite/src/norm/t/Minimum.cpp
new file mode 100644
index 0000000..34f348f
--- /dev/null
+++ b/fuzzylite/src/norm/t/Minimum.cpp
@@ -0,0 +1,46 @@
+/*
+ Author: Juan Rada-Vilela, Ph.D.
+ Copyright (C) 2010-2014 FuzzyLite Limited
+ All rights reserved
+
+ This file is part of fuzzylite.
+
+ fuzzylite is free software: you can redistribute it and/or modify it under
+ the terms of the GNU Lesser General Public License as published by the Free
+ Software Foundation, either version 3 of the License, or (at your option)
+ any later version.
+
+ fuzzylite is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with fuzzylite. If not, see <http://www.gnu.org/licenses/>.
+
+ fuzzylite™ is a trademark of FuzzyLite Limited.
+
+ */
+
+#include "fl/norm/t/Minimum.h"
+
+namespace fl {
+
+ std::string Minimum::className() const {
+ return "Minimum";
+ }
+
+ scalar Minimum::compute(scalar a, scalar b) const {
+ return Op::min(a, b);
+ }
+
+ Minimum* Minimum::clone() const {
+ return new Minimum(*this);
+ }
+
+ TNorm* Minimum::constructor() {
+ return new Minimum;
+ }
+
+
+}
diff --git a/fuzzylite/src/norm/t/NilpotentMinimum.cpp b/fuzzylite/src/norm/t/NilpotentMinimum.cpp
new file mode 100644
index 0000000..b52a2fc
--- /dev/null
+++ b/fuzzylite/src/norm/t/NilpotentMinimum.cpp
@@ -0,0 +1,50 @@
+/*
+ Author: Juan Rada-Vilela, Ph.D.
+ Copyright (C) 2010-2014 FuzzyLite Limited
+ All rights reserved
+
+ This file is part of fuzzylite.
+
+ fuzzylite is free software: you can redistribute it and/or modify it under
+ the terms of the GNU Lesser General Public License as published by the Free
+ Software Foundation, either version 3 of the License, or (at your option)
+ any later version.
+
+ fuzzylite is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with fuzzylite. If not, see <http://www.gnu.org/licenses/>.
+
+ fuzzylite™ is a trademark of FuzzyLite Limited.
+
+ */
+
+#include "fl/norm/t/NilpotentMinimum.h"
+
+namespace fl {
+
+ std::string NilpotentMinimum::className() const {
+ return "NilpotentMinimum";
+ }
+
+ scalar NilpotentMinimum::compute(scalar a, scalar b) const {
+ if (Op::isGt(a + b, 1.0)) {
+ return Op::min(a, b);
+ }
+ return 0.0;
+ }
+
+ NilpotentMinimum* NilpotentMinimum::clone() const {
+ return new NilpotentMinimum(*this);
+ }
+
+ TNorm* NilpotentMinimum::constructor() {
+ return new NilpotentMinimum;
+ }
+
+
+}
+