/** @file  psUnaryOp.h
 *
 *  @brief Provides unary functions for simple matrix and vector element operations. Functions
 *  include:
 *
 *      Addition (+)
 *      Subtraction (-)
 *      Multiplication (*)
 *      Division (/)
 *      Power (^)
 *      Minimum (min)
 *      Maximum (max)
 *      Absolute value (abs)
 *      Exponent (exp)
 *      Natural Log (ln)
 *      Power of 10 (ten)
 *      Log (log)
 *      Sine (sin or dsin)
 *      Cosine (cos or dcos)
 *      Tangent (tan or dtan)
 *      Arcsine (asin or dasin)
 *      Arccosine (acos or dacos)
 *      Arctan (atan or datan)
 *
 *  Currently only vector-vector and image-image binary operations are supported.
 *
 *  @ingroup MatrixArithmetic
 *
 *  @author Ross Harman, MHPCC
 *  @author Robert DeSonia, MHPCC
 *
 *  @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
 *  @date $Date: 2005-07-12 19:12:01 $
 *
 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
 */

#ifndef PSUNARY_OP_H
#define PSUNARY_OP_H

/// @addtogroup MatrixArithmetic
/// @{


/** Perform simple unary arithmetic with images or vectors
 *
 *  Performs absolute value, exponent, natural log, power of 10, log, sine, cosine, tangent, arcsine,
 *  arccosine, or arctan. operations with images and vectors. Uses the form:
 *
 *     out = op(in),
 *
 *     Where op is: "abs", "exp", "ln", "ten", "log", "sin", "cos", "tan" "asin", "acos", "atan", "dsin",
 *                  "dcos", dtan", "dasin", "dacos", or "datan".
 *
 *  Trigometric Operations with "d" prefix use units of degrees. Those without are in radians.
 *
 *  This function only supports vector-vector or image-image opertions.
 *
 *  @return  psType* : Pointer to either psImage or psVector.
 */
psMathType* psUnaryOp(
    psPtr out,                         ///< Output type, either psImage or psVector.
    const psPtr in,                    ///< Input, either psImage or psVector.
    const char *op                     ///< Operator.
);

/// @}

#endif // #ifndef PSUNARY_OP_H
