m4_include(`SQLCommon.m4')

CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__pivotalr_crossprod_transition(
    current_state       DOUBLE PRECISION[],
    left_arr            DOUBLE PRECISION[],
    right_arr           DOUBLE PRECISION[]
) RETURNS DOUBLE PRECISION[] AS
    'MODULE_PATHNAME', '__pivotalr_crossprod_transition'
LANGUAGE C IMMUTABLE
m4_ifdef(`__HAS_FUNCTION_PROPERTIES__', `NO SQL', `');

CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__pivotalr_crossprod_merge(
    left_state          DOUBLE PRECISION[],
    right_state         DOUBLE PRECISION[]
) RETURNS DOUBLE PRECISION[] AS
    'MODULE_PATHNAME', '__pivotalr_crossprod_merge'
LANGUAGE C IMMUTABLE
m4_ifdef(`__HAS_FUNCTION_PROPERTIES__', `NO SQL', `');

DROP AGGREGATE IF EXISTS MADLIB_SCHEMA.crossprod(DOUBLE PRECISION[], DOUBLE PRECISION[]);
CREATE AGGREGATE MADLIB_SCHEMA.crossprod(
    /* left vector */   DOUBLE PRECISION[],
    /* right vector */  DOUBLE PRECISION[]
) (
    SType = DOUBLE PRECISION[],
    SFunc = MADLIB_SCHEMA.__pivotalr_crossprod_transition
    m4_ifdef(`__GREENPLUM__',
             `, PreFunc = MADLIB_SCHEMA.__pivotalr_crossprod_merge')
    -- use NULL as the initial value
);

----------------------------------------------------------------------

CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__pivotalr_crossprod_sym_transition(
    current_state       DOUBLE PRECISION[],
    arr                 DOUBLE PRECISION[]
) RETURNS DOUBLE PRECISION[] AS
    'MODULE_PATHNAME', '__pivotalr_crossprod_sym_transition'
LANGUAGE C IMMUTABLE
m4_ifdef(`__HAS_FUNCTION_PROPERTIES__', `NO SQL', `');

DROP AGGREGATE IF EXISTS MADLIB_SCHEMA.crossprod_sym(DOUBLE PRECISION[]);
CREATE AGGREGATE MADLIB_SCHEMA.crossprod_sym(
    /* vector */        DOUBLE PRECISION[]
) (
    SType = DOUBLE PRECISION[],
    SFunc = MADLIB_SCHEMA.__pivotalr_crossprod_sym_transition
    m4_ifdef(`__GREENPLUM__',
             `, PreFunc = MADLIB_SCHEMA.__pivotalr_crossprod_merge')
    -- use NULL as the initial value
);

----------------------------------------------------------------------

-- CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__pivotalr_array_sum_transition(
--     current_state       DOUBLE PRECISION[],
--     arr                 DOUBLE PRECISION[]
-- ) RETURNS DOUBLE PRECISION[] AS
--     'MODULE_PATHNAME', '__pivotalr_array_mean_transition'
-- LANGUAGE C IMMUTABLE;

-- CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__pivotalr_array_sum_merge(
--     left_state          DOUBLE PRECISION[],
--     right_state         DOUBLE PRECISION[]
-- ) RETURNS DOUBLE PRECISION[] AS
--     'MODULE_PATHNAME', '__pivotalr_array_mean_merge'
-- LANGUAGE C IMMUTABLE;

-- CREATE AGGREGATE MADLIB_SCHEMA.pivotalr_array_sum(
--     /* vector */        DOUBLE PRECISION[]
-- ) (
--     SType = DOUBLE PRECISION[],
--     m4_ifdef(`__GREENPLUM__', `PreFunc = MADLIB_SCHEMA.__pivotalr_array_sum_merge,')
--     SFunc = MADLIB_SCHEMA.__pivotalr_array_sum_transition
--     -- use NULL as the initial value
-- );
