View Raw SPL
/*****************************************************************************
*                                                                            *
*   ISLOGICAL.SPL Copyright (C) 2018 DSP Development Corporation             *
*                               All Rights Reserved                          *
*                                                                            *
*   Author:      Randy Race                                                  *
*                                                                            *
*   Synopsis:    Returns 1 if input is logical series                        *
*                                                                            *
*   Revisions:   23 Dec 2018  RRR  Creation                                  *
*                                                                            *
*****************************************************************************/

#include 


#if @HELP_ISLOGICAL

    ISLOGICAL

    Purpose: Returns 1 if input parameter is a logical series

    Syntax:  ISLOGICAL(val)

              val - series, scalar or string input

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

    Example:
             islogical(3i)

             returns 0

    Example:

             islogical("string")

             returns 0

    Example:

             islogical(gnorm(100, 1) > 0.5)

             returns 1

    Example:

             islogical(logical({1, 0, 1}))

             returns 1

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


    See Also:
             Iscomplex
             Isreal

#endif



/* is input logical series ? */
islogical(s)
{
        local v, status = 0;

        if (argc < 1)
        {
                s = refwindow(w0);
        }

        if (IS_ARRAY(s))
        {
                if (iswinempty(s))
                {
                        s = {};
                }

                /* see if series is all logicals */
                status = (seriestype(s) == LOGICAL_VALUE);
        }
        else
        {
                status = IS_LOGICAL(s);
        }

        return(status == 1);
}