Fixed sech

This commit is contained in:
Michel Mastriani 2019-06-02 10:27:19 -03:00
parent c5a51c7b89
commit def996d10c

View File

@ -6686,12 +6686,14 @@ public:
virtual void Func(IteratorHelper<T>& helper, Point<T>& outPoint, QTIsaac<ISAAC_SIZE, ISAAC_INT>& rand) override virtual void Func(IteratorHelper<T>& helper, Point<T>& outPoint, QTIsaac<ISAAC_SIZE, ISAAC_INT>& rand) override
{ {
T sechsin, sechcos, sechsinh, sechcosh, sechden; T sechsin, sechcos, sechsinh, sechcosh, sechden;
sincos(helper.In.y, &sechsin, &sechcos); T x = T(M_PI / 4) * helper.In.x;
sechsinh = std::sinh(helper.In.x); T y = T(M_PI / 4) * helper.In.y;
sechcosh = std::cosh(helper.In.x); sincos(y, &sechsin, &sechcos);
sechden = 2 / Zeps(std::cos(2 * helper.In.y) + std::cosh(2 * helper.In.x)); sechsinh = std::sinh(x);
sechcosh = std::cosh(x);
sechden = 2 / Zeps(std::cos(y * 2) + std::cosh(x * 2));
helper.Out.x = m_Weight * sechden * sechcos * sechcosh; helper.Out.x = m_Weight * sechden * sechcos * sechcosh;
helper.Out.y = -(m_Weight * sechden * sechsin * sechsinh); helper.Out.y = m_Weight * sechden * sechsin * sechsinh;
helper.Out.z = DefaultZ(helper); helper.Out.z = DefaultZ(helper);
} }
@ -6701,14 +6703,16 @@ public:
string weight = WeightDefineString(); string weight = WeightDefineString();
intmax_t varIndex = IndexInXform(); intmax_t varIndex = IndexInXform();
ss << "\t{\n" ss << "\t{\n"
<< "\t\treal_t sechsin = sin(vIn.y);\n" << "\t\treal_t x = MPI / (real_t)(4.0) * vIn.x;\n"
<< "\t\treal_t sechcos = cos(vIn.y);\n" << "\t\treal_t y = MPI / (real_t)(4.0) * vIn.y;\n"
<< "\t\treal_t sechsinh = sinh(vIn.x);\n" << "\t\treal_t sechsin = sin(y);\n"
<< "\t\treal_t sechcosh = cosh(vIn.x);\n" << "\t\treal_t sechcos = cos(y);\n"
<< "\t\treal_t sechden = (real_t)(2.0) / Zeps(cos((real_t)(2.0) * vIn.y) + cosh((real_t)(2.0) * vIn.x));\n" << "\t\treal_t sechsinh = sinh(x);\n"
<< "\t\treal_t sechcosh = cosh(x);\n"
<< "\t\treal_t sechden = (real_t)(2.0) / Zeps(cos(y * (real_t)(2.0)) + cosh(x * (real_t)(2.0)));\n"
<< "\n" << "\n"
<< "\t\tvOut.x = " << weight << " * sechden * sechcos * sechcosh;\n" << "\t\tvOut.x = " << weight << " * sechden * sechcos * sechcosh;\n"
<< "\t\tvOut.y = -(" << weight << " * sechden * sechsin * sechsinh);\n" << "\t\tvOut.y = " << weight << " * sechden * sechsin * sechsinh;\n"
<< "\t\tvOut.z = " << DefaultZCl() << "\t\tvOut.z = " << DefaultZCl()
<< "\t}\n"; << "\t}\n";
return ss.str(); return ss.str();