Isis 3 Programmer Reference
Calculator.h
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,...
void PrintTop()
Print the vector at the top of the stack.
void Cosecant()
Pops one element and push the cosecant.
void Arctangent2()
Pops two elements and push the arctangent.
void Maximum2()
Not implemented in Calculator.cpp.
void Modulus()
Pops two elements, mods them, then pushes the result on the stack.
void Tangent()
Pops one element and push the tangent.
int StackSize()
Returns the current stack size.
void Arctangent()
Pops one element and push the arctangent.
void SineH()
Pops one element and push the hyperbolic sine.
void Divide()
Pops two, divides them, then pushes the quotient on the stack.
void GreaterThanOrEqual()
Pop two elements off the stack and compare them to see where one is greater than or equal to the othe...
void TangentH()
Pops one element and push the hyperbolic tangent.
void Push(double scalar)
Push a scalar onto the stack.
void Cotangent()
Pops one element and push the cotangent.
void ArctangentH()
Pops one element and push the inverse hyperbolic tangent.
Calculator()
The code that performs math operations is designed to call a function and use the result.
void Add()
Pops two elements, adds them, then pushes the sum on the stack.
void Multiply()
Pops two elements, multiplies them, then pushes the product on the stack.
void Minimum2()
Not implemented in Calculator.cpp.
void ArcsineH()
Pops one element and push the inverse hyperbolic sine.
QStack< QVector< double > > * p_valStack
The current stack of arguments.
Definition Calculator.h:135
void Negative()
Pops an element, negates it, then pushes the result.
virtual ~Calculator()
Virtual Constructor.
void RightShift()
Pop the top element, then perform a right shift with zero fill.
void Or()
Pop two elements, OR them, then push the result on the stack.
void Sine()
Pops one element and push the sine.
virtual void Clear()
Clear out the stack.
void PerformOperation(QVector< double > &results, QVector< double >::iterator arg1Start, QVector< double >::iterator arg1End, double operation(double))
Performs the mathematical operations on each argument.
void Arcsine()
Pops one element and push the arcsine.
void LeftShift()
Pop the top element, then perform a left shift with zero fill.
void LessThanOrEqual()
Pop two elements off the stack and compare them to see where one is less than or equal to the other,...
void NotEqual()
Pop two elements off the stack and compare them to see where one is not equal to the other,...
void GreaterThan()
Pop two elements off the stack and compare them to see where one is greater than the other,...
void Arccosine()
Pops one element and push the arccosine.
void Log10()
Pop an element, compute its base 10 log, then push the result on the stack.
void MaximumLine()
Pop one element, then push the maximum on the stack.
void MaximumPixel()
Pop two elements, then push the maximum on a pixel by pixel basis back on the stack.
void Secant()
Pops one element and push the secant.
void MinimumLine()
Pop one element, then push the minimum on the stack.
void Log()
Pop an element, compute its log, then push the result on the stack.
void Subtract()
Pops two elements, subtracts them, then pushes the difference on the stack.
void Equal()
Pop two elements off the stack and compare them to see where one is equal to the other,...
QVector< double > Pop(bool keepSpecials=false)
Pop an element off the stack.
void AbsoluteValue()
Pop an element, compute its absolute value, then push the result on the stack.
void MinimumPixel()
Pop two elements, then push the minimum on a pixel by pixel basis back on the stack.
void Exponent()
Pops two elements, computes the power then pushes the result on the stack The exponent has to be a sc...
void ArccosineH()
Pops one element and push the inverse hyperbolic cosine.
void And()
Pop two elements, AND them, then push the result on the stack.
void SquareRoot()
Pop an element, compute its square root, then push the root on the stack.
void Cosine()
Pops one element and push the cosine.
bool Empty()
Check if the stack is empty.
void CosineH()
Pops one element and push the hyperbolic cosine.
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