Isis Developer Reference
Calculator.h
Go to the documentation of this file.
1
6/* SPDX-License-Identifier: CC0-1.0 */
7
8// Calculator.h
9#ifndef CALCULATOR_H_
10#define CALCULATOR_H_
11
12#include "Buffer.h"
13
14// I'm not sure how to forward declare the iterators
15#include <QVector>
16
17template<class T> class QStack;
18template<class T> class QVector;
19
20namespace Isis {
55 class Calculator {
56 public:
57 Calculator(); // Constructor
59 virtual ~Calculator();
60
61 // Math methods
62 void Negative();
63 void Multiply();
64 void Add();
65 void Subtract();
66 void Divide();
67 void Modulus();
68
69 void Exponent();
70 void SquareRoot();
71 void AbsoluteValue();
72 void Log();
73 void Log10();
74
75 void LeftShift();
76 void RightShift();
77 void MinimumPixel();
78 void MaximumPixel();
79 void MinimumLine();
80 void MaximumLine();
81 void Minimum2();
82 void Maximum2();
83 void GreaterThan();
84 void LessThan();
85 void Equal();
86 void LessThanOrEqual();
87 void GreaterThanOrEqual();
88 void NotEqual();
89 void And();
90 void Or();
91
92 void Sine();
93 void Cosine();
94 void Tangent();
95 void Secant();
96 void Cosecant();
97 void Cotangent();
98 void Arcsine();
99 void Arccosine();
100 void Arctangent();
101 void Arctangent2();
102 void SineH();
103 void CosineH();
104 void TangentH();
105 void ArcsineH();
106 void ArccosineH();
107 void ArctangentH();
108
109 // Stack methods
110 void Push(double scalar);
111 void Push(Buffer &buff);
112 void Push(QVector<double> &vect);
113 QVector<double> Pop(bool keepSpecials = false);
114 void PrintTop();
115 bool Empty();
116 virtual void Clear();
117
118 protected:
119 void PerformOperation(QVector<double> &results,
122 double operation(double));
123 void PerformOperation(QVector<double> &results,
128 double operation(double, double));
129
131 int StackSize();
132
133 private:
135 QStack< QVector<double> > * p_valStack;
136 };
137};
138
139#endif
Buffer for reading and writing cube data.
Definition Buffer.h:53
Calculator for arrays.
Definition Calculator.h:55
void LessThan()
Pop two elements off the stack and compare them to see where one is less than the other,...
Definition Calculator.cpp:602
void PrintTop()
Print the vector at the top of the stack.
Definition Calculator.cpp:989
void Cosecant()
Pops one element and push the cosecant.
Definition Calculator.cpp:737
void Arctangent2()
Pops two elements and push the arctangent.
Definition Calculator.cpp:827
void Maximum2()
Not implemented in Calculator.cpp.
void Modulus()
Pops two elements, mods them, then pushes the result on the stack.
Definition Calculator.cpp:366
void Tangent()
Pops one element and push the tangent.
Definition Calculator.cpp:727
int StackSize()
Returns the current stack size.
Definition Calculator.cpp:874
void Arctangent()
Pops one element and push the arctangent.
Definition Calculator.cpp:787
void SineH()
Pops one element and push the hyperbolic sine.
Definition Calculator.cpp:840
void Divide()
Pops two, divides them, then pushes the quotient on the stack.
Definition Calculator.cpp:354
void GreaterThanOrEqual()
Pop two elements off the stack and compare them to see where one is greater than or equal to the othe...
Definition Calculator.cpp:632
void TangentH()
Pops one element and push the hyperbolic tangent.
Definition Calculator.cpp:860
void Push(double scalar)
Push a scalar onto the stack.
Definition Calculator.cpp:893
void Cotangent()
Pops one element and push the cotangent.
Definition Calculator.cpp:757
void ArctangentH()
Pops one element and push the inverse hyperbolic tangent.
Definition Calculator.cpp:817
Calculator()
The code that performs math operations is designed to call a function and use the result.
Definition Calculator.cpp:32
void Add()
Pops two elements, adds them, then pushes the sum on the stack.
Definition Calculator.cpp:330
void Multiply()
Pops two elements, multiplies them, then pushes the product on the stack.
Definition Calculator.cpp:317
void Minimum2()
Not implemented in Calculator.cpp.
void ArcsineH()
Pops one element and push the inverse hyperbolic sine.
Definition Calculator.cpp:797
void Negative()
Pops an element, negates it, then pushes the result.
Definition Calculator.cpp:307
virtual ~Calculator()
Virtual Constructor.
Definition Calculator.cpp:39
void RightShift()
Pop the top element, then perform a right shift with zero fill.
Definition Calculator.cpp:480
void Or()
Pop two elements, OR them, then push the result on the stack.
Definition Calculator.cpp:693
void Sine()
Pops one element and push the sine.
Definition Calculator.cpp:707
virtual void Clear()
Clear out the stack.
Definition Calculator.cpp:1021
void PerformOperation(QVector< double > &results, QVector< double >::iterator arg1Start, QVector< double >::iterator arg1End, double operation(double))
Performs the mathematical operations on each argument.
Definition Calculator.cpp:1037
void Arcsine()
Pops one element and push the arcsine.
Definition Calculator.cpp:767
void LeftShift()
Pop the top element, then perform a left shift with zero fill.
Definition Calculator.cpp:441
void LessThanOrEqual()
Pop two elements off the stack and compare them to see where one is less than or equal to the other,...
Definition Calculator.cpp:647
void NotEqual()
Pop two elements off the stack and compare them to see where one is not equal to the other,...
Definition Calculator.cpp:662
void GreaterThan()
Pop two elements off the stack and compare them to see where one is greater than the other,...
Definition Calculator.cpp:587
void Arccosine()
Pops one element and push the arccosine.
Definition Calculator.cpp:777
void Log10()
Pop an element, compute its base 10 log, then push the result on the stack.
Definition Calculator.cpp:429
void MaximumLine()
Pop one element, then push the maximum on the stack.
Definition Calculator.cpp:537
void MaximumPixel()
Pop two elements, then push the maximum on a pixel by pixel basis back on the stack.
Definition Calculator.cpp:572
void Secant()
Pops one element and push the secant.
Definition Calculator.cpp:747
void MinimumLine()
Pop one element, then push the minimum on the stack.
Definition Calculator.cpp:518
void Log()
Pop an element, compute its log, then push the result on the stack.
Definition Calculator.cpp:419
void Subtract()
Pops two elements, subtracts them, then pushes the difference on the stack.
Definition Calculator.cpp:342
void Equal()
Pop two elements off the stack and compare them to see where one is equal to the other,...
Definition Calculator.cpp:617
QVector< double > Pop(bool keepSpecials=false)
Pop an element off the stack.
Definition Calculator.cpp:949
void AbsoluteValue()
Pop an element, compute its absolute value, then push the result on the stack.
Definition Calculator.cpp:407
void MinimumPixel()
Pop two elements, then push the minimum on a pixel by pixel basis back on the stack.
Definition Calculator.cpp:557
void Exponent()
Pops two elements, computes the power then pushes the result on the stack The exponent has to be a sc...
Definition Calculator.cpp:382
void ArccosineH()
Pops one element and push the inverse hyperbolic cosine.
Definition Calculator.cpp:807
void And()
Pop two elements, AND them, then push the result on the stack.
Definition Calculator.cpp:679
void SquareRoot()
Pop an element, compute its square root, then push the root on the stack.
Definition Calculator.cpp:397
void Cosine()
Pops one element and push the cosine.
Definition Calculator.cpp:717
bool Empty()
Check if the stack is empty.
Definition Calculator.cpp:1013
void CosineH()
Pops one element and push the hyperbolic cosine.
Definition Calculator.cpp:850
This is free and unencumbered software released into the public domain.
Definition Calculator.h:17
This is free and unencumbered software released into the public domain.
Definition Calculator.h:18
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16