File indexing completed on 2024-04-28 05:49:44
0001 /* 0002 SPDX-FileCopyrightText: 2023 Gabriel Barrantes <gabriel.barrantes.dev@outlook.com> 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #pragma once 0007 0008 #include "knumber.h" 0009 #include "stats.h" 0010 0011 class CalcEngine_p 0012 { 0013 public: 0014 static KNumber ArcCosDeg(const KNumber &input); 0015 static KNumber ArcCosRad(const KNumber &input); 0016 static KNumber ArcCosGrad(const KNumber &input); 0017 static KNumber ArcSinDeg(const KNumber &input); 0018 static KNumber ArcSinRad(const KNumber &input); 0019 static KNumber ArcSinGrad(const KNumber &input); 0020 static KNumber ArcTangensDeg(const KNumber &input); 0021 static KNumber ArcTangensRad(const KNumber &input); 0022 static KNumber ArcTangensGrad(const KNumber &input); 0023 static KNumber AreaCosHyp(const KNumber &input); 0024 static KNumber AreaSinHyp(const KNumber &input); 0025 static KNumber AreaTangensHyp(const KNumber &input); 0026 static KNumber Complement(const KNumber &input); 0027 static KNumber Cube(const KNumber &input); 0028 static KNumber CubeRoot(const KNumber &input); 0029 static KNumber Exp(const KNumber &input); 0030 static KNumber Exp10(const KNumber &input); 0031 static KNumber Factorial(const KNumber &input); 0032 static KNumber Gamma(const KNumber &input); 0033 static KNumber InvertSign(const KNumber &input); 0034 static KNumber Ln(const KNumber &input); 0035 static KNumber Log10(const KNumber &input); 0036 static KNumber Reciprocal(const KNumber &input); 0037 static KNumber SinDeg(const KNumber &input); 0038 static KNumber SinGrad(const KNumber &input); 0039 static KNumber SinRad(const KNumber &input); 0040 static KNumber SinHyp(const KNumber &input); 0041 static KNumber CosDeg(const KNumber &input); 0042 static KNumber CosRad(const KNumber &input); 0043 static KNumber CosGrad(const KNumber &input); 0044 static KNumber CosHyp(const KNumber &input); 0045 static KNumber TangensDeg(const KNumber &input); 0046 static KNumber TangensRad(const KNumber &input); 0047 static KNumber TangensGrad(const KNumber &input); 0048 static KNumber TangensHyp(const KNumber &input); 0049 static KNumber Square(const KNumber &input); 0050 static KNumber SquareRoot(const KNumber &input); 0051 static KNumber Percentage(const KNumber &input); 0052 0053 static KNumber ExecOr(const KNumber &left_op, const KNumber &right_op); 0054 static KNumber ExecXor(const KNumber &left_op, const KNumber &right_op); 0055 static KNumber ExecAnd(const KNumber &left_op, const KNumber &right_op); 0056 static KNumber ExecLsh(const KNumber &left_op, const KNumber &right_op); 0057 static KNumber ExecRsh(const KNumber &left_op, const KNumber &right_op); 0058 static KNumber ExecAdd(const KNumber &left_op, const KNumber &right_op); 0059 static KNumber ExecSubtract(const KNumber &left_op, const KNumber &right_op); 0060 static KNumber ExecMultiply(const KNumber &left_op, const KNumber &right_op); 0061 static KNumber ExecDivide(const KNumber &left_op, const KNumber &right_op); 0062 static KNumber ExecAddP(const KNumber &left_op, const KNumber &right_op); 0063 static KNumber ExecSubP(const KNumber &left_op, const KNumber &right_op); 0064 static KNumber ExecMultiplyP(const KNumber &left_op, const KNumber &right_op); 0065 static KNumber ExecDivideP(const KNumber &left_op, const KNumber &right_op); 0066 static KNumber ExecMod(const KNumber &left_op, const KNumber &right_op); 0067 static KNumber ExecIntDiv(const KNumber &left_op, const KNumber &right_op); 0068 static KNumber ExecBinom(const KNumber &left_op, const KNumber &right_op); 0069 static KNumber ExecPower(const KNumber &left_op, const KNumber &right_op); 0070 static KNumber ExecPwrRoot(const KNumber &left_op, const KNumber &right_op); 0071 0072 static KNumber Deg2Rad(const KNumber &x); 0073 static KNumber Gra2Rad(const KNumber &x); 0074 static KNumber Rad2Deg(const KNumber &x); 0075 static KNumber Rad2Gra(const KNumber &x); 0076 static KNumber moveIntoDegInterval(const KNumber &num); 0077 static KNumber moveIntoGradInterval(const KNumber &num); 0078 0079 static void StatClearAll(const KNumber &input); 0080 static KNumber StatCount(const KNumber &input); 0081 static void StatDataNew(const KNumber &input); 0082 static void StatDataDel(const KNumber &input); 0083 static KNumber StatMean(const KNumber &input); 0084 static KNumber StatMedian(const KNumber &input); 0085 static KNumber StatStdDeviation(const KNumber &input); 0086 static KNumber StatStdSample(const KNumber &input); 0087 static KNumber StatSum(const KNumber &input); 0088 static KNumber StatSumSquares(const KNumber &input); 0089 0090 private: 0091 static inline KStats stats; 0092 };