git-svn-id: svn://db.shs.com.ru/pip@330 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5

This commit is contained in:
2017-04-04 15:03:36 +00:00
parent 8b8ce3055e
commit d37c981d13
2 changed files with 10 additions and 5 deletions

View File

@@ -98,7 +98,8 @@
* * y0(x) - Bessel function second kind order 0 * * y0(x) - Bessel function second kind order 0
* * y1(x) - Bessel function second kind order 1 * * y1(x) - Bessel function second kind order 1
* * yn(x, n) - Bessel function second kind order n * * yn(x, n) - Bessel function second kind order n
* * random(s, f) - regular random number in range [s, f] * * random(s, a) - regular random with shift s and amp a
* * randomn(s, a) - normalize random with shift s and amp a
* * min(x0, x1, ...) - minimum of x0, x1, ... * * min(x0, x1, ...) - minimum of x0, x1, ...
* * max(x0, x1, ...) - maximum of x0, x1, ... * * max(x0, x1, ...) - maximum of x0, x1, ...
* * clamp(x, a, b) - trim x on range [a, b] * * clamp(x, a, b) - trim x on range [a, b]
@@ -123,6 +124,7 @@ PIEvaluatorContent::PIEvaluatorContent() {
addFunction("arctg", 1); addFunction("arctg", 1);
addFunction("arcctg", 1); addFunction("arcctg", 1);
addFunction("random", 2); addFunction("random", 2);
addFunction("randomn", 2);
addFunction("sin", 1); addFunction("sin", 1);
addFunction("cos", 1); addFunction("cos", 1);
addFunction("ctg", 1); addFunction("ctg", 1);
@@ -216,6 +218,7 @@ PIEvaluatorTypes::BaseFunctions PIEvaluatorContent::getBaseFunction(const PIStri
if (name == "arcctg") return PIEvaluatorTypes::bfArcctg; if (name == "arcctg") return PIEvaluatorTypes::bfArcctg;
if (name == "exp") return PIEvaluatorTypes::bfExp; if (name == "exp") return PIEvaluatorTypes::bfExp;
if (name == "random") return PIEvaluatorTypes::bfRandom; if (name == "random") return PIEvaluatorTypes::bfRandom;
if (name == "randomn") return PIEvaluatorTypes::bfRandomn;
if (name == "sh") return PIEvaluatorTypes::bfSh; if (name == "sh") return PIEvaluatorTypes::bfSh;
if (name == "ch") return PIEvaluatorTypes::bfCh; if (name == "ch") return PIEvaluatorTypes::bfCh;
if (name == "th") return PIEvaluatorTypes::bfTh; if (name == "th") return PIEvaluatorTypes::bfTh;
@@ -1160,10 +1163,11 @@ inline void PIEvaluator::execFunction(const PIEvaluatorTypes::Instruction & ci)
tmpvars[oi].value = value(ci.operators[0]).real() > 0. ? complexd_1 : complexd_0; tmpvars[oi].value = value(ci.operators[0]).real() > 0. ? complexd_1 : complexd_0;
break; break;
case PIEvaluatorTypes::bfRandom: case PIEvaluatorTypes::bfRandom:
tmp = static_cast<ldouble>(rand()) / RAND_MAX; tmpvars[oi].value = value(ci.operators[0]) + randomd() * value(ci.operators[1]);
stmp = value(ci.operators[1]) - value(ci.operators[0]);
tmpvars[oi].value = value(ci.operators[0]) + tmp * stmp;
break; break;
case PIEvaluatorTypes::bfRandomn:
tmpvars[oi].value = randomn(value(ci.operators[0]).real(), value(ci.operators[1]).real());
break;
default: break; default: break;
} }
} }

View File

@@ -38,7 +38,8 @@ namespace PIEvaluatorTypes {
}; };
enum BaseFunctions {bfUnknown, bfSin, bfCos, bfTg, bfCtg, enum BaseFunctions {bfUnknown, bfSin, bfCos, bfTg, bfCtg,
bfArcsin, bfArccos, bfArctg, bfArcctg, bfArcsin, bfArccos, bfArctg, bfArcctg,
bfExp, bfRandom, bfSh, bfCh, bfTh, bfCth, bfExp, bfRandom, bfRandomn,
bfSh, bfCh, bfTh, bfCth,
bfSqrt, bfSqr, bfPow, bfAbs, bfSqrt, bfSqr, bfPow, bfAbs,
bfLn, bfLg, bfLog, bfSign, bfLn, bfLg, bfLog, bfSign,
bfIm, bfRe, bfArg, bfLen, bfConj, bfIm, bfRe, bfArg, bfLen, bfConj,