diff --git a/CHANGELOG.md b/CHANGELOG.md index 6962dcbd..94166f39 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ To install or update LODA, please follow the [installation instructions](https:/ ## [Unreleased] +### Enhancements + +* Rename digit operations + ## v25.1.3 ### Bugfixes diff --git a/src/eval/interpreter.cpp b/src/eval/interpreter.cpp index fa28ab7f..046f5183 100644 --- a/src/eval/interpreter.cpp +++ b/src/eval/interpreter.cpp @@ -80,11 +80,11 @@ Number Interpreter::calc(const Operation::Type type, const Number& target, case Operation::Type::NRT: { return Semantics::nrt(target, source); } - case Operation::Type::DIS: { - return Semantics::dis(target, source); + case Operation::Type::DGS: { + return Semantics::dgs(target, source); } - case Operation::Type::DIR: { - return Semantics::dir(target, source); + case Operation::Type::DGR: { + return Semantics::dgr(target, source); } case Operation::Type::EQU: { return Semantics::equ(target, source); diff --git a/src/eval/semantics.cpp b/src/eval/semantics.cpp index aca40458..145158d9 100644 --- a/src/eval/semantics.cpp +++ b/src/eval/semantics.cpp @@ -223,7 +223,7 @@ Number Semantics::nrt(const Number& a, const Number& b) { return r; } -Number Semantics::dis(const Number& a, const Number& b) { +Number Semantics::dgs(const Number& a, const Number& b) { if (a == Number::INF || b == Number::INF || b < Number::TWO) { return Number::INF; } @@ -237,7 +237,7 @@ Number Semantics::dis(const Number& a, const Number& b) { return mul(sign, r); } -Number Semantics::dir(const Number& a, const Number& b) { +Number Semantics::dgr(const Number& a, const Number& b) { if (a == Number::INF || b == Number::INF || b < Number::TWO) { return Number::INF; } diff --git a/src/eval/semantics.hpp b/src/eval/semantics.hpp index 941bd606..40f57989 100644 --- a/src/eval/semantics.hpp +++ b/src/eval/semantics.hpp @@ -30,9 +30,9 @@ class Semantics { static Number nrt(const Number& a, const Number& b); - static Number dis(const Number& a, const Number& b); + static Number dgs(const Number& a, const Number& b); - static Number dir(const Number& a, const Number& b); + static Number dgr(const Number& a, const Number& b); static Number equ(const Number& a, const Number& b); diff --git a/src/lang/program.cpp b/src/lang/program.cpp index 026fb2f8..7548a0f2 100644 --- a/src/lang/program.cpp +++ b/src/lang/program.cpp @@ -8,7 +8,7 @@ const std::array Operation::Types = { Operation::Type::DIV, Operation::Type::DIF, Operation::Type::MOD, Operation::Type::POW, Operation::Type::GCD, Operation::Type::LEX, Operation::Type::BIN, Operation::Type::LOG, Operation::Type::NRT, - Operation::Type::DIS, Operation::Type::DIR, Operation::Type::EQU, + Operation::Type::DGS, Operation::Type::DGR, Operation::Type::EQU, Operation::Type::NEQ, Operation::Type::LEQ, Operation::Type::GEQ, Operation::Type::MIN, Operation::Type::MAX, Operation::Type::BAN, Operation::Type::BOR, Operation::Type::BXO, Operation::Type::LPB, @@ -47,10 +47,10 @@ const Operation::Metadata& Operation::Metadata::get(Type t) { Operation::Type::LOG, "log", 2, true, true, true}; static Operation::Metadata nrt{ Operation::Type::NRT, "nrt", 2, true, true, true}; - static Operation::Metadata dis{ - Operation::Type::DIS, "dis", 2, true, true, true}; - static Operation::Metadata dir{ - Operation::Type::DIR, "dir", 2, true, true, true}; + static Operation::Metadata dgs{ + Operation::Type::DGS, "dgs", 2, true, true, true}; + static Operation::Metadata dgr{ + Operation::Type::DGR, "dgr", 2, true, true, true}; static Operation::Metadata equ{ Operation::Type::EQU, "equ", 2, true, true, true}; static Operation::Metadata neq{ @@ -114,10 +114,10 @@ const Operation::Metadata& Operation::Metadata::get(Type t) { return log; case Operation::Type::NRT: return nrt; - case Operation::Type::DIS: - return dis; - case Operation::Type::DIR: - return dir; + case Operation::Type::DGS: + return dgs; + case Operation::Type::DGR: + return dgr; case Operation::Type::EQU: return equ; case Operation::Type::NEQ: @@ -163,9 +163,16 @@ const Operation::Metadata& Operation::Metadata::get(const std::string& name) { return m; } } - if (name == "cmp") { // backwards compatibility + // for backwards compatibility + if (name == "cmp") { return get(Operation::Type::EQU); } + if (name == "dis") { + return get(Operation::Type::DGS); + } + if (name == "dir") { + return get(Operation::Type::DGR); + } throw std::runtime_error("invalid operation: " + name); } diff --git a/src/lang/program.hpp b/src/lang/program.hpp index 674b67e3..b06701a8 100644 --- a/src/lang/program.hpp +++ b/src/lang/program.hpp @@ -49,8 +49,8 @@ class Operation { BIN, // binomial coefficient LOG, // logarithm NRT, // n-th root - DIS, // digit sum - DIR, // digital root + DGS, // digit sum + DGR, // digital root EQU, // equality NEQ, // inequality LEQ, // less or equal diff --git a/src/mine/iterator.cpp b/src/mine/iterator.cpp index e3875c62..2ec5a900 100644 --- a/src/mine/iterator.cpp +++ b/src/mine/iterator.cpp @@ -101,14 +101,14 @@ bool Iterator::inc(Operation& op) { return true; case Operation::Type::BIN: - op.type = Operation::Type::DIS; + op.type = Operation::Type::DGS; return true; - case Operation::Type::DIS: - op.type = Operation::Type::DIR; + case Operation::Type::DGS: + op.type = Operation::Type::DGR; return true; - case Operation::Type::DIR: + case Operation::Type::DGR: op.type = Operation::Type::EQU; return true; diff --git a/tests/semantics/dir.csv b/tests/semantics/dgr.csv similarity index 100% rename from tests/semantics/dir.csv rename to tests/semantics/dgr.csv diff --git a/tests/semantics/dis.csv b/tests/semantics/dgs.csv similarity index 100% rename from tests/semantics/dis.csv rename to tests/semantics/dgs.csv