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 };