Example #1
0
void
ex_sum(t_expr *e, long int argc, struct ex_ex *argv, struct ex_ex *optr)
{
        t_symbol *s;
        t_garray *garray;
        int size;
        t_word *wvec;
        t_float sum;
        int indx;

        if (argv->ex_type != ET_SYM)
        {
                post("expr: sum: need a table name\n");
                optr->ex_type = ET_INT;
                optr->ex_int = 0;
                return;
        }

        s = (fts_symbol_t ) argv->ex_ptr;

        ISTABLE(s, garray, size, wvec);

        for (indx = 0, sum = 0; indx < size; indx++)
                sum += wvec[indx].w_float;

        optr->ex_type = ET_FLT;
        optr->ex_flt = sum;
}
Example #2
0
void
ex_Sum(t_expr *e, long int argc, struct ex_ex *argv, struct ex_ex *optr)
{
        t_symbol *s;
        t_garray *garray;
        int size;
        t_word *wvec;
        t_float sum;
        int indx, n1, n2;

        if (argv->ex_type != ET_SYM)
        {
                post("expr: sum: need a table name\n");
                optr->ex_type = ET_INT;
                optr->ex_int = 0;
                return;
        }

        s = (fts_symbol_t ) argv->ex_ptr;

        ISTABLE(s, garray, size, wvec);

        if (argv->ex_type != ET_INT || argv[1].ex_type != ET_INT)
        {
                post("expr: Sum: boundries have to be fix values\n");
                optr->ex_type = ET_INT;
                optr->ex_int = 0;
                return;
        }
        n1 = argv->ex_int;
        n2 = argv[1].ex_int;

        for (indx = n1, sum = 0; indx < n2; indx++)
                if (indx >= 0 && indx < size)
                        sum += wvec[indx].w_float;

        optr->ex_type = ET_FLT;
        optr->ex_flt = sum;
}
Example #3
0
/*
 * ex_size -- find the size of a table
 */
void
ex_size(t_expr *e, long int argc, struct ex_ex *argv, struct ex_ex *optr)
{
        t_symbol *s;
        t_garray *garray;
        int size;
        t_word *wvec;

        if (argv->ex_type != ET_SYM)
        {
                post("expr: size: need a table name\n");
                optr->ex_type = ET_INT;
                optr->ex_int = 0;
                return;
        }

        s = (fts_symbol_t ) argv->ex_ptr;

        ISTABLE(s, garray, size, wvec);

        optr->ex_type = ET_INT;
        optr->ex_int = size;
}
Example #4
0
void
ex_Sum(t_expr *e, long int argc, struct ex_ex *argv, struct ex_ex *optr)
{
        t_symbol *s;
        t_garray *garray;
        int size;
        t_word *wvec;
        t_float sum;
        int indx, n1, n2;

        if (argv->ex_type != ET_SYM)
        {
                post("expr: sum: need a table name\n");
                optr->ex_type = ET_INT;
                optr->ex_int = 0;
                return;
        }

        s = (fts_symbol_t ) argv->ex_ptr;

        ISTABLE(s, garray, size, wvec);

                switch((++argv)->ex_type) {
                case ET_INT:
                n1 = argv->ex_int;
                        break;
                case ET_FLT:
                n1 = argv->ex_flt;
                        break;
                default:
                        post("expr: Sum: boundries have to be fix values\n");
                        optr->ex_type = ET_INT;
                        optr->ex_int = 0;
                        return;
                }
                if (n1 < 0)
                        n1 = 0;

                switch((++argv)->ex_type) {
                case ET_INT:
                n2 = argv->ex_int;
                        break;
                case ET_FLT:
                n2 = argv->ex_flt;
                        break;
                default:
                        post("expr: Sum: boundries have to be fix values\n");
                        optr->ex_type = ET_INT;
                        optr->ex_int = 0;
                        return;
                }
                if (n2 > size)
                        n2 = size;

        for (indx = n1, sum = 0; indx <= n2; indx++)
                        if (indx >= 0 && indx < size)
                                sum += wvec[indx].w_float;

        optr->ex_type = ET_FLT;
        optr->ex_flt = sum;
}