![]() |
Isis 3 Developer Reference
|
Calculator for arrays. More...
#include <Calculator.h>
Public Member Functions | |
Calculator () | |
The code that performs math operations is designed to call a function and use the result. More... | |
virtual | ~Calculator () |
Virtual Constructor. More... | |
void | Negative () |
Pops an element, negates it, then pushes the result. More... | |
void | Multiply () |
Pops two elements, multiplies them, then pushes the product on the stack. More... | |
void | Add () |
Pops two elements, adds them, then pushes the sum on the stack. More... | |
void | Subtract () |
Pops two elements, subtracts them, then pushes the difference on the stack. More... | |
void | Divide () |
Pops two, divides them, then pushes the quotient on the stack. More... | |
void | Modulus () |
Pops two elements, mods them, then pushes the result on the stack. More... | |
void | Exponent () |
Pops two elements, computes the power then pushes the result on the stack The exponent has to be a scalar. More... | |
void | SquareRoot () |
Pop an element, compute its square root, then push the root on the stack. More... | |
void | AbsoluteValue () |
Pop an element, compute its absolute value, then push the result on the stack. More... | |
void | Log () |
Pop an element, compute its log, then push the result on the stack. More... | |
void | Log10 () |
Pop an element, compute its base 10 log, then push the result on the stack. More... | |
void | LeftShift () |
Pop the top element, then perform a left shift with zero fill. More... | |
void | RightShift () |
Pop the top element, then perform a right shift with zero fill. More... | |
void | MinimumPixel () |
Pop two elements, then push the minimum on a pixel by pixel basis back on the stack. More... | |
void | MaximumPixel () |
Pop two elements, then push the maximum on a pixel by pixel basis back on the stack. More... | |
void | MinimumLine () |
Pop one element, then push the minimum on the stack. More... | |
void | MaximumLine () |
Pop one element, then push the maximum on the stack. More... | |
void | Minimum2 () |
Not implemented in Calculator.cpp. More... | |
void | Maximum2 () |
Not implemented in Calculator.cpp. More... | |
void | GreaterThan () |
Pop two elements off the stack and compare them to see where one is greater than the other, then push the results on the stack. More... | |
void | LessThan () |
Pop two elements off the stack and compare them to see where one is less than the other, then push the results on the stack. More... | |
void | Equal () |
Pop two elements off the stack and compare them to see where one is equal to the other, then push the results on the stack. More... | |
void | LessThanOrEqual () |
Pop two elements off the stack and compare them to see where one is less than or equal to the other, then push the results on the stack. More... | |
void | GreaterThanOrEqual () |
Pop two elements off the stack and compare them to see where one is greater than or equal to the other, then push the results on the stack. More... | |
void | NotEqual () |
Pop two elements off the stack and compare them to see where one is not equal to the other, then push the results on the stack. More... | |
void | And () |
Pop two elements, AND them, then push the result on the stack. More... | |
void | Or () |
Pop two elements, OR them, then push the result on the stack. More... | |
void | Sine () |
Pops one element and push the sine. More... | |
void | Cosine () |
Pops one element and push the cosine. More... | |
void | Tangent () |
Pops one element and push the tangent. More... | |
void | Secant () |
Pops one element and push the secant. More... | |
void | Cosecant () |
Pops one element and push the cosecant. More... | |
void | Cotangent () |
Pops one element and push the cotangent. More... | |
void | Arcsine () |
Pops one element and push the arcsine. More... | |
void | Arccosine () |
Pops one element and push the arccosine. More... | |
void | Arctangent () |
Pops one element and push the arctangent. More... | |
void | Arctangent2 () |
Pops two elements and push the arctangent. More... | |
void | SineH () |
Pops one element and push the hyperbolic sine. More... | |
void | CosineH () |
Pops one element and push the hyperbolic cosine. More... | |
void | TangentH () |
Pops one element and push the hyperbolic tangent. More... | |
void | ArcsineH () |
Pops one element and push the inverse hyperbolic sine. More... | |
void | ArccosineH () |
Pops one element and push the inverse hyperbolic cosine. More... | |
void | ArctangentH () |
Pops one element and push the inverse hyperbolic tangent. More... | |
void | Push (double scalar) |
Push a scalar onto the stack. More... | |
void | Push (Buffer &buff) |
Push a buffer onto the stack. More... | |
void | Push (QVector< double > &vect) |
Push a vector onto the stack. More... | |
QVector< double > | Pop (bool keepSpecials=false) |
Pop an element off the stack. More... | |
void | PrintTop () |
Print the vector at the top of the stack. More... | |
bool | Empty () |
Check if the stack is empty. More... | |
virtual void | Clear () |
Clear out the stack. More... | |
Protected Member Functions | |
void | PerformOperation (QVector< double > &results, QVector< double >::iterator arg1Start, QVector< double >::iterator arg1End, double operation(double)) |
Performs the mathematical operations on each argument. More... | |
void | PerformOperation (QVector< double > &results, QVector< double >::iterator arg1Start, QVector< double >::iterator arg1End, QVector< double >::iterator arg2Start, QVector< double >::iterator arg2End, double operation(double, double)) |
Performs the mathematical operation on each pair of arguments, or a set of agruments against a single argument. More... | |
int | StackSize () |
Returns the current stack size. More... | |
Calculator for arrays.
This class is a RPN calculator on arrays. It uses classic push/pop/operator methods. That is, push array1, push array2, add, pop arrayResult.
Isis::Calculator::Calculator | ( | ) |
The code that performs math operations is designed to call a function and use the result.
These helper methods convert standard operators into functions which perform the desired operations. See the implementation of Calculator::Negative for an example.Constructor
|
virtual |
Virtual Constructor.
Destructor.
void Isis::Calculator::AbsoluteValue | ( | ) |
Pop an element, compute its absolute value, then push the result on the stack.
void Isis::Calculator::Add | ( | ) |
Pops two elements, adds them, then pushes the sum on the stack.
References Isis::AddOperator().
void Isis::Calculator::And | ( | ) |
Pop two elements, AND them, then push the result on the stack.
References Isis::BitwiseAndOperator().
void Isis::Calculator::Arccosine | ( | ) |
Pops one element and push the arccosine.
void Isis::Calculator::ArccosineH | ( | ) |
Pops one element and push the inverse hyperbolic cosine.
void Isis::Calculator::Arcsine | ( | ) |
Pops one element and push the arcsine.
void Isis::Calculator::ArcsineH | ( | ) |
Pops one element and push the inverse hyperbolic sine.
void Isis::Calculator::Arctangent | ( | ) |
Pops one element and push the arctangent.
void Isis::Calculator::Arctangent2 | ( | ) |
Pops two elements and push the arctangent.
void Isis::Calculator::ArctangentH | ( | ) |
Pops one element and push the inverse hyperbolic tangent.
|
virtual |
Clear out the stack.
Reimplemented in Isis::CubeCalculator.
Referenced by Isis::InlineCalculator::compile().
void Isis::Calculator::Cosecant | ( | ) |
Pops one element and push the cosecant.
References Isis::CosecantOperator().
void Isis::Calculator::Cosine | ( | ) |
Pops one element and push the cosine.
void Isis::Calculator::CosineH | ( | ) |
Pops one element and push the hyperbolic cosine.
void Isis::Calculator::Cotangent | ( | ) |
Pops one element and push the cotangent.
References Isis::CotangentOperator().
void Isis::Calculator::Divide | ( | ) |
Pops two, divides them, then pushes the quotient on the stack.
References Isis::DivideOperator().
bool Isis::Calculator::Empty | ( | ) |
Check if the stack is empty.
void Isis::Calculator::Equal | ( | ) |
Pop two elements off the stack and compare them to see where one is equal to the other, then push the results on the stack.
References Isis::EqualOperator().
void Isis::Calculator::Exponent | ( | ) |
Pops two elements, computes the power then pushes the result on the stack The exponent has to be a scalar.
Isis::iException::Math |
void Isis::Calculator::GreaterThan | ( | ) |
Pop two elements off the stack and compare them to see where one is greater than the other, then push the results on the stack.
References Isis::GreaterThanOperator().
void Isis::Calculator::GreaterThanOrEqual | ( | ) |
Pop two elements off the stack and compare them to see where one is greater than or equal to the other, then push the results on the stack.
References Isis::GreaterThanOrEqualOperator().
void Isis::Calculator::LeftShift | ( | ) |
Pop the top element, then perform a left shift with zero fill.
Isis::iException::Math |
References _FILEINFO_.
void Isis::Calculator::LessThan | ( | ) |
Pop two elements off the stack and compare them to see where one is less than the other, then push the results on the stack.
References Isis::LessThanOperator().
void Isis::Calculator::LessThanOrEqual | ( | ) |
Pop two elements off the stack and compare them to see where one is less than or equal to the other, then push the results on the stack.
References Isis::LessThanOrEqualOperator().
void Isis::Calculator::Log | ( | ) |
Pop an element, compute its log, then push the result on the stack.
Isis::iException::Math |
void Isis::Calculator::Log10 | ( | ) |
Pop an element, compute its base 10 log, then push the result on the stack.
void Isis::Calculator::Maximum2 | ( | ) |
Not implemented in Calculator.cpp.
void Isis::Calculator::MaximumLine | ( | ) |
Pop one element, then push the maximum on the stack.
References Isis::IsSpecial().
void Isis::Calculator::MaximumPixel | ( | ) |
Pop two elements, then push the maximum on a pixel by pixel basis back on the stack.
References Isis::MaximumOperator().
void Isis::Calculator::Minimum2 | ( | ) |
Not implemented in Calculator.cpp.
void Isis::Calculator::MinimumLine | ( | ) |
Pop one element, then push the minimum on the stack.
References Isis::IsSpecial().
void Isis::Calculator::MinimumPixel | ( | ) |
Pop two elements, then push the minimum on a pixel by pixel basis back on the stack.
References Isis::MinimumOperator().
void Isis::Calculator::Modulus | ( | ) |
Pops two elements, mods them, then pushes the result on the stack.
References Isis::ModulusOperator().
void Isis::Calculator::Multiply | ( | ) |
Pops two elements, multiplies them, then pushes the product on the stack.
References Isis::MultiplyOperator().
void Isis::Calculator::Negative | ( | ) |
Pops an element, negates it, then pushes the result.
References Isis::NegateOperator().
void Isis::Calculator::NotEqual | ( | ) |
Pop two elements off the stack and compare them to see where one is not equal to the other, then push the results on the stack.
References Isis::NotEqualOperator().
void Isis::Calculator::Or | ( | ) |
Pop two elements, OR them, then push the result on the stack.
References Isis::BitwiseOrOperator().
|
protected |
Performs the mathematical operations on each argument.
results | [out] The results of the performed operation |
arg1Start | The first argument to have the operation done on |
arg1End | One argument beyond the final argument to have the operation done upon |
operation | The operation to be done on all arguments |
Referenced by Isis::InlineCalculator::floatModulus().
|
protected |
Performs the mathematical operation on each pair of arguments, or a set of agruments against a single argument.
results | [out] The results of the performed operation |
arg1Start | The first of the primary argument to have the operation done on |
arg1End | One arguement beyond the final primary argument to have the operation done upon |
arg2Start | The first of the secondaty argument to have the operation done on |
arg2End | One arguement beyond the final secondary argument to have the operation done upon |
operation | The operation to be done on all pairs of arguments |
References _FILEINFO_.
QVector< double > Isis::Calculator::Pop | ( | bool | keepSpecials = false | ) |
Pop an element off the stack.
keepSpecials | If true, special pixels will be preserved; otherwise, they will be mapped to double values |
References _FILEINFO_, Isis::Hrs, Isis::Lrs, and Isis::Null.
Referenced by Isis::InlineCalculator::degrees(), Isis::InlineCalculator::evaluate(), Isis::InlineCalculator::floatModulus(), Isis::InlineCalculator::logicalAnd(), Isis::InlineCalculator::logicalOr(), and Isis::InlineCalculator::radians().
void Isis::Calculator::PrintTop | ( | ) |
Print the vector at the top of the stack.
void Isis::Calculator::Push | ( | double | scalar | ) |
Push a scalar onto the stack.
scalar | The scalar that will be pushed on the stack |
Referenced by Isis::InlineCalculator::degrees(), Isis::InlineCalculator::eConstant(), Isis::InlineCalculator::floatModulus(), Isis::InlineCalculator::logicalAnd(), Isis::InlineCalculator::logicalOr(), Isis::InlineCalculator::pi(), Isis::InlineCalculator::radians(), Isis::InlineCalculator::scalar(), and Isis::InlineCalculator::variable().
void Isis::Calculator::Push | ( | Buffer & | buff | ) |
Push a buffer onto the stack.
buff | The buffer that will be pushed on the stack |
References Isis::IsHisPixel(), Isis::IsHrsPixel(), Isis::IsLisPixel(), Isis::IsLrsPixel(), Isis::IsNullPixel(), Isis::IsSpecial(), and Isis::Buffer::size().
void Isis::Calculator::Push | ( | QVector< double > & | vect | ) |
Push a vector onto the stack.
vect | The vector that will be pushed on the stack |
void Isis::Calculator::RightShift | ( | ) |
Pop the top element, then perform a right shift with zero fill.
Isis::iException::Math |
References _FILEINFO_.
void Isis::Calculator::Secant | ( | ) |
Pops one element and push the secant.
References Isis::SecantOperator().
void Isis::Calculator::Sine | ( | ) |
Pops one element and push the sine.
void Isis::Calculator::SineH | ( | ) |
Pops one element and push the hyperbolic sine.
void Isis::Calculator::SquareRoot | ( | ) |
Pop an element, compute its square root, then push the root on the stack.
Isis::iException::Math |
|
protected |
Returns the current stack size.
Get the current stack size.
Referenced by Isis::InlineCalculator::evaluate().
void Isis::Calculator::Subtract | ( | ) |
Pops two elements, subtracts them, then pushes the difference on the stack.
References Isis::SubtractOperator().
void Isis::Calculator::Tangent | ( | ) |
Pops one element and push the tangent.
void Isis::Calculator::TangentH | ( | ) |
Pops one element and push the hyperbolic tangent.
U.S. Department of the Interior | U.S. Geological Survey ISIS | Privacy & Disclaimers | Astrogeology Research Program To contact us, please post comments and questions on the USGS Astrogeology Discussion Board To report a bug, or suggest a feature go to: ISIS Github File Modified: 07/12/2023 23:38:45 |