Remove unnecessary precision variable from RationalMath operations

This commit is contained in:
Josh Koon 2019-02-21 15:45:47 -08:00
commit 41db5fa28d
7 changed files with 93 additions and 93 deletions

View file

@ -95,7 +95,7 @@ CCalcEngine::CCalcEngine(bool fPrecedence, bool fIntegerMode, CalculationManager
m_dwWordBitWidth = DwWordBitWidthFromeNumWidth(m_numwidth); m_dwWordBitWidth = DwWordBitWidthFromeNumWidth(m_numwidth);
m_maxTrigonometricNum = RationalMath::Pow(10, 100, m_precision); m_maxTrigonometricNum = RationalMath::Pow(10, 100);
SetRadixTypeAndNumWidth(DEC_RADIX, m_numwidth); SetRadixTypeAndNumWidth(DEC_RADIX, m_numwidth);
SettingsChanged(); SettingsChanged();
@ -118,7 +118,7 @@ void CCalcEngine::InitChopNumbers()
for (size_t i = 0; i < m_chopNumbers.size(); i++) for (size_t i = 0; i < m_chopNumbers.size(); i++)
{ {
auto maxVal = m_chopNumbers[i] / 2; auto maxVal = m_chopNumbers[i] / 2;
maxVal = RationalMath::Integer(maxVal, m_precision); maxVal = RationalMath::Integer(maxVal);
m_maxDecimalValueStrings[i] = maxVal.ToString(10, FMT_FLOAT, m_precision); m_maxDecimalValueStrings[i] = maxVal.ToString(10, FMT_FLOAT, m_precision);
} }

View file

@ -57,7 +57,7 @@ CalcEngine::Rational CCalcEngine::TruncateNumForIntMath(CalcEngine::Rational con
} }
// Truncate to an integer. Do not round here. // Truncate to an integer. Do not round here.
auto result = RationalMath::Integer(rat, m_precision); auto result = RationalMath::Integer(rat);
// Can be converting a dec negative number to Hex/Oct/Bin rep. Use 2's complement form // Can be converting a dec negative number to Hex/Oct/Bin rep. Use 2's complement form
// Check the range. // Check the range.

View file

@ -32,14 +32,14 @@ CalcEngine::Rational CCalcEngine::SciCalcFunctions(CalcEngine::Rational const& r
switch (op) switch (op)
{ {
case IDC_CHOP: case IDC_CHOP:
result = m_bInv ? Frac(rat, m_precision) : Integer(rat, m_precision); result = m_bInv ? Frac(rat) : Integer(rat);
break; break;
/* Return complement. */ /* Return complement. */
case IDC_COM: case IDC_COM:
if (m_radix == 10 && !m_fIntegerMode) if (m_radix == 10 && !m_fIntegerMode)
{ {
result = -(RationalMath::Integer(rat, m_precision) + 1); result = -(RationalMath::Integer(rat) + 1);
} }
else else
{ {
@ -51,7 +51,7 @@ CalcEngine::Rational CCalcEngine::SciCalcFunctions(CalcEngine::Rational const& r
case IDC_ROL: case IDC_ROL:
if (m_fIntegerMode) if (m_fIntegerMode)
{ {
result = Integer(rat, m_precision); result = Integer(rat);
uint64_t w64Bits = result.ToUInt64_t(); uint64_t w64Bits = result.ToUInt64_t();
uint64_t msb = (w64Bits >> (m_dwWordBitWidth - 1)) & 1; uint64_t msb = (w64Bits >> (m_dwWordBitWidth - 1)) & 1;
@ -66,7 +66,7 @@ CalcEngine::Rational CCalcEngine::SciCalcFunctions(CalcEngine::Rational const& r
case IDC_ROR: case IDC_ROR:
if (m_fIntegerMode) if (m_fIntegerMode)
{ {
result = Integer(rat, m_precision); result = Integer(rat);
uint64_t w64Bits = result.ToUInt64_t(); uint64_t w64Bits = result.ToUInt64_t();
uint64_t lsb = ((w64Bits & 0x01) == 1) ? 1 : 0; uint64_t lsb = ((w64Bits & 0x01) == 1) ? 1 : 0;
@ -95,76 +95,76 @@ CalcEngine::Rational CCalcEngine::SciCalcFunctions(CalcEngine::Rational const& r
case IDC_SIN: /* Sine; normal and arc */ case IDC_SIN: /* Sine; normal and arc */
if (!m_fIntegerMode) if (!m_fIntegerMode)
{ {
result = m_bInv ? ASin(rat, m_angletype, m_precision) : Sin(rat, m_angletype, m_precision); result = m_bInv ? ASin(rat, m_angletype) : Sin(rat, m_angletype);
} }
break; break;
case IDC_SINH: /* Sine- hyperbolic and archyperbolic */ case IDC_SINH: /* Sine- hyperbolic and archyperbolic */
if (!m_fIntegerMode) if (!m_fIntegerMode)
{ {
result = m_bInv ? ASinh(rat, m_precision) : Sinh(rat, m_precision); result = m_bInv ? ASinh(rat) : Sinh(rat);
} }
break; break;
case IDC_COS: /* Cosine, follows convention of sine function. */ case IDC_COS: /* Cosine, follows convention of sine function. */
if (!m_fIntegerMode) if (!m_fIntegerMode)
{ {
result = m_bInv ? ACos(rat, m_angletype, m_precision) : Cos(rat, m_angletype, m_precision); result = m_bInv ? ACos(rat, m_angletype) : Cos(rat, m_angletype);
} }
break; break;
case IDC_COSH: /* Cosine hyperbolic, follows convention of sine h function. */ case IDC_COSH: /* Cosine hyperbolic, follows convention of sine h function. */
if (!m_fIntegerMode) if (!m_fIntegerMode)
{ {
result = m_bInv ? ACosh(rat, m_precision) : Cosh(rat, m_precision); result = m_bInv ? ACosh(rat) : Cosh(rat);
} }
break; break;
case IDC_TAN: /* Same as sine and cosine. */ case IDC_TAN: /* Same as sine and cosine. */
if (!m_fIntegerMode) if (!m_fIntegerMode)
{ {
result = m_bInv ? ATan(rat, m_angletype, m_precision) : Tan(rat, m_angletype, m_precision); result = m_bInv ? ATan(rat, m_angletype) : Tan(rat, m_angletype);
} }
break; break;
case IDC_TANH: /* Same as sine h and cosine h. */ case IDC_TANH: /* Same as sine h and cosine h. */
if (!m_fIntegerMode) if (!m_fIntegerMode)
{ {
result = m_bInv ? ATanh(rat, m_precision) : Tanh(rat, m_precision); result = m_bInv ? ATanh(rat) : Tanh(rat);
} }
break; break;
case IDC_REC: /* Reciprocal. */ case IDC_REC: /* Reciprocal. */
result = Invert(rat, m_precision); result = Invert(rat);
break; break;
case IDC_SQR: /* Square */ case IDC_SQR: /* Square */
result = Pow(rat, 2, m_precision); result = Pow(rat, 2);
break; break;
case IDC_SQRT: /* Square Root */ case IDC_SQRT: /* Square Root */
result = Root(rat, 2, m_precision); result = Root(rat, 2);
break; break;
case IDC_CUBEROOT: case IDC_CUBEROOT:
case IDC_CUB: /* Cubing and cube root functions. */ case IDC_CUB: /* Cubing and cube root functions. */
result = IDC_CUBEROOT == op ? Root(rat, 3, m_precision) : Pow(rat, 3, m_precision); result = IDC_CUBEROOT == op ? Root(rat, 3) : Pow(rat, 3);
break; break;
case IDC_LOG: /* Functions for common log. */ case IDC_LOG: /* Functions for common log. */
result = Log10(rat, m_precision); result = Log10(rat);
break; break;
case IDC_POW10: case IDC_POW10:
result = Pow(10, rat, m_precision); result = Pow(10, rat);
break; break;
case IDC_LN: /* Functions for natural log. */ case IDC_LN: /* Functions for natural log. */
result = m_bInv ? Exp(rat, m_precision) : Log(rat, m_precision); result = m_bInv ? Exp(rat) : Log(rat);
break; break;
case IDC_FAC: /* Calculate factorial. Inverse is ineffective. */ case IDC_FAC: /* Calculate factorial. Inverse is ineffective. */
result = Fact(rat, m_precision); result = Fact(rat);
break; break;
case IDC_DEGREES: case IDC_DEGREES:
@ -179,13 +179,13 @@ CalcEngine::Rational CCalcEngine::SciCalcFunctions(CalcEngine::Rational const& r
{ {
auto shftRat{ m_bInv ? 100 : 60 }; auto shftRat{ m_bInv ? 100 : 60 };
Rational degreeRat = Integer(rat, m_precision); Rational degreeRat = Integer(rat);
Rational minuteRat = (rat - degreeRat) * shftRat; Rational minuteRat = (rat - degreeRat) * shftRat;
Rational secondRat = minuteRat; Rational secondRat = minuteRat;
minuteRat = Integer(minuteRat, m_precision); minuteRat = Integer(minuteRat);
secondRat = (secondRat - minuteRat) * shftRat; secondRat = (secondRat - minuteRat) * shftRat;

View file

@ -8,12 +8,12 @@
using namespace std; using namespace std;
using namespace CalcEngine; using namespace CalcEngine;
Rational RationalMath::Frac(Rational const& rat, int32_t precision) Rational RationalMath::Frac(Rational const& rat)
{ {
PRAT prat = rat.ToPRAT(); PRAT prat = rat.ToPRAT();
try try
{ {
fracrat(&prat, RATIONAL_BASE, precision); fracrat(&prat, RATIONAL_BASE, RATIONAL_PRECISION);
} }
catch (DWORD error) catch (DWORD error)
{ {
@ -27,12 +27,12 @@ Rational RationalMath::Frac(Rational const& rat, int32_t precision)
return result; return result;
} }
Rational RationalMath::Integer(Rational const& rat, int32_t precision) Rational RationalMath::Integer(Rational const& rat)
{ {
PRAT prat = rat.ToPRAT(); PRAT prat = rat.ToPRAT();
try try
{ {
intrat(&prat, RATIONAL_BASE, precision); intrat(&prat, RATIONAL_BASE, RATIONAL_PRECISION);
} }
catch (DWORD error) catch (DWORD error)
{ {
@ -46,14 +46,14 @@ Rational RationalMath::Integer(Rational const& rat, int32_t precision)
return result; return result;
} }
Rational RationalMath::Pow(Rational const& base, Rational const& pow, int32_t precision) Rational RationalMath::Pow(Rational const& base, Rational const& pow)
{ {
PRAT baseRat = base.ToPRAT(); PRAT baseRat = base.ToPRAT();
PRAT powRat = pow.ToPRAT(); PRAT powRat = pow.ToPRAT();
try try
{ {
powrat(&baseRat, powRat, RATIONAL_BASE, precision); powrat(&baseRat, powRat, RATIONAL_BASE, RATIONAL_PRECISION);
destroyrat(powRat); destroyrat(powRat);
} }
catch (DWORD error) catch (DWORD error)
@ -69,18 +69,18 @@ Rational RationalMath::Pow(Rational const& base, Rational const& pow, int32_t pr
return result; return result;
} }
Rational RationalMath::Root(Rational const& base, Rational const& root, int32_t precision) Rational RationalMath::Root(Rational const& base, Rational const& root)
{ {
return Pow(base, Invert(root, precision), precision); return Pow(base, Invert(root));
} }
Rational RationalMath::Fact(Rational const& rat, int32_t precision) Rational RationalMath::Fact(Rational const& rat)
{ {
PRAT prat = rat.ToPRAT(); PRAT prat = rat.ToPRAT();
try try
{ {
factrat(&prat, RATIONAL_BASE, precision); factrat(&prat, RATIONAL_BASE, RATIONAL_PRECISION);
} }
catch (DWORD error) catch (DWORD error)
{ {
@ -94,13 +94,13 @@ Rational RationalMath::Fact(Rational const& rat, int32_t precision)
return result; return result;
} }
Rational RationalMath::Exp(Rational const& rat, int32_t precision) Rational RationalMath::Exp(Rational const& rat)
{ {
PRAT prat = rat.ToPRAT(); PRAT prat = rat.ToPRAT();
try try
{ {
exprat(&prat, RATIONAL_BASE, precision); exprat(&prat, RATIONAL_BASE, RATIONAL_PRECISION);
} }
catch (DWORD error) catch (DWORD error)
{ {
@ -114,13 +114,13 @@ Rational RationalMath::Exp(Rational const& rat, int32_t precision)
return result; return result;
} }
Rational RationalMath::Log(Rational const& rat, int32_t precision) Rational RationalMath::Log(Rational const& rat)
{ {
PRAT prat = rat.ToPRAT(); PRAT prat = rat.ToPRAT();
try try
{ {
lograt(&prat, precision); lograt(&prat, RATIONAL_PRECISION);
} }
catch (DWORD error) catch (DWORD error)
{ {
@ -134,12 +134,12 @@ Rational RationalMath::Log(Rational const& rat, int32_t precision)
return result; return result;
} }
Rational RationalMath::Log10(Rational const& rat, int32_t precision) Rational RationalMath::Log10(Rational const& rat)
{ {
return Log(rat, precision) / Rational{ ln_ten }; return Log(rat) / Rational{ ln_ten };
} }
Rational RationalMath::Invert(Rational const& rat, int32_t precision) Rational RationalMath::Invert(Rational const& rat)
{ {
return 1 / rat; return 1 / rat;
} }
@ -149,13 +149,13 @@ Rational RationalMath::Abs(Rational const& rat)
return Rational{ Number{ 1, rat.P().Exp(), rat.P().Mantissa() }, Number{ 1, rat.Q().Exp(), rat.Q().Mantissa() } }; return Rational{ Number{ 1, rat.P().Exp(), rat.P().Mantissa() }, Number{ 1, rat.Q().Exp(), rat.Q().Mantissa() } };
} }
Rational RationalMath::Sin(Rational const& rat, ANGLE_TYPE angletype, int32_t precision) Rational RationalMath::Sin(Rational const& rat, ANGLE_TYPE angletype)
{ {
PRAT prat = rat.ToPRAT(); PRAT prat = rat.ToPRAT();
try try
{ {
sinanglerat(&prat, angletype, RATIONAL_BASE, precision); sinanglerat(&prat, angletype, RATIONAL_BASE, RATIONAL_PRECISION);
} }
catch (DWORD error) catch (DWORD error)
{ {
@ -169,13 +169,13 @@ Rational RationalMath::Sin(Rational const& rat, ANGLE_TYPE angletype, int32_t pr
return result; return result;
} }
Rational RationalMath::Cos(Rational const& rat, ANGLE_TYPE angletype, int32_t precision) Rational RationalMath::Cos(Rational const& rat, ANGLE_TYPE angletype)
{ {
PRAT prat = rat.ToPRAT(); PRAT prat = rat.ToPRAT();
try try
{ {
cosanglerat(&prat, angletype, RATIONAL_BASE, precision); cosanglerat(&prat, angletype, RATIONAL_BASE, RATIONAL_PRECISION);
} }
catch (DWORD error) catch (DWORD error)
{ {
@ -189,13 +189,13 @@ Rational RationalMath::Cos(Rational const& rat, ANGLE_TYPE angletype, int32_t pr
return result; return result;
} }
Rational RationalMath::Tan(Rational const& rat, ANGLE_TYPE angletype, int32_t precision) Rational RationalMath::Tan(Rational const& rat, ANGLE_TYPE angletype)
{ {
PRAT prat = rat.ToPRAT(); PRAT prat = rat.ToPRAT();
try try
{ {
tananglerat(&prat, angletype, RATIONAL_BASE, precision); tananglerat(&prat, angletype, RATIONAL_BASE, RATIONAL_PRECISION);
} }
catch (DWORD error) catch (DWORD error)
{ {
@ -209,13 +209,13 @@ Rational RationalMath::Tan(Rational const& rat, ANGLE_TYPE angletype, int32_t pr
return result; return result;
} }
Rational RationalMath::ASin(Rational const& rat, ANGLE_TYPE angletype, int32_t precision) Rational RationalMath::ASin(Rational const& rat, ANGLE_TYPE angletype)
{ {
PRAT prat = rat.ToPRAT(); PRAT prat = rat.ToPRAT();
try try
{ {
asinanglerat(&prat, angletype, RATIONAL_BASE, precision); asinanglerat(&prat, angletype, RATIONAL_BASE, RATIONAL_PRECISION);
} }
catch (DWORD error) catch (DWORD error)
{ {
@ -229,13 +229,13 @@ Rational RationalMath::ASin(Rational const& rat, ANGLE_TYPE angletype, int32_t p
return result; return result;
} }
Rational RationalMath::ACos(Rational const& rat, ANGLE_TYPE angletype, int32_t precision) Rational RationalMath::ACos(Rational const& rat, ANGLE_TYPE angletype)
{ {
PRAT prat = rat.ToPRAT(); PRAT prat = rat.ToPRAT();
try try
{ {
acosanglerat(&prat, angletype, RATIONAL_BASE, precision); acosanglerat(&prat, angletype, RATIONAL_BASE, RATIONAL_PRECISION);
} }
catch (DWORD error) catch (DWORD error)
{ {
@ -249,13 +249,13 @@ Rational RationalMath::ACos(Rational const& rat, ANGLE_TYPE angletype, int32_t p
return result; return result;
} }
Rational RationalMath::ATan(Rational const& rat, ANGLE_TYPE angletype, int32_t precision) Rational RationalMath::ATan(Rational const& rat, ANGLE_TYPE angletype)
{ {
PRAT prat = rat.ToPRAT(); PRAT prat = rat.ToPRAT();
try try
{ {
atananglerat(&prat, angletype, RATIONAL_BASE, precision); atananglerat(&prat, angletype, RATIONAL_BASE, RATIONAL_PRECISION);
} }
catch (DWORD error) catch (DWORD error)
{ {
@ -269,13 +269,13 @@ Rational RationalMath::ATan(Rational const& rat, ANGLE_TYPE angletype, int32_t p
return result; return result;
} }
Rational RationalMath::Sinh(Rational const& rat, int32_t precision) Rational RationalMath::Sinh(Rational const& rat)
{ {
PRAT prat = rat.ToPRAT(); PRAT prat = rat.ToPRAT();
try try
{ {
sinhrat(&prat, RATIONAL_BASE, precision); sinhrat(&prat, RATIONAL_BASE, RATIONAL_PRECISION);
} }
catch (DWORD error) catch (DWORD error)
{ {
@ -289,13 +289,13 @@ Rational RationalMath::Sinh(Rational const& rat, int32_t precision)
return result; return result;
} }
Rational RationalMath::Cosh(Rational const& rat, int32_t precision) Rational RationalMath::Cosh(Rational const& rat)
{ {
PRAT prat = rat.ToPRAT(); PRAT prat = rat.ToPRAT();
try try
{ {
coshrat(&prat, RATIONAL_BASE, precision); coshrat(&prat, RATIONAL_BASE, RATIONAL_PRECISION);
} }
catch (DWORD error) catch (DWORD error)
{ {
@ -309,13 +309,13 @@ Rational RationalMath::Cosh(Rational const& rat, int32_t precision)
return result; return result;
} }
Rational RationalMath::Tanh(Rational const& rat, int32_t precision) Rational RationalMath::Tanh(Rational const& rat)
{ {
PRAT prat = rat.ToPRAT(); PRAT prat = rat.ToPRAT();
try try
{ {
tanhrat(&prat, RATIONAL_BASE, precision); tanhrat(&prat, RATIONAL_BASE, RATIONAL_PRECISION);
} }
catch (DWORD error) catch (DWORD error)
{ {
@ -329,13 +329,13 @@ Rational RationalMath::Tanh(Rational const& rat, int32_t precision)
return result; return result;
} }
Rational RationalMath::ASinh(Rational const& rat, int32_t precision) Rational RationalMath::ASinh(Rational const& rat)
{ {
PRAT prat = rat.ToPRAT(); PRAT prat = rat.ToPRAT();
try try
{ {
asinhrat(&prat, RATIONAL_BASE, precision); asinhrat(&prat, RATIONAL_BASE, RATIONAL_PRECISION);
} }
catch (DWORD error) catch (DWORD error)
{ {
@ -349,13 +349,13 @@ Rational RationalMath::ASinh(Rational const& rat, int32_t precision)
return result; return result;
} }
Rational RationalMath::ACosh(Rational const& rat, int32_t precision) Rational RationalMath::ACosh(Rational const& rat)
{ {
PRAT prat = rat.ToPRAT(); PRAT prat = rat.ToPRAT();
try try
{ {
acoshrat(&prat, RATIONAL_BASE, precision); acoshrat(&prat, RATIONAL_BASE, RATIONAL_PRECISION);
} }
catch (DWORD error) catch (DWORD error)
{ {
@ -369,13 +369,13 @@ Rational RationalMath::ACosh(Rational const& rat, int32_t precision)
return result; return result;
} }
Rational RationalMath::ATanh(Rational const& rat, int32_t precision) Rational RationalMath::ATanh(Rational const& rat)
{ {
PRAT prat = rat.ToPRAT(); PRAT prat = rat.ToPRAT();
try try
{ {
atanhrat(&prat, precision); atanhrat(&prat, RATIONAL_PRECISION);
} }
catch (DWORD error) catch (DWORD error)
{ {

View file

@ -44,10 +44,10 @@ CalcEngine::Rational CCalcEngine::DoOperation(int operation, CalcEngine::Rationa
if (fMsb) if (fMsb)
{ {
result = Integer(result, m_precision); result = Integer(result);
auto tempRat = m_chopNumbers[m_numwidth] >> holdVal; auto tempRat = m_chopNumbers[m_numwidth] >> holdVal;
tempRat = Integer(tempRat, m_precision); tempRat = Integer(tempRat);
result |= tempRat ^ m_chopNumbers[m_numwidth]; result |= tempRat ^ m_chopNumbers[m_numwidth];
} }
@ -118,18 +118,18 @@ CalcEngine::Rational CCalcEngine::DoOperation(int operation, CalcEngine::Rationa
if (m_fIntegerMode && iFinalSign == -1) if (m_fIntegerMode && iFinalSign == -1)
{ {
result = -(Integer(result, m_precision)); result = -(Integer(result));
} }
break; break;
} }
case IDC_PWR: // Calculates rhs to the result(th) power. case IDC_PWR: // Calculates rhs to the result(th) power.
result = Pow(rhs, result, m_precision); result = Pow(rhs, result);
break; break;
case IDC_ROOT: // Calculates rhs to the result(th) root. case IDC_ROOT: // Calculates rhs to the result(th) root.
result = Root(rhs, result, m_precision); result = Root(rhs, result);
break; break;
} }
} }

View file

@ -84,7 +84,7 @@ bool CCalcEngine::TryToggleBit(CalcEngine::Rational& rat, DWORD wbitno)
return false; // ignore error cant happen return false; // ignore error cant happen
} }
Rational result = Integer(rat, m_precision); Rational result = Integer(rat);
if (result.IsZero()) if (result.IsZero())
{ {
// This is the same work around happenning in SciCalcFunctions. Ought to move to intrat function itself. // This is the same work around happenning in SciCalcFunctions. Ought to move to intrat function itself.
@ -92,8 +92,8 @@ bool CCalcEngine::TryToggleBit(CalcEngine::Rational& rat, DWORD wbitno)
result = 0; result = 0;
} }
auto pow = Pow(2, static_cast<int32_t>(wbitno), m_precision); // XOR the result with 2^wbitno power
rat = result ^ pow; rat = result ^ Pow(2, static_cast<int32_t>(wbitno));
return true; return true;
} }

View file

@ -5,31 +5,31 @@
namespace CalcEngine::RationalMath namespace CalcEngine::RationalMath
{ {
Rational Frac(Rational const& rat, int32_t precision); Rational Frac(Rational const& rat);
Rational Integer(Rational const& rat, int32_t precision); Rational Integer(Rational const& rat);
Rational Pow(Rational const& base, Rational const& pow, int32_t precision); Rational Pow(Rational const& base, Rational const& pow);
Rational Root(Rational const& base, Rational const& root, int32_t precision); Rational Root(Rational const& base, Rational const& root);
Rational Fact(Rational const& rat, int32_t precision); Rational Fact(Rational const& rat);
Rational Exp(Rational const& rat, int32_t precision); Rational Exp(Rational const& rat);
Rational Log(Rational const& rat, int32_t precision); Rational Log(Rational const& rat);
Rational Log10(Rational const& rat, int32_t precision); Rational Log10(Rational const& rat);
Rational Invert(Rational const& rat, int32_t precision); Rational Invert(Rational const& rat);
Rational Abs(Rational const& rat); Rational Abs(Rational const& rat);
Rational Sin(Rational const& rat, ANGLE_TYPE angletype, int32_t precision); Rational Sin(Rational const& rat, ANGLE_TYPE angletype);
Rational Cos(Rational const& rat, ANGLE_TYPE angletype, int32_t precision); Rational Cos(Rational const& rat, ANGLE_TYPE angletype);
Rational Tan(Rational const& rat, ANGLE_TYPE angletype, int32_t precision); Rational Tan(Rational const& rat, ANGLE_TYPE angletype);
Rational ASin(Rational const& rat, ANGLE_TYPE angletype, int32_t precision); Rational ASin(Rational const& rat, ANGLE_TYPE angletype);
Rational ACos(Rational const& rat, ANGLE_TYPE angletype, int32_t precision); Rational ACos(Rational const& rat, ANGLE_TYPE angletype);
Rational ATan(Rational const& rat, ANGLE_TYPE angletype, int32_t precision); Rational ATan(Rational const& rat, ANGLE_TYPE angletype);
Rational Sinh(Rational const& rat, int32_t precision); Rational Sinh(Rational const& rat);
Rational Cosh(Rational const& rat, int32_t precision); Rational Cosh(Rational const& rat);
Rational Tanh(Rational const& rat, int32_t precision); Rational Tanh(Rational const& rat);
Rational ASinh(Rational const& rat, int32_t precision); Rational ASinh(Rational const& rat);
Rational ACosh(Rational const& rat, int32_t precision); Rational ACosh(Rational const& rat);
Rational ATanh(Rational const& rat, int32_t precision); Rational ATanh(Rational const& rat);
} }