View Raw SPL
/*****************************************************************************
*                                                                            *
*   ISREAL.SPL Copyright (C) 2000, 2010 DSP Development Corporation          *
*                               All Rights Reserved                          *
*                                                                            *
*   Author:      Randy Race                                                  *
*                                                                            *
*   Synopsis:    Returns 1 if input is real                                  *
*                                                                            *
*   Revisions:   14 Jun 2000  RRR  Creation                                  *
*                30 Jul 2010  RRR  integer test, use seriestype              *
*                                                                            *
*****************************************************************************/

#include 


#if @HELP_ISREAL

    ISREAL

    Purpose: Returns 1 if input parameter is real

    Syntax:  ISREAL(val)

              val - series, scalar or string input

    Returns: The scalar 1 if the input is real or a real
             series, else 0.

    Example:
             isreal(3i)

             returns 0

    Example:

             isreal("string")

             returns 0

    Example:

             isreal(mag(fft({1, 2, 3, 4})))

             returns 1

    Remarks:
             If the input series is empty, isreal returns 0.


    See Also:
             Iscomplex

#endif



/* is input real ? */
isreal(s)
{
        local v, status = 0;

        if (argc < 1)
        {
                /* current window */
                if (length > 0)
                {
                        /* series type */
                        status = (seriestype(W0) == REAL_VALUE);
                }
        }
        else
        {
                if (not(IS_ARRAY(s)))
                {
                        /* test value for real numeric */
                        status = IS_REAL(s) || IS_INTEGER(s);
                }
                else if (length(s) > 0)
                {
                        /* see if series is all real */
                        status = (seriestype(s) == REAL_VALUE);
                }
        }

        return(status == 1);
}