You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@madlib.apache.org by ok...@apache.org on 2018/06/26 18:31:10 UTC

[1/5] madlib git commit: Madpack: Add dev-check and a compact install-check.

Repository: madlib
Updated Branches:
  refs/heads/master b8031a03f -> 4ed8b35e0


http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/tsa/test/arima.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/tsa/test/arima.ic.sql_in b/src/ports/postgres/modules/tsa/test/arima.ic.sql_in
new file mode 100644
index 0000000..b61b599
--- /dev/null
+++ b/src/ports/postgres/modules/tsa/test/arima.ic.sql_in
@@ -0,0 +1,53 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+/* -----------------------------------------------------------------------------
+ * ARIMA Install Check.
+ * -------------------------------------------------------------------------- */
+
+
+DROP TABLE IF EXISTS "ARIMA_beer";
+CREATE TABLE "ARIMA_beer" ("TIME_id" integer NOT NULL, "VALUE" double precision NOT NULL );
+COPY "ARIMA_beer" ("TIME_id", "VALUE") FROM stdin WITH DELIMITER '|';
+1  | 93.2
+2  | 96.0
+3  | 95.2
+4  | 94.2
+\.
+
+-- ARIMA train
+-------------------------------------------------------------------------
+-- all parameters except optimizer_params
+drop table if exists arima_train_result_table_214712398172490837;
+drop table if exists arima_train_result_table_214712398172490837_summary;
+drop table if exists arima_train_result_table_214712398172490837_residual;
+select arima_train('"ARIMA_beer"', 'arima_train_result_table_214712398172490837',
+				   '"TIME_id"', '"VALUE"', NULL, False, ARRAY[1, 1, 1]);
+
+-------------------------------------------------------------------------
+drop table if exists arima_forecast_result_table_214712398172490837;
+select arima_forecast('arima_train_result_table_214712398172490837',
+					  'arima_forecast_result_table_214712398172490837',
+					  1);
+
+
+
+

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/utilities/test/drop_madlib_temp.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/utilities/test/drop_madlib_temp.ic.sql_in b/src/ports/postgres/modules/utilities/test/drop_madlib_temp.ic.sql_in
new file mode 100644
index 0000000..7879385
--- /dev/null
+++ b/src/ports/postgres/modules/utilities/test/drop_madlib_temp.ic.sql_in
@@ -0,0 +1,23 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+-- cleanup
+SELECT cleanup_madlib_temp_tables(quote_ident(current_schema()));

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/utilities/test/encode_categorical.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/utilities/test/encode_categorical.ic.sql_in b/src/ports/postgres/modules/utilities/test/encode_categorical.ic.sql_in
new file mode 100644
index 0000000..5a6d1e9
--- /dev/null
+++ b/src/ports/postgres/modules/utilities/test/encode_categorical.ic.sql_in
@@ -0,0 +1,47 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+---------------------------------------------------------------------------
+-- Build training dataset:
+---------------------------------------------------------------------------
+DROP TABLE IF EXISTS abalone;
+CREATE TABLE abalone (
+    id serial,
+    sex character varying,
+    length double precision,
+    diameter double precision,
+    height double precision,
+    "Class" integer
+);
+
+COPY abalone (sex, length, diameter, height, "Class") FROM stdin WITH DELIMITER '|' NULL as '@';
+M|0.455|0.365|0.095|0
+F|0.53|0.42|0.135|0
+M|0.5|0.400|0.13|1
+F|0.565|0.44|0.155|2
+I|0.355|0.280|0.085|2
+\.
+
+select encode_categorical_variables('abalone', 'abalone_out6',
+                                           'sex, "Class"', '',
+                                           'id', '3', 'class=1',
+                                           true, 'svec', true
+                                           );

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/utilities/test/minibatch_preprocessing.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/utilities/test/minibatch_preprocessing.ic.sql_in b/src/ports/postgres/modules/utilities/test/minibatch_preprocessing.ic.sql_in
new file mode 100644
index 0000000..3ecbfd2
--- /dev/null
+++ b/src/ports/postgres/modules/utilities/test/minibatch_preprocessing.ic.sql_in
@@ -0,0 +1,50 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+
+DROP TABLE IF EXISTS minibatch_preprocessing_input;
+CREATE TABLE minibatch_preprocessing_input(
+    sex TEXT,
+    id SERIAL NOT NULL,
+    length DOUBLE PRECISION,
+    diameter DOUBLE PRECISION,
+    height DOUBLE PRECISION,
+    whole DOUBLE PRECISION,
+    shucked DOUBLE PRECISION,
+    viscera DOUBLE PRECISION,
+    shell DOUBLE PRECISION,
+    rings INTEGER);
+
+INSERT INTO minibatch_preprocessing_input(id,sex,length,diameter,height,whole,shucked,viscera,shell,rings) VALUES
+(1040,'F',0.66,0.475,0.18,1.3695,0.641,0.294,0.335,6),
+(3984,'F',0.585,0.45,0.125,0.874,0.3545,0.2075,0.225,6),
+(2551,'I',0.28,0.22,0.08,0.1315,0.066,0.024,0.03,5),
+(516,'M',0.27,0.195,0.08,0.1,0.0385,0.0195,0.03,6);
+
+-- check if an integer dependent var is being one-hot-encoded
+DROP TABLE IF EXISTS minibatch_preprocessing_out, minibatch_preprocessing_out_standardization, minibatch_preprocessing_out_summary;
+SELECT minibatch_preprocessor('minibatch_preprocessing_input',
+                              'minibatch_preprocessing_out',
+                              'rings',
+                              'ARRAY[diameter,height,whole,shucked,viscera,shell]',
+                              NULL,
+                              4,
+                              TRUE);

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/utilities/test/path.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/utilities/test/path.ic.sql_in b/src/ports/postgres/modules/utilities/test/path.ic.sql_in
new file mode 100644
index 0000000..141b6b9
--- /dev/null
+++ b/src/ports/postgres/modules/utilities/test/path.ic.sql_in
@@ -0,0 +1,59 @@
+/* ----------------------------------------------------------------------- */
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @file path.sql_in
+ *
+ * @brief SQL functions for pathing functions
+ * @date Sep 2015
+ *
+ */
+/* ----------------------------------------------------------------------- */
+
+DROP TABLE IF EXISTS "Weblog", "Path_output", "Path_output_tuples" CASCADE;
+CREATE TABLE "Weblog" (event_timestamp TIMESTAMP,
+            user_id INT,
+            age_group INT,
+            income_group INT,
+            gender TEXT,
+            region TEXT,
+            household_size INT,
+            "Click_event" INT,
+            purchase_event INT,
+            revenue FLOAT,
+            "Margin" FLOAT);
+
+INSERT INTO "Weblog" VALUES
+(to_timestamp('04/14/2012 23:43:00', 'MM/DD/YYYY HH24:MI:SS'), 102201, 3, 3, 'Female', 'East', 3, 1, 1, 112, 36),
+(to_timestamp('04/14/2012 23:56:00', 'MM/DD/YYYY HH24:MI:SS'), 101881, 2, 4, 'Male', 'West', 5, 0, 0, 0, 0),
+(to_timestamp('04/15/2012 01:04:00', 'MM/DD/YYYY HH24:MI:SS'), 100821, 1, 4, 'Unknown', 'West', 3, 0, 0, 0, 0),
+(to_timestamp('04/16/2012 23:57:00', 'MM/DD/YYYY HH24:MI:SS'), 101331, 2, 4, 'Female', 'East', 5, 1, 1, 456, 77);
+
+/*
+SELECT * FROM weblog ORDER BY event_timestamp ASC;
+*/
+SELECT path(
+     '"Weblog"',              -- Name of the table
+     '"Path_output"',         -- Table name to store the path results
+     'user_id, age_group > 1, income_group > 1',             -- Partition expression to group the data table
+     'event_timestamp ASC',         -- Order expression to sort the tuples of the data table
+     'I:="Click_event"=0 AND purchase_event=0, Click:="Click_event"=1 AND purchase_event=0, Conv:=purchase_event=1',    -- Definition of various symbols used in the pattern definition
+     'I(click){1}(CONV){1}',        -- Definition of the path pattern to search for
+     'COUNT(*)'             -- Aggregate/window functions to be applied on the matched paths
+    ,TRUE
+     );

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/utilities/test/pivot.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/utilities/test/pivot.ic.sql_in b/src/ports/postgres/modules/utilities/test/pivot.ic.sql_in
new file mode 100644
index 0000000..7fda173
--- /dev/null
+++ b/src/ports/postgres/modules/utilities/test/pivot.ic.sql_in
@@ -0,0 +1,44 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+DROP TABLE IF EXISTS "PIVSET";
+
+CREATE TABLE "PIVSET"(
+                  id INTEGER,
+                  piv INTEGER,
+                  val INTEGER
+                );
+
+INSERT INTO "PIVSET" VALUES
+    (0, 10, 1),
+    (0, 10, 2),
+    (0, 20, 3),
+    (1, 20, 4),
+    (1, 30, 5),
+    (1, 30, 6),
+    (1, 10, 7),
+    (NULL, 10, 8),
+    (0, NULL, 9),
+    (0, 10, NULL);
+
+DROP TABLE IF EXISTS pivout;
+SELECT pivot('"PIVSET"', 'pivout', 'id', 'piv', 'val');
+SELECT * FROM pivout;

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/utilities/test/sessionize.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/utilities/test/sessionize.ic.sql_in b/src/ports/postgres/modules/utilities/test/sessionize.ic.sql_in
new file mode 100644
index 0000000..6c5f870
--- /dev/null
+++ b/src/ports/postgres/modules/utilities/test/sessionize.ic.sql_in
@@ -0,0 +1,51 @@
+/* ----------------------------------------------------------------------- */
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @file sessionize.sql_in
+ *
+ * @brief SQL functions for sessionizatino functions
+ * @date May 2016
+ *
+ */
+/* ----------------------------------------------------------------------- */
+
+CREATE TABLE eventlog_installchk (
+            event_timestamp TIMESTAMP,
+            "user id" INT,
+            original_session_id INT,
+            page TEXT,
+            revenue FLOAT,
+            row INT,
+            part_expr BOOLEAN);
+INSERT INTO eventlog_installchk VALUES
+(to_timestamp('04/15/2015 01:03:00', 'MM/DD/YYYY HH:MI:SS'), 100821, 1, 'LANDING', 0, 1, 'f'),
+(to_timestamp('04/15/2015 01:05:00', 'MM/DD/YYYY HH:MI:SS'), 100821, 1, 'WINE', 0, 1, 'f'),
+(to_timestamp('04/15/2016 02:17:00', 'MM/DD/YYYY HH:MI:SS'), 103711, 1, 'BEER', 0, 1, 't'),
+(to_timestamp('04/15/2016 02:21:00', 'MM/DD/YYYY HH:MI:SS'), 103711, 2, 'LANDING', 0, 1, 't'),
+(to_timestamp('04/15/2016 02:31:0.05', 'MM/DD/YYYY HH:MI:SS'), 103711, 3, 'WINE', 0, 1, 't');
+
+
+SELECT sessionize(
+        'eventlog_installchk', -- Name of the input table
+        'sessionize_output_v', -- Name of the output table
+        '"user id"', -- Partition expression to group the data
+        'event_timestamp', -- Order expression to sort the tuples of the data table
+        '0:3:0' -- Max time that can elapse between consecutive rows to be considered part of the same session
+    );
+

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/utilities/test/text_utilities.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/utilities/test/text_utilities.ic.sql_in b/src/ports/postgres/modules/utilities/test/text_utilities.ic.sql_in
new file mode 100644
index 0000000..d8a1e41
--- /dev/null
+++ b/src/ports/postgres/modules/utilities/test/text_utilities.ic.sql_in
@@ -0,0 +1,53 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+---------------------------------------------------------------------------
+-- Build training dataset:
+---------------------------------------------------------------------------
+DROP TABLE IF EXISTS training;
+CREATE TABLE training
+(
+    docid INT4,
+    wordid INT4,
+    count INT4
+);
+
+INSERT INTO training VALUES
+(0, 0, 2),(0, 3, 2),(0, 5, 1),(9, 18, 1),(9, 19, 1);
+
+
+DROP TABLE IF EXISTS documents;
+CREATE TABLE documents AS
+SELECT docid, array_agg(wordid) as words
+FROM (
+      SELECT docid, wordid, generate_series(1, count)
+      FROM training
+) q
+GROUP BY docid;
+
+DROP TABLE IF EXISTS output_terms;
+DROP TABLE IF EXISTS output_terms_vocabulary;
+SELECT term_frequency('documents', 'docid', 'words', 'output_terms', FALSE);
+
+
+
+
+

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/validation/test/cross_validation.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/validation/test/cross_validation.ic.sql_in b/src/ports/postgres/modules/validation/test/cross_validation.ic.sql_in
new file mode 100644
index 0000000..118e2d7
--- /dev/null
+++ b/src/ports/postgres/modules/validation/test/cross_validation.ic.sql_in
@@ -0,0 +1,64 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+/* -----------------------------------------------------------------------------
+ * Test Cross Validation (for ridge regression)
+ * -------------------------------------------------------------------------- */
+
+CREATE TABLE "Lin_housing_wi" ("X" float8[], "Y" float8);
+COPY "Lin_housing_wi" FROM STDIN NULL '?';
+{1,0.00632,18.00,2.310,0,0.5380,6.5750,65.20,4.0900,1,296.0,15.30,396.90,4.98}	24.00
+{1,0.02731,0.00,7.070,0,0.4690,6.4210,78.90,4.9671,2,242.0,17.80,396.90,9.14}	21.60
+{1,0.02729,0.00,7.070,0,0.4690,7.1850,61.10,4.9671,2,242.0,17.80,392.83,4.03}	34.70
+{1,0.03237,0.00,2.180,0,0.4580,6.9980,45.80,6.0622,3,222.0,18.70,394.63,2.94}	33.40
+{1,0.10959,0.00,11.930,0,0.5730,6.7940,89.30,2.3889,1,273.0,21.00,393.45,6.48}	22.00
+{1,0.04741,0.00,11.930,0,0.5730,6.0300,80.80,2.5050,1,273.0,21.00,396.90,7.88}	11.90
+\.
+
+SELECT cross_validation_general(
+    -- Training function
+    'cv_linregr_train',
+    ARRAY['%data%', '"X"', '"Y"', '%model%']::varchar[],
+    '{varchar, varchar, varchar, varchar}'::varchar[],
+    --
+    -- No free parameter to scan
+    NULL::varchar,
+    NULL,
+    --
+    -- Prediction function
+    'cv_linregr_predict',
+    ARRAY['%model%', '%data%', '"X"', '%id%', '%prediction%']::varchar[],
+    '{varchar, varchar, varchar, varchar, varchar}'::varchar[],
+    --
+    -- Error measuring function
+    'mse_error',
+    ARRAY['%prediction%', '%data%', '%id%', '"Y"', '%error%']::varchar[],
+    '{varchar, varchar, varchar, varchar, varchar}'::varchar[],
+    --
+    '"Lin_housing_wi"', -- Data set
+    NULL, -- No unique ID associated with rows
+    False, -- If there is a unique ID, is it random?
+    --
+    'cv_linregr_result', -- Result
+    ARRAY['"X"', '"Y"']::varchar[], -- Data columns
+    2  -- CV fold
+);
+


[2/5] madlib git commit: Madpack: Add dev-check and a compact install-check.

Posted by ok...@apache.org.
http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/lda/test/lda.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/lda/test/lda.ic.sql_in b/src/ports/postgres/modules/lda/test/lda.ic.sql_in
new file mode 100644
index 0000000..5931ba7
--- /dev/null
+++ b/src/ports/postgres/modules/lda/test/lda.ic.sql_in
@@ -0,0 +1,95 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+---------------------------------------------------------------------------
+-- Rules:
+-- ------
+-- 1) Any DB objects should be created w/o schema prefix,
+--    since this file is executed in a separate schema context.
+-- 2) There should be no DROP statements in this script, since
+--    all objects created in the default schema will be cleaned-up outside.
+---------------------------------------------------------------------------
+
+m4_include(`SQLCommon.m4')
+
+---------------------------------------------------------------------------
+-- Build vocabulary:
+---------------------------------------------------------------------------
+CREATE TABLE lda_vocab(wordid INT4, word TEXT);
+
+INSERT INTO lda_vocab VALUES
+(0, 'code'), (1, 'data'), (2, 'graph'), (3, 'image'), (4, 'input'), (5,
+'layer'), (6, 'learner'), (7, 'loss'), (8, 'model'), (9, 'network'), (10,
+'neuron'), (11, 'ob'), (13, 'rate'), (14, 'set'), (15,
+'signal'), (16, 'sparse'), (17, 'spatiaject'), (12, 'outputl'), (18, 'system'), (19, 'training');
+
+---------------------------------------------------------------------------
+-- Build training dataset:
+---------------------------------------------------------------------------
+CREATE TABLE lda_training
+(
+    docid INT4,
+    wordid INT4,
+    count INT4
+);
+
+INSERT INTO lda_training VALUES
+(0, 0, 2),(0, 3, 2),(0, 5, 1),(0, 7, 1),(0, 8, 1),(0, 9, 1),(0, 11, 1),(0, 13,
+1), (1, 0, 1),(1, 3, 1),(1, 4, 1),(1, 5, 1),(1, 6, 1),(1, 7, 1),(1, 10, 1),(1,
+14, 1),(1, 17, 1),(1, 18, 1), (2, 4, 2),(2, 5, 1),(2, 6, 2),(2, 12, 1),(2, 13,
+1),(2, 15, 1),(2, 18, 2), (3, 0, 1),(3, 1, 2),(3, 12, 3),(3, 16, 1),(3, 17,
+2),(3, 19, 1), (4, 1, 1),(4, 2, 1),(4, 3, 1),(4, 5, 1),(4, 6, 1),(4, 10, 1),(4,
+11, 1),(4, 14, 1),(4, 18, 1),(4, 19, 1), (5, 0, 1),(5, 2, 1),(5, 5, 1),(5, 7,
+1),(5, 10, 1),(5, 12, 1),(5, 16, 1),(5, 18, 1),(5, 19, 2), (6, 1, 1),(6, 3,
+1),(6, 12, 2),(6, 13, 1),(6, 14, 2),(6, 15, 1),(6, 16, 1),(6, 17, 1), (7, 0,
+1),(7, 2, 1),(7, 4, 1),(7, 5, 1),(7, 7, 2),(7, 8, 1),(7, 11, 1),(7, 14, 1),(7,
+16, 1), (8, 2, 1),(8, 4, 4),(8, 6, 2),(8, 11, 1),(8, 15, 1),(8, 18, 1),
+(9, 0, 1),(9, 1, 1),(9, 4, 1),(9, 9, 2),(9, 12, 2),(9, 15, 1),(9, 18, 1),(9,
+19, 1);
+
+
+CREATE TABLE lda_testing
+(
+    docid INT4,
+    wordid INT4,
+    count INT4
+);
+
+INSERT INTO lda_testing VALUES
+(0, 0, 2),(0, 8, 1),(0, 9, 1),(0, 10, 1),(0, 12, 1),(0, 15, 2),(0, 18, 1),(0,
+19, 1), (1, 0, 1),(1, 2, 1),(1, 5, 1),(1, 7, 1),(1, 12, 2),(1, 13, 1),(1, 16,
+1),(1, 17, 1),(1, 18, 1), (2, 0, 1),(2, 1, 1),(2, 2, 1),(2, 3, 1),(2, 4, 1),(2,
+5, 1),(2, 6, 1),(2, 12, 1),(2, 14, 1),(2, 18, 1), (3, 2, 2),(3, 6, 2),(3, 7,
+1),(3, 9, 1),(3, 11, 2),(3, 14, 1),(3, 15, 1), (4, 1, 1),(4, 2, 2),(4, 3,
+1),(4, 5, 2),(4, 6, 1),(4, 11, 1),(4, 18, 2);
+
+---------------------------------------------------------------------------
+-- Test
+---------------------------------------------------------------------------
+SELECT lda_train(
+    'lda_training',
+    'lda_model',
+    'lda_output_data',
+    20, 5, 2, 10, 0.01);
+
+
+SELECT lda_parse_model(model, voc_size, topic_num) AS parsed_model
+FROM lda_model;

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/linalg/test/linalg.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/linalg/test/linalg.ic.sql_in b/src/ports/postgres/modules/linalg/test/linalg.ic.sql_in
new file mode 100644
index 0000000..2c1c579
--- /dev/null
+++ b/src/ports/postgres/modules/linalg/test/linalg.ic.sql_in
@@ -0,0 +1,125 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+/* -----------------------------------------------------------------------------
+ * Test linear-algebra operations.
+ * -------------------------------------------------------------------------- */
+
+\set p 3
+
+SELECT
+    closest_columns(
+        ARRAY[
+            ARRAY[0,0],
+            ARRAY[0,1],
+            ARRAY[1,0],
+            ARRAY[0,1]
+        ]::DOUBLE PRECISION[][],
+        ARRAY[.5,.5]::DOUBLE PRECISION[],
+        2::INTEGER
+        );
+
+CREATE TABLE some_vectors (
+    id SERIAL,
+    x FLOAT8[]
+);
+
+INSERT INTO some_vectors(x) VALUES
+(ARRAY[1,0,0,0]),
+(ARRAY[0,1,0,0]),
+(ARRAY[0,0,1,0]),
+(ARRAY[0,0,0,2]);
+
+
+SELECT matrix_column(matrix, 0), matrix_column(matrix, 1)
+FROM (
+    SELECT ARRAY[ARRAY[1,2],ARRAY[3,4]]::DOUBLE PRECISION[][] AS matrix
+) ignored;
+
+SELECT index_2d_array(ARRAY[ARRAY[1,2],ARRAY[3,4]]::float8[], 2);
+---------------------------------------------------------------------------
+SELECT * FROM deconstruct_2d_array(array[[1,2],[5,6]]) as k(id int, a float8, b float8);
+
+---------------------------------------------------------------------------
+-- user doc examples
+---------------------------------------------------------------------------
+CREATE TABLE two_vectors(
+    id  integer,
+    a   float8[],
+    b   float8[]);
+INSERT INTO two_vectors VALUES
+(1, '{3,4}', '{4,5}'),
+(2, '{1,1,0,-4,5,3,4,106,14}', '{1,1,0,6,-3,1,2,92,2}');
+
+SELECT
+    id,
+    norm1(a),
+    norm2(a)
+FROM two_vectors
+WHERE id = 2;
+
+SELECT
+    id,
+    dist_norm1(a, b),
+    dist_norm2(a, b),
+    dist_pnorm(a, b, 5),
+    dist_inf_norm(a, b),
+    squared_dist_norm2(a, b),
+    dist_angle(a, b),
+    dist_tanimoto(a, b)
+FROM two_vectors
+WHERE id = 2;
+
+---------------------------------------------------------------------------
+CREATE TABLE matrix(
+    id  integer,
+    m   float8[]);
+INSERT INTO matrix VALUES
+(1, '{{4,5},{3,5},{9,0}}');
+
+SELECT
+    get_row(m, 1) AS row_1,
+    get_row(m, 2) AS row_2,
+    get_row(m, 3) AS row_3,
+    get_col(m, 1) AS col_1,
+    get_col(m, 2) AS col_2
+FROM matrix;
+
+---------------------------------------------------------------------------
+CREATE TABLE vector(
+    id  integer,
+    v   float8[]);
+INSERT INTO vector VALUES
+(1, '{4,3}'),
+(2, '{8,6}'),
+(3, '{12,9}');
+
+SELECT
+    avg(v),
+    normalized_avg(v),
+    matrix_agg(v)
+FROM vector;
+-------------------------------------------------------------------------
+
+-- adding 1.0 on left and right to avoid division by zero
+SELECT dist_jaccard(ARRAY['a', 'b', 'c']::TEXT[], ARRAY['a', 'b', 'c']::TEXT[]);
+
+-------------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/linalg/test/matrix_ops.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/linalg/test/matrix_ops.ic.sql_in b/src/ports/postgres/modules/linalg/test/matrix_ops.ic.sql_in
new file mode 100644
index 0000000..3736e53
--- /dev/null
+++ b/src/ports/postgres/modules/linalg/test/matrix_ops.ic.sql_in
@@ -0,0 +1,121 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+m4_include(`SQLCommon.m4')
+
+CREATE TABLE s(
+    row_id INT8,
+    col_id INT8,
+    val INT4
+)
+m4_ifdef(`__GREENPLUM__',
+`WITH (APPENDONLY=TRUE) DISTRIBUTED BY (row_id)');
+
+INSERT INTO s VALUES(1, 1, 1) , (1, 2, 3) , (2, 1, 4) , (2, 2, 5) , (3, 1, 7) ,
+                    (3, 2, 8), (3, 3, 0);
+
+DROP TABLE IF EXISTS s_t;
+SELECT matrix_trans('s', 'row=row_id, col=col_id, val=val', 's_t', 'row=row_num, col=col_num, val=val');
+
+DROP TABLE IF EXISTS d;
+SELECT matrix_densify('s', 'row=row_id, col=col_id, val=val', 'd');
+
+DROP TABLE IF EXISTS s;
+SELECT matrix_sparsify('d', 'row=row_id', 's', 'row=row_id, col=col_id, val=val');
+
+DROP TABLE IF EXISTS s2;
+SELECT matrix_mult('s', 'row=row_id, col=col_id, val=val, trans=false',
+                   's_t', 'row=row_num, col=col_num, val=val, trans=false', 's2');
+
+DROP TABLE IF EXISTS dd;
+SELECT matrix_max('d', 'row=row_id', 1, 'dd', true);
+
+DROP TABLE IF EXISTS dd;
+SELECT matrix_min('d', 'row=row_id', 2, 'dd', true);
+
+SELECT matrix_extract_col('d', 'row=row_id', 3);
+SELECT matrix_extract_row('s', 'row=row_id, col=col_id, val=val', 1);
+
+DROP TABLE IF EXISTS d_d;
+SELECT matrix_square('d', 'row=row_id', 'd_d');
+
+DROP TABLE IF EXISTS s3;
+SELECT matrix_add('s', 'row=row_id, col=col_id, val=val',
+                  's', 'row=row_id, col=col_id, val=val',
+                  's3');
+
+DROP TABLE IF EXISTS s3;
+SELECT matrix_sub('s', 'row=row_id, col=col_id, val=val',
+                  's', 'row=row_id, col=col_id, val=val',
+                  's3');
+
+DROP TABLE IF EXISTS s3;
+SELECT matrix_elem_mult('s', 'row=row_id, col=col_id, val=val',
+                        's', 'row=row_id, col=col_id, val=val',
+                        's3');
+
+CREATE TABLE b(
+    row_id INT4,
+    col_id INT4,
+    block INT4[]
+)
+m4_ifdef(`__GREENPLUM__',
+`WITH (APPENDONLY=TRUE) DISTRIBUTED BY (row_id)');
+
+INSERT INTO b VALUES(1, 1, array[[1,2], [3,4]]);
+INSERT INTO b VALUES(2, 1, array[[5,6], [7,8]]);
+INSERT INTO b VALUES(3, 1, array[[9,10]]);
+
+
+SELECT matrix_mem_trans(array[[1,2,3], [4,5,6]]);
+SELECT matrix_mem_mult(array[[1,2,3], [4,5,6]], array[[1,4],[2,5],[3,6]]);
+
+DROP TABLE if exists b_t;
+SELECT matrix_block_trans('b', 'row=row_id, col=col_id, val=block', 'b_t', NULL);
+
+DROP TABLE if exists b2;
+SELECT matrix_block_square('b', 'row=row_id, col=col_id, val=block', 'b2', NULL);
+
+DROP TABLE if exists b2;
+SELECT matrix_block_mult('b', 'row=row_id, col=col_id, val=block',
+                         'b_t', 'row=row_id, col=col_id, val=block',
+                         'b2', NULL);
+
+DROP TABLE if exists d_b;
+SELECT matrix_blockize('d', 'row=row_id', 2, 2, 'd_b');
+
+DROP TABLE if exists d_r;
+SELECT matrix_unblockize('d_b', 'row=row_id', 'd_r', NULL);
+
+
+
+CREATE TABLE random_matrix(row_id INTEGER, row_vec DOUBLE PRECISION[]);
+INSERT INTO random_matrix VALUES
+  (1, array[2, 2, 0]), (2, array[15, 2, 0]), (3, array[0, 5, 2]);
+
+SELECT array_to_1d(__matrix_dense_inverse(3, row_id - 1, row_vec)) as result
+FROM random_matrix;
+
+CREATE TABLE random_sparse_matrix(row_id INTEGER, col_id INTEGER, val DOUBLE PRECISION);
+INSERT INTO random_sparse_matrix VALUES
+  (1, 1, 2), (1, 2, 2), (2, 1, 15), (2, 2, 2), (3, 2, 5), (3, 3, 2);
+SELECT array_to_1d(__matrix_sparse_inverse(3, 3, row_id - 1, col_id - 1, val)) as result
+FROM random_sparse_matrix

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/linalg/test/svd.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/linalg/test/svd.ic.sql_in b/src/ports/postgres/modules/linalg/test/svd.ic.sql_in
new file mode 100644
index 0000000..e13aee8
--- /dev/null
+++ b/src/ports/postgres/modules/linalg/test/svd.ic.sql_in
@@ -0,0 +1,47 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+/* ------------------------------------------------------------------------
+ * Dense cases
+ * ----------------------------------------------------------------------*/
+drop table if exists mat;
+CREATE TABLE mat (
+    row_id integer,
+    row_vec double precision[]
+);
+
+-- COPY mat (row_id, row_vec) FROM stdin delimiter '|';
+-- 1|{396,840,353,446}
+-- 2|{691,58,899,163}
+-- 3|{293,742,298,75}
+-- 4|{462,532,787,265}
+-- \.
+
+COPY mat (row_id, row_vec) FROM stdin delimiter '|';
+1|{396}
+\.
+
+drop table if exists svd_u;
+drop table if exists svd_v;
+drop table if exists svd_s;
+drop table if exists svd_summary;
+select svd('mat', 'svd', 'row_id', 1, NULL, 'svd_summary');
+

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/linear_systems/test/dense_linear_sytems.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/linear_systems/test/dense_linear_sytems.ic.sql_in b/src/ports/postgres/modules/linear_systems/test/dense_linear_sytems.ic.sql_in
new file mode 100644
index 0000000..74fbb80
--- /dev/null
+++ b/src/ports/postgres/modules/linear_systems/test/dense_linear_sytems.ic.sql_in
@@ -0,0 +1,50 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+/* -----------------------------------------------------------------------------
+ * Test Dense Linear Systems
+ * -------------------------------------------------------------------------- */
+
+DROP TABLE IF EXISTS linear_system_test_data;
+CREATE TABLE "Linear_systems_test_data" (
+    id INTEGER NOT NULL,
+    "A" DOUBLE PRECISION[],
+    b DOUBLE PRECISION
+);
+
+INSERT INTO "Linear_systems_test_data"(id, "A", b) VALUES
+(0, ARRAY[1,0,0], 20),
+(1, ARRAY[0,1,0], 15),
+(2, ARRAY[0,0,1], 20);
+
+drop table if exists result_table;
+select linear_solver_dense(
+       '"Linear_systems_test_data"',
+       'result_table',
+       'id',
+       '"A"',
+       'b',
+        NULL,
+       'direct',
+       'algorithm=llt'
+       );
+
+drop table if exists result_table;

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/linear_systems/test/sparse_linear_sytems.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/linear_systems/test/sparse_linear_sytems.ic.sql_in b/src/ports/postgres/modules/linear_systems/test/sparse_linear_sytems.ic.sql_in
new file mode 100644
index 0000000..87ced14
--- /dev/null
+++ b/src/ports/postgres/modules/linear_systems/test/sparse_linear_sytems.ic.sql_in
@@ -0,0 +1,64 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+/* -----------------------------------------------------------------------------
+ * Test sparse Linear Systems
+ * -------------------------------------------------------------------------- */
+
+DROP TABLE IF EXISTS "Sparse_linear_systems_lhs";
+CREATE TABLE "Sparse_linear_systems_lhs" (
+    "Rid" INTEGER NOT NULL,
+    cid  INTEGER,
+    val DOUBLE PRECISION
+);
+
+DROP TABLE IF EXISTS "Sparse_linear_systems_rhs";
+CREATE TABLE "Sparse_linear_systems_rhs" (
+    "Rid" INTEGER NOT NULL,
+    val DOUBLE PRECISION
+);
+
+
+INSERT INTO "Sparse_linear_systems_lhs"("Rid", cid, val) VALUES
+(0, 0, 1),
+(1, 1, 1),
+(2, 2, 1),
+(3, 3, 1);
+
+INSERT INTO "Sparse_linear_systems_rhs"("Rid", val) VALUES
+(0, 1),
+(1, 1),
+(2, 1);
+
+drop table if exists result_table;
+select linear_solver_sparse(
+       '"Sparse_linear_systems_lhs"',
+       '"Sparse_linear_systems_rhs"',
+       'result_table',
+       '"Rid"',
+       'cid',
+       'val',
+       '"Rid"',
+       'val',
+        4,
+        NULL,
+        'direct',
+        'algorithm=ldlt');

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/pca/test/pca.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/pca/test/pca.ic.sql_in b/src/ports/postgres/modules/pca/test/pca.ic.sql_in
new file mode 100644
index 0000000..1a64ba3
--- /dev/null
+++ b/src/ports/postgres/modules/pca/test/pca.ic.sql_in
@@ -0,0 +1,52 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+/* -----------------------------------------------------------------------------
+ * PCA Install Check.
+ * -------------------------------------------------------------------------- */
+
+DROP TABLE IF EXISTS mat;
+CREATE TABLE mat (
+    row_id integer,
+    row_vec double precision[]
+);
+
+COPY mat (row_id, row_vec) FROM stdin delimiter '|';
+1|{396,84,1}
+2|{691,58,1}
+3|{293,1,1}
+\.
+
+drop table if exists result_table_214712398172490837;
+drop table if exists result_table_214712398172490837_mean;
+drop table if exists result_table_214712398172490838;
+select pca_train('mat', 'result_table_214712398172490837', 'row_id', 3,
+NULL, 3, FALSE, 'result_table_214712398172490838');
+select * from result_table_214712398172490837;
+select * from result_table_214712398172490838;
+
+drop table if exists result_table_214712398172490837;
+drop table if exists result_table_214712398172490837_mean;
+drop table if exists result_table_214712398172490838;
+select pca_train('mat', 'result_table_214712398172490837', 'row_id', 0.8,
+NULL, 3, FALSE, 'result_table_214712398172490838');
+select * from result_table_214712398172490837;
+select * from result_table_214712398172490838;

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/pca/test/pca_project.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/pca/test/pca_project.ic.sql_in b/src/ports/postgres/modules/pca/test/pca_project.ic.sql_in
new file mode 100644
index 0000000..19a4bab
--- /dev/null
+++ b/src/ports/postgres/modules/pca/test/pca_project.ic.sql_in
@@ -0,0 +1,79 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+/* -----------------------------------------------------------------------------
+ * pca Install Check.
+ * -------------------------------------------------------------------------- */
+
+-----------------------------------------------------------------------------
+-- DENSE pca Project : Make sure all possible default calls for dense pca work
+-- Test data (Indentical to SVD). See the SVD module for details
+-- on how the data was generated
+-----------------------------------------------------------------------------
+DROP TABLE IF EXISTS mat;
+CREATE TABLE mat (
+    row_id integer,
+    row_vec double precision[]
+);
+
+COPY mat (row_id, row_vec) FROM stdin delimiter '|';
+1|{396,1}
+2|{691,58}
+3|{293,1}
+4|{462,532}
+5|{304,151}
+\.
+
+DROP TABLE IF EXISTS result;
+CREATE TABLE result (
+    row_id integer,
+    principal_components double precision[],
+    std_dev double precision,
+    proportion double precision
+);
+
+DROP TABLE IF EXISTS result_mean;
+CREATE TABLE result_mean (
+    column_mean double precision[]
+);
+
+--To reduce runtime, we are inserting the component data instead of calling pca_train
+TRUNCATE TABLE result, result_mean;
+
+COPY result (row_id, principal_components, std_dev, proportion) FROM stdin delimiter '|';
+1|{0.16526842327063,-0.366421389980424}|505.194492329765|0.315197084359835
+2|{0.291457976390416,-0.152774780364566}|388.886052223584|0.18677111487815
+\.
+
+COPY result_mean (column_mean) FROM stdin delimiter '|';
+{559.1875,479.6875}
+\.
+
+
+drop table if exists out_table;
+drop table if exists residual_table;
+drop table if exists result_summary_table;
+select pca_project( 'mat',
+                    'result',
+                    'out_table',
+                    'row_id',
+                    'residual_table',
+                    'result_summary_table');

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/prob/test/prob.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/prob/test/prob.ic.sql_in b/src/ports/postgres/modules/prob/test/prob.ic.sql_in
new file mode 100644
index 0000000..4d80629
--- /dev/null
+++ b/src/ports/postgres/modules/prob/test/prob.ic.sql_in
@@ -0,0 +1,44 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+/* -----------------------------------------------------------------------------
+ * Test probability functions.
+ * -------------------------------------------------------------------------- */
+
+SELECT
+    bernoulli_cdf(0,   0.3),
+    beta_cdf(-1, 1, 1) ,
+    binomial_cdf(11, 11, 0.4),
+    cauchy_cdf('-Inf', 1, 2),
+    chi_squared_cdf(-1, 1) ,
+    exponential_cdf(-1, 1),
+    extreme_value_cdf(3, 1, 2),
+    fisher_f_cdf(0, 1, 1),
+    gamma_cdf(0, 0.5, 2) ,
+    geometric_cdf(0,   0.3) ,
+    hypergeometric_cdf(-1 ,50, 30, 500),
+    inverse_gamma_cdf(-1, 1, 2),
+    laplace_pdf('-Inf', 1, 1),
+    logistic_quantile(0.7310586, 1, 2),
+    normal_quantile(NULL, 0, 1),
+    poisson_cdf(NULL, 1),
+    uniform_pdf(-1, 0, 1)
+;

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/recursive_partitioning/test/decision_tree.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/recursive_partitioning/test/decision_tree.ic.sql_in b/src/ports/postgres/modules/recursive_partitioning/test/decision_tree.ic.sql_in
new file mode 100644
index 0000000..c4bfbf9
--- /dev/null
+++ b/src/ports/postgres/modules/recursive_partitioning/test/decision_tree.ic.sql_in
@@ -0,0 +1,70 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+--------------------------------------------------------------------------------
+-- Validate tree train function ------------------------------------------------
+DROP TABLE IF EXISTS dt_golf CASCADE;
+CREATE TABLE dt_golf (
+    id integer NOT NULL,
+    id_2 integer,
+    "OUTLOOK" text,
+    temperature double precision,
+    humidity double precision,
+    "Cont_features" double precision[],
+    cat_features text[],
+    windy boolean,
+    class text
+) ;
+
+INSERT INTO dt_golf (id,"OUTLOOK",temperature,humidity,"Cont_features",cat_features, windy,class) VALUES
+(1, 'sunny', 85, 85,ARRAY[85, 85], ARRAY['a', 'b'], false, 'Don''t Play'),
+(2, 'sunny', 80, 90, ARRAY[80, 90], ARRAY['a', 'b'], true, 'Don''t Play'),
+(3, 'overcast', 83, 78, ARRAY[83, 78], ARRAY['a', 'b'], false, 'Play'),
+(4, 'rain', 70, NULL, ARRAY[70, 96], ARRAY['a', 'b'], false, 'Play'),
+(5, 'rain', 68, 80, ARRAY[68, 80], ARRAY['a', 'b'], false, 'Play'),
+(6, 'rain', NULL, 70, ARRAY[65, 70], ARRAY['a', 'b'], true, 'Don''t Play'),
+(7, 'overcast', 64, 65, ARRAY[64, 65], ARRAY['c', 'b'], NULL , 'Play'),
+(8, 'sunny', 72, 95, ARRAY[72, 95], ARRAY['a', 'b'], false, 'Don''t Play');
+
+update dt_golf set id_2 = id % 2;
+-------------------------------------------------------------------------
+
+-- no grouping, with cross_validation
+DROP TABLE IF EXISTS train_output, train_output_summary, train_output_cv;
+SELECT tree_train('dt_golf'::text,         -- source table
+                         'train_output'::text,    -- output model table
+                         'id'::text,              -- id column
+                         'temperature::double precision'::text,           -- response
+                         'humidity, windy'::text,   -- features
+                         NULL::text,        -- exclude columns
+                         'gini'::text,      -- split criterion
+                         NULL::text,        -- no grouping
+                         NULL::text,        -- no weights
+                         1::integer,       -- max depth
+                         2::integer,        -- min split
+                         2::integer,        -- min bucket
+                         2::integer,        -- number of bins per continuous variable
+                         'cp=0.01'          -- cost-complexity pruning parameter
+                         );
+
+SELECT _print_decision_tree(tree) from train_output;
+SELECT tree_display('train_output', False);
+-------------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/recursive_partitioning/test/random_forest.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/recursive_partitioning/test/random_forest.ic.sql_in b/src/ports/postgres/modules/recursive_partitioning/test/random_forest.ic.sql_in
new file mode 100644
index 0000000..1a5ab2a
--- /dev/null
+++ b/src/ports/postgres/modules/recursive_partitioning/test/random_forest.ic.sql_in
@@ -0,0 +1,66 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+DROP TABLE IF EXISTS dt_golf CASCADE;
+CREATE TABLE dt_golf (
+    id integer NOT NULL,
+    "OUTLOOK" text,
+    temperature double precision,
+    humidity double precision,
+    "Cont_features" double precision[],
+    cat_features text[],
+    windy boolean,
+    class text
+) ;
+
+INSERT INTO dt_golf (id,"OUTLOOK",temperature,humidity,"Cont_features",cat_features, windy,class) VALUES
+(1, 'sunny', 85, 85,ARRAY[85, 85], ARRAY['a', 'b'], false, 'Don''t Play'),
+(2, 'sunny', 80, 90, ARRAY[80, 90], ARRAY['a', 'b'], true, 'Don''t Play'),
+(3, 'overcast', 83, 78, ARRAY[83, 78], ARRAY['a', 'b'], false, 'Play'),
+(4, 'rain', 70, NULL, ARRAY[70, 96], ARRAY['a', 'b'], false, 'Play'),
+(5, 'rain', 68, 80, ARRAY[68, 80], ARRAY['a', 'b'], false, 'Play'),
+(6, 'rain', NULL, 70, ARRAY[65, 70], ARRAY['a', 'b'], true, 'Don''t Play'),
+(7, 'overcast', 64, 65, ARRAY[64, 65], ARRAY['c', 'b'], NULL , 'Play'),
+(8, 'sunny', 72, 95, ARRAY[72, 95], ARRAY['a', 'b'], false, 'Don''t Play');
+
+-------------------------------------------------------------------------
+-- classification without grouping
+DROP TABLE IF EXISTS train_output, train_output_summary, train_output_group;
+SELECT forest_train(
+                  'dt_golf',         -- source table
+                  'train_output',    -- output model table
+                  'id'  ,            -- id column
+                  'class',           -- response
+                  'windy, "Cont_features"[1]',   -- features
+                  NULL,        -- exclude columns
+                  NULL,        -- no grouping
+                  2,                -- num of trees
+                  NULL,                 -- num of random features
+                  TRUE,    -- importance
+                  1,       -- num_permutations
+                  1,       -- max depth
+                  1,        -- min split
+                  1,        -- min bucket
+                  2,        -- number of bins per continuous variable
+                  'max_surrogates=0',
+                  FALSE
+                  );
+

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/regress/test/clustered.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/regress/test/clustered.ic.sql_in b/src/ports/postgres/modules/regress/test/clustered.ic.sql_in
new file mode 100644
index 0000000..e2abc20
--- /dev/null
+++ b/src/ports/postgres/modules/regress/test/clustered.ic.sql_in
@@ -0,0 +1,48 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+-- Test clustered standard errors
+
+DROP TABLE IF EXISTS abalone1;
+
+CREATE TABLE abalone1 (
+    id integer,
+    sex text,
+    length double precision,
+    diameter double precision,
+    height double precision,
+    whole double precision,
+    shucked double precision,
+    viscera double precision,
+    shell double precision,
+    rings integer
+);
+
+INSERT INTO abalone1 VALUES
+(1, 'M', 0.45500000000000002, 0.36499999999999999, 0.095000000000000001, 0.51400000000000001, 0.22450000000000001, 0.10100000000000001, 0.14999999999999999, 15),
+(4, 'M', 0.44, 0.36499999999999999, 0.125, 0.51600000000000001, 0.2155, 0.114, 0.155, 10),
+(3, 'F', 0.53000000000000003, 0.41999999999999998, 0.13500000000000001, 0.67700000000000005, 0.25650000000000001, 0.14149999999999999, 0.20999999999999999, 9),
+(2, 'M', 0.34999999999999998, 0.26500000000000001, 0.089999999999999997, 0.22550000000000001, 0.099500000000000005, 0.048500000000000001, 0.070000000000000007, 7),
+(5, 'I', 0.33000000000000002, 0.255, 0.080000000000000002, 0.20499999999999999, 0.089499999999999996, 0.0395, 0.055, 7);
+
+drop table if exists temp_out;
+drop table if exists temp_out_summary;
+select clustered_variance_linregr('abalone1', 'temp_out', 'rings', 'array[1, length]', 'sex');

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/regress/test/linear.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/regress/test/linear.ic.sql_in b/src/ports/postgres/modules/regress/test/linear.ic.sql_in
new file mode 100644
index 0000000..4fb5398
--- /dev/null
+++ b/src/ports/postgres/modules/regress/test/linear.ic.sql_in
@@ -0,0 +1,56 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+
+/* -----------------------------------------------------------------------------
+ * Test Linear Regression.
+ * -------------------------------------------------------------------------- */
+
+/*
+ * The following example is taken from:
+ * http://www.weibull.com/DOEWeb/estimating_regression_models_using_least_squares.htm#Example%205.1
+ * http://www.weibull.com/DOEWeb/hypothesis_tests_in_multiple_linear_regression.htm#Example%205.3
+ */
+DROP TABLE IF EXISTS weibull;
+CREATE TABLE weibull (
+    id INTEGER NOT NULL,
+    x1 DOUBLE PRECISION,
+    x2 DOUBLE PRECISION,
+    y DOUBLE PRECISION
+    , CONSTRAINT pk_weibull PRIMARY KEY (id)
+);
+
+/*
+ * We materialize the table here because on MPP systems we want to distribute
+ * the data to the segments (and not do the calculations in memory).
+ */
+INSERT INTO weibull(id, x1, x2, y) VALUES
+( 1, 41.9, 29.1, 251.3),
+( 2, 43.4, 29.3, 251.3),
+( 3, 43.9, 29.5, 248.3),
+( 4, 44.5, 29.7, 267.5),
+( 5, 47.3, 29.9, 273.0);
+
+SELECT (linregr(y, ARRAY[1, x1, x2])).*
+FROM weibull;
+
+
+

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/regress/test/logistic.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/regress/test/logistic.ic.sql_in b/src/ports/postgres/modules/regress/test/logistic.ic.sql_in
new file mode 100644
index 0000000..bd7ed3a
--- /dev/null
+++ b/src/ports/postgres/modules/regress/test/logistic.ic.sql_in
@@ -0,0 +1,59 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+
+/* -----------------------------------------------------------------------------
+ * Test Logistic Regression.
+ * -------------------------------------------------------------------------- */
+
+/*
+ * The following example is taken from:
+ * http://luna.cas.usf.edu/~mbrannic/files/regression/Logistic.html
+ * Predicting heart attack
+ */
+DROP TABLE IF EXISTS patients;
+CREATE TABLE patients (
+    id INTEGER NOT NULL,
+    second_attack INTEGER,
+    treatment INTEGER,
+    trait_anxiety INTEGER
+    , CONSTRAINT pk_patient PRIMARY key (id)
+);
+
+INSERT INTO patients(ID, second_attack, treatment, trait_anxiety) VALUES
+( 0, NULL, 1, 70),
+( 1, 1, 1, 70),
+( 2, 1, 1, 80),
+( 3, 1, 1, 50),
+( 4, 1, 0, 60),
+( 5, 1, 0, 40);
+
+drop table if exists temp_result;
+drop table if exists temp_result_summary;
+select logregr_train(
+    'patients',
+    'temp_result',
+    'second_attack',
+    'ARRAY[1, treatment]',
+    Null,
+    2,
+    'irls'
+);

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/regress/test/marginal.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/regress/test/marginal.ic.sql_in b/src/ports/postgres/modules/regress/test/marginal.ic.sql_in
new file mode 100644
index 0000000..0279650
--- /dev/null
+++ b/src/ports/postgres/modules/regress/test/marginal.ic.sql_in
@@ -0,0 +1,69 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+/* -----------------------------------------------------------------------------
+ * Test Logistic Regression.
+ * -------------------------------------------------------------------------- */
+
+DROP TABLE IF EXISTS patients;
+CREATE TABLE patients (
+    id INTEGER NOT NULL,
+    second_attack INTEGER,
+    treatment INTEGER,
+    trait_anxiety INTEGER
+    , CONSTRAINT pk_patient PRIMARY key (id)
+);
+INSERT INTO patients(ID, second_attack, treatment, trait_anxiety) VALUES
+( 1, 1, 1, 70),
+( 2, 1, 1, 80),
+( 3, 0, 1, 50),
+( 4, 0, 0, 60);
+
+-- CHECK : Make sure all possible default values work
+drop table if exists result_table;
+drop table if exists result_table_summary;
+select margins_logregr(
+              'patients',
+              'result_table',
+              'second_attack',
+              'ARRAY[1, treatment]',
+              NULL,
+              NULL,
+              2,
+              'irls',
+              1e-5
+              );
+/* -----------------------------------------------------------------------------
+ * Test Multinomial Logistic Regression.
+ * -------------------------------------------------------------------------- */
+
+-- CHECK : Make sure cherry picking marginal values work
+drop table if exists result_table;
+drop table if exists result_table_summary;
+select margins_mlogregr(
+              'patients',
+              'result_table',
+              'second_attack',
+              'ARRAY[1, treatment]',
+              0,
+              NULL,
+              ARRAY[1, 2],
+              'max_iter=2, optimizer=newton, tolerance=0.01');

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/regress/test/multilogistic.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/regress/test/multilogistic.ic.sql_in b/src/ports/postgres/modules/regress/test/multilogistic.ic.sql_in
new file mode 100644
index 0000000..0c5a759
--- /dev/null
+++ b/src/ports/postgres/modules/regress/test/multilogistic.ic.sql_in
@@ -0,0 +1,61 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+/* -----------------------------------------------------------------------------
+ * Test Multinomial Logistic Regression.
+ * -------------------------------------------------------------------------- */
+
+/*
+ * The following example is taken from:
+ * http://luna.cas.usf.edu/~mbrannic/files/regression/Logistic.html
+ * Predicting heart attack. This example is the same as the (binomial) logistic
+ * regression example.
+ */
+DROP TABLE IF EXISTS patients;
+CREATE TABLE patients (
+    id INTEGER NOT NULL,
+    "SECOND_ATTACK" INTEGER,
+    treatment INTEGER,
+    trait_anxiety INTEGER
+    ,CONSTRAINT pk_patient PRIMARY key (id)
+);
+
+INSERT INTO patients(id, "SECOND_ATTACK", treatment, trait_anxiety) VALUES
+( 1, 1, 1, 70),
+( 2, 1, 1, 80),
+( 3, 0, 1, 50),
+( 4, 0, 0, 60);
+
+DROP TABLE IF EXISTS temp_result;
+DROP TABLE IF EXISTS temp_result_summary;
+SELECT mlogregr_train(
+    'patients',
+    'temp_result',
+    '"SECOND_ATTACK"',
+    'ARRAY[1, treatment]');
+
+DROP TABLE IF EXISTS predict_result;
+SELECT mlogregr_predict(
+    'temp_result',
+    'patients',
+    'id',
+    'predict_result'
+    );

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/regress/test/robust.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/regress/test/robust.ic.sql_in b/src/ports/postgres/modules/regress/test/robust.ic.sql_in
new file mode 100644
index 0000000..54a26ff
--- /dev/null
+++ b/src/ports/postgres/modules/regress/test/robust.ic.sql_in
@@ -0,0 +1,62 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+/* -----------------------------------------------------------------------------
+ * Test Linear Regression.
+ * -------------------------------------------------------------------------- */
+
+/*
+ * The following example is taken from:
+ * http://www.weibull.com/DOEWeb/estimating_regression_models_using_least_squares.htm#Example%205.1
+ * http://www.weibull.com/DOEWeb/hypothesis_tests_in_multiple_linear_regression.htm#Example%205.3
+ */
+DROP TABLE IF EXISTS weibull;
+CREATE TABLE weibull (
+    id INTEGER NOT NULL,
+    x1 DOUBLE PRECISION,
+    x2 DOUBLE PRECISION,
+    y DOUBLE PRECISION
+    , CONSTRAINT pk_weibull PRIMARY KEY (id)
+);
+
+/*
+ * We materialize the table here because on MPP systems we want to distribute
+ * the data to the segments (and not do the calculations in memory).
+ */
+INSERT INTO weibull(id, x1, x2, y) VALUES
+( 1, 41.9, 29.1, 251.3),
+( 2, 43.4, 29.3, 251.3),
+( 3, 43.9, 29.5, 248.3),
+( 4, 44.5, 29.7, 267.5);
+
+
+--------------------- Robust linear regression install checks -----------
+
+SELECT (robust_linregr(y, ARRAY[1, x1, x2], coef)).*
+FROM
+(		SELECT (linregr(y, ARRAY[1, x1, x2])).coef
+		FROM weibull
+) as mle_coef,
+weibull as src;
+DROP TABLE IF EXISTS result_weibull_3;
+DROP TABLE IF EXISTS result_weibull_3_summary;
+select robust_variance_linregr('weibull', 'result_weibull_3', 'y', 'ARRAY[1, x1, x2]');
+-- End of robust linear regression

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/sample/test/balance_sample.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/sample/test/balance_sample.ic.sql_in b/src/ports/postgres/modules/sample/test/balance_sample.ic.sql_in
new file mode 100644
index 0000000..597db9b
--- /dev/null
+++ b/src/ports/postgres/modules/sample/test/balance_sample.ic.sql_in
@@ -0,0 +1,43 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+DROP TABLE IF EXISTS "TEST_s" CASCADE;
+
+CREATE TABLE "TEST_s"(
+    id1 INTEGER,
+    id2 INTEGER,
+    gr1 INTEGER,
+    gr2 INTEGER,
+    gr3 TEXT
+);
+
+INSERT INTO "TEST_s" VALUES
+(1,0,1,1,'a'),
+(1,0,1,1,'b'),
+(1,0,1,2,'b'),
+(30,30,6,6,'d'),
+(40,40,6,6,'d'),
+(700,70,NULL,2,'e');
+
+-- --- Test for random undersampling with replacement
+DROP TABLE IF EXISTS out_sr2;
+SELECT balance_sample('"TEST_s"', 'out_sr2', 'gr1', 'undersample ', NULL, NULL, TRUE, TRUE);
+

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/sample/test/sample.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/sample/test/sample.ic.sql_in b/src/ports/postgres/modules/sample/test/sample.ic.sql_in
new file mode 100644
index 0000000..8d00c29
--- /dev/null
+++ b/src/ports/postgres/modules/sample/test/sample.ic.sql_in
@@ -0,0 +1,33 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+/* -----------------------------------------------------------------------------
+ * Test random sampling.
+ * -------------------------------------------------------------------------- */
+
+SELECT weighted_sample(i, i) AS value
+FROM generate_series(1,10) AS i;
+
+SELECT *, poisson_random(1.0)
+FROM generate_series(1,5);
+
+SELECT *, gamma_random(5)
+FROM generate_series(1,5);

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/sample/test/stratified_sample.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/sample/test/stratified_sample.ic.sql_in b/src/ports/postgres/modules/sample/test/stratified_sample.ic.sql_in
new file mode 100644
index 0000000..9bad19f
--- /dev/null
+++ b/src/ports/postgres/modules/sample/test/stratified_sample.ic.sql_in
@@ -0,0 +1,42 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+DROP TABLE IF EXISTS "TEST";
+
+CREATE TABLE "TEST"(
+    id1 INTEGER,
+    "ID2" INTEGER,
+    gr1 INTEGER,
+    gr2 INTEGER
+);
+
+INSERT INTO "TEST" VALUES
+(1,0,1,1),
+(9,0,1,1),
+(0,2,1,2),
+(0,3,1,2),
+(30,30,2,2),
+(70,70,2,2)
+;
+
+DROP TABLE IF EXISTS out;
+SELECT stratified_sample('"TEST"', 'out', 0.5, NULL, 'id1,"ID2",gr1,gr2', FALSE);
+

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/sample/test/train_test_split.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/sample/test/train_test_split.ic.sql_in b/src/ports/postgres/modules/sample/test/train_test_split.ic.sql_in
new file mode 100644
index 0000000..1270c07
--- /dev/null
+++ b/src/ports/postgres/modules/sample/test/train_test_split.ic.sql_in
@@ -0,0 +1,43 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+DROP TABLE IF EXISTS test;
+
+CREATE TABLE test(
+    id1 INTEGER,
+    id2 INTEGER,
+    gr1 INTEGER,
+    gr2 INTEGER
+);
+
+INSERT INTO test VALUES
+(1,0,1,1),
+(9,0,1,1),
+(0,2,1,2),
+(0,3,1,2),
+(30,30,2,2),
+(70,70,2,2)
+;
+
+SELECT setseed(0);
+
+DROP TABLE IF EXISTS out_train,out_test,out;
+SELECT train_test_split('test', 'out', 0.1, 0.2, NULL, 'id1,id2,gr1,gr2', FALSE, TRUE);

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/stats/test/anova_test.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/stats/test/anova_test.ic.sql_in b/src/ports/postgres/modules/stats/test/anova_test.ic.sql_in
new file mode 100644
index 0000000..f119a65
--- /dev/null
+++ b/src/ports/postgres/modules/stats/test/anova_test.ic.sql_in
@@ -0,0 +1,49 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+/* -----------------------------------------------------------------------------
+ * Test ANOVA.
+ *
+ * Example taken from:
+ * http://www.itl.nist.gov/div898/handbook/prc/section4/prc433.htm
+ * -------------------------------------------------------------------------- */
+
+CREATE TABLE nist_anova_test (
+    id SERIAL,
+    resistance FLOAT8[]
+);
+
+COPY nist_anova_test(resistance) FROM stdin;
+{6.9,8.3,8.0}
+{5.4,6.8,10.5}
+{5.8,7.8,8.1}
+{4.6,9.2,6.9}
+{4.0,6.5,9.3}
+\.
+
+CREATE TABLE one_way_anova_nist AS
+SELECT (one_way_anova(level, value)).* FROM (
+    SELECT level, resistance[level] AS value
+    FROM
+        nist_anova_test, (
+        SELECT * FROM generate_series(1,3) level
+    ) q
+) q;

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/stats/test/chi2_test.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/stats/test/chi2_test.ic.sql_in b/src/ports/postgres/modules/stats/test/chi2_test.ic.sql_in
new file mode 100644
index 0000000..4a01b7d
--- /dev/null
+++ b/src/ports/postgres/modules/stats/test/chi2_test.ic.sql_in
@@ -0,0 +1,42 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+/* -----------------------------------------------------------------------------
+ * Test Chi-squared goodness-of-fit test.
+ *
+ * Example taken from:
+ * http://www.statsdirect.com/help/chi_square_tests/chi_good.htm
+ * -------------------------------------------------------------------------- */
+
+CREATE TABLE chi2_test_blood_group (
+    id SERIAL,
+    blood_group VARCHAR,
+    observed BIGINT,
+    expected DOUBLE PRECISION
+);
+
+INSERT INTO chi2_test_blood_group(blood_group, observed, expected) VALUES
+    ('O', 67, 82.28),
+    ('A', 83, 84.15),
+    ('B', 29, 14.96),
+    ('AB', 8, 5.61);
+
+SELECT chi2_gof_test(observed, expected) FROM chi2_test_blood_group;

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/stats/test/correlation.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/stats/test/correlation.ic.sql_in b/src/ports/postgres/modules/stats/test/correlation.ic.sql_in
new file mode 100644
index 0000000..042fc6d
--- /dev/null
+++ b/src/ports/postgres/modules/stats/test/correlation.ic.sql_in
@@ -0,0 +1,35 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+CREATE TABLE rand_numeric (a int2, b int4, c int8, d float4, e float8, f real);
+INSERT INTO rand_numeric
+SELECT
+    random() * 1000,
+    random() * 1000,
+    random() * 1000,
+    random() * 1000,
+    random() * 1000,
+    random() * 1000
+FROM
+    generate_series(1, 5);
+
+DROP TABLE IF EXISTS corr_output, corr_output_summary;
+SELECT * FROM correlation('rand_numeric', 'corr_output', 'a, c, e');

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/stats/test/cox_prop_hazards.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/stats/test/cox_prop_hazards.ic.sql_in b/src/ports/postgres/modules/stats/test/cox_prop_hazards.ic.sql_in
new file mode 100644
index 0000000..30854ee
--- /dev/null
+++ b/src/ports/postgres/modules/stats/test/cox_prop_hazards.ic.sql_in
@@ -0,0 +1,51 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+/* -----------------------------------------------------------------------------
+ * Cox proportional hazard survival regression
+ *
+ * Both Example taken from:
+ * http://www.sph.emory.edu/~cdckms/CoxPH/prophaz2.html
+ * -------------------------------------------------------------------------- */
+
+DROP TABLE IF EXISTS leukemia;
+CREATE TABLE leukemia (
+    id INTEGER NOT NULL,
+    grp DOUBLE PRECISION,
+    wbc DOUBLE PRECISION,
+    timedeath INTEGER,
+    status BOOLEAN
+    ,CONSTRAINT pk_leukemia PRIMARY key (id)
+);
+
+
+INSERT INTO leukemia(id, grp, wbc, timedeath,status) VALUES
+(0,0,1.45,35,TRUE),
+(1,0,1.47,34,TRUE),
+(3,0,2.2,32,TRUE),
+(22,1,4.01,3,TRUE),
+(23,1,4.91,2,TRUE),
+(24,1,5,1,TRUE),
+(25,NULL,4.01,3,TRUE);
+
+drop table if exists coxph_out;
+drop table if exists coxph_out_summary;
+select coxph_train('leukemia', 'coxph_out', 'timedeath', 'ARRAY[grp, wbc]', 'status', NULL, NULL);

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/stats/test/f_test.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/stats/test/f_test.ic.sql_in b/src/ports/postgres/modules/stats/test/f_test.ic.sql_in
new file mode 100644
index 0000000..0f4de01
--- /dev/null
+++ b/src/ports/postgres/modules/stats/test/f_test.ic.sql_in
@@ -0,0 +1,82 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+/* -----------------------------------------------------------------------------
+ * Test F-test.
+ *
+ * Example ("JAHANMI2.DAT") taken from:
+ * http://www.itl.nist.gov/div898/handbook/eda/section3/eda359.htm
+ * -------------------------------------------------------------------------- */
+
+CREATE TABLE jahanmi2 (
+	Run INTEGER,
+	Lab INTEGER,
+	Batch INTEGER,
+	Y FLOAT8,
+	X1 FLOAT8,
+	X2 FLOAT8,
+	X3 FLOAT8
+);
+
+COPY jahanmi2 FROM stdin;
+1	1	1	608.781	-1	-1	-1
+2	1	2	569.670	-1	-1	-1
+62	1	2	587.695	-1	1	1
+90	1	2	592.845	-1	1	1
+151	2	1	753.333	1	1	1
+179	2	1	635.079	1	1	1
+180	2	2	534.236	1	1	1
+181	2	1	716.926	1	-1	-1
+182	2	2	606.188	1	-1	-1
+299	3	1	701.716	1	-1	1
+300	3	2	627.516	1	-1	1
+301	3	1	382.133	1	1	-1
+302	3	2	574.522	1	1	-1
+303	3	1	719.744	1	1	-1
+389	4	1	775.272	-1	-1	1
+390	4	2	579.167	-1	-1	1
+421	4	1	708.885	-1	1	-1
+450	4	2	703.980	-1	1	-1
+541	5	1	715.224	-1	-1	-1
+569	5	1	776.197	-1	-1	-1
+570	5	2	345.294	-1	-1	-1
+571	5	1	547.099	1	-1	1
+572	5	2	570.999	1	-1	1
+573	5	1	619.942	1	-1	1
+629	6	1	684.523	1	1	1
+630	6	2	552.304	1	1	1
+631	6	1	717.159	-1	1	-1
+632	6	2	545.303	-1	1	-1
+633	6	1	721.343	-1	1	-1
+749	7	1	690.826	1	1	-1
+750	7	2	472.463	1	1	-1
+811	7	1	666.893	-1	1	1
+812	7	2	645.932	-1	1	1
+813	7	1	759.860	-1	1	1
+929	8	1	682.500	-1	-1	1
+930	8	2	684.167	-1	-1	1
+931	8	1	658.116	1	-1	-1
+932	8	2	672.153	1	-1	-1
+933	8	1	738.213	1	-1	-1
+\.
+
+CREATE TABLE f_test AS
+SELECT (f_test((2 - batch)::BOOLEAN, y)).* FROM jahanmi2;

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/stats/test/ks_test.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/stats/test/ks_test.ic.sql_in b/src/ports/postgres/modules/stats/test/ks_test.ic.sql_in
new file mode 100644
index 0000000..150c1f8
--- /dev/null
+++ b/src/ports/postgres/modules/stats/test/ks_test.ic.sql_in
@@ -0,0 +1,43 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+/* -----------------------------------------------------------------------------
+ * Test Kolmogorov-Smirnov test.
+ *
+ * Example taken from:
+ * http://www.physics.csbsju.edu/stats/KS-test.html
+ * -------------------------------------------------------------------------- */
+
+CREATE TABLE ks_sample_1 AS
+SELECT
+    TRUE AS first,
+    unnest(ARRAY[0.22, -0.87, -2.39, -1.79, 0.37, -1.54, 1.28, -0.31, -0.74, 1.72, 0.38, -0.17, -0.62, -1.10, 0.30, 0.15, 2.30, 0.19, -0.50, -0.09]) AS value
+UNION ALL
+SELECT
+    FALSE,
+    unnest(ARRAY[-5.13, -2.19, -2.43, -3.83, 0.50, -3.25, 4.32, 1.63, 5.18, -0.43, 7.11, 4.87, -3.10, -5.81, 3.76, 6.31, 2.58, 0.07, 5.76, 3.50]);
+
+CREATE TABLE ks_test_1 AS
+SELECT (ks_test(first, value,
+    (SELECT count(value) FROM ks_sample_1 WHERE first),
+    (SELECT count(value) FROM ks_sample_1 WHERE NOT first)
+    ORDER BY value)).*
+FROM ks_sample_1;

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/stats/test/mw_test.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/stats/test/mw_test.ic.sql_in b/src/ports/postgres/modules/stats/test/mw_test.ic.sql_in
new file mode 100644
index 0000000..47d143e
--- /dev/null
+++ b/src/ports/postgres/modules/stats/test/mw_test.ic.sql_in
@@ -0,0 +1,54 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+/* -----------------------------------------------------------------------------
+ * Test Mann-Whitney-test.
+ *
+ * Example taken from:
+ * http://www.itl.nist.gov/div898/handbook/prc/section3/prc35.htm
+ * -------------------------------------------------------------------------- */
+
+CREATE TABLE nist_mw_example (
+	id SERIAL,
+	group_a FLOAT8,
+	rank_a FLOAT8,
+	group_b FLOAT8,
+	rank_b FLOAT8
+);
+
+COPY nist_mw_example(group_a, rank_a, group_b, rank_b) FROM stdin;
+.55	8	.49	5
+.67	15.5	.68	17
+.53	7	.77	22
+.44	2	.62	12
+.65	13.5	.48	3.5
+.75	20.5	.59	9.5
+\.
+
+CREATE TABLE mw_test AS
+SELECT (mw_test(from_first, value ORDER BY value)).*
+FROM (
+    SELECT TRUE AS from_first, group_a AS value
+    FROM nist_mw_example
+    UNION ALL
+    SELECT FALSE, group_b
+    FROM nist_mw_example
+) q;

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/stats/test/pred_metrics.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/stats/test/pred_metrics.ic.sql_in b/src/ports/postgres/modules/stats/test/pred_metrics.ic.sql_in
new file mode 100644
index 0000000..5bb3a3a
--- /dev/null
+++ b/src/ports/postgres/modules/stats/test/pred_metrics.ic.sql_in
@@ -0,0 +1,56 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ * @file pred_metrics.sql_in
+ *
+ * @brief A collection of summary statistics to gauge model
+ * accuracy based on predicted values vs. ground-truth values.
+ * @date April 2016
+ *
+ *
+ *//* ----------------------------------------------------------------------- */
+
+CREATE TABLE test_set(
+                  pred FLOAT8,
+                  obs FLOAT8
+                );
+
+INSERT INTO test_set VALUES
+  (37.5,53.1), (12.3,34.2);
+
+DROP TABLE IF EXISTS table_out;
+SELECT mean_squared_error( 'test_set', 'table_out', 'pred', 'obs');
+DROP TABLE IF EXISTS table_out;
+SELECT adjusted_r2_score( 'test_set', 'table_out', 'pred', 'obs', 3, 100);
+DROP TABLE IF EXISTS table_out;
+SELECT confusion_matrix( 'test_set', 'table_out', 'pred', 'obs');
+DROP TABLE IF EXISTS table_out;
+
+CREATE TABLE test_binary(
+                  pred FLOAT8,
+                  obs FLOAT8
+                );
+
+INSERT INTO test_binary VALUES
+  (0.5,0), (0.2,1.0);
+SELECT binary_classifier( 'test_binary', 'table_out', 'pred', 'obs');
+DROP TABLE IF EXISTS table_out;
+
+SELECT area_under_roc( 'test_binary', 'table_out', 'pred', 'obs');
+DROP TABLE IF EXISTS table_out;

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/stats/test/robust_and_clustered_variance_coxph.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/stats/test/robust_and_clustered_variance_coxph.ic.sql_in b/src/ports/postgres/modules/stats/test/robust_and_clustered_variance_coxph.ic.sql_in
new file mode 100644
index 0000000..d34b96a
--- /dev/null
+++ b/src/ports/postgres/modules/stats/test/robust_and_clustered_variance_coxph.ic.sql_in
@@ -0,0 +1,57 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+/* -----------------------------------------------------------------------------
+ * Robust variance for Cox proportional hazard survival regression
+ * -------------------------------------------------------------------------- */
+
+DROP TABLE IF EXISTS bladder;
+CREATE TABLE bladder(
+    id      INTEGER,
+    rx      INTEGER,
+    num     INTEGER,
+    sz      INTEGER,
+    stop    INTEGER,
+    event   INTEGER,
+    enum    INTEGER);
+
+COPY bladder FROM STDIN;
+1	1	1	3	1	0	1
+1	1	1	3	1	0	2
+1	1	2	3	1	1	3
+6	1	1	1	14	0	4
+85	2	2	3	59	0	1
+85	2	1	2	59	1	2
+85	2	2	3	59	1	3
+85	2	1	3	59	0	4
+\.
+
+drop table if exists bladder_coxph_out;
+drop table if exists bladder_coxph_out_summary;
+select coxph_train('bladder', 'bladder_coxph_out', 'stop', 'ARRAY[rx, sz, num]', 'event=1', NULL, NULL);
+
+-- robust variance
+drop table if exists bladder_rv_coxph_out;
+select robust_variance_coxph('bladder_coxph_out', 'bladder_rv_coxph_out');
+
+-- cluster variance (id)
+drop table if exists bladder_cv_coxph_out;
+select clustered_variance_coxph('bladder_coxph_out', 'bladder_cv_coxph_out', 'id');

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/stats/test/t_test.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/stats/test/t_test.ic.sql_in b/src/ports/postgres/modules/stats/test/t_test.ic.sql_in
new file mode 100644
index 0000000..bcff2c3
--- /dev/null
+++ b/src/ports/postgres/modules/stats/test/t_test.ic.sql_in
@@ -0,0 +1,45 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+/* -----------------------------------------------------------------------------
+ * Test one-sample t-test.
+ *
+ * Example ("ZARR13.DAT") taken from:
+ * http://www.itl.nist.gov/div898/handbook/eda/section3/eda352.htm
+ * -------------------------------------------------------------------------- */
+
+CREATE TABLE ZARR13 (
+	id SERIAL,
+	value FLOAT8
+);
+
+COPY ZARR13(value) FROM stdin;
+9.206343
+9.299992
+9.277895
+9.288454
+9.216746
+9.274107
+9.273776
+\.
+
+CREATE TABLE t_test_one AS
+SELECT (t_test_one(value - 5.0)).* FROM zarr13;

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/stats/test/wsr_test.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/stats/test/wsr_test.ic.sql_in b/src/ports/postgres/modules/stats/test/wsr_test.ic.sql_in
new file mode 100644
index 0000000..a873ceb
--- /dev/null
+++ b/src/ports/postgres/modules/stats/test/wsr_test.ic.sql_in
@@ -0,0 +1,45 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+/* -----------------------------------------------------------------------------
+ * Test Wilcoxon signed-rank test.
+ *
+ * Example taken from:
+ * http://www-stat.stanford.edu/~susan/courses/s141/hononpara.pdf
+ * -------------------------------------------------------------------------- */
+
+CREATE TABLE test_wsr (
+    x DOUBLE PRECISION,
+    y DOUBLE PRECISION
+);
+
+INSERT INTO test_wsr VALUES (0.32,0.39);
+INSERT INTO test_wsr VALUES (0.4,0.47);
+INSERT INTO test_wsr VALUES (0.11,0.11);
+INSERT INTO test_wsr VALUES (0.48,0.4);
+
+CREATE TABLE wsr_test AS
+SELECT (wsr_test(
+    x - y,
+    2 * 2^(-52) * greatest(x,y)
+    ORDER BY abs(x - y)
+)).*
+FROM test_wsr;

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/summary/test/summary.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/summary/test/summary.ic.sql_in b/src/ports/postgres/modules/summary/test/summary.ic.sql_in
new file mode 100644
index 0000000..99b6a95
--- /dev/null
+++ b/src/ports/postgres/modules/summary/test/summary.ic.sql_in
@@ -0,0 +1,34 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+-- table with data types that cannot be casted into text
+CREATE TABLE bit_data (
+    a bit(3),
+    b bit varying(5)
+);
+
+COPY bit_data (a, b) FROM stdin;
+101	00
+\.
+
+DROP TABLE IF EXISTS bit_data_summary;
+SELECT summary('bit_data', 'bit_data_summary', NULL, 'a');
+

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/svm/test/svm.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/svm/test/svm.ic.sql_in b/src/ports/postgres/modules/svm/test/svm.ic.sql_in
new file mode 100644
index 0000000..606873e
--- /dev/null
+++ b/src/ports/postgres/modules/svm/test/svm.ic.sql_in
@@ -0,0 +1,46 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+CREATE TABLE abalone_train_small (
+    sex TEXT,
+    id SERIAL NOT NULL,
+    length DOUBLE PRECISION,
+    diameter DOUBLE PRECISION,
+    rings INTEGER);
+
+INSERT INTO abalone_train_small(id,sex,length,diameter,rings) VALUES
+(1040,'F',0.66,0.475,6),
+(177,'I',0.315,0.21,5),
+(3359,'M',0.285,0.215,5);
+
+-- verify gaussian kernel with grouping
+-- verify partial string support in kernel specification
+SELECT svm_regression(
+        'abalone_train_small',
+        'svr_mdl_m',
+        'rings',
+        'ARRAY[1,diameter]',
+        'gau',
+        'n_components=3',
+        'sex',
+        'max_iter=1, init_stepsize=1, decay_factor=0.9, tolerance=1e-16, epsilon = 0.05',
+        false);
+SELECT svm_predict('svr_mdl_m','abalone_train_small', 'id', 'svm_test_mdl_m');


[4/5] madlib git commit: Madpack: Add dev-check and a compact install-check.

Posted by ok...@apache.org.
http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/elastic_net/test/elastic_net.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/elastic_net/test/elastic_net.sql_in b/src/ports/postgres/modules/elastic_net/test/elastic_net.sql_in
new file mode 100644
index 0000000..28a6fe6
--- /dev/null
+++ b/src/ports/postgres/modules/elastic_net/test/elastic_net.sql_in
@@ -0,0 +1,842 @@
+
+/* ------------------------------------------------------------------------
+ * Install check for Elastic Net
+ * ------------------------------------------------------------------------ */
+
+DROP TABLE IF EXISTS lin_housing_wi;
+CREATE TABLE lin_housing_wi (id serial, x float8[], grp_by_col int, y float8);
+COPY lin_housing_wi (x, grp_by_col, y) FROM STDIN NULL '?' DELIMITER '|';
+{1,0.00632,18.00,2.310,NULL,0.5380,6.5750,NULL,4.0900,1,296.0,15.30,396.90,4.98} | 1 | 24.00
+{1,0.00632,18.00,2.310,0,0.5380,6.5750,65.20,4.0900,1,296.0,15.30,396.90,4.98} | 1 | 24.00
+{1,0.02731,0.00,7.070,0,0.4690,6.4210,78.90,4.9671,2,242.0,17.80,396.90,9.14} | 1 | 21.60
+{1,0.02729,0.00,7.070,0,0.4690,7.1850,61.10,4.9671,2,242.0,17.80,392.83,4.03} | 1 | 34.70
+{1,0.03237,0.00,2.180,0,0.4580,6.9980,45.80,6.0622,3,222.0,18.70,394.63,2.94} | 1 | 33.40
+{1,0.06905,0.00,2.180,0,0.4580,7.1470,54.20,6.0622,3,222.0,18.70,396.90,5.33} | 1 | 36.20
+{1,0.02985,0.00,2.180,0,0.4580,6.4300,58.70,6.0622,3,222.0,18.70,394.12,5.21} | 1 | 28.70
+{1,0.08829,12.50,7.870,0,0.5240,6.0120,66.60,5.5605,5,311.0,15.20,395.60,12.43} | 1 | 22.90
+{1,0.14455,12.50,7.870,0,0.5240,6.1720,96.10,5.9505,5,311.0,15.20,396.90,19.15} | 1 | 27.10
+{1,0.21124,12.50,7.870,0,0.5240,5.6310,100.00,6.0821,5,311.0,15.20,386.63,29.93} | 1 | 16.50
+{1,0.17004,12.50,7.870,0,0.5240,6.0040,85.90,6.5921,5,311.0,15.20,386.71,17.10} | 1 | 18.90
+{1,0.22489,12.50,7.870,0,0.5240,6.3770,94.30,6.3467,5,311.0,15.20,392.52,20.45} | 1 | 15.00
+{1,0.11747,12.50,7.870,0,0.5240,6.0090,82.90,6.2267,5,311.0,15.20,396.90,13.27} | 1 | 18.90
+{1,0.09378,12.50,7.870,0,0.5240,5.8890,39.00,5.4509,5,311.0,15.20,390.50,15.71} | 1 | 21.70
+{1,0.62976,0.00,8.140,0,0.5380,5.9490,61.80,4.7075,4,307.0,21.00,396.90,8.26} | 1 | 20.40
+{1,0.63796,0.00,8.140,0,0.5380,6.0960,84.50,4.4619,4,307.0,21.00,380.02,10.26} | 1 | 18.20
+{1,0.62739,0.00,8.140,0,0.5380,5.8340,56.50,4.4986,4,307.0,21.00,395.62,8.47} | 1 | 19.90
+{1,1.05393,0.00,8.140,0,0.5380,5.9350,29.30,4.4986,4,307.0,21.00,386.85,6.58} | 1 | 23.10
+{1,0.78420,0.00,8.140,0,0.5380,5.9900,81.70,4.2579,4,307.0,21.00,386.75,14.67} | 1 | 17.50
+{1,0.80271,0.00,8.140,0,0.5380,5.4560,36.60,3.7965,4,307.0,21.00,288.99,11.69} | 1 | 20.20
+{1,0.72580,0.00,8.140,0,0.5380,5.7270,69.50,3.7965,4,307.0,21.00,390.95,11.28} | 1 | 18.20
+{1,1.25179,0.00,8.140,0,0.5380,5.5700,98.10,3.7979,4,307.0,21.00,376.57,21.02} | 1 | 13.60
+{1,0.85204,0.00,8.140,0,0.5380,5.9650,89.20,4.0123,4,307.0,21.00,392.53,13.83} | 1 | 19.60
+{1,1.23247,0.00,8.140,0,0.5380,6.1420,91.70,3.9769,4,307.0,21.00,396.90,18.72} | 1 | 15.20
+{1,0.98843,0.00,8.140,0,0.5380,5.8130,100.00,4.0952,4,307.0,21.00,394.54,19.88} | 1 | 14.50
+{1,0.75026,0.00,8.140,0,0.5380,5.9240,94.10,4.3996,4,307.0,21.00,394.33,16.30} | 1 | 15.60
+{1,0.84054,0.00,8.140,0,0.5380,5.5990,85.70,4.4546,4,307.0,21.00,303.42,16.51} | 1 | 13.90
+{1,0.67191,0.00,8.140,0,0.5380,5.8130,90.30,4.6820,4,307.0,21.00,376.88,14.81} | 1 | 16.60
+{1,0.95577,0.00,8.140,0,0.5380,6.0470,88.80,4.4534,4,307.0,21.00,306.38,17.28} | 1 | 14.80
+{1,0.77299,0.00,8.140,0,0.5380,6.4950,94.40,4.4547,4,307.0,21.00,387.94,12.80} | 1 | 18.40
+{1,1.00245,0.00,8.140,0,0.5380,6.6740,87.30,4.2390,4,307.0,21.00,380.23,11.98} | 1 | 21.00
+{1,1.13081,0.00,8.140,0,0.5380,5.7130,94.10,4.2330,4,307.0,21.00,360.17,22.60} | 1 | 12.70
+{1,1.35472,0.00,8.140,0,0.5380,6.0720,100.00,4.1750,4,307.0,21.00,376.73,13.04} | 1 | 14.50
+{1,1.38799,0.00,8.140,0,0.5380,5.9500,82.00,3.9900,4,307.0,21.00,232.60,27.71} | 1 | 13.20
+{1,1.15172,0.00,8.140,0,0.5380,5.7010,95.00,3.7872,4,307.0,21.00,358.77,18.35} | 1 | 13.10
+{1,1.61282,0.00,8.140,0,0.5380,6.0960,96.90,3.7598,4,307.0,21.00,248.31,20.34} | 1 | 13.50
+{1,0.06417,0.00,5.960,0,0.4990,5.9330,68.20,3.3603,5,279.0,19.20,396.90,9.68} | 1 | 18.90
+{1,0.09744,0.00,5.960,0,0.4990,5.8410,61.40,3.3779,5,279.0,19.20,377.56,11.41} | 1 | 20.00
+{1,0.08014,0.00,5.960,0,0.4990,5.8500,41.50,3.9342,5,279.0,19.20,396.90,8.77} | 1 | 21.00
+{1,0.17505,0.00,5.960,0,0.4990,5.9660,30.20,3.8473,5,279.0,19.20,393.43,10.13} | 1 | 24.70
+{1,0.02763,75.00,2.950,0,0.4280,6.5950,21.80,5.4011,3,252.0,18.30,395.63,4.32} | 1 | 30.80
+{1,0.03359,75.00,2.950,0,0.4280,7.0240,15.80,5.4011,3,252.0,18.30,395.62,1.98} | 1 | 34.90
+{1,0.12744,0.00,6.910,0,0.4480,6.7700,2.90,5.7209,3,233.0,17.90,385.41,4.84} | 1 | 26.60
+{1,0.14150,0.00,6.910,0,0.4480,6.1690,6.60,5.7209,3,233.0,17.90,383.37,5.81} | 1 | 25.30
+{1,0.15936,0.00,6.910,0,0.4480,6.2110,6.50,5.7209,3,233.0,17.90,394.46,7.44} | 1 | 24.70
+{1,0.12269,0.00,6.910,0,0.4480,6.0690,40.00,5.7209,3,233.0,17.90,389.39,9.55} | 1 | 21.20
+{1,0.17142,0.00,6.910,0,0.4480,5.6820,33.80,5.1004,3,233.0,17.90,396.90,10.21} | 1 | 19.30
+{1,0.18836,0.00,6.910,0,0.4480,5.7860,33.30,5.1004,3,233.0,17.90,396.90,14.15} | 1 | 20.00
+{1,0.22927,0.00,6.910,0,0.4480,6.0300,85.50,5.6894,3,233.0,17.90,392.74,18.80} | 1 | 16.60
+{1,0.25387,0.00,6.910,0,0.4480,5.3990,95.30,5.8700,3,233.0,17.90,396.90,30.81} | 1 | 14.40
+{1,0.21977,0.00,6.910,0,0.4480,5.6020,62.00,6.0877,3,233.0,17.90,396.90,16.20} | 1 | 19.40
+{1,0.08873,21.00,5.640,0,0.4390,5.9630,45.70,6.8147,4,243.0,16.80,395.56,13.45} | 1 | 19.70
+{1,0.04337,21.00,5.640,0,0.4390,6.1150,63.00,6.8147,4,243.0,16.80,393.97,9.43} | 1 | 20.50
+{1,0.05360,21.00,5.640,0,0.4390,6.5110,21.10,6.8147,4,243.0,16.80,396.90,5.28} | 1 | 25.00
+{1,0.04981,21.00,5.640,0,0.4390,5.9980,21.40,6.8147,4,243.0,16.80,396.90,8.43} | 1 | 23.40
+{1,0.01360,75.00,4.000,0,0.4100,5.8880,47.60,7.3197,3,469.0,21.10,396.90,14.80} | 1 | 18.90
+{1,0.01311,90.00,1.220,0,0.4030,7.2490,21.90,8.6966,5,226.0,17.90,395.93,4.81} | 1 | 35.40
+{1,0.02055,85.00,0.740,0,0.4100,6.3830,35.70,9.1876,2,313.0,17.30,396.90,5.77} | 1 | 24.70
+{1,0.01432,100.00,1.320,0,0.4110,6.8160,40.50,8.3248,5,256.0,15.10,392.90,3.95} | 1 | 31.60
+{1,0.15445,25.00,5.130,0,0.4530,6.1450,29.20,7.8148,8,284.0,19.70,390.68,6.86} | 1 | 23.30
+{1,0.10328,25.00,5.130,0,0.4530,5.9270,47.20,6.9320,8,284.0,19.70,396.90,9.22} | 1 | 19.60
+{1,0.14932,25.00,5.130,0,0.4530,5.7410,66.20,7.2254,8,284.0,19.70,395.11,13.15} | 1 | 18.70
+{1,0.17171,25.00,5.130,0,0.4530,5.9660,93.40,6.8185,8,284.0,19.70,378.08,14.44} | 1 | 16.00
+{1,0.11027,25.00,5.130,0,0.4530,6.4560,67.80,7.2255,8,284.0,19.70,396.90,6.73} | 1 | 22.20
+{1,0.12650,25.00,5.130,0,0.4530,6.7620,43.40,7.9809,8,284.0,19.70,395.58,9.50} | 1 | 25.00
+{1,0.01951,17.50,1.380,0,0.4161,7.1040,59.50,9.2229,3,216.0,18.60,393.24,8.05} | 1 | 33.00
+{1,0.03584,80.00,3.370,0,0.3980,6.2900,17.80,6.6115,4,337.0,16.10,396.90,4.67} | 1 | 23.50
+{1,0.04379,80.00,3.370,0,0.3980,5.7870,31.10,6.6115,4,337.0,16.10,396.90,10.24} | 1 | 19.40
+{1,0.05789,12.50,6.070,0,0.4090,5.8780,21.40,6.4980,4,345.0,18.90,396.21,8.10} | 1 | 22.00
+{1,0.13554,12.50,6.070,0,0.4090,5.5940,36.80,6.4980,4,345.0,18.90,396.90,13.09} | 1 | 17.40
+{1,0.12816,12.50,6.070,0,0.4090,5.8850,33.00,6.4980,4,345.0,18.90,396.90,8.79} | 1 | 20.90
+{1,0.08826,0.00,10.810,0,0.4130,6.4170,6.60,5.2873,4,305.0,19.20,383.73,6.72} | 1 | 24.20
+{1,0.15876,0.00,10.810,0,0.4130,5.9610,17.50,5.2873,4,305.0,19.20,376.94,9.88} | 1 | 21.70
+{1,0.09164,0.00,10.810,0,0.4130,6.0650,7.80,5.2873,4,305.0,19.20,390.91,5.52} | 1 | 22.80
+{1,0.19539,0.00,10.810,0,0.4130,6.2450,6.20,5.2873,4,305.0,19.20,377.17,7.54} | 1 | 23.40
+{1,0.07896,0.00,12.830,0,0.4370,6.2730,6.00,4.2515,5,398.0,18.70,394.92,6.78} | 1 | 24.10
+{1,0.09512,0.00,12.830,0,0.4370,6.2860,45.00,4.5026,5,398.0,18.70,383.23,8.94} | 1 | 21.40
+{1,0.10153,0.00,12.830,0,0.4370,6.2790,74.50,4.0522,5,398.0,18.70,373.66,11.97} | 1 | 20.00
+{1,0.08707,0.00,12.830,0,0.4370,6.1400,45.80,4.0905,5,398.0,18.70,386.96,10.27} | 1 | 20.80
+{1,0.05646,0.00,12.830,0,0.4370,6.2320,53.70,5.0141,5,398.0,18.70,386.40,12.34} | 1 | 21.20
+{1,0.08387,0.00,12.830,0,0.4370,5.8740,36.60,4.5026,5,398.0,18.70,396.06,9.10} | 1 | 20.30
+{1,0.04113,25.00,4.860,0,0.4260,6.7270,33.50,5.4007,4,281.0,19.00,396.90,5.29} | 1 | 28.00
+{1,0.04462,25.00,4.860,0,0.4260,6.6190,70.40,5.4007,4,281.0,19.00,395.63,7.22} | 1 | 23.90
+{1,0.03659,25.00,4.860,0,0.4260,6.3020,32.20,5.4007,4,281.0,19.00,396.90,6.72} | 1 | 24.80
+{1,0.03551,25.00,4.860,0,0.4260,6.1670,46.70,5.4007,4,281.0,19.00,390.64,7.51} | 1 | 22.90
+{1,0.05059,0.00,4.490,0,0.4490,6.3890,48.00,4.7794,3,247.0,18.50,396.90,9.62} | 1 | 23.90
+{1,0.05735,0.00,4.490,0,0.4490,6.6300,56.10,4.4377,3,247.0,18.50,392.30,6.53} | 1 | 26.60
+{1,0.05188,0.00,4.490,0,0.4490,6.0150,45.10,4.4272,3,247.0,18.50,395.99,12.86} | 1 | 22.50
+{1,0.07151,0.00,4.490,0,0.4490,6.1210,56.80,3.7476,3,247.0,18.50,395.15,8.44} | 1 | 22.20
+{1,0.05660,0.00,3.410,0,0.4890,7.0070,86.30,3.4217,2,270.0,17.80,396.90,5.50} | 1 | 23.60
+{1,0.05302,0.00,3.410,0,0.4890,7.0790,63.10,3.4145,2,270.0,17.80,396.06,5.70} | 1 | 28.70
+{1,0.04684,0.00,3.410,0,0.4890,6.4170,66.10,3.0923,2,270.0,17.80,392.18,8.81} | 1 | 22.60
+{1,0.03932,0.00,3.410,0,0.4890,6.4050,73.90,3.0921,2,270.0,17.80,393.55,8.20} | 1 | 22.00
+{1,0.04203,28.00,15.040,0,0.4640,6.4420,53.60,3.6659,4,270.0,18.20,395.01,8.16} | 1 | 22.90
+{1,0.02875,28.00,15.040,0,0.4640,6.2110,28.90,3.6659,4,270.0,18.20,396.33,6.21} | 1 | 25.00
+{1,0.04294,28.00,15.040,0,0.4640,6.2490,77.30,3.6150,4,270.0,18.20,396.90,10.59} | 1 | 20.60
+{1,0.12204,0.00,2.890,0,0.4450,6.6250,57.80,3.4952,2,276.0,18.00,357.98,6.65} | 1 | 28.40
+{1,0.11504,0.00,2.890,0,0.4450,6.1630,69.60,3.4952,2,276.0,18.00,391.83,11.34} | 1 | 21.40
+{1,0.12083,0.00,2.890,0,0.4450,8.0690,76.00,3.4952,2,276.0,18.00,396.90,4.21} | 1 | 38.70
+{1,0.08187,0.00,2.890,0,0.4450,7.8200,36.90,3.4952,2,276.0,18.00,393.53,3.57} | 1 | 43.80
+{1,0.06860,0.00,2.890,0,0.4450,7.4160,62.50,3.4952,2,276.0,18.00,396.90,6.19} | 1 | 33.20
+{1,0.14866,0.00,8.560,0,0.5200,6.7270,79.90,2.7778,5,384.0,20.90,394.76,9.42} | 1 | 27.50
+{1,0.11432,0.00,8.560,0,0.5200,6.7810,71.30,2.8561,5,384.0,20.90,395.58,7.67} | 1 | 26.50
+{1,0.22876,0.00,8.560,0,0.5200,6.4050,85.40,2.7147,5,384.0,20.90,70.80,10.63} | 1 | 18.60
+{1,0.21161,0.00,8.560,0,0.5200,6.1370,87.40,2.7147,5,384.0,20.90,394.47,13.44} | 1 | 19.30
+{1,0.13960,0.00,8.560,0,0.5200,6.1670,90.00,2.4210,5,384.0,20.90,392.69,12.33} | 1 | 20.10
+{1,0.13262,0.00,8.560,0,0.5200,5.8510,96.70,2.1069,5,384.0,20.90,394.05,16.47} | 1 | 19.50
+{1,0.17120,0.00,8.560,0,0.5200,5.8360,91.90,2.2110,5,384.0,20.90,395.67,18.66} | 1 | 19.50
+{1,0.13117,0.00,8.560,0,0.5200,6.1270,85.20,2.1224,5,384.0,20.90,387.69,14.09} | 1 | 20.40
+{1,0.12802,0.00,8.560,0,0.5200,6.4740,97.10,2.4329,5,384.0,20.90,395.24,12.27} | 1 | 19.80
+{1,0.26363,0.00,8.560,0,0.5200,6.2290,91.20,2.5451,5,384.0,20.90,391.23,15.55} | 1 | 19.40
+{1,0.10793,0.00,8.560,0,0.5200,6.1950,54.40,2.7778,5,384.0,20.90,393.49,13.00} | 1 | 21.70
+{1,0.10084,0.00,10.010,0,0.5470,6.7150,81.60,2.6775,6,432.0,17.80,395.59,10.16} | 1 | 22.80
+{1,0.12329,0.00,10.010,0,0.5470,5.9130,92.90,2.3534,6,432.0,17.80,394.95,16.21} | 1 | 18.80
+{1,0.22212,0.00,10.010,0,0.5470,6.0920,95.40,2.5480,6,432.0,17.80,396.90,17.09} | 1 | 18.70
+{1,0.14231,0.00,10.010,0,0.5470,6.2540,84.20,2.2565,6,432.0,17.80,388.74,10.45} | 1 | 18.50
+{1,0.17134,0.00,10.010,0,0.5470,5.9280,88.20,2.4631,6,432.0,17.80,344.91,15.76} | 1 | 18.30
+{1,0.13158,0.00,10.010,0,0.5470,6.1760,72.50,2.7301,6,432.0,17.80,393.30,12.04} | 1 | 21.20
+{1,0.15098,0.00,10.010,0,0.5470,6.0210,82.60,2.7474,6,432.0,17.80,394.51,10.30} | 1 | 19.20
+{1,0.13058,0.00,10.010,0,0.5470,5.8720,73.10,2.4775,6,432.0,17.80,338.63,15.37} | 1 | 20.40
+{1,0.14476,0.00,10.010,0,0.5470,5.7310,65.20,2.7592,6,432.0,17.80,391.50,13.61} | 1 | 19.30
+{1,0.06899,0.00,25.650,0,0.5810,5.8700,69.70,2.2577,2,188.0,19.10,389.15,14.37} | 1 | 22.00
+{1,0.07165,0.00,25.650,0,0.5810,6.0040,84.10,2.1974,2,188.0,19.10,377.67,14.27} | 1 | 20.30
+{1,0.09299,0.00,25.650,0,0.5810,5.9610,92.90,2.0869,2,188.0,19.10,378.09,17.93} | 1 | 20.50
+{1,0.15038,0.00,25.650,0,0.5810,5.8560,97.00,1.9444,2,188.0,19.10,370.31,25.41} | 1 | 17.30
+{1,0.09849,0.00,25.650,0,0.5810,5.8790,95.80,2.0063,2,188.0,19.10,379.38,17.58} | 1 | 18.80
+{1,0.16902,0.00,25.650,0,0.5810,5.9860,88.40,1.9929,2,188.0,19.10,385.02,14.81} | 1 | 21.40
+{1,0.38735,0.00,25.650,0,0.5810,5.6130,95.60,1.7572,2,188.0,19.10,359.29,27.26} | 1 | 15.70
+{1,0.25915,0.00,21.890,0,0.6240,5.6930,96.00,1.7883,4,437.0,21.20,392.11,17.19} | 1 | 16.20
+{1,0.32543,0.00,21.890,0,0.6240,6.4310,98.80,1.8125,4,437.0,21.20,396.90,15.39} | 1 | 18.00
+{1,0.88125,0.00,21.890,0,0.6240,5.6370,94.70,1.9799,4,437.0,21.20,396.90,18.34} | 1 | 14.30
+{1,0.34006,0.00,21.890,0,0.6240,6.4580,98.90,2.1185,4,437.0,21.20,395.04,12.60} | 1 | 19.20
+{1,1.19294,0.00,21.890,0,0.6240,6.3260,97.70,2.2710,4,437.0,21.20,396.90,12.26} | 1 | 19.60
+{1,0.59005,0.00,21.890,0,0.6240,6.3720,97.90,2.3274,4,437.0,21.20,385.76,11.12} | 1 | 23.00
+{1,0.32982,0.00,21.890,0,0.6240,5.8220,95.40,2.4699,4,437.0,21.20,388.69,15.03} | 1 | 18.40
+{1,0.97617,0.00,21.890,0,0.6240,5.7570,98.40,2.3460,4,437.0,21.20,262.76,17.31} | 1 | 15.60
+{1,0.55778,0.00,21.890,0,0.6240,6.3350,98.20,2.1107,4,437.0,21.20,394.67,16.96} | 1 | 18.10
+{1,0.32264,0.00,21.890,0,0.6240,5.9420,93.50,1.9669,4,437.0,21.20,378.25,16.90} | 1 | 17.40
+{1,0.35233,0.00,21.890,0,0.6240,6.4540,98.40,1.8498,4,437.0,21.20,394.08,14.59} | 1 | 17.10
+{1,0.24980,0.00,21.890,0,0.6240,5.8570,98.20,1.6686,4,437.0,21.20,392.04,21.32} | 1 | 13.30
+{1,0.54452,0.00,21.890,0,0.6240,6.1510,97.90,1.6687,4,437.0,21.20,396.90,18.46} | 1 | 17.80
+{1,0.29090,0.00,21.890,0,0.6240,6.1740,93.60,1.6119,4,437.0,21.20,388.08,24.16} | 1 | 14.00
+{1,1.62864,0.00,21.890,0,0.6240,5.0190,100.00,1.4394,4,437.0,21.20,396.90,34.41} | 1 | 14.40
+{1,3.32105,0.00,19.580,1,0.8710,5.4030,100.00,1.3216,5,403.0,14.70,396.90,26.82} | 1 | 13.40
+{1,4.09740,0.00,19.580,0,0.8710,5.4680,100.00,1.4118,5,403.0,14.70,396.90,26.42} | 1 | 15.60
+{1,2.77974,0.00,19.580,0,0.8710,4.9030,97.80,1.3459,5,403.0,14.70,396.90,29.29} | 1 | 11.80
+{1,2.37934,0.00,19.580,0,0.8710,6.1300,100.00,1.4191,5,403.0,14.70,172.91,27.80} | 1 | 13.80
+{1,2.15505,0.00,19.580,0,0.8710,5.6280,100.00,1.5166,5,403.0,14.70,169.27,16.65} | 1 | 15.60
+{1,2.36862,0.00,19.580,0,0.8710,4.9260,95.70,1.4608,5,403.0,14.70,391.71,29.53} | 1 | 14.60
+{1,2.33099,0.00,19.580,0,0.8710,5.1860,93.80,1.5296,5,403.0,14.70,356.99,28.32} | 1 | 17.80
+{1,2.73397,0.00,19.580,0,0.8710,5.5970,94.90,1.5257,5,403.0,14.70,351.85,21.45} | 1 | 15.40
+{1,1.65660,0.00,19.580,0,0.8710,6.1220,97.30,1.6180,5,403.0,14.70,372.80,14.10} | 1 | 21.50
+{1,1.49632,0.00,19.580,0,0.8710,5.4040,100.00,1.5916,5,403.0,14.70,341.60,13.28} | 1 | 19.60
+{1,1.12658,0.00,19.580,1,0.8710,5.0120,88.00,1.6102,5,403.0,14.70,343.28,12.12} | 1 | 15.30
+{1,2.14918,0.00,19.580,0,0.8710,5.7090,98.50,1.6232,5,403.0,14.70,261.95,15.79} | 1 | 19.40
+{1,1.41385,0.00,19.580,1,0.8710,6.1290,96.00,1.7494,5,403.0,14.70,321.02,15.12} | 1 | 17.00
+{1,3.53501,0.00,19.580,1,0.8710,6.1520,82.60,1.7455,5,403.0,14.70,88.01,15.02} | 1 | 15.60
+{1,2.44668,0.00,19.580,0,0.8710,5.2720,94.00,1.7364,5,403.0,14.70,88.63,16.14} | 1 | 13.10
+{1,1.22358,0.00,19.580,0,0.6050,6.9430,97.40,1.8773,5,403.0,14.70,363.43,4.59} | 1 | 41.30
+{1,1.34284,0.00,19.580,0,0.6050,6.0660,100.00,1.7573,5,403.0,14.70,353.89,6.43} | 1 | 24.30
+{1,1.42502,0.00,19.580,0,0.8710,6.5100,100.00,1.7659,5,403.0,14.70,364.31,7.39} | 1 | 23.30
+{1,1.27346,0.00,19.580,1,0.6050,6.2500,92.60,1.7984,5,403.0,14.70,338.92,5.50} | 1 | 27.00
+{1,1.46336,0.00,19.580,0,0.6050,7.4890,90.80,1.9709,5,403.0,14.70,374.43,1.73} | 1 | 50.00
+{1,1.83377,0.00,19.580,1,0.6050,7.8020,98.20,2.0407,5,403.0,14.70,389.61,1.92} | 1 | 50.00
+{1,1.51902,0.00,19.580,1,0.6050,8.3750,93.90,2.1620,5,403.0,14.70,388.45,3.32} | 1 | 50.00
+{1,2.24236,0.00,19.580,0,0.6050,5.8540,91.80,2.4220,5,403.0,14.70,395.11,11.64} | 1 | 22.70
+{1,2.92400,0.00,19.580,0,0.6050,6.1010,93.00,2.2834,5,403.0,14.70,240.16,9.81} | 1 | 25.00
+{1,2.01019,0.00,19.580,0,0.6050,7.9290,96.20,2.0459,5,403.0,14.70,369.30,3.70} | 1 | 50.00
+{1,1.80028,0.00,19.580,0,0.6050,5.8770,79.20,2.4259,5,403.0,14.70,227.61,12.14} | 1 | 23.80
+{1,2.30040,0.00,19.580,0,0.6050,6.3190,96.10,2.1000,5,403.0,14.70,297.09,11.10} | 1 | 23.80
+{1,2.44953,0.00,19.580,0,0.6050,6.4020,95.20,2.2625,5,403.0,14.70,330.04,11.32} | 1 | 22.30
+{1,1.20742,0.00,19.580,0,0.6050,5.8750,94.60,2.4259,5,403.0,14.70,292.29,14.43} | 1 | 17.40
+{1,2.31390,0.00,19.580,0,0.6050,5.8800,97.30,2.3887,5,403.0,14.70,348.13,12.03} | 1 | 19.10
+{1,0.13914,0.00,4.050,0,0.5100,5.5720,88.50,2.5961,5,296.0,16.60,396.90,14.69} | 1 | 23.10
+{1,0.09178,0.00,4.050,0,0.5100,6.4160,84.10,2.6463,5,296.0,16.60,395.50,9.04} | 1 | 23.60
+{1,0.08447,0.00,4.050,0,0.5100,5.8590,68.70,2.7019,5,296.0,16.60,393.23,9.64} | 1 | 22.60
+{1,0.06664,0.00,4.050,0,0.5100,6.5460,33.10,3.1323,5,296.0,16.60,390.96,5.33} | 1 | 29.40
+{1,0.07022,0.00,4.050,0,0.5100,6.0200,47.20,3.5549,5,296.0,16.60,393.23,10.11} | 1 | 23.20
+{1,0.05425,0.00,4.050,0,0.5100,6.3150,73.40,3.3175,5,296.0,16.60,395.60,6.29} | 1 | 24.60
+{1,0.06642,0.00,4.050,0,0.5100,6.8600,74.40,2.9153,5,296.0,16.60,391.27,6.92} | 1 | 29.90
+{1,0.05780,0.00,2.460,0,0.4880,6.9800,58.40,2.8290,3,193.0,17.80,396.90,5.04} | 1 | 37.20
+{1,0.06588,0.00,2.460,0,0.4880,7.7650,83.30,2.7410,3,193.0,17.80,395.56,7.56} | 1 | 39.80
+{1,0.06888,0.00,2.460,0,0.4880,6.1440,62.20,2.5979,3,193.0,17.80,396.90,9.45} | 1 | 36.20
+{1,0.09103,0.00,2.460,0,0.4880,7.1550,92.20,2.7006,3,193.0,17.80,394.12,4.82} | 1 | 37.90
+{1,0.10008,0.00,2.460,0,0.4880,6.5630,95.60,2.8470,3,193.0,17.80,396.90,5.68} | 1 | 32.50
+{1,0.08308,0.00,2.460,0,0.4880,5.6040,89.80,2.9879,3,193.0,17.80,391.00,13.98} | 1 | 26.40
+{1,0.06047,0.00,2.460,0,0.4880,6.1530,68.80,3.2797,3,193.0,17.80,387.11,13.15} | 1 | 29.60
+{1,0.05602,0.00,2.460,0,0.4880,7.8310,53.60,3.1992,3,193.0,17.80,392.63,4.45} | 1 | 50.00
+{1,0.07875,45.00,3.440,0,0.4370,6.7820,41.10,3.7886,5,398.0,15.20,393.87,6.68} | 1 | 32.00
+{1,0.12579,45.00,3.440,0,0.4370,6.5560,29.10,4.5667,5,398.0,15.20,382.84,4.56} | 1 | 29.80
+{1,0.08370,45.00,3.440,0,0.4370,7.1850,38.90,4.5667,5,398.0,15.20,396.90,5.39} | 1 | 34.90
+{1,0.09068,45.00,3.440,0,0.4370,6.9510,21.50,6.4798,5,398.0,15.20,377.68,5.10} | 1 | 37.00
+{1,0.06911,45.00,3.440,0,0.4370,6.7390,30.80,6.4798,5,398.0,15.20,389.71,4.69} | 1 | 30.50
+{1,0.08664,45.00,3.440,0,0.4370,7.1780,26.30,6.4798,5,398.0,15.20,390.49,2.87} | 1 | 36.40
+{1,0.02187,60.00,2.930,0,0.4010,6.8000,9.90,6.2196,1,265.0,15.60,393.37,5.03} | 1 | 31.10
+{1,0.01439,60.00,2.930,0,0.4010,6.6040,18.80,6.2196,1,265.0,15.60,376.70,4.38} | 1 | 29.10
+{1,0.01381,80.00,0.460,0,0.4220,7.8750,32.00,5.6484,4,255.0,14.40,394.23,2.97} | 1 | 50.00
+{1,0.04011,80.00,1.520,0,0.4040,7.2870,34.10,7.3090,2,329.0,12.60,396.90,4.08} | 1 | 33.30
+{1,0.04666,80.00,1.520,0,0.4040,7.1070,36.60,7.3090,2,329.0,12.60,354.31,8.61} | 1 | 30.30
+{1,0.03768,80.00,1.520,0,0.4040,7.2740,38.30,7.3090,2,329.0,12.60,392.20,6.62} | 1 | 34.60
+{1,0.03150,95.00,1.470,0,0.4030,6.9750,15.30,7.6534,3,402.0,17.00,396.90,4.56} | 1 | 34.90
+{1,0.01778,95.00,1.470,0,0.4030,7.1350,13.90,7.6534,3,402.0,17.00,384.30,4.45} | 1 | 32.90
+{1,0.03445,82.50,2.030,0,0.4150,6.1620,38.40,6.2700,2,348.0,14.70,393.77,7.43} | 1 | 24.10
+{1,0.02177,82.50,2.030,0,0.4150,7.6100,15.70,6.2700,2,348.0,14.70,395.38,3.11} | 1 | 42.30
+{1,0.03510,95.00,2.680,0,0.4161,7.8530,33.20,5.1180,4,224.0,14.70,392.78,3.81} | 1 | 48.50
+{1,0.02009,95.00,2.680,0,0.4161,8.0340,31.90,5.1180,4,224.0,14.70,390.55,2.88} | 1 | 50.00
+{1,0.13642,0.00,10.590,0,0.4890,5.8910,22.30,3.9454,4,277.0,18.60,396.90,10.87} | 1 | 22.60
+{1,0.22969,0.00,10.590,0,0.4890,6.3260,52.50,4.3549,4,277.0,18.60,394.87,10.97} | 1 | 24.40
+{1,0.25199,0.00,10.590,0,0.4890,5.7830,72.70,4.3549,4,277.0,18.60,389.43,18.06} | 1 | 22.50
+{1,0.13587,0.00,10.590,1,0.4890,6.0640,59.10,4.2392,4,277.0,18.60,381.32,14.66} | 1 | 24.40
+{1,0.43571,0.00,10.590,1,0.4890,5.3440,100.00,3.8750,4,277.0,18.60,396.90,23.09} | 1 | 20.00
+{1,0.17446,0.00,10.590,1,0.4890,5.9600,92.10,3.8771,4,277.0,18.60,393.25,17.27} | 1 | 21.70
+{1,0.37578,0.00,10.590,1,0.4890,5.4040,88.60,3.6650,4,277.0,18.60,395.24,23.98} | 1 | 19.30
+{1,0.21719,0.00,10.590,1,0.4890,5.8070,53.80,3.6526,4,277.0,18.60,390.94,16.03} | 1 | 22.40
+{1,0.14052,0.00,10.590,0,0.4890,6.3750,32.30,3.9454,4,277.0,18.60,385.81,9.38} | 1 | 28.10
+{1,0.28955,0.00,10.590,0,0.4890,5.4120,9.80,3.5875,4,277.0,18.60,348.93,29.55} | 1 | 23.70
+{1,0.19802,0.00,10.590,0,0.4890,6.1820,42.40,3.9454,4,277.0,18.60,393.63,9.47} | 1 | 25.00
+{1,0.04560,0.00,13.890,1,0.5500,5.8880,56.00,3.1121,5,276.0,16.40,392.80,13.51} | 1 | 23.30
+{1,0.07013,0.00,13.890,0,0.5500,6.6420,85.10,3.4211,5,276.0,16.40,392.78,9.69} | 1 | 28.70
+{1,0.11069,0.00,13.890,1,0.5500,5.9510,93.80,2.8893,5,276.0,16.40,396.90,17.92} | 1 | 21.50
+{1,0.11425,0.00,13.890,1,0.5500,6.3730,92.40,3.3633,5,276.0,16.40,393.74,10.50} | 1 | 23.00
+{1,0.35809,0.00,6.200,1,0.5070,6.9510,88.50,2.8617,8,307.0,17.40,391.70,9.71} | 1 | 26.70
+{1,0.40771,0.00,6.200,1,0.5070,6.1640,91.30,3.0480,8,307.0,17.40,395.24,21.46} | 1 | 21.70
+{1,0.62356,0.00,6.200,1,0.5070,6.8790,77.70,3.2721,8,307.0,17.40,390.39,9.93} | 1 | 27.50
+{1,0.61470,0.00,6.200,0,0.5070,6.6180,80.80,3.2721,8,307.0,17.40,396.90,7.60} | 1 | 30.10
+{1,0.31533,0.00,6.200,0,0.5040,8.2660,78.30,2.8944,8,307.0,17.40,385.05,4.14} | 1 | 44.80
+{1,0.52693,0.00,6.200,0,0.5040,8.7250,83.00,2.8944,8,307.0,17.40,382.00,4.63} | 1 | 50.00
+{1,0.38214,0.00,6.200,0,0.5040,8.0400,86.50,3.2157,8,307.0,17.40,387.38,3.13} | 1 | 37.60
+{1,0.41238,0.00,6.200,0,0.5040,7.1630,79.90,3.2157,8,307.0,17.40,372.08,6.36} | 1 | 31.60
+{1,0.29819,0.00,6.200,0,0.5040,7.6860,17.00,3.3751,8,307.0,17.40,377.51,3.92} | 1 | 46.70
+{1,0.44178,0.00,6.200,0,0.5040,6.5520,21.40,3.3751,8,307.0,17.40,380.34,3.76} | 1 | 31.50
+{1,0.53700,0.00,6.200,0,0.5040,5.9810,68.10,3.6715,8,307.0,17.40,378.35,11.65} | 1 | 24.30
+{1,0.46296,0.00,6.200,0,0.5040,7.4120,76.90,3.6715,8,307.0,17.40,376.14,5.25} | 1 | 31.70
+{1,0.57529,0.00,6.200,0,0.5070,8.3370,73.30,3.8384,8,307.0,17.40,385.91,2.47} | 1 | 41.70
+{1,0.33147,0.00,6.200,0,0.5070,8.2470,70.40,3.6519,8,307.0,17.40,378.95,3.95} | 1 | 48.30
+{1,0.44791,0.00,6.200,1,0.5070,6.7260,66.50,3.6519,8,307.0,17.40,360.20,8.05} | 1 | 29.00
+{1,0.33045,0.00,6.200,0,0.5070,6.0860,61.50,3.6519,8,307.0,17.40,376.75,10.88} | 1 | 24.00
+{1,0.52058,0.00,6.200,1,0.5070,6.6310,76.50,4.1480,8,307.0,17.40,388.45,9.54} | 1 | 25.10
+{1,0.51183,0.00,6.200,0,0.5070,7.3580,71.60,4.1480,8,307.0,17.40,390.07,4.73} | 1 | 31.50
+{1,0.08244,30.00,4.930,0,0.4280,6.4810,18.50,6.1899,6,300.0,16.60,379.41,6.36} | 1 | 23.70
+{1,0.09252,30.00,4.930,0,0.4280,6.6060,42.20,6.1899,6,300.0,16.60,383.78,7.37} | 1 | 23.30
+{1,0.11329,30.00,4.930,0,0.4280,6.8970,54.30,6.3361,6,300.0,16.60,391.25,11.38} | 1 | 22.00
+{1,0.10612,30.00,4.930,0,0.4280,6.0950,65.10,6.3361,6,300.0,16.60,394.62,12.40} | 1 | 20.10
+{1,0.10290,30.00,4.930,0,0.4280,6.3580,52.90,7.0355,6,300.0,16.60,372.75,11.22} | 1 | 22.20
+{1,0.12757,30.00,4.930,0,0.4280,6.3930,7.80,7.0355,6,300.0,16.60,374.71,5.19} | 1 | 23.70
+{1,0.20608,22.00,5.860,0,0.4310,5.5930,76.50,7.9549,7,330.0,19.10,372.49,12.50} | 1 | 17.60
+{1,0.19133,22.00,5.860,0,0.4310,5.6050,70.20,7.9549,7,330.0,19.10,389.13,18.46} | 2 | 18.50
+{1,0.33983,22.00,5.860,0,0.4310,6.1080,34.90,8.0555,7,330.0,19.10,390.18,9.16} | 2 | 24.30
+{1,0.19657,22.00,5.860,0,0.4310,6.2260,79.20,8.0555,7,330.0,19.10,376.14,10.15} | 2 | 20.50
+{1,0.16439,22.00,5.860,0,0.4310,6.4330,49.10,7.8265,7,330.0,19.10,374.71,9.52} | 2 | 24.50
+{1,0.19073,22.00,5.860,0,0.4310,6.7180,17.50,7.8265,7,330.0,19.10,393.74,6.56} | 2 | 26.20
+{1,0.14030,22.00,5.860,0,0.4310,6.4870,13.00,7.3967,7,330.0,19.10,396.28,5.90} | 2 | 24.40
+{1,0.21409,22.00,5.860,0,0.4310,6.4380,8.90,7.3967,7,330.0,19.10,377.07,3.59} | 2 | 24.80
+{1,0.08221,22.00,5.860,0,0.4310,6.9570,6.80,8.9067,7,330.0,19.10,386.09,3.53} | 2 | 29.60
+{1,0.36894,22.00,5.860,0,0.4310,8.2590,8.40,8.9067,7,330.0,19.10,396.90,3.54} | 2 | 42.80
+{1,0.04819,80.00,3.640,0,0.3920,6.1080,32.00,9.2203,1,315.0,16.40,392.89,6.57} | 2 | 21.90
+{1,0.03548,80.00,3.640,0,0.3920,5.8760,19.10,9.2203,1,315.0,16.40,395.18,9.25} | 2 | 20.90
+{1,0.01538,90.00,3.750,0,0.3940,7.4540,34.20,6.3361,3,244.0,15.90,386.34,3.11} | 2 | 44.00
+{1,0.61154,20.00,3.970,0,0.6470,8.7040,86.90,1.8010,5,264.0,13.00,389.70,5.12} | 2 | 50.00
+{1,0.66351,20.00,3.970,0,0.6470,7.3330,100.00,1.8946,5,264.0,13.00,383.29,7.79} | 2 | 36.00
+{1,0.65665,20.00,3.970,0,0.6470,6.8420,100.00,2.0107,5,264.0,13.00,391.93,6.90} | 2 | 30.10
+{1,0.54011,20.00,3.970,0,0.6470,7.2030,81.80,2.1121,5,264.0,13.00,392.80,9.59} | 2 | 33.80
+{1,0.53412,20.00,3.970,0,0.6470,7.5200,89.40,2.1398,5,264.0,13.00,388.37,7.26} | 2 | 43.10
+{1,0.52014,20.00,3.970,0,0.6470,8.3980,91.50,2.2885,5,264.0,13.00,386.86,5.91} | 2 | 48.80
+{1,0.82526,20.00,3.970,0,0.6470,7.3270,94.50,2.0788,5,264.0,13.00,393.42,11.25} | 2 | 31.00
+{1,0.55007,20.00,3.970,0,0.6470,7.2060,91.60,1.9301,5,264.0,13.00,387.89,8.10} | 2 | 36.50
+{1,0.76162,20.00,3.970,0,0.6470,5.5600,62.80,1.9865,5,264.0,13.00,392.40,10.45} | 2 | 22.80
+{1,0.78570,20.00,3.970,0,0.6470,7.0140,84.60,2.1329,5,264.0,13.00,384.07,14.79} | 2 | 30.70
+{1,0.57834,20.00,3.970,0,0.5750,8.2970,67.00,2.4216,5,264.0,13.00,384.54,7.44} | 2 | 50.00
+{1,0.54050,20.00,3.970,0,0.5750,7.4700,52.60,2.8720,5,264.0,13.00,390.30,3.16} | 2 | 43.50
+{1,0.09065,20.00,6.960,1,0.4640,5.9200,61.50,3.9175,3,223.0,18.60,391.34,13.65} | 2 | 20.70
+{1,0.29916,20.00,6.960,0,0.4640,5.8560,42.10,4.4290,3,223.0,18.60,388.65,13.00} | 2 | 21.10
+{1,0.16211,20.00,6.960,0,0.4640,6.2400,16.30,4.4290,3,223.0,18.60,396.90,6.59} | 2 | 25.20
+{1,0.11460,20.00,6.960,0,0.4640,6.5380,58.70,3.9175,3,223.0,18.60,394.96,7.73} | 2 | 24.40
+{1,0.22188,20.00,6.960,1,0.4640,7.6910,51.80,4.3665,3,223.0,18.60,390.77,6.58} | 2 | 35.20
+{1,0.05644,40.00,6.410,1,0.4470,6.7580,32.90,4.0776,4,254.0,17.60,396.90,3.53} | 2 | 32.40
+{1,0.09604,40.00,6.410,0,0.4470,6.8540,42.80,4.2673,4,254.0,17.60,396.90,2.98} | 2 | 32.00
+{1,0.10469,40.00,6.410,1,0.4470,7.2670,49.00,4.7872,4,254.0,17.60,389.25,6.05} | 2 | 33.20
+{1,0.06127,40.00,6.410,1,0.4470,6.8260,27.60,4.8628,4,254.0,17.60,393.45,4.16} | 2 | 33.10
+{1,0.07978,40.00,6.410,0,0.4470,6.4820,32.10,4.1403,4,254.0,17.60,396.90,7.19} | 2 | 29.10
+{1,0.21038,20.00,3.330,0,0.4429,6.8120,32.20,4.1007,5,216.0,14.90,396.90,4.85} | 2 | 35.10
+{1,0.03578,20.00,3.330,0,0.4429,7.8200,64.50,4.6947,5,216.0,14.90,387.31,3.76} | 2 | 45.40
+{1,0.03705,20.00,3.330,0,0.4429,6.9680,37.20,5.2447,5,216.0,14.90,392.23,4.59} | 2 | 35.40
+{1,0.06129,20.00,3.330,1,0.4429,7.6450,49.70,5.2119,5,216.0,14.90,377.07,3.01} | 2 | 46.00
+{1,0.01501,90.00,1.210,1,0.4010,7.9230,24.80,5.8850,1,198.0,13.60,395.52,3.16} | 2 | 50.00
+{1,0.00906,90.00,2.970,0,0.4000,7.0880,20.80,7.3073,1,285.0,15.30,394.72,7.85} | 2 | 32.20
+{1,0.01096,55.00,2.250,0,0.3890,6.4530,31.90,7.3073,1,300.0,15.30,394.72,8.23} | 2 | 22.00
+{1,0.01965,80.00,1.760,0,0.3850,6.2300,31.50,9.0892,1,241.0,18.20,341.60,12.93} | 2 | 20.10
+{1,0.03871,52.50,5.320,0,0.4050,6.2090,31.30,7.3172,6,293.0,16.60,396.90,7.14} | 2 | 23.20
+{1,0.04590,52.50,5.320,0,0.4050,6.3150,45.60,7.3172,6,293.0,16.60,396.90,7.60} | 2 | 22.30
+{1,0.04297,52.50,5.320,0,0.4050,6.5650,22.90,7.3172,6,293.0,16.60,371.72,9.51} | 2 | 24.80
+{1,0.03502,80.00,4.950,0,0.4110,6.8610,27.90,5.1167,4,245.0,19.20,396.90,3.33} | 2 | 28.50
+{1,0.07886,80.00,4.950,0,0.4110,7.1480,27.70,5.1167,4,245.0,19.20,396.90,3.56} | 2 | 37.30
+{1,0.03615,80.00,4.950,0,0.4110,6.6300,23.40,5.1167,4,245.0,19.20,396.90,4.70} | 2 | 27.90
+{1,0.08265,0.00,13.920,0,0.4370,6.1270,18.40,5.5027,4,289.0,16.00,396.90,8.58} | 2 | 23.90
+{1,0.08199,0.00,13.920,0,0.4370,6.0090,42.30,5.5027,4,289.0,16.00,396.90,10.40} | 2 | 21.70
+{1,0.12932,0.00,13.920,0,0.4370,6.6780,31.10,5.9604,4,289.0,16.00,396.90,6.27} | 2 | 28.60
+{1,0.05372,0.00,13.920,0,0.4370,6.5490,51.00,5.9604,4,289.0,16.00,392.85,7.39} | 2 | 27.10
+{1,0.14103,0.00,13.920,0,0.4370,5.7900,58.00,6.3200,4,289.0,16.00,396.90,15.84} | 2 | 20.30
+{1,0.06466,70.00,2.240,0,0.4000,6.3450,20.10,7.8278,5,358.0,14.80,368.24,4.97} | 2 | 22.50
+{1,0.05561,70.00,2.240,0,0.4000,7.0410,10.00,7.8278,5,358.0,14.80,371.58,4.74} | 2 | 29.00
+{1,0.04417,70.00,2.240,0,0.4000,6.8710,47.40,7.8278,5,358.0,14.80,390.86,6.07} | 2 | 24.80
+{1,0.03537,34.00,6.090,0,0.4330,6.5900,40.40,5.4917,7,329.0,16.10,395.75,9.50} | 2 | 22.00
+{1,0.09266,34.00,6.090,0,0.4330,6.4950,18.40,5.4917,7,329.0,16.10,383.61,8.67} | 2 | 26.40
+{1,0.10000,34.00,6.090,0,0.4330,6.9820,17.70,5.4917,7,329.0,16.10,390.43,4.86} | 2 | 33.10
+{1,0.05515,33.00,2.180,0,0.4720,7.2360,41.10,4.0220,7,222.0,18.40,393.68,6.93} | 2 | 36.10
+{1,0.05479,33.00,2.180,0,0.4720,6.6160,58.10,3.3700,7,222.0,18.40,393.36,8.93} | 2 | 28.40
+{1,0.07503,33.00,2.180,0,0.4720,7.4200,71.90,3.0992,7,222.0,18.40,396.90,6.47} | 2 | 33.40
+{1,0.04932,33.00,2.180,0,0.4720,6.8490,70.30,3.1827,7,222.0,18.40,396.90,7.53} | 2 | 28.20
+{1,0.49298,0.00,9.900,0,0.5440,6.6350,82.50,3.3175,4,304.0,18.40,396.90,4.54} | 2 | 22.80
+{1,0.34940,0.00,9.900,0,0.5440,5.9720,76.70,3.1025,4,304.0,18.40,396.24,9.97} | 2 | 20.30
+{1,2.63548,0.00,9.900,0,0.5440,4.9730,37.80,2.5194,4,304.0,18.40,350.45,12.64} | 2 | 16.10
+{1,0.79041,0.00,9.900,0,0.5440,6.1220,52.80,2.6403,4,304.0,18.40,396.90,5.98} | 2 | 22.10
+{1,0.26169,0.00,9.900,0,0.5440,6.0230,90.40,2.8340,4,304.0,18.40,396.30,11.72} | 2 | 19.40
+{1,0.26938,0.00,9.900,0,0.5440,6.2660,82.80,3.2628,4,304.0,18.40,393.39,7.90} | 2 | 21.60
+{1,0.36920,0.00,9.900,0,0.5440,6.5670,87.30,3.6023,4,304.0,18.40,395.69,9.28} | 2 | 23.80
+{1,0.25356,0.00,9.900,0,0.5440,5.7050,77.70,3.9450,4,304.0,18.40,396.42,11.50} | 2 | 16.20
+{1,0.31827,0.00,9.900,0,0.5440,5.9140,83.20,3.9986,4,304.0,18.40,390.70,18.33} | 2 | 17.80
+{1,0.24522,0.00,9.900,0,0.5440,5.7820,71.70,4.0317,4,304.0,18.40,396.90,15.94} | 2 | 19.80
+{1,0.40202,0.00,9.900,0,0.5440,6.3820,67.20,3.5325,4,304.0,18.40,395.21,10.36} | 2 | 23.10
+{1,0.47547,0.00,9.900,0,0.5440,6.1130,58.80,4.0019,4,304.0,18.40,396.23,12.73} | 2 | 21.00
+{1,0.16760,0.00,7.380,0,0.4930,6.4260,52.30,4.5404,5,287.0,19.60,396.90,7.20} | 2 | 23.80
+{1,0.18159,0.00,7.380,0,0.4930,6.3760,54.30,4.5404,5,287.0,19.60,396.90,6.87} | 2 | 23.10
+{1,0.35114,0.00,7.380,0,0.4930,6.0410,49.90,4.7211,5,287.0,19.60,396.90,7.70} | 2 | 20.40
+{1,0.28392,0.00,7.380,0,0.4930,5.7080,74.30,4.7211,5,287.0,19.60,391.13,11.74} | 2 | 18.50
+{1,0.34109,0.00,7.380,0,0.4930,6.4150,40.10,4.7211,5,287.0,19.60,396.90,6.12} | 2 | 25.00
+{1,0.19186,0.00,7.380,0,0.4930,6.4310,14.70,5.4159,5,287.0,19.60,393.68,5.08} | 2 | 24.60
+{1,0.30347,0.00,7.380,0,0.4930,6.3120,28.90,5.4159,5,287.0,19.60,396.90,6.15} | 2 | 23.00
+{1,0.24103,0.00,7.380,0,0.4930,6.0830,43.70,5.4159,5,287.0,19.60,396.90,12.79} | 2 | 22.20
+{1,0.06617,0.00,3.240,0,0.4600,5.8680,25.80,5.2146,4,430.0,16.90,382.44,9.97} | 2 | 19.30
+{1,0.06724,0.00,3.240,0,0.4600,6.3330,17.20,5.2146,4,430.0,16.90,375.21,7.34} | 2 | 22.60
+{1,0.04544,0.00,3.240,0,0.4600,6.1440,32.20,5.8736,4,430.0,16.90,368.57,9.09} | 2 | 19.80
+{1,0.05023,35.00,6.060,0,0.4379,5.7060,28.40,6.6407,1,304.0,16.90,394.02,12.43} | 2 | 17.10
+{1,0.03466,35.00,6.060,0,0.4379,6.0310,23.30,6.6407,1,304.0,16.90,362.25,7.83} | 2 | 19.40
+{1,0.05083,0.00,5.190,0,0.5150,6.3160,38.10,6.4584,5,224.0,20.20,389.71,5.68} | 2 | 22.20
+{1,0.03738,0.00,5.190,0,0.5150,6.3100,38.50,6.4584,5,224.0,20.20,389.40,6.75} | 2 | 20.70
+{1,0.03961,0.00,5.190,0,0.5150,6.0370,34.50,5.9853,5,224.0,20.20,396.90,8.01} | 2 | 21.10
+{1,0.03427,0.00,5.190,0,0.5150,5.8690,46.30,5.2311,5,224.0,20.20,396.90,9.80} | 2 | 19.50
+{1,0.03041,0.00,5.190,0,0.5150,5.8950,59.60,5.6150,5,224.0,20.20,394.81,10.56} | 2 | 18.50
+{1,0.03306,0.00,5.190,0,0.5150,6.0590,37.30,4.8122,5,224.0,20.20,396.14,8.51} | 2 | 20.60
+{1,0.05497,0.00,5.190,0,0.5150,5.9850,45.40,4.8122,5,224.0,20.20,396.90,9.74} | 2 | 19.00
+{1,0.06151,0.00,5.190,0,0.5150,5.9680,58.50,4.8122,5,224.0,20.20,396.90,9.29} | 2 | 18.70
+{1,0.01301,35.00,1.520,0,0.4420,7.2410,49.30,7.0379,1,284.0,15.50,394.74,5.49} | 2 | 32.70
+{1,0.02498,0.00,1.890,0,0.5180,6.5400,59.70,6.2669,1,422.0,15.90,389.96,8.65} | 2 | 16.50
+{1,0.02543,55.00,3.780,0,0.4840,6.6960,56.40,5.7321,5,370.0,17.60,396.90,7.18} | 2 | 23.90
+{1,0.03049,55.00,3.780,0,0.4840,6.8740,28.10,6.4654,5,370.0,17.60,387.97,4.61} | 2 | 31.20
+{1,0.03113,0.00,4.390,0,0.4420,6.0140,48.50,8.0136,3,352.0,18.80,385.64,10.53} | 2 | 17.50
+{1,0.06162,0.00,4.390,0,0.4420,5.8980,52.30,8.0136,3,352.0,18.80,364.61,12.67} | 2 | 17.20
+{1,0.01870,85.00,4.150,0,0.4290,6.5160,27.70,8.5353,4,351.0,17.90,392.43,6.36} | 2 | 23.10
+{1,0.01501,80.00,2.010,0,0.4350,6.6350,29.70,8.3440,4,280.0,17.00,390.94,5.99} | 2 | 24.50
+{1,0.02899,40.00,1.250,0,0.4290,6.9390,34.50,8.7921,1,335.0,19.70,389.85,5.89} | 2 | 26.60
+{1,0.06211,40.00,1.250,0,0.4290,6.4900,44.40,8.7921,1,335.0,19.70,396.90,5.98} | 2 | 22.90
+{1,0.07950,60.00,1.690,0,0.4110,6.5790,35.90,10.7103,4,411.0,18.30,370.78,5.49} | 2 | 24.10
+{1,0.07244,60.00,1.690,0,0.4110,5.8840,18.50,10.7103,4,411.0,18.30,392.33,7.79} | 2 | 18.60
+{1,0.01709,90.00,2.020,0,0.4100,6.7280,36.10,12.1265,5,187.0,17.00,384.46,4.50} | 2 | 30.10
+{1,0.04301,80.00,1.910,0,0.4130,5.6630,21.90,10.5857,4,334.0,22.00,382.80,8.05} | 2 | 18.20
+{1,0.10659,80.00,1.910,0,0.4130,5.9360,19.50,10.5857,4,334.0,22.00,376.04,5.57} | 2 | 20.60
+{1,8.98296,0.00,18.100,1,0.7700,6.2120,97.40,2.1222,24,666.0,20.20,377.73,17.60} | 2 | 17.80
+{1,3.84970,0.00,18.100,1,0.7700,6.3950,91.00,2.5052,24,666.0,20.20,391.34,13.27} | 2 | 21.70
+{1,5.20177,0.00,18.100,1,0.7700,6.1270,83.40,2.7227,24,666.0,20.20,395.43,11.48} | 2 | 22.70
+{1,4.26131,0.00,18.100,0,0.7700,6.1120,81.30,2.5091,24,666.0,20.20,390.74,12.67} | 2 | 22.60
+{1,4.54192,0.00,18.100,0,0.7700,6.3980,88.00,2.5182,24,666.0,20.20,374.56,7.79} | 2 | 25.00
+{1,3.83684,0.00,18.100,0,0.7700,6.2510,91.10,2.2955,24,666.0,20.20,350.65,14.19} | 2 | 19.90
+{1,3.67822,0.00,18.100,0,0.7700,5.3620,96.20,2.1036,24,666.0,20.20,380.79,10.19} | 2 | 20.80
+{1,4.22239,0.00,18.100,1,0.7700,5.8030,89.00,1.9047,24,666.0,20.20,353.04,14.64} | 2 | 16.80
+{1,3.47428,0.00,18.100,1,0.7180,8.7800,82.90,1.9047,24,666.0,20.20,354.55,5.29} | 2 | 21.90
+{1,4.55587,0.00,18.100,0,0.7180,3.5610,87.90,1.6132,24,666.0,20.20,354.70,7.12} | 2 | 27.50
+{1,3.69695,0.00,18.100,0,0.7180,4.9630,91.40,1.7523,24,666.0,20.20,316.03,14.00} | 2 | 21.90
+{1,13.52220,0.00,18.100,0,0.6310,3.8630,100.00,1.5106,24,666.0,20.20,131.42,13.33} | 2 | 23.10
+{1,4.89822,0.00,18.100,0,0.6310,4.9700,100.00,1.3325,24,666.0,20.20,375.52,3.26} | 2 | 50.00
+{1,5.66998,0.00,18.100,1,0.6310,6.6830,96.80,1.3567,24,666.0,20.20,375.33,3.73} | 2 | 50.00
+{1,6.53876,0.00,18.100,1,0.6310,7.0160,97.50,1.2024,24,666.0,20.20,392.05,2.96} | 2 | 50.00
+{1,9.23230,0.00,18.100,0,0.6310,6.2160,100.00,1.1691,24,666.0,20.20,366.15,9.53} | 2 | 50.00
+{1,8.26725,0.00,18.100,1,0.6680,5.8750,89.60,1.1296,24,666.0,20.20,347.88,8.88} | 2 | 50.00
+{1,11.10810,0.00,18.100,0,0.6680,4.9060,100.00,1.1742,24,666.0,20.20,396.90,34.77} | 2 | 13.80
+{1,18.49820,0.00,18.100,0,0.6680,4.1380,100.00,1.1370,24,666.0,20.20,396.90,37.97} | 2 | 13.80
+{1,19.60910,0.00,18.100,0,0.6710,7.3130,97.90,1.3163,24,666.0,20.20,396.90,13.44} | 2 | 15.00
+{1,15.28800,0.00,18.100,0,0.6710,6.6490,93.30,1.3449,24,666.0,20.20,363.02,23.24} | 2 | 13.90
+{1,9.82349,0.00,18.100,0,0.6710,6.7940,98.80,1.3580,24,666.0,20.20,396.90,21.24} | 2 | 13.30
+{1,23.64820,0.00,18.100,0,0.6710,6.3800,96.20,1.3861,24,666.0,20.20,396.90,23.69} | 2 | 13.10
+{1,17.86670,0.00,18.100,0,0.6710,6.2230,100.00,1.3861,24,666.0,20.20,393.74,21.78} | 2 | 10.20
+{1,88.97620,0.00,18.100,0,0.6710,6.9680,91.90,1.4165,24,666.0,20.20,396.90,17.21} | 2 | 10.40
+{1,15.87440,0.00,18.100,0,0.6710,6.5450,99.10,1.5192,24,666.0,20.20,396.90,21.08} | 2 | 10.90
+{1,9.18702,0.00,18.100,0,0.7000,5.5360,100.00,1.5804,24,666.0,20.20,396.90,23.60} | 2 | 11.30
+{1,7.99248,0.00,18.100,0,0.7000,5.5200,100.00,1.5331,24,666.0,20.20,396.90,24.56} | 2 | 12.30
+{1,20.08490,0.00,18.100,0,0.7000,4.3680,91.20,1.4395,24,666.0,20.20,285.83,30.63} | 2 | 8.80
+{1,16.81180,0.00,18.100,0,0.7000,5.2770,98.10,1.4261,24,666.0,20.20,396.90,30.81} | 2 | 7.20
+{1,24.39380,0.00,18.100,0,0.7000,4.6520,100.00,1.4672,24,666.0,20.20,396.90,28.28} | 2 | 10.50
+{1,22.59710,0.00,18.100,0,0.7000,5.0000,89.50,1.5184,24,666.0,20.20,396.90,31.99} | 2 | 7.40
+{1,14.33370,0.00,18.100,0,0.7000,4.8800,100.00,1.5895,24,666.0,20.20,372.92,30.62} | 2 | 10.20
+{1,8.15174,0.00,18.100,0,0.7000,5.3900,98.90,1.7281,24,666.0,20.20,396.90,20.85} | 2 | 11.50
+{1,6.96215,0.00,18.100,0,0.7000,5.7130,97.00,1.9265,24,666.0,20.20,394.43,17.11} | 2 | 15.10
+{1,5.29305,0.00,18.100,0,0.7000,6.0510,82.50,2.1678,24,666.0,20.20,378.38,18.76} | 2 | 23.20
+{1,11.57790,0.00,18.100,0,0.7000,5.0360,97.00,1.7700,24,666.0,20.20,396.90,25.68} | 2 | 9.70
+{1,8.64476,0.00,18.100,0,0.6930,6.1930,92.60,1.7912,24,666.0,20.20,396.90,15.17} | 2 | 13.80
+{1,13.35980,0.00,18.100,0,0.6930,5.8870,94.70,1.7821,24,666.0,20.20,396.90,16.35} | 2 | 12.70
+{1,8.71675,0.00,18.100,0,0.6930,6.4710,98.80,1.7257,24,666.0,20.20,391.98,17.12} | 2 | 13.10
+{1,5.87205,0.00,18.100,0,0.6930,6.4050,96.00,1.6768,24,666.0,20.20,396.90,19.37} | 2 | 12.50
+{1,7.67202,0.00,18.100,0,0.6930,5.7470,98.90,1.6334,24,666.0,20.20,393.10,19.92} | 2 | 8.50
+{1,38.35180,0.00,18.100,0,0.6930,5.4530,100.00,1.4896,24,666.0,20.20,396.90,30.59} | 2 | 5.00
+{1,9.91655,0.00,18.100,0,0.6930,5.8520,77.80,1.5004,24,666.0,20.20,338.16,29.97} | 2 | 6.30
+{1,25.04610,0.00,18.100,0,0.6930,5.9870,100.00,1.5888,24,666.0,20.20,396.90,26.77} | 2 | 5.60
+{1,14.23620,0.00,18.100,0,0.6930,6.3430,100.00,1.5741,24,666.0,20.20,396.90,20.32} | 2 | 7.20
+{1,9.59571,0.00,18.100,0,0.6930,6.4040,100.00,1.6390,24,666.0,20.20,376.11,20.31} | 2 | 12.10
+{1,24.80170,0.00,18.100,0,0.6930,5.3490,96.00,1.7028,24,666.0,20.20,396.90,19.77} | 2 | 8.30
+{1,41.52920,0.00,18.100,0,0.6930,5.5310,85.40,1.6074,24,666.0,20.20,329.46,27.38} | 2 | 8.50
+{1,67.92080,0.00,18.100,0,0.6930,5.6830,100.00,1.4254,24,666.0,20.20,384.97,22.98} | 2 | 5.00
+{1,20.71620,0.00,18.100,0,0.6590,4.1380,100.00,1.1781,24,666.0,20.20,370.22,23.34} | 2 | 11.90
+{1,11.95110,0.00,18.100,0,0.6590,5.6080,100.00,1.2852,24,666.0,20.20,332.09,12.13} | 2 | 27.90
+{1,7.40389,0.00,18.100,0,0.5970,5.6170,97.90,1.4547,24,666.0,20.20,314.64,26.40} | 2 | 17.20
+{1,14.43830,0.00,18.100,0,0.5970,6.8520,100.00,1.4655,24,666.0,20.20,179.36,19.78} | 2 | 27.50
+{1,51.13580,0.00,18.100,0,0.5970,5.7570,100.00,1.4130,24,666.0,20.20,2.60,10.11} | 2 | 15.00
+{1,14.05070,0.00,18.100,0,0.5970,6.6570,100.00,1.5275,24,666.0,20.20,35.05,21.22} | 2 | 17.20
+{1,18.81100,0.00,18.100,0,0.5970,4.6280,100.00,1.5539,24,666.0,20.20,28.79,34.37} | 2 | 17.90
+{1,28.65580,0.00,18.100,0,0.5970,5.1550,100.00,1.5894,24,666.0,20.20,210.97,20.08} | 2 | 16.30
+{1,45.74610,0.00,18.100,0,0.6930,4.5190,100.00,1.6582,24,666.0,20.20,88.27,36.98} | 2 | 7.00
+{1,18.08460,0.00,18.100,0,0.6790,6.4340,100.00,1.8347,24,666.0,20.20,27.25,29.05} | 2 | 7.20
+{1,10.83420,0.00,18.100,0,0.6790,6.7820,90.80,1.8195,24,666.0,20.20,21.57,25.79} | 2 | 7.50
+{1,25.94060,0.00,18.100,0,0.6790,5.3040,89.10,1.6475,24,666.0,20.20,127.36,26.64} | 2 | 10.40
+{1,73.53410,0.00,18.100,0,0.6790,5.9570,100.00,1.8026,24,666.0,20.20,16.45,20.62} | 2 | 8.80
+{1,11.81230,0.00,18.100,0,0.7180,6.8240,76.50,1.7940,24,666.0,20.20,48.45,22.74} | 2 | 8.40
+{1,11.08740,0.00,18.100,0,0.7180,6.4110,100.00,1.8589,24,666.0,20.20,318.75,15.02} | 2 | 16.70
+{1,7.02259,0.00,18.100,0,0.7180,6.0060,95.30,1.8746,24,666.0,20.20,319.98,15.70} | 2 | 14.20
+{1,12.04820,0.00,18.100,0,0.6140,5.6480,87.60,1.9512,24,666.0,20.20,291.55,14.10} | 2 | 20.80
+{1,7.05042,0.00,18.100,0,0.6140,6.1030,85.10,2.0218,24,666.0,20.20,2.52,23.29} | 2 | 13.40
+{1,8.79212,0.00,18.100,0,0.5840,5.5650,70.60,2.0635,24,666.0,20.20,3.65,17.16} | 2 | 11.70
+{1,15.86030,0.00,18.100,0,0.6790,5.8960,95.40,1.9096,24,666.0,20.20,7.68,24.39} | 2 | 8.30
+{1,12.24720,0.00,18.100,0,0.5840,5.8370,59.70,1.9976,24,666.0,20.20,24.65,15.69} | 2 | 10.20
+{1,37.66190,0.00,18.100,0,0.6790,6.2020,78.70,1.8629,24,666.0,20.20,18.82,14.52} | 2 | 10.90
+{1,7.36711,0.00,18.100,0,0.6790,6.1930,78.10,1.9356,24,666.0,20.20,96.73,21.52} | 2 | 11.00
+{1,9.33889,0.00,18.100,0,0.6790,6.3800,95.60,1.9682,24,666.0,20.20,60.72,24.08} | 2 | 9.50
+{1,8.49213,0.00,18.100,0,0.5840,6.3480,86.10,2.0527,24,666.0,20.20,83.45,17.64} | 2 | 14.50
+{1,10.06230,0.00,18.100,0,0.5840,6.8330,94.30,2.0882,24,666.0,20.20,81.33,19.69} | 2 | 14.10
+{1,6.44405,0.00,18.100,0,0.5840,6.4250,74.80,2.2004,24,666.0,20.20,97.95,12.03} | 2 | 16.10
+{1,5.58107,0.00,18.100,0,0.7130,6.4360,87.90,2.3158,24,666.0,20.20,100.19,16.22} | 2 | 14.30
+{1,13.91340,0.00,18.100,0,0.7130,6.2080,95.00,2.2222,24,666.0,20.20,100.63,15.17} | 2 | 11.70
+{1,11.16040,0.00,18.100,0,0.7400,6.6290,94.60,2.1247,24,666.0,20.20,109.85,23.27} | 2 | 13.40
+{1,14.42080,0.00,18.100,0,0.7400,6.4610,93.30,2.0026,24,666.0,20.20,27.49,18.05} | 2 | 9.60
+{1,15.17720,0.00,18.100,0,0.7400,6.1520,100.00,1.9142,24,666.0,20.20,9.32,26.45} | 2 | 8.70
+{1,13.67810,0.00,18.100,0,0.7400,5.9350,87.90,1.8206,24,666.0,20.20,68.95,34.02} | 2 | 8.40
+{1,9.39063,0.00,18.100,0,0.7400,5.6270,93.90,1.8172,24,666.0,20.20,396.90,22.88} | 2 | 12.80
+{1,22.05110,0.00,18.100,0,0.7400,5.8180,92.40,1.8662,24,666.0,20.20,391.45,22.11} | 2 | 10.50
+{1,9.72418,0.00,18.100,0,0.7400,6.4060,97.20,2.0651,24,666.0,20.20,385.96,19.52} | 2 | 17.10
+{1,5.66637,0.00,18.100,0,0.7400,6.2190,100.00,2.0048,24,666.0,20.20,395.69,16.59} | 2 | 18.40
+{1,9.96654,0.00,18.100,0,0.7400,6.4850,100.00,1.9784,24,666.0,20.20,386.73,18.85} | 2 | 15.40
+{1,12.80230,0.00,18.100,0,0.7400,5.8540,96.60,1.8956,24,666.0,20.20,240.52,23.79} | 2 | 10.80
+{1,10.67180,0.00,18.100,0,0.7400,6.4590,94.80,1.9879,24,666.0,20.20,43.06,23.98} | 2 | 11.80
+{1,6.28807,0.00,18.100,0,0.7400,6.3410,96.40,2.0720,24,666.0,20.20,318.01,17.79} | 2 | 14.90
+{1,9.92485,0.00,18.100,0,0.7400,6.2510,96.60,2.1980,24,666.0,20.20,388.52,16.44} | 2 | 12.60
+{1,9.32909,0.00,18.100,0,0.7130,6.1850,98.70,2.2616,24,666.0,20.20,396.90,18.13} | 2 | 14.10
+{1,7.52601,0.00,18.100,0,0.7130,6.4170,98.30,2.1850,24,666.0,20.20,304.21,19.31} | 2 | 13.00
+{1,6.71772,0.00,18.100,0,0.7130,6.7490,92.60,2.3236,24,666.0,20.20,0.32,17.44} | 2 | 13.40
+{1,5.44114,0.00,18.100,0,0.7130,6.6550,98.20,2.3552,24,666.0,20.20,355.29,17.73} | 2 | 15.20
+{1,5.09017,0.00,18.100,0,0.7130,6.2970,91.80,2.3682,24,666.0,20.20,385.09,17.27} | 2 | 16.10
+{1,8.24809,0.00,18.100,0,0.7130,7.3930,99.30,2.4527,24,666.0,20.20,375.87,16.74} | 2 | 17.80
+{1,9.51363,0.00,18.100,0,0.7130,6.7280,94.10,2.4961,24,666.0,20.20,6.68,18.71} | 2 | 14.90
+{1,4.75237,0.00,18.100,0,0.7130,6.5250,86.50,2.4358,24,666.0,20.20,50.92,18.13} | 2 | 14.10
+{1,4.66883,0.00,18.100,0,0.7130,5.9760,87.90,2.5806,24,666.0,20.20,10.48,19.01} | 2 | 12.70
+{1,8.20058,0.00,18.100,0,0.7130,5.9360,80.30,2.7792,24,666.0,20.20,3.50,16.94} | 2 | 13.50
+{1,7.75223,0.00,18.100,0,0.7130,6.3010,83.70,2.7831,24,666.0,20.20,272.21,16.23} | 2 | 14.90
+{1,6.80117,0.00,18.100,0,0.7130,6.0810,84.40,2.7175,24,666.0,20.20,396.90,14.70} | 2 | 20.00
+{1,4.81213,0.00,18.100,0,0.7130,6.7010,90.00,2.5975,24,666.0,20.20,255.23,16.42} | 2 | 16.40
+{1,3.69311,0.00,18.100,0,0.7130,6.3760,88.40,2.5671,24,666.0,20.20,391.43,14.65} | 2 | 17.70
+{1,6.65492,0.00,18.100,0,0.7130,6.3170,83.00,2.7344,24,666.0,20.20,396.90,13.99} | 2 | 19.50
+{1,5.82115,0.00,18.100,0,0.7130,6.5130,89.90,2.8016,24,666.0,20.20,393.82,10.29} | 2 | 20.20
+{1,7.83932,0.00,18.100,0,0.6550,6.2090,65.40,2.9634,24,666.0,20.20,396.90,13.22} | 2 | 21.40
+{1,3.16360,0.00,18.100,0,0.6550,5.7590,48.20,3.0665,24,666.0,20.20,334.40,14.13} | 2 | 19.90
+{1,3.77498,0.00,18.100,0,0.6550,5.9520,84.70,2.8715,24,666.0,20.20,22.01,17.15} | 2 | 19.00
+{1,4.42228,0.00,18.100,0,0.5840,6.0030,94.50,2.5403,24,666.0,20.20,331.29,21.32} | 2 | 19.10
+{1,15.57570,0.00,18.100,0,0.5800,5.9260,71.00,2.9084,24,666.0,20.20,368.74,18.13} | 2 | 19.10
+{1,13.07510,0.00,18.100,0,0.5800,5.7130,56.70,2.8237,24,666.0,20.20,396.90,14.76} | 2 | 20.10
+{1,4.34879,0.00,18.100,0,0.5800,6.1670,84.00,3.0334,24,666.0,20.20,396.90,16.29} | 2 | 19.90
+{1,4.03841,0.00,18.100,0,0.5320,6.2290,90.70,3.0993,24,666.0,20.20,395.33,12.87} | 2 | 19.60
+{1,3.56868,0.00,18.100,0,0.5800,6.4370,75.00,2.8965,24,666.0,20.20,393.37,14.36} | 2 | 23.20
+{1,4.64689,0.00,18.100,0,0.6140,6.9800,67.60,2.5329,24,666.0,20.20,374.68,11.66} | 2 | 29.80
+{1,8.05579,0.00,18.100,0,0.5840,5.4270,95.40,2.4298,24,666.0,20.20,352.58,18.14} | 2 | 13.80
+{1,6.39312,0.00,18.100,0,0.5840,6.1620,97.40,2.2060,24,666.0,20.20,302.76,24.10} | 2 | 13.30
+{1,4.87141,0.00,18.100,0,0.6140,6.4840,93.60,2.3053,24,666.0,20.20,396.21,18.68} | 2 | 16.70
+{1,15.02340,0.00,18.100,0,0.6140,5.3040,97.30,2.1007,24,666.0,20.20,349.48,24.91} | 2 | 12.00
+{1,10.23300,0.00,18.100,0,0.6140,6.1850,96.70,2.1705,24,666.0,20.20,379.70,18.03} | 2 | 14.60
+{1,14.33370,0.00,18.100,0,0.6140,6.2290,88.00,1.9512,24,666.0,20.20,383.32,13.11} | 2 | 21.40
+{1,5.82401,0.00,18.100,0,0.5320,6.2420,64.70,3.4242,24,666.0,20.20,396.90,10.74} | 2 | 23.00
+{1,5.70818,0.00,18.100,0,0.5320,6.7500,74.90,3.3317,24,666.0,20.20,393.07,7.74} | 2 | 23.70
+{1,5.73116,0.00,18.100,0,0.5320,7.0610,77.00,3.4106,24,666.0,20.20,395.28,7.01} | 2 | 25.00
+{1,2.81838,0.00,18.100,0,0.5320,5.7620,40.30,4.0983,24,666.0,20.20,392.92,10.42} | 2 | 21.80
+{1,2.37857,0.00,18.100,0,0.5830,5.8710,41.90,3.7240,24,666.0,20.20,370.73,13.34} | 2 | 20.60
+{1,3.67367,0.00,18.100,0,0.5830,6.3120,51.90,3.9917,24,666.0,20.20,388.62,10.58} | 2 | 21.20
+{1,5.69175,0.00,18.100,0,0.5830,6.1140,79.80,3.5459,24,666.0,20.20,392.68,14.98} | 2 | 19.10
+{1,4.83567,0.00,18.100,0,0.5830,5.9050,53.20,3.1523,24,666.0,20.20,388.22,11.45} | 2 | 20.60
+{1,0.15086,0.00,27.740,0,0.6090,5.4540,92.70,1.8209,4,711.0,20.10,395.09,18.06} | 2 | 15.20
+{1,0.18337,0.00,27.740,0,0.6090,5.4140,98.30,1.7554,4,711.0,20.10,344.05,23.97} | 2 | 7.00
+{1,0.20746,0.00,27.740,0,0.6090,5.0930,98.00,1.8226,4,711.0,20.10,318.43,29.68} | 2 | 8.10
+{1,0.10574,0.00,27.740,0,0.6090,5.9830,98.80,1.8681,4,711.0,20.10,390.11,18.07} | 2 | 13.60
+{1,0.11132,0.00,27.740,0,0.6090,5.9830,83.50,2.1099,4,711.0,20.10,396.90,13.35} | 2 | 20.10
+{1,0.17331,0.00,9.690,0,0.5850,5.7070,54.00,2.3817,6,391.0,19.20,396.90,12.01} | 2 | 21.80
+{1,0.27957,0.00,9.690,0,0.5850,5.9260,42.60,2.3817,6,391.0,19.20,396.90,13.59} | 2 | 24.50
+{1,0.17899,0.00,9.690,0,0.5850,5.6700,28.80,2.7986,6,391.0,19.20,393.29,17.60} | 2 | 23.10
+{1,0.28960,0.00,9.690,0,0.5850,5.3900,72.90,2.7986,6,391.0,19.20,396.90,21.14} | 2 | 19.70
+{1,0.26838,0.00,9.690,0,0.5850,5.7940,70.60,2.8927,6,391.0,19.20,396.90,14.10} | 2 | 18.30
+{1,0.23912,0.00,9.690,0,0.5850,6.0190,65.30,2.4091,6,391.0,19.20,396.90,12.92} | 2 | 21.20
+{1,0.17783,0.00,9.690,0,0.5850,5.5690,73.50,2.3999,6,391.0,19.20,395.77,15.10} | 2 | 17.50
+{1,0.22438,0.00,9.690,0,0.5850,6.0270,79.70,2.4982,6,391.0,19.20,396.90,14.33} | 2 | 16.80
+{1,0.06263,0.00,11.930,0,0.5730,6.5930,69.10,2.4786,1,273.0,21.00,391.99,9.67} | 2 | 22.40
+{1,0.04527,0.00,11.930,0,0.5730,6.1200,76.70,2.2875,1,273.0,21.00,396.90,9.08} | 2 | 20.60
+{1,0.06076,0.00,11.930,0,0.5730,6.9760,91.00,2.1675,1,273.0,21.00,396.90,5.64} | 2 | 23.90
+{1,0.10959,0.00,11.930,0,0.5730,6.7940,89.30,2.3889,1,273.0,21.00,393.45,6.48} | 2 | 22.00
+{1,0.04741,0.00,11.930,0,0.5730,6.0300,80.80,2.5050,1,273.0,21.00,396.90,7.88} | 2 | 11.90
+{1,0.06076,0.00,11.930,0,0.5730,6.9760,91.00,2.1675,1,273.0,21.00,396.90,NULL} | 2 | 23.90
+{1,0.10959,0.00,11.930,NULL,0.5730,6.7940,89.30,2.3889,1,273.0,21.00,NULL,6.48} | 2 | 22.00
+{NULL,0.04741,0.00,11.930,0,0.5730,6.0300,80.80,2.5050,1,273.0,21.00,396.90,7.88} | 2 | 11.90
+\.
+
+DROP TABLE IF EXISTS elastic_type_src;
+
+CREATE TABLE elastic_type_src ( var_int int, var_float8 float8, var_sint smallint);
+COPY elastic_type_src (var_int, var_float8, var_sint) FROM stdin DELIMITER ',' NULL '?' ;
+1, 1.1, 1
+2, 2.2, 2
+3, 3.3, 3
+4, 4.4, 4
+\.
+
+DROP TABLE IF EXISTS housing_test;
+CREATE TABLE housing_test (id serial, x float8[], grp_by_col int, y float8);
+COPY housing_test (x, grp_by_col, y) FROM STDIN NULL '?' DELIMITER '|';
+{1,0.00632,18.00,2.310,0,0.5380,6.5750,65.20,4.0900,1,296.0,15.30,396.90,4.98} | 1 | 24.00
+{1,0.02731,0.00,7.070,0,0.4690,6.4210,78.90,4.9671,2,242.0,17.80,396.90,9.14} | 1 | 21.60
+{1,0.02729,0.00,7.070,0,0.4690,7.1850,61.10,4.9671,2,242.0,17.80,392.83,4.03} | 1 | 34.70
+{1,0.03237,0.00,2.180,0,0.4580,6.9980,45.80,6.0622,3,222.0,18.70,394.63,2.94} | 1 | 33.40
+{1,0.06905,0.00,2.180,0,0.4580,7.1470,54.20,6.0622,3,222.0,18.70,396.90,5.33} | 2 | 36.20
+{1,0.02985,0.00,2.180,0,0.4580,6.4300,58.70,6.0622,3,222.0,18.70,394.12,5.21} | 2 | 28.70
+{1,0.06076,0.00,11.930,0,0.573, NULL,91.00,2.1675,1,273.0,21.00,396.90,5.64} | 2 | 23.90
+{1,0.10959,0.00,11.930,0,0.5730,6.7940,89.30,NULL,1,273.0,21.00,393.45,6.48} | 2 | 22.00
+{1,0.04741,0.00,11.930,0,0.5730,6.0300,80.80,2.5050,NULL,273.0,21.00,396.90,7.88} | 2 | 11.90
+{1,0.04741,0.00,11.930,0,0.5730,6.0300,80.80,2.5050,NULL,273.0,21.00,396.90,7.88} | 3 | 11.90
+\.
+
+create function check_elastic_net ()
+returns void as $$
+begin
+    EXECUTE 'drop table if exists house_en, house_en_summary';
+    PERFORM elastic_net_train(
+        'lin_housing_wi',
+        'house_en',
+        'y',
+        'x',
+        'gaussian',
+        1,
+        0.2,
+        True,
+        NULL,
+        'fista',
+        '{eta = 2, max_stepsize = 0.5, use_active_set = f
+   }    1',
+        NULL,
+        2000,
+        1e-2
+    );
+
+    -- PERFORM assert(relative_error(log_likelihood, -14.41122) < 1e-3,
+    --     'Elastic Net: log-likelihood mismatch (gaussian)!'
+    -- ) from house_en;
+
+    EXECUTE 'DROP TABLE IF EXISTS house_en_pred';
+    PERFORM elastic_net_predict('house_en',
+                                'housing_test',
+                                'id',
+                                'house_en_pred');
+    -- The number of rows in house_en_pred must be equal to the
+    -- number of rows in the input table (housing_test), when
+    -- the model is learnt without using a grouping column
+    PERFORM assert(relative_error(count(*), 10) = 0,
+        'Elastic Net predict: Number of rows predicted mismatch'
+    ) from house_en_pred;
+
+
+    EXECUTE 'drop table if exists house_en, house_en_summary';
+    PERFORM elastic_net_train(
+        'lin_housing_wi',
+        'house_en',
+        'y',
+        'x',
+        'gaussian',
+        1,
+        0.05,
+        True,
+        'grp_by_col',
+        'fista',
+        '{eta = 2, max_stepsize = 0.5, use_active_set = f
+   }    1',
+        NULL,
+        2000,
+        1e-2
+    );
+
+    -- PERFORM assert(((relative_error(log_likelihood, -16.43510) < 1e-3 or
+    --     relative_error(log_likelihood, -13.63313) < 1e-3)),
+    --     'Elastic Net: log-likelihood mismatch (gaussian)!'
+    -- ) from house_en;
+
+    EXECUTE 'DROP TABLE IF EXISTS house_en_pred';
+    PERFORM elastic_net_predict('house_en',
+                                'housing_test',
+                                'id',
+                                'house_en_pred');
+    -- The number of rows in house_en_pred must be equal to the
+    -- number of rows in the input table (housing_test) whose grp_by_col
+    -- value is either 1 or 2, when the model is learnt WITH a grouping column
+    PERFORM assert(relative_error(count(*), 9) = 0,
+        'Elastic Net predict: Number of rows predicted mismatch'
+    ) from house_en_pred;
+
+    -- huge lamda making all coef to be zeroes
+    EXECUTE 'drop table if exists house_en, house_en_summary';
+    PERFORM elastic_net_train(
+        'lin_housing_wi',
+        'house_en',
+        'y',
+        'x',
+        'gaussian',
+        1,
+        1e300,
+        True,
+        NULL,
+        'fista',
+        '{eta = 2, max_stepsize = 0.5, use_active_set = f
+   }    1',
+        NULL,
+        2000,
+        1e-2
+    );
+
+    EXECUTE 'DROP TABLE IF EXISTS house_en_pred';
+    PERFORM elastic_net_predict('house_en',
+                                'housing_test',
+                                'id',
+                                'house_en_pred');
+    -- The number of rows in house_en_pred must be equal to the
+    -- number of rows in the input table (housing_test), when
+    -- the model is learnt without using a grouping column
+    PERFORM assert(relative_error(count(*), 10) = 0,
+        'Elastic Net predict: Number of rows predicted mismatch'
+    ) from house_en_pred;
+
+
+    EXECUTE 'drop table if exists house_en, house_en_summary';
+    PERFORM elastic_net_train(
+        'lin_housing_wi',
+        'house_en',
+        'y',
+        'x',
+        'gaussian',
+        1,
+        0.12,
+        True,
+        'grp_by_col',
+        'igd',
+        '{stepsize = 2
+   }    1',
+        NULL,
+        2000,
+        1e-2
+    );
+
+    -- PERFORM assert(((relative_error(log_likelihood, -17.42548) < 1e-3 or
+    --     relative_error(log_likelihood, -14.76175)<0.000001)),
+    --     'Elastic Net: log-likelihood mismatch (gaussian)!'
+    -- ) from house_en;
+
+    EXECUTE 'DROP TABLE IF EXISTS house_en_pred';
+    PERFORM elastic_net_predict('house_en',
+                                'housing_test',
+                                'id',
+                                'house_en_pred');
+    -- The number of rows in house_en_pred must be equal to the
+    -- number of rows in the input table (housing_test) whose grp_by_col
+    -- value is either 1 or 2, when the model is learnt WITH a grouping column
+    PERFORM assert(relative_error(count(*), 9) = 0,
+        'Elastic Net predict: Number of rows predicted mismatch'
+    ) from house_en_pred;
+
+    EXECUTE 'drop table if exists house_en, house_en_summary';
+    PERFORM elastic_net_train(
+        'lin_housing_wi',
+        'house_en',
+        'y < 20',
+        'x',
+        'binomial',
+        1,
+        0.1,
+        True,
+        NULL,
+        'fista',
+        'eta = 2, max_stepsize = 0.5, use_active_set = f, random_stepsize = t',
+        NULL,
+        20000,
+        1e-2
+    );
+
+    -- PERFORM assert(relative_error(log_likelihood, -0.542468) < 1e-3,
+    --     'Elastic Net: log-likelihood mismatch (use_active_set = f)!'
+    -- ) from house_en;
+
+    EXECUTE 'DROP TABLE IF EXISTS house_en_pred';
+    PERFORM elastic_net_predict('house_en',
+                                'housing_test',
+                                'id',
+                                'house_en_pred');
+    -- The number of rows in house_en_pred must be equal to the
+    -- number of rows in the input table (housing_test), when
+    -- the model is learnt without using a grouping column
+    PERFORM assert(relative_error(count(*), 10) = 0,
+        'Elastic Net predict: Number of rows predicted mismatch'
+    ) from house_en_pred;
+
+
+    EXECUTE 'drop table if exists house_en, house_en_summary';
+    PERFORM elastic_net_train(
+        'lin_housing_wi',
+        'house_en',
+        'y < 20',
+        'x',
+        'binomial',
+        1,
+        0.1,
+        True,
+        'grp_by_col',
+        'fista',
+        'eta = 2, max_stepsize = 0.5, use_active_set = t, activeset_tolerance = 1e-6, random_stepsize = t',
+        NULL,
+        20000,
+        1e-2
+    );
+
+    -- PERFORM assert(((relative_error(log_likelihood, -0.61782) < 1e-3 or
+    --     relative_error(log_likelihood, -0.56592) < 1e-3)),
+    --     'Elastic Net: log-likelihood mismatch (gaussian)!'
+    -- ) from house_en;
+
+    EXECUTE 'DROP TABLE IF EXISTS house_en_pred';
+    PERFORM elastic_net_predict('house_en',
+                                'housing_test',
+                                'id',
+                                'house_en_pred');
+    -- The number of rows in house_en_pred must be equal to the
+    -- number of rows in the input table (housing_test) whose grp_by_col
+    -- value is either 1 or 2, when the model is learnt WITH a grouping column
+    PERFORM assert(relative_error(count(*), 9) = 0,
+        'Elastic Net predict: Number of rows predicted mismatch'
+    ) from house_en_pred;
+
+
+    EXECUTE 'drop table if exists house_en, house_en_summary';
+    PERFORM elastic_net_train(
+        'lin_housing_wi',
+        'house_en',
+        'y < 20',
+        'x',
+        'binomial',
+        1,
+        0.1,
+        True,
+        'grp_by_col',
+        'igd',
+        'stepsize = 1',
+        NULL,
+        20000,
+        1e-2
+    );
+
+    -- PERFORM assert(((relative_error(log_likelihood, -0.84930) < 1e-3 or
+    --     relative_error(log_likelihood, -1.19086) < 1e-3)),
+    --     'Elastic Net: log-likelihood mismatch (gaussian)!'
+    -- ) from house_en;
+
+    EXECUTE 'DROP TABLE IF EXISTS house_en_pred';
+    PERFORM elastic_net_predict('house_en',
+                                'housing_test',
+                                'id',
+                                'house_en_pred');
+    -- The number of rows in house_en_pred must be equal to the
+    -- number of rows in the input table (housing_test) whose grp_by_col
+    -- value is either 1 or 2, when the model is learnt WITH a grouping column
+    PERFORM assert(relative_error(count(*), 9) = 0,
+        'Elastic Net predict: Number of rows predicted mismatch'
+    ) from house_en_pred;
+
+    EXECUTE 'DROP TABLE IF EXISTS elastic_type_res';
+    PERFORM elastic_net_train('elastic_type_src',
+        'elastic_type_res',
+        'var_int < 0',
+        '*',
+        'binomial',
+        0.6,
+        0.02,
+        TRUE,
+        NULL,
+        'igd',
+        '',
+        '',
+        10000,
+        1e-2
+    );
+
+end;
+$$ language plpgsql volatile;
+
+select check_elastic_net();
+-- This test has been temporarily removed for GPDB5 alpha support
+
+-- DROP TABLE if exists house_en, house_en_summary, house_en_cv;
+-- SELECT elastic_net_train(
+--     'lin_housing_wi',
+--     'house_en',
+--     'y',
+--     'x',
+--     'gaussian',
+--     0.1,
+--     0.2,
+--     True,
+--     NULL,
+--     'fista',
+--     $$ eta = 2, max_stepsize = 0.5, use_active_set = f,
+--        n_folds = 3, validation_result=house_en_cv,
+--        n_lambdas = 3, alpha = {0, 0.1, 1},
+--        warmup = True, warmup_lambdas = {10, 1, 0.1}
+--     $$,
+--     NULL,
+--     100,
+--     1e-2
+-- );
+-- SELECT * FROM house_en;
+-- SELECT * FROM house_en_summary;
+-- SELECT * FROM house_en_cv;


[5/5] madlib git commit: Madpack: Add dev-check and a compact install-check.

Posted by ok...@apache.org.
Madpack: Add dev-check and a compact install-check.

JIRA: MADLIB-1247

- The current install check is expensive since it runs various hyper param
permutations for all MADlib modules. This commits moves all of those
tests to dev-check, which can be used by developers for iterating
faster. We have now created watered down install-check for each module,
which just runs one  hyper-param combination for each MADlib function,
and does not do any asserts.
- This commit also includes changes in madpack to add a new madpack
option for dev-check.

Co-authored-by: Nandish Jayaram <nj...@apache.org>
Co-authored-by: Arvind Sridhar <as...@pivotal.io>


Project: http://git-wip-us.apache.org/repos/asf/madlib/repo
Commit: http://git-wip-us.apache.org/repos/asf/madlib/commit/4ed8b35e
Tree: http://git-wip-us.apache.org/repos/asf/madlib/tree/4ed8b35e
Diff: http://git-wip-us.apache.org/repos/asf/madlib/diff/4ed8b35e

Branch: refs/heads/master
Commit: 4ed8b35e031f301f150b6f2d153aa1d08c7b3e16
Parents: b8031a0
Author: Orhan Kislal <ok...@apache.org>
Authored: Tue Jun 26 10:54:15 2018 -0700
Committer: Arvind Sridhar <as...@pivotal.io>
Committed: Tue Jun 26 11:30:52 2018 -0700

----------------------------------------------------------------------
 pom.xml                                         |   2 +-
 src/madpack/madpack.py                          |  79 +-
 .../assoc_rules/test/assoc_rules.ic.sql_in      | 148 ++++
 .../postgres/modules/bayes/test/bayes.ic.sql_in | 105 +++
 .../conjugate_gradient/test/conj_grad.ic.sql_in |  65 ++
 .../postgres/modules/convex/test/lmf.ic.sql_in  |  56 ++
 .../postgres/modules/convex/test/mlp.ic.sql_in  |  92 ++
 .../modules/crf/test/crf_test_small.ic.sql_in   | 130 +++
 .../modules/crf/test/crf_train_small.ic.sql_in  |  83 ++
 .../elastic_net/test/elastic_net.ic.sql_in      | 194 +++++
 .../modules/elastic_net/test/elastic_net.sql_in | 842 +++++++++++++++++++
 .../test/elastic_net_install_check.sql_in       | 842 -------------------
 .../postgres/modules/glm/test/glm.ic.sql_in     | 364 ++++++++
 .../postgres/modules/graph/test/graph.ic.sql_in | 116 +++
 .../modules/kmeans/test/kmeans.ic.sql_in        |  54 ++
 .../postgres/modules/knn/test/knn.ic.sql_in     |  58 ++
 .../postgres/modules/lda/test/lda.ic.sql_in     |  95 +++
 .../modules/linalg/test/linalg.ic.sql_in        | 125 +++
 .../modules/linalg/test/matrix_ops.ic.sql_in    | 121 +++
 .../postgres/modules/linalg/test/svd.ic.sql_in  |  47 ++
 .../test/dense_linear_sytems.ic.sql_in          |  50 ++
 .../test/sparse_linear_sytems.ic.sql_in         |  64 ++
 .../postgres/modules/pca/test/pca.ic.sql_in     |  52 ++
 .../modules/pca/test/pca_project.ic.sql_in      |  79 ++
 .../postgres/modules/prob/test/prob.ic.sql_in   |  44 +
 .../test/decision_tree.ic.sql_in                |  70 ++
 .../test/random_forest.ic.sql_in                |  66 ++
 .../modules/regress/test/clustered.ic.sql_in    |  48 ++
 .../modules/regress/test/linear.ic.sql_in       |  56 ++
 .../modules/regress/test/logistic.ic.sql_in     |  59 ++
 .../modules/regress/test/marginal.ic.sql_in     |  69 ++
 .../regress/test/multilogistic.ic.sql_in        |  61 ++
 .../modules/regress/test/robust.ic.sql_in       |  62 ++
 .../sample/test/balance_sample.ic.sql_in        |  43 +
 .../modules/sample/test/sample.ic.sql_in        |  33 +
 .../sample/test/stratified_sample.ic.sql_in     |  42 +
 .../sample/test/train_test_split.ic.sql_in      |  43 +
 .../modules/stats/test/anova_test.ic.sql_in     |  49 ++
 .../modules/stats/test/chi2_test.ic.sql_in      |  42 +
 .../modules/stats/test/correlation.ic.sql_in    |  35 +
 .../stats/test/cox_prop_hazards.ic.sql_in       |  51 ++
 .../modules/stats/test/f_test.ic.sql_in         |  82 ++
 .../modules/stats/test/ks_test.ic.sql_in        |  43 +
 .../modules/stats/test/mw_test.ic.sql_in        |  54 ++
 .../modules/stats/test/pred_metrics.ic.sql_in   |  56 ++
 ...obust_and_clustered_variance_coxph.ic.sql_in |  57 ++
 .../modules/stats/test/t_test.ic.sql_in         |  45 +
 .../modules/stats/test/wsr_test.ic.sql_in       |  45 +
 .../modules/summary/test/summary.ic.sql_in      |  34 +
 .../postgres/modules/svm/test/svm.ic.sql_in     |  46 +
 .../postgres/modules/tsa/test/arima.ic.sql_in   |  53 ++
 .../utilities/test/drop_madlib_temp.ic.sql_in   |  23 +
 .../utilities/test/encode_categorical.ic.sql_in |  47 ++
 .../test/minibatch_preprocessing.ic.sql_in      |  50 ++
 .../modules/utilities/test/path.ic.sql_in       |  59 ++
 .../modules/utilities/test/pivot.ic.sql_in      |  44 +
 .../modules/utilities/test/sessionize.ic.sql_in |  51 ++
 .../utilities/test/text_utilities.ic.sql_in     |  53 ++
 .../validation/test/cross_validation.ic.sql_in  |  64 ++
 59 files changed, 4773 insertions(+), 869 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 0a059ab..0015f06 100644
--- a/pom.xml
+++ b/pom.xml
@@ -488,7 +488,7 @@
               <exclude>src/ports/postgres/modules/elastic_net/elastic_net_optimizer_fista.py_in</exclude>
               <exclude>src/ports/postgres/modules/elastic_net/elastic_net_optimizer_igd.py_in</exclude>
               <exclude>src/ports/postgres/modules/elastic_net/elastic_net_utils.py_in</exclude>
-              <exclude>src/ports/postgres/modules/elastic_net/test/elastic_net_install_check.sql_in</exclude>
+              <exclude>src/ports/postgres/modules/elastic_net/test/elastic_net.sql_in</exclude>
               <exclude>src/ports/postgres/modules/glm/__init__.py_in</exclude>
               <exclude>src/ports/postgres/modules/glm/glm.py_in</exclude>
               <exclude>src/ports/postgres/modules/glm/glm.sql_in</exclude>

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/madpack/madpack.py
----------------------------------------------------------------------
diff --git a/src/madpack/madpack.py b/src/madpack/madpack.py
index a12a8e3..4f3c9ef 100755
--- a/src/madpack/madpack.py
+++ b/src/madpack/madpack.py
@@ -770,10 +770,11 @@ def parse_arguments():
                   uninstall      : run sql scripts to uninstall from DB
                   reinstall      : performs uninstall and install
                   version        : compare and print MADlib version (binaries vs database objects)
-                  install-check  : test all installed modules
+                  install-check  : sanity run of all installed modules
+                  dev-check      : test all installed modules
                   """
     choice_list = ['install', 'update', 'upgrade', 'uninstall',
-                   'reinstall', 'version', 'install-check']
+                   'reinstall', 'version', 'install-check', 'dev-check']
 
     parser.add_argument('command', metavar='COMMAND', nargs=1,
                         choices=choice_list, help=help_msg)
@@ -812,7 +813,8 @@ def parse_arguments():
     # Get the arguments
     return parser.parse_args()
 
-def run_install_check(args, testcase):
+def run_install_check(args, testcase, madpack_cmd):
+    is_install_check = True if madpack_cmd == 'install-check' else False
     schema = args['schema']
     db_madlib_ver = args['db_madlib_ver']
     # 1) Compare OS and DB versions. Continue if OS = DB.
@@ -859,26 +861,6 @@ def run_install_check(args, testcase):
             # Get module name
             module = moduleinfo['name']
 
-            # Skip if doesn't meet specified modules
-            if modset is not None and len(modset) > 0 and module not in modset:
-                continue
-            # JIRA: MADLIB-1078 fix
-            # Skip pmml during install-check (when run without the -t option).
-            # We can still run install-check on pmml with '-t' option.
-            if not modset and module in ['pmml']:
-                continue
-            info_(this, "> - %s" % module, verbose)
-
-            # Make a temp dir for this module (if doesn't exist)
-            cur_tmpdir = tmpdir + '/' + module + '/test'  # tmpdir is a global variable
-            _make_dir(cur_tmpdir)
-
-            # Find the Python module dir (platform specific or generic)
-            if os.path.isdir(maddir + "/ports/" + portid + "/" + dbver + "/modules/" + module):
-                maddir_mod_py = maddir + "/ports/" + portid + "/" + dbver + "/modules"
-            else:
-                maddir_mod_py = maddir + "/modules"
-
             # Find the SQL module dir (platform specific or generic)
             if os.path.isdir(maddir + "/ports/" + portid + "/modules/" + module):
                 maddir_mod_sql = maddir + "/ports/" + portid + "/modules"
@@ -900,13 +882,58 @@ def run_install_check(args, testcase):
                       % (test_user, test_schema, schema)
 
             # Loop through all test SQL files for this module
-            sql_files = maddir_mod_sql + '/' + module + '/test/*.sql_in'
+            if is_install_check:
+                sql_files = maddir_mod_sql + '/' + module + '/test/*.ic.sql_in'
+            else:
+                sql_files = maddir_mod_sql + '/' + module + '/test/*[!ic].sql_in'
             for sqlfile in sorted(glob.glob(sql_files), reverse=True):
                 algoname = os.path.basename(sqlfile).split('.')[0]
                 # run only algo specified
                 if (module in modset and modset[module] and
                         algoname not in modset[module]):
                     continue
+                # JIRA: MADLIB-1078 fix
+                # Skip pmml during install-check (when run without the -t option).
+                # We can still run install-check on pmml with '-t' option.
+                if not modset and module in ['pmml']:
+                    continue
+                info_(this, "> - %s" % module, verbose)
+
+                # Make a temp dir for this module (if doesn't exist)
+                cur_tmpdir = tmpdir + '/' + module + '/test'  # tmpdir is a global variable
+                _make_dir(cur_tmpdir)
+
+                # Find the Python module dir (platform specific or generic)
+                if os.path.isdir(maddir + "/ports/" + portid + "/" + dbver + "/modules/" + module):
+                    maddir_mod_py = maddir + "/ports/" + portid + "/" + dbver + "/modules"
+                else:
+                    maddir_mod_py = maddir + "/modules"
+
+                # Find the SQL module dir (platform specific or generic)
+                if os.path.isdir(maddir + "/ports/" + portid + "/modules/" + module):
+                    maddir_mod_sql = maddir + "/ports/" + portid + "/modules"
+                else:
+                    maddir_mod_sql = maddir + "/modules"
+
+                # Prepare test schema
+                test_schema = "madlib_installcheck_%s" % (module)
+                _internal_run_query("DROP SCHEMA IF EXISTS %s CASCADE; CREATE SCHEMA %s;" %
+                                    (test_schema, test_schema), True)
+                _internal_run_query("GRANT ALL ON SCHEMA %s TO %s;" %
+                                    (test_schema, test_user), True)
+
+                # Switch to test user and prepare the search_path
+                pre_sql = '-- Switch to test user:\n' \
+                          'SET ROLE %s;\n' \
+                          '-- Set SEARCH_PATH for install-check:\n' \
+                          'SET search_path=%s,%s;\n' \
+                          % (test_user, test_schema, schema)
+
+                algoname = os.path.basename(sqlfile).split('.')[0]
+                # run only algo specified
+                if (module in modset and modset[module] and
+                        algoname not in modset[module]):
+                    continue
 
                 # Set file names
                 tmpfile = cur_tmpdir + '/' + os.path.basename(sqlfile) + '.tmp'
@@ -1241,8 +1268,8 @@ def main(argv):
         _print_vers(new_madlib_ver, db_madlib_ver, con_args, schema)
 
     # COMMAND: install-check
-    if args.command[0] == 'install-check':
-        run_install_check(locals(), args.testcase)
+    if args.command[0] in ('install-check', 'dev-check'):
+        run_install_check(locals(), args.testcase, args.command[0])
     else:
         try:
             is_schema_in_db = _internal_run_query("SELECT schema_name FROM information_schema.schemata WHERE schema_name='%s';" % schema, True)

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/assoc_rules/test/assoc_rules.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/assoc_rules/test/assoc_rules.ic.sql_in b/src/ports/postgres/modules/assoc_rules/test/assoc_rules.ic.sql_in
new file mode 100644
index 0000000..581aa60
--- /dev/null
+++ b/src/ports/postgres/modules/assoc_rules/test/assoc_rules.ic.sql_in
@@ -0,0 +1,148 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+---------------------------------------------------------------------------
+-- Rules:
+-- ------
+-- 1) Any DB objects should be created w/o schema prefix,
+--    since this file is executed in a separate schema context.
+-- 2) There should be no DROP statements in this script, since
+--    all objects created in the default schema will be cleaned-up outside.
+---------------------------------------------------------------------------
+
+---------------------------------------------------------------------------
+-- Setup:
+---------------------------------------------------------------------------
+CREATE OR REPLACE FUNCTION assoc_array_eq
+    (
+    arr1 TEXT[],
+    arr2 TEXT[]
+    )
+RETURNS BOOL AS $$
+    SELECT COUNT(*) = array_upper($1, 1) AND array_upper($1, 1) = array_upper($2, 1)
+    FROM (SELECT unnest($1) id) t1, (SELECT unnest($2) id) t2
+    WHERE t1.id = t2.id;
+
+$$ LANGUAGE sql IMMUTABLE;
+
+
+CREATE OR REPLACE FUNCTION install_test() RETURNS VOID AS $$
+declare
+    result1        TEXT;
+    result2        TEXT;
+    result3        TEXT;
+    result_maxiter TEXT;
+    res            MADLIB_SCHEMA.assoc_rules_results;
+    output_schema  TEXT;
+    output_table   TEXT;
+    total_rules    INT;
+    total_time     INTERVAL;
+begin
+    DROP TABLE IF EXISTS test_data1;
+    CREATE TABLE test_data1 (
+        trans_id INT
+        , product INT
+    );
+
+    DROP TABLE IF EXISTS test_data2;
+    CREATE TABLE test_data2 (
+        trans_id INT
+        , product VARCHAR
+    );
+
+
+    INSERT INTO test_data1 VALUES (1,1);
+    INSERT INTO test_data1 VALUES (1,2);
+    INSERT INTO test_data1 VALUES (3,3);
+    INSERT INTO test_data1 VALUES (8,4);
+    INSERT INTO test_data1 VALUES (10,1);
+    INSERT INTO test_data1 VALUES (10,2);
+    INSERT INTO test_data1 VALUES (10,3);
+    INSERT INTO test_data1 VALUES (19,2);
+
+    INSERT INTO test_data2 VALUES (1, 'beer');
+    INSERT INTO test_data2 VALUES (1, 'diapers');
+    INSERT INTO test_data2 VALUES (1, 'chips');
+    INSERT INTO test_data2 VALUES (2, 'beer');
+    INSERT INTO test_data2 VALUES (2, 'diapers');
+    INSERT INTO test_data2 VALUES (3, 'beer');
+    INSERT INTO test_data2 VALUES (3, 'diapers');
+    INSERT INTO test_data2 VALUES (4, 'beer');
+    INSERT INTO test_data2 VALUES (4, 'chips');
+    INSERT INTO test_data2 VALUES (5, 'beer');
+    INSERT INTO test_data2 VALUES (6, 'beer');
+    INSERT INTO test_data2 VALUES (6, 'diapers');
+    INSERT INTO test_data2 VALUES (6, 'chips');
+    INSERT INTO test_data2 VALUES (7, 'beer');
+    INSERT INTO test_data2 VALUES (7, 'diapers');
+
+    DROP TABLE IF EXISTS test1_exp_result;
+    CREATE TABLE test1_exp_result (
+        ruleid integer,
+        pre text[],
+        post text[],
+        support double precision,
+        confidence double precision,
+        lift double precision,
+        conviction double precision
+    ) ;
+
+    DROP TABLE IF EXISTS test2_exp_result;
+    CREATE TABLE test2_exp_result (
+        ruleid integer,
+        pre text[],
+        post text[],
+        support double precision,
+        confidence double precision,
+        lift double precision,
+        conviction double precision
+    ) ;
+
+
+    INSERT INTO test1_exp_result VALUES (7, '{3}', '{1}', 0.20000000000000001, 0.5, 1.2499999999999998, 1.2);
+    INSERT INTO test1_exp_result VALUES (4, '{2}', '{1}', 0.40000000000000002, 0.66666666666666674, 1.6666666666666667, 1.8000000000000003);
+    INSERT INTO test1_exp_result VALUES (1, '{1}', '{2,3}', 0.20000000000000001, 0.5, 2.4999999999999996, 1.6000000000000001);
+    INSERT INTO test1_exp_result VALUES (9, '{2,3}', '{1}', 0.20000000000000001, 1, 2.4999999999999996, 0);
+    INSERT INTO test1_exp_result VALUES (6, '{1,2}', '{3}', 0.20000000000000001, 0.5, 1.2499999999999998, 1.2);
+    INSERT INTO test1_exp_result VALUES (8, '{3}', '{2}', 0.20000000000000001, 0.5, 0.83333333333333337, 0.80000000000000004);
+    INSERT INTO test1_exp_result VALUES (5, '{1}', '{2}', 0.40000000000000002, 1, 1.6666666666666667, 0);
+    INSERT INTO test1_exp_result VALUES (2, '{3}', '{2,1}', 0.20000000000000001, 0.5, 1.2499999999999998, 1.2);
+    INSERT INTO test1_exp_result VALUES (10, '{3,1}', '{2}', 0.20000000000000001, 1, 1.6666666666666667, 0);
+    INSERT INTO test1_exp_result VALUES (3, '{1}', '{3}', 0.20000000000000001, 0.5, 1.2499999999999998, 1.2);
+
+    INSERT INTO test2_exp_result VALUES (7, '{chips,diapers}', '{beer}', 0.2857142857142857, 1, 1, 0);
+    INSERT INTO test2_exp_result VALUES (2, '{chips}', '{diapers}', 0.2857142857142857, 0.66666666666666663, 0.93333333333333324, 0.85714285714285698);
+    INSERT INTO test2_exp_result VALUES (1, '{chips}', '{diapers,beer}', 0.2857142857142857, 0.66666666666666663, 0.93333333333333324, 0.85714285714285698);
+    INSERT INTO test2_exp_result VALUES (6, '{diapers}', '{beer}', 0.7142857142857143, 1, 1, 0);
+    INSERT INTO test2_exp_result VALUES (4, '{beer}', '{diapers}', 0.7142857142857143, 0.7142857142857143, 1, 1);
+    INSERT INTO test2_exp_result VALUES (3, '{chips,beer}', '{diapers}', 0.2857142857142857, 0.66666666666666663, 0.93333333333333324, 0.85714285714285698);
+    INSERT INTO test2_exp_result VALUES (5, '{chips}', '{beer}', 0.42857142857142855, 1, 1, 0);
+
+    res = MADLIB_SCHEMA.assoc_rules (.1, .5, 'trans_id', 'product', 'test_data1','madlib_installcheck_assoc_rules', false);
+
+    RETURN;
+
+end $$ language plpgsql;
+
+---------------------------------------------------------------------------
+-- Test
+---------------------------------------------------------------------------
+SELECT install_test();

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/bayes/test/bayes.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/bayes/test/bayes.ic.sql_in b/src/ports/postgres/modules/bayes/test/bayes.ic.sql_in
new file mode 100644
index 0000000..86a5ce2
--- /dev/null
+++ b/src/ports/postgres/modules/bayes/test/bayes.ic.sql_in
@@ -0,0 +1,105 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+---------------------------------------------------------------------------
+-- Rules:
+-- ------
+-- 1) Any DB objects should be created w/o schema prefix,
+--    since this file is executed in a separate schema context.
+-- 2) There should be no DROP statements in this script, since
+--    all objects created in the default schema will be cleaned-up outside.
+---------------------------------------------------------------------------
+
+---------------------------------------------------------------------------
+-- Setup:
+---------------------------------------------------------------------------
+CREATE OR REPLACE FUNCTION fill_feature(pre_class INT, p FLOAT, total INT)
+RETURNS FLOAT AS $$
+declare
+	result FLOAT;
+	thres INT;
+begin
+	thres = total*p;
+
+	IF pre_class <= thres THEN
+		result = 1;
+	ELSE
+		result = 0;
+	END IF;
+	RETURN result;
+end
+$$ language plpgsql;
+
+-- ----------------
+-- install_test_1()
+-- ----------------
+CREATE FUNCTION install_test_1() RETURNS VOID AS $$
+declare
+	num1 INT := 10;
+	num2 INT := 10;
+
+	result1 INT;
+	count1 INT;
+	tempvar INT[];
+
+begin
+	-- prepare training data: equal priors
+	--DROP TABLE IF EXISTS data CASCADE;
+	CREATE TABLE data_1( class INT, attrib FLOAT[] );
+	INSERT INTO data_1 SELECT 1, ARRAY[fill_feature(id,0.3,num1),fill_feature(id,0.8,num1)] FROM generate_series(1,num1) as id;
+	INSERT INTO data_1 SELECT 2, ARRAY[fill_feature(id,0.5,num2),fill_feature(id,0.5,num2)] FROM generate_series(1,num2) as id;
+
+	-- prepare testing data
+	--DROP TABLE IF EXISTS data_test CASCADE;
+	CREATE TABLE data_test_1( id INT, attrib INT[], prob FLOAT[] );
+	INSERT INTO data_test_1 VALUES (1,'{0,0}','{0.4,0.6}');
+	INSERT INTO data_test_1 VALUES (2,'{0,1}','{0.66666,0.33333}');
+	INSERT INTO data_test_1 VALUES (3,'{1,0}','{0.25,0.75}');
+	INSERT INTO data_test_1 VALUES (4,'{1,1}','{0.5,0.5}');
+
+	-- prepare true results for testing data
+	--DROP TABLE IF EXISTS data_results;
+	CREATE TABLE data_results_1 AS
+		SELECT
+			id,
+			unnest('{1,2}'::INT[]) as class,
+			unnest(prob) as prob
+		FROM data_test_1;
+
+	-- Process training
+	--DROP TABLE IF EXISTS probs CASCADE;
+	--DROP TABLE IF EXISTS priors CASCADE;
+	PERFORM MADLIB_SCHEMA.create_nb_prepared_data_tables('data_1','class','attrib',2,'probs','priors');
+	-- Classify
+	--DROP VIEW IF EXISTS results;
+	PERFORM MADLIB_SCHEMA.create_nb_classify_view('probs','priors','data_test_1','id','attrib',2,'results_1');
+	-- Compute posteriors
+	--DROP VIEW IF EXISTS probs_view;
+	PERFORM MADLIB_SCHEMA.create_nb_probs_view('probs','priors','data_test_1','id','attrib',2,'probs_view_1');
+
+
+end
+$$ language plpgsql;
+
+---------------------------------------------------------------------------
+-- Test:
+---------------------------------------------------------------------------
+SELECT install_test_1();

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/conjugate_gradient/test/conj_grad.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/conjugate_gradient/test/conj_grad.ic.sql_in b/src/ports/postgres/modules/conjugate_gradient/test/conj_grad.ic.sql_in
new file mode 100644
index 0000000..50ee25b
--- /dev/null
+++ b/src/ports/postgres/modules/conjugate_gradient/test/conj_grad.ic.sql_in
@@ -0,0 +1,65 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+---------------------------------------------------------------------------
+-- Rules:
+-- ------
+-- 1) Any DB objects should be created w/o schema prefix,
+--    since this file is executed in a separate schema context.
+-- 2) There should be no DROP statements in this script, since
+--    all objects created in the default schema will be cleaned-up outside.
+---------------------------------------------------------------------------
+
+---------------------------------------------------------------------------
+-- Setup:
+---------------------------------------------------------------------------
+CREATE FUNCTION install_test() RETURNS VOID AS $$
+declare
+	result float;
+	x FLOAT[];
+
+begin
+	CREATE TABLE A(
+		row INT,
+		val FLOAT[]
+	);
+
+	INSERT INTO A VALUES(1, ARRAY[1.0175001, 0.45604107, 0.32282152, 0.25168270, 0.20694042, 0.17602822, 0.15331823, 0.13589278, 0.12208089, 0.11085359]);
+	INSERT INTO A VALUES(2, ARRAY[0.4560411, 0.48234387, 0.21190993, 0.17177051, 0.14528005, 0.12627935, 0.11189286, 0.10057578, 0.09141562, 0.08383503]);
+	INSERT INTO A VALUES(3, ARRAY[0.3228215, 0.21190993, 0.36372483, 0.13511499, 0.11570299, 0.10149569, 0.09057135, 0.08187212, 0.07476054, 0.06882649]);
+	INSERT INTO A VALUES(4, ARRAY[0.2516827, 0.17177051, 0.13511499, 0.31270305, 0.09720943, 0.08572070, 0.07680054, 0.06964365, 0.06375766, 0.05882206]);
+	INSERT INTO A VALUES(5, ARRAY[0.2069404, 0.14528005, 0.11570299, 0.09720943, 0.28424848, 0.07454783, 0.06696472, 0.06084900, 0.05579869, 0.05154975]);
+	INSERT INTO A VALUES(6, ARRAY[0.1760282, 0.12627935, 0.10149569, 0.08572070, 0.07454783, 0.26612646, 0.05951006, 0.05415360, 0.04971703, 0.04597544]);
+	INSERT INTO A VALUES(7, ARRAY[0.1533182, 0.11189286, 0.09057135, 0.07680054, 0.06696472, 0.05951006, 0.25363014, 0.04885589, 0.04489247, 0.04154376]);
+	INSERT INTO A VALUES(8, ARRAY[0.1358928, 0.10057578, 0.08187212, 0.06964365, 0.06084900, 0.05415360, 0.04885589, 0.24454426, 0.04095839, 0.03792426]);
+	INSERT INTO A VALUES(9, ARRAY[0.1220809, 0.09141562, 0.07476054, 0.06375766, 0.05579869, 0.04971703, 0.04489247, 0.04095839, 0.23768165, 0.03490583]);
+	INSERT INTO A VALUES(10,ARRAY[0.1108536, 0.08383503, 0.06882649, 0.05882206, 0.05154975, 0.04597544, 0.04154376, 0.03792426, 0.03490583, 0.23234632]);
+
+	SELECT INTO x MADLIB_SCHEMA.conjugate_gradient('A', 'val', 'row', ARRAY(SELECT random() FROM generate_series(1,10)), .000001,2);
+	result = x[1]*x[1];
+	RETURN;
+end
+$$ language plpgsql;
+
+---------------------------------------------------------------------------
+-- Test
+---------------------------------------------------------------------------
+SELECT install_test();

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/convex/test/lmf.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/convex/test/lmf.ic.sql_in b/src/ports/postgres/modules/convex/test/lmf.ic.sql_in
new file mode 100644
index 0000000..ede53e4
--- /dev/null
+++ b/src/ports/postgres/modules/convex/test/lmf.ic.sql_in
@@ -0,0 +1,56 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+/* -----------------------------------------------------------------------------
+ * Test Low-rank Matrix Factorization
+ * -------------------------------------------------------------------------- */
+
+CREATE TABLE "Mlens" (
+    id serial,
+    "User_id" integer,
+    "Movie_id" integer,
+    "Rating" double precision
+);
+
+COPY "Mlens" ("User_id", "Movie_id", "Rating") FROM stdin DELIMITER ',';
+22,377,1
+6,86,3
+62,257,2
+95,546,2
+38,95,5
+13,225,4
+12,203,3
+\.
+
+SELECT lmf_igd_run(
+    'test_lmf_model',
+    '"Mlens"',
+    '"User_id"',
+    '"Movie_id"',
+    '"Rating"',
+    943,        -- row_dim
+    1682,       -- col_dim
+    2,          -- max_rank
+    0.03,       -- stepsize
+    0.1,        -- init_value
+    5,          -- num_iterations
+    1e-3        -- tolerance
+    );

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/convex/test/mlp.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/convex/test/mlp.ic.sql_in b/src/ports/postgres/modules/convex/test/mlp.ic.sql_in
new file mode 100644
index 0000000..0d8a116
--- /dev/null
+++ b/src/ports/postgres/modules/convex/test/mlp.ic.sql_in
@@ -0,0 +1,92 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+-- NOTE that the batch specific tables were created using:
+-- madlib.minibatch_preprocessor(), with the regular source tables used in
+-- this file.
+
+-- Create preprocessed data that can be used with minibatch MLP:
+DROP TABLE IF EXISTS iris_data_batch, iris_data_batch_summary, iris_data_batch_standardization;
+CREATE TABLE iris_data_batch(
+    __id__ integer,
+    dependent_varname double precision[],
+    independent_varname double precision[]
+);
+COPY iris_data_batch (__id__, dependent_varname, independent_varname) FROM STDIN NULL '?' DELIMITER '|';
+0 | {{0,1,0},{0,1,0},{0,0,1},{1,0,0},{0,1,0},{0,1,0},{0,0,1},{1,0,0},{1,0,0},{0,1,0},{1,0,0},{0,0,1},{0,0,1},{0,0,1},{1,0,0},{0,0,1},{0,0,1},{1,0,0},{1,0,0},{0,0,1},{0,1,0},{0,0,1},{0,0,1},{0,0,1},{0,0,1},{1,0,0},{0,1,0},{0,0,1},{0,0,1},{1,0,0}} | {{0.828881825720994,-0.314980522532101,0.363710790466334,0.159758615207397},{-1.08079689039279,-1.57669227467446,-0.229158821743702,-0.240110581430527},{-1.08079689039279,-1.32434992424599,0.482284712908341,0.692917544057962},{-1.46273263361555,0.442046528753317,-1.35561108494277,-1.30642843913166},{-0.0623015751321059,-0.567322872960574,0.245136868024327,0.159758615207397},{-0.189613489539692,-0.819665223389045,0.304423829245331,0.159758615207397},{0.701569911313408,-1.32434992424599,0.778719519013359,0.959497008483245},{-1.20810880480038,-0.0626381721036282,-1.35561108494277,-1.4397181713443},{-0.698861147170034,0.946731229610261,-1.35561108494277,-1.30642843913166},{-0.82617306157762,-1.32434992424599,-0.407019705406713,-0.1068208492178
 86},{-0.698861147170034,2.71312768260957,-1.29632412372177,-1.4397181713443},{1.33812948335134,0.442046528753317,1.31230217000239,1.49265593733381},{0.319634168090651,-0.0626381721036282,0.660145596571352,0.826207276270604},{0.701569911313408,-1.32434992424599,0.778719519013359,0.959497008483245},{-0.698861147170034,1.19907358003873,-1.29632412372177,-1.30642843913166},{1.46544139775892,0.189704178324845,0.838006480234363,1.49265593733381},{1.21081756894375,-0.0626381721036282,0.897293441455367,1.49265593733381},{-0.444237318354863,1.70375828089568,-1.29632412372177,-1.30642843913166},{-0.82617306157762,1.95610063132415,-1.05917627883775,-1.03984897470638},{0.828881825720994,-0.819665223389045,0.95658040267637,0.959497008483245},{0.956193740128579,-0.567322872960574,0.541571674129345,0.42633807963268},{1.33812948335134,0.442046528753317,1.31230217000239,1.49265593733381},{0.574257996905822,0.946731229610261,1.01586736389737,1.49265593733381},{0.0650103392754793,-0.819665223389045,0.
 838006480234363,0.959497008483245},{0.0650103392754793,-0.819665223389045,0.838006480234363,0.959497008483245},{-1.46273263361555,0.442046528753317,-1.35561108494277,-1.30642843913166},{0.574257996905822,-2.08137697553141,0.482284712908341,0.42633807963268},{1.21081756894375,0.189704178324845,1.13444128633938,1.62594566954645},{1.97468905538926,-0.314980522532101,1.54945001488641,0.826207276270604},{-1.08079689039279,0.189704178324845,-1.29632412372177,-1.4397181713443}}
+1 | {{0,1,0},{1,0,0},{0,1,0},{1,0,0},{1,0,0},{1,0,0},{1,0,0},{0,1,0},{0,0,1},{0,0,1},{1,0,0},{0,0,1},{1,0,0},{0,0,1},{0,1,0},{0,1,0},{0,1,0},{1,0,0},{1,0,0},{0,0,1},{0,1,0},{0,1,0},{0,0,1},{1,0,0},{1,0,0},{0,1,0},{1,0,0},{0,0,1},{0,1,0},{0,1,0}} | {{-0.0623015751321059,-0.0626381721036282,0.304423829245331,0.0264688829947554},{-0.316925403947277,2.96547003303804,-1.35561108494277,-1.30642843913166},{0.319634168090651,-0.819665223389045,0.838006480234363,0.559627811845321},{-0.953484975985206,1.19907358003873,-1.41489804616377,-1.17313870691902},{-0.953484975985206,0.442046528753317,-1.47418500738478,-1.30642843913166},{-1.33542071920796,0.442046528753317,-1.41489804616377,-1.30642843913166},{-1.71735646243072,-0.0626381721036282,-1.41489804616377,-1.30642843913166},{0.446946082498236,-0.0626381721036282,0.541571674129345,0.293048347420038},{1.21081756894375,-1.32434992424599,1.25301520878139,0.826207276270604},{0.701569911313408,0.694388879181789,1.3715891312234,1.75923540175909},{-
 1.84466837683831,-0.0626381721036282,-1.53347196860578,-1.4397181713443},{1.84737714098168,1.45141593046721,1.4308760924444,1.75923540175909},{-0.82617306157762,1.19907358003873,-1.35561108494277,-1.30642843913166},{0.701569911313408,-0.314980522532101,1.13444128633938,0.826207276270604},{1.33812948335134,-0.567322872960574,0.660145596571352,0.293048347420038},{0.192322253683066,-0.0626381721036282,0.304423829245331,0.42633807963268},{-0.189613489539692,-0.819665223389045,0.304423829245331,0.159758615207397},{-1.46273263361555,0.189704178324845,-1.29632412372177,-1.30642843913166},{-1.71735646243072,0.442046528753317,-1.41489804616377,-1.30642843913166},{0.828881825720994,0.189704178324845,1.07515432511838,0.826207276270604},{0.0650103392754793,-1.07200757381752,0.185849906803323,0.0264688829947554},{-0.953484975985206,-2.58606167638835,-0.110584899301695,-0.240110581430527},{0.192322253683066,-0.0626381721036282,0.838006480234363,0.826207276270604},{-0.953484975985206,1.19907358003
 873,-1.23703716250076,-0.773269510281093},{-0.82617306157762,0.946731229610261,-1.29632412372177,-1.30642843913166},{0.319634168090651,0.946731229610261,0.482284712908341,0.559627811845321},{-0.953484975985206,0.694388879181789,-1.35561108494277,-1.30642843913166},{0.192322253683066,-0.0626381721036282,0.838006480234363,0.826207276270604},{0.446946082498236,-0.314980522532101,0.600858635350349,0.293048347420038},{-0.0623015751321059,-0.567322872960574,0.482284712908341,0.159758615207397}}
+2 | {{1,0,0},{1,0,0},{0,0,1},{1,0,0},{0,1,0},{0,1,0},{1,0,0},{1,0,0},{0,0,1},{0,0,1},{0,1,0},{0,1,0},{0,1,0},{0,1,0},{1,0,0},{0,0,1},{0,1,0},{1,0,0},{1,0,0},{0,0,1},{1,0,0},{0,0,1},{1,0,0},{1,0,0},{1,0,0},{1,0,0},{0,1,0},{1,0,0},{0,1,0},{0,0,1}} | {{-0.953484975985206,0.946731229610261,-1.23703716250076,-1.03984897470638},{-0.953484975985206,0.694388879181789,-1.35561108494277,-1.30642843913166},{1.21081756894375,0.694388879181789,1.19372824756038,1.75923540175909},{-1.20810880480038,0.946731229610261,-1.23703716250076,-1.30642843913166},{1.08350565453616,-0.314980522532101,0.541571674129345,0.159758615207397},{-0.189613489539692,-0.314980522532101,-0.0512979380806911,0.159758615207397},{-1.20810880480038,-0.0626381721036282,-1.35561108494277,-1.17313870691902},{-1.08079689039279,0.189704178324845,-1.29632412372177,-1.4397181713443},{0.956193740128579,-0.0626381721036282,0.897293441455367,1.09278674069589},{0.956193740128579,-0.0626381721036282,0.897293441455367,1.09278674069589},{1
 .46544139775892,0.189704178324845,0.719432557792356,0.42633807963268},{0.0650103392754793,-1.07200757381752,0.185849906803323,0.0264688829947554},{1.08350565453616,-0.0626381721036282,0.422997751687338,0.293048347420038},{0.319634168090651,-0.314980522532101,0.482284712908341,0.42633807963268},{-0.82617306157762,1.95610063132415,-1.23703716250076,-1.30642843913166},{0.956193740128579,-0.0626381721036282,1.25301520878139,1.35936620512117},{-0.0623015751321059,-1.07200757381752,-0.110584899301695,-0.240110581430527},{-0.571549232762449,1.70375828089568,-1.29632412372177,-1.30642843913166},{-0.571549232762449,1.70375828089568,-1.29632412372177,-1.30642843913166},{2.35662479861202,-0.0626381721036282,1.72731089854942,1.22607647290853},{-1.71735646243072,0.442046528753317,-1.41489804616377,-1.30642843913166},{1.72006522657409,-0.0626381721036282,1.31230217000239,1.22607647290853},{-0.953484975985206,0.946731229610261,-1.29632412372177,-1.30642843913166},{-1.46273263361555,0.9467312296102
 61,-1.35561108494277,-1.17313870691902},{-1.08079689039279,-0.0626381721036282,-1.35561108494277,-1.30642843913166},{-0.953484975985206,1.45141593046721,-1.35561108494277,-1.30642843913166},{0.701569911313408,-1.82903462510294,0.422997751687338,0.159758615207397},{-0.444237318354863,2.20844298175262,-1.17775020127976,-1.03984897470638},{-0.0623015751321059,-0.314980522532101,0.304423829245331,0.159758615207397},{1.33812948335134,-0.0626381721036282,1.07515432511838,1.22607647290853}}
+3 | {{0,1,0},{0,1,0},{0,1,0},{0,1,0},{1,0,0},{1,0,0},{0,0,1},{0,1,0},{1,0,0},{0,1,0},{1,0,0},{0,1,0},{0,1,0},{0,0,1},{1,0,0},{0,1,0},{0,1,0},{0,0,1},{1,0,0},{1,0,0},{0,1,0},{0,0,1},{1,0,0},{0,1,0},{0,0,1},{0,1,0},{0,0,1},{0,1,0},{0,1,0},{0,1,0}} | {{-0.953484975985206,-1.82903462510294,-0.229158821743702,-0.240110581430527},{0.319634168090651,-2.08137697553141,0.185849906803323,-0.240110581430527},{-0.189613489539692,-0.0626381721036282,0.482284712908341,0.42633807963268},{-0.316925403947277,-1.07200757381752,0.422997751687338,0.0264688829947554},{-0.953484975985206,1.19907358003873,-1.23703716250076,-0.773269510281093},{-0.316925403947277,1.19907358003873,-1.41489804616377,-1.30642843913166},{0.0650103392754793,-0.819665223389045,0.838006480234363,0.959497008483245},{0.446946082498236,-0.0626381721036282,0.541571674129345,0.293048347420038},{-0.444237318354863,0.946731229610261,-1.29632412372177,-1.03984897470638},{1.21081756894375,0.189704178324845,0.600858635350349,0.426338079632
 68},{-0.82617306157762,1.95610063132415,-1.23703716250076,-1.30642843913166},{-0.0623015751321059,-0.567322872960574,0.245136868024327,0.159758615207397},{-0.316925403947277,-1.82903462510294,0.185849906803323,0.159758615207397},{1.21081756894375,-0.0626381721036282,0.897293441455367,1.49265593733381},{-1.59004454802313,-1.82903462510294,-1.41489804616377,-1.17313870691902},{0.701569911313408,0.694388879181789,0.600858635350349,0.559627811845321},{-0.316925403947277,-1.57669227467446,0.00798902314031256,-0.240110581430527},{1.46544139775892,0.189704178324845,1.01586736389737,1.22607647290853},{-1.08079689039279,0.189704178324845,-1.29632412372177,-1.4397181713443},{-1.71735646243072,-0.314980522532101,-1.35561108494277,-1.30642843913166},{-0.444237318354863,-0.0626381721036282,0.482284712908341,0.42633807963268},{1.72006522657409,-0.0626381721036282,1.31230217000239,1.22607647290853},{-0.82617306157762,1.95610063132415,-1.05917627883775,-1.03984897470638},{1.21081756894375,-0.062638
 1721036282,0.778719519013359,0.692917544057962},{2.35662479861202,-0.0626381721036282,1.72731089854942,1.22607647290853},{-0.953484975985206,-1.82903462510294,-0.229158821743702,-0.240110581430527},{0.701569911313408,-0.314980522532101,1.13444128633938,0.826207276270604},{-0.698861147170034,-0.819665223389045,0.12656294558232,0.293048347420038},{-0.0623015751321059,-0.314980522532101,0.304423829245331,0.159758615207397},{0.574257996905822,-0.314980522532101,0.363710790466334,0.159758615207397}}
+4 | {{0,0,1},{0,1,0},{0,0,1},{0,1,0},{1,0,0},{0,1,0},{0,1,0},{0,0,1},{0,0,1},{0,1,0},{0,0,1},{0,0,1},{1,0,0},{0,1,0},{0,1,0},{0,1,0},{0,1,0},{0,1,0},{0,0,1},{1,0,0},{0,1,0}} | {{1.21081756894375,0.694388879181789,1.19372824756038,1.75923540175909},{-0.82617306157762,-1.32434992424599,-0.407019705406713,-0.106820849217886},{0.701569911313408,0.694388879181789,1.3715891312234,1.75923540175909},{0.0650103392754793,-0.819665223389045,0.245136868024327,-0.240110581430527},{-1.20810880480038,0.189704178324845,-1.23703716250076,-1.30642843913166},{0.574257996905822,-0.314980522532101,0.363710790466334,0.159758615207397},{1.21081756894375,0.189704178324845,0.422997751687338,0.293048347420038},{1.97468905538926,-0.314980522532101,1.54945001488641,0.826207276270604},{-1.08079689039279,-1.32434992424599,0.482284712908341,0.692917544057962},{0.0650103392754793,-0.819665223389045,0.12656294558232,0.0264688829947554},{0.574257996905822,0.946731229610261,1.01586736389737,1.49265593733381},{0.95619
 3740128579,0.442046528753317,0.838006480234363,1.09278674069589},{-1.20810880480038,-0.0626381721036282,-1.35561108494277,-1.17313870691902},{0.828881825720994,0.442046528753317,0.482284712908341,0.42633807963268},{-0.0623015751321059,-0.0626381721036282,0.304423829245331,0.0264688829947554},{-0.316925403947277,-1.57669227467446,0.0672759843613159,-0.106820849217886},{-0.189613489539692,-0.0626381721036282,0.245136868024327,0.159758615207397},{1.59275331216651,0.442046528753317,0.600858635350349,0.293048347420038},{0.956193740128579,-0.0626381721036282,1.25301520878139,1.35936620512117},{-1.33542071920796,0.442046528753317,-1.23703716250076,-1.30642843913166},{-0.316925403947277,-1.32434992424599,0.185849906803323,0.159758615207397}}
+\.
+
+-- Create the corresponding summary table for preprocessed data
+CREATE TABLE iris_data_batch_summary(
+    source_table text,
+    output_table text,
+    dependent_varname text,
+    independent_varname text,
+    dependent_vartype text,
+    buffer_size integer,
+    class_values text[],
+    num_rows_processed integer,
+    num_rows_skipped integer,
+    grouping_cols text
+);
+-- The availability of the original source table should not be a condition for
+-- MLP to work correctly. It should work fine even the original source table is
+-- deleted (this basically ensures that all the necessary info is captured in
+-- the summary table). So name the original source table as
+-- 'iris_data_does_not_exist' instead of the original 'iris_data', to mimic the
+-- scenario where the original source table is deleted and MLP is trained with
+-- the preprocessed table.
+INSERT INTO iris_data_batch_summary VALUES
+('iris_data_does_not_exist', 'iris_data_batch', 'class::TEXT', 'attributes',
+    'text', 30, ARRAY[1,2,3], 141, 0, '');
+-- Create the corresponding standardization table for preprocessed data
+CREATE TABLE iris_data_batch_standardization(
+    mean double precision[],
+    std double precision[]
+);
+INSERT INTO iris_data_batch_standardization VALUES
+-- -- TODO get real numbers by running preprocessor
+(ARRAY[5.74893617021,3.02482269504,3.6865248227,1.18014184397],
+    ARRAY[0.785472439601,0.396287027644,1.68671151195,0.750245336531]);
+
+-- -- minibatch without grouping and without warm_start
+DROP TABLE IF EXISTS mlp_class_batch, mlp_class_batch_summary, mlp_class_batch_standardization;
+SELECT mlp_classification(
+    'iris_data_batch',    -- Source table
+    'mlp_class_batch',    -- Desination table
+    'independent_varname',   -- Input features
+    'dependent_varname',        -- Label
+    ARRAY[5],   -- Number of units per layer
+    'learning_rate_init=0.1,
+    learning_rate_policy=constant,
+    n_iterations=5,
+    n_tries=3,
+    tolerance=0,
+    n_epochs=20',
+    'sigmoid',
+    '',
+    False,
+    False
+);

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/crf/test/crf_test_small.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/crf/test/crf_test_small.ic.sql_in b/src/ports/postgres/modules/crf/test/crf_test_small.ic.sql_in
new file mode 100644
index 0000000..d258bb1
--- /dev/null
+++ b/src/ports/postgres/modules/crf/test/crf_test_small.ic.sql_in
@@ -0,0 +1,130 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+---------------------------------------------------------------------------
+-- Rules:
+-- ------
+-- 1) Any DB objects should be created w/o schema prefix,
+--    since this file is executed in a separate schema context.
+-- 2) There should be no DROP statements in this script, since
+--    all objects created in the default schema will be cleaned-up outside.
+---------------------------------------------------------------------------
+
+	-- Documents table
+	-- CREATE TABLE crf_document (id integer,text text);
+ --        INSERT INTO  crf_document VALUES
+ --        (1,E'Chancellor  of  the  Exchequer  Nigel  Lawson  ''s  restated  commitment  to  a  firm monetary  policy  has  helped  to  prevent  a  freefall  in  sterling  over  the  past  week  .'),
+ --        (2,E'But  analysts  reckon  underlying  support  for  sterling  has  been  eroded  by  the  chancellor ''s  failure  to  announce  any  new  policy  measures  in  his  Mansion  House  speech  last  Thursday  .'),
+ --        (3,E'His actions prevent disaster.');
+	-- analyze crf_document;
+
+	-- Features table
+	CREATE TABLE crf_feature_test (id integer,name text,prev_label_id integer,label_id integer,weight float);
+        INSERT INTO crf_feature_test VALUES
+	(7,'E.2',2,13,0.8957754882780667),           (79,'W_by',-1,5,2.4007337770109434),         (41,'U',-1,26,1.1971775735896324),
+	(81,'E.11',11,16,2.5835310903807915),        (55,'E.11',11,43,1.7591747767619539),        (39,'E.29',29,24,0.6423980041639374),
+	(27,'E.2',2,11,4.021547537882094),           (46,'W_in',-1,5,4.561697530405777),          (53,'W_past',-1,6,2.425102532944761),
+	(25,'E.24',24,2,2.6245019400744196),         (47,'E.5',5,11,2.475011699159048),           (33,'W_policy',-1,11,3.279737748615338),
+	(4,'W_of',-1,5,2.874451743664169),           (83,'W_failure',-1,11,1.6214155026731378),   (71,'R_endsWithIng',-1,28,1.944154984738804),
+	(2,'E.13',13,5,2.3995379106666896),          (94,'R_endsWithS',-1,18,2.1572134278343764), (38,'W_helped',-1,29,0.9484097417725005),
+	(96,'W_mansion',-1,13,2.3149078814680406),   (86,'W_any',-1,2,2.7954051826004025),        (88,'E.11',11,12,2.197492184359893),
+	(72,'E.28',28,11,2.692901638424271),         (48,'W_sterling',-1,11,2.3077819829037525),  (40,'E.24',24,26,3.7011711026137646),
+	(13,'W_lawson',-1,13,3.297240879683435),     (24,'W_to',-1,24,4.53050982922731),          (52,'E.2',2,6,3.1609626598041642),
+	(68,'E.30',30,28,2.900795206516394),         (54,'W_week',-1,11,3.282148235551298),       (10,'R_endsWithER',-1,13,2.449609048325598),
+	(63,'W_analysts',-1,12,1.0628309233894724),  (92,'U',-1,18,1.025730795623997),            (16,'E.16',16,29,1.9204482801150826),
+	(61,'E.0',0,12,2.6373656761539523),          (18,'W_restated',-1,29,1.3818282059971994),  (22,'W_commitment',-1,11,2.3459023587828263),
+	(87,'W_new',-1,6,2.6360680819475757),        (64,'R_endsWithS',-1,12,2.442307827871107),  (73,'W_support',-1,11,2.2821572827946244),
+	(60,'W_but',-1,0,2.728742100277871),         (101,'E.6',6,13,1.8014203700324123),         (56,'End.',-1,43,3.4595408822624947),
+	(26,'W_a',-1,2,2.677789823998926),           (19,'R_endsWithED',-1,29,3.8020681451775755),(29,'E.11',11,6,2.492292680092348),
+	(70,'W_underlying',-1,28,2.09432344174987),  (28,'W_firm',-1,11,1.9657228422125872),      (75,'W_been',-1,29,2.129129599248343),
+	(45,'E.11',11,5,2.831083871985474),          (5,'E.5',5,2,3.771637726308954),             (57,'W_.',-1,43,3.4595408822624947),
+	(32,'E.6',6,11,2.938177772428602),           (100,'W_last',-1,6,3.6718959040221013),      (15,'W_''s',-1,16,5.074336301920056),
+	(1,'W_chancellor',-1,13,2.232243177253394),  (34,'E.11',11,31,2.703318944384476),         (8,'U',-1,13,1.7587494934234644),
+	(89,'W_measures',-1,12,2.2889484722940523),  (0,'S.',-1,13,3.3985336034127775),           (97,'W_house',-1,13,3.6015166265995555),
+	(44,'W_freefall',-1,11,1.8006899570542791),  (62,'U',-1,12,1.3209737215186312),           (20,'E.29',29,11,1.5449358644830369),
+	(9,'W_exchequer',-1,13,2.721269156136535),   (80,'W_chancellor',-1,11,1.796888201507293), (21,'U',-1,11,1.4739961541941164),
+	(102,'W_thursday',-1,13,3.858752037897991),  (37,'E.31',31,29,3.3704387252974217),        (51,'R_endsWithER',-1,5,1.523379944589324),
+	(6,'W_the',-1,2,4.179075274351749),          (95,'E.18',18,13,2.0919068469315785),        (42,'W_prevent',-1,26,1.9130956387223363),
+	(93,'W_his',-1,18,2.440330155099354),        (36,'R_endsWithS',-1,31,2.092642289935937),  (35,'W_has',-1,31,2.452210128238285),
+	(14,'E.13',13,16,1.8094401262382602),        (23,'E.11',11,24,3.4046169042228858),        (30,'U',-1,6,1.7397221015334599),
+	(103,'E.13',13,43,2.1545378214335686),       (78,'E.29',29,5,1.8987300180101108),         (49,'R_endsWithIng',-1,11,1.8058171678503487),
+	(77,'W_eroded',-1,29,1.4718301974078694),    (3,'U',-1,5,1.216476575073629),              (90,'E.12',12,5,1.9609403598006498),
+	(50,'W_over',-1,5,1.5851324863666807),       (43,'E.26',26,2,3.399063749955467),          (11,'E.13',13,13,2.9624483035010245),
+	(91,'E.5',5,18,2.1990281868655663),          (66,'U',-1,30,1.4276079759935312),           (76,'E.29',29,29,1.6793149556330953),
+	(65,'E.12',12,30,2.4029290723287544),        (12,'W_nigel',-1,13,2.0372945323878744),     (85,'U',-1,2,-0.4472670967738198),
+	(17,'U',-1,29,1.6546332503126648),           (98,'E.13',13,11,1.9289929156050765),        (84,'W_announce',-1,26,1.8999638426719463),
+	(99,'W_speech',-1,11,3.570619697477909),     (69,'U',-1,28,0.8360198402652405),           (74,'W_for',-1,5,4.0872624914833775),
+	(31,'W_monetary',-1,6,3.3195839909271014),   (59,'U',-1,0,1.6822590692281079),            (82,'E.16',16,11,2.3919190723943817),
+	(58,'S.',-1,0,2.3563399364223314),           (67,'W_reckon',-1,30,2.397247084073005);
+
+	-- Dictionary table
+	CREATE TABLE crf_dictionary (token text,total integer);
+        INSERT INTO crf_dictionary VALUES
+	('freefall',1),  ('policy',2),  ('measures',1), ('commitment',1),
+	('new',1),       ('speech',1),  ('''s',2),      ('reckon',1),
+	('underlying',1),('week',1),    ('prevent',1),  ('has',2),
+	('failure',1),   ('restated',1),('announce',1), ('thursday',1),
+	('but',1),       ('lawson',1),  ('last',1),     ('firm',1),
+	('exchequer',1), ('helped',1),  ('sterling',2), ('been',1),
+	('his',1),       ('.',2),       ('the',3),      ('chancellor',2),
+	('chancellor',2),('in',2),      ('any',1),      ('analysts',1),
+	('of',1),        ('support',1), ('by',1),       ('over',1),
+	('for',1),       ('monetary',1),('mansion',1),  ('eroded',1),
+	('house',1),     ('a',2),       ('nigel',1),    ('to',3),
+	('past',1);
+
+	-- Regex table
+	CREATE TABLE crf_regex (pattern text,name text);
+        INSERT INTO crf_regex VALUES
+        ('^[A-Z][a-z]+$','InitCapital'), ('^[A-Z]+$','isAllCapital'), ('^.*[0-9]+.*$','containsDigit'),
+        ('^.+[.]$','endsWithDot'),       ('^.+[,]$','endsWithComma'), ('^.+er$','endsWithER'),
+        ('^.+est$','endsWithEst'),       ('^.+ed$','endsWithED'),     ('^.+s$','endsWithS'),
+        ('^.+ing$','endsWithIng'),       ('^.+ly$','endsWithly'),     ('^.+-.+$','isDashSeparatedWords'),
+        ('^.*@.*$','isEmailId');
+
+	-- Labels table
+	CREATE TABLE test_crf_label (id integer,label character varying);
+        INSERT INTO test_crf_label VALUES
+        (0,'CC'),   (1,'CD'),  (2,'DT'),    (3,'EX'),   (4,'FW'),  (5,'IN'),   (6,'JJ'),  (7,'JJR'), (8,'JJS'),
+        (9,'LS'),   (10,'MD'), (11,'NN'),   (12,'NNS'), (13,'NNP'),(14,'NNPS'),(15,'PDT'),(16,'POS'),(17,'PRP'),
+        (18,'PRP$'),(19,'RB'), (20,'RBR'),  (21,'RBS'), (22,'RP'), (23,'SYM'), (24,'TO'), (25,'UH'), (26,'VB'),
+        (27,'VBD'), (28,'VBG'),(29,'VBN'),  (30,'VBP'), (31,'VBZ'),(32,'WDT'), (33,'WP'), (34,'WP$'),(35,'WRB'),
+        (36,'$'),   (37,'#'),  (38,''''''), (39,'``'),  (40,'('),  (41,')'),   (42,','),  (43,'.'),  (44,':');
+
+	-- Segment table
+	CREATE TABLE test_segmenttbl (start_pos integer,doc_id integer,seg_text text,max_pos integer);
+        INSERT INTO test_segmenttbl VALUES
+        (0,1,'chancellor',26),(1,1,'of',26),       (2,1,'the',26),      (3,1,'exchequer',26), (4,1,'nigel',26),
+	(5,1,'lawson',26),    (6,1,'''s',26),      (7,1,'restated',26), (8,1,'commitment',26),(9,1,'to',26),
+	(10,1,'a',26),        (11,1,'firm',26),    (12,1,'monetary',26),(13,1,'policy',26),   (14,1,'has',26),
+	(15,1,'helped',26),   (16,1,'to',26),      (17,1,'prevent',26), (18,1,'a',26),        (19,1,'freefall',26),
+	(20,1,'in',26),       (21,1,'sterling',26),(22,1,'over',26),    (23,1,'the',26),      (24,1,'past',26),
+	(25,1,'week',26),     (26,1,'.',26),       (0,2,'but',28),      (1,2,'analysts',28),  (2,2,'reckon',28),
+	(3,2,'underlying',28),(4,2,'support',28),  (5,2,'for',28),      (6,2,'sterling',28),  (7,2,'has',28),
+	(8,2,'been',28),      (9,2,'eroded',28),   (10,2,'by',28),      (11,2,'the',28),      (12,2,'chancellor',28),
+	(13,2,'''s',28),      (14,2,'failure',28), (15,2,'to',28),      (16,2,'announce',28), (17,2,'any',28),
+	(18,2,'new',28),      (19,2,'policy',28),  (20,2,'measures',28),(21,2,'in',28),       (22,2,'his',28),
+	(23,2,'mansion',28),  (24,2,'house',28),   (25,2,'speech',28),  (26,2,'last',28),     (27,2,'thursday',28),
+	(28,2,'.',28),        (0,3,'his',4),       (1,3,'actions',4),   (2,3,'prevent',4),    (3,3,'disaster',4),
+        (4,3,'.',4);
+
+	-- extract features for tokens stored in segmenttbl
+	SELECT crf_test_fgen('test_segmenttbl','crf_dictionary','test_crf_label','crf_regex','crf_feature_test','viterbi_mtbl','viterbi_rtbl');

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/crf/test/crf_train_small.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/crf/test/crf_train_small.ic.sql_in b/src/ports/postgres/modules/crf/test/crf_train_small.ic.sql_in
new file mode 100644
index 0000000..6f89edb
--- /dev/null
+++ b/src/ports/postgres/modules/crf/test/crf_train_small.ic.sql_in
@@ -0,0 +1,83 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+---------------------------------------------------------------------------
+-- Rules:
+-- ------
+-- 1) Any DB objects should be created w/o schema prefix,
+--    since this file is executed in a separate schema context.
+-- 2) There should be no DROP statements in this script, since
+--    all objects created in the default schema will be cleaned-up outside.
+--
+-- This test is not performed in those platforms which don't support
+-- ORDERED AGGREGATES.
+---------------------------------------------------------------------------
+
+m4_include(`SQLCommon.m4')
+m4_changequote(<!,!>)
+
+m4_ifdef(<!__HAS_ORDERED_AGGREGATES__!>,<!
+
+	-- Regex table
+        CREATE TABLE train_regex(pattern text,name text);
+        INSERT INTO train_regex VALUES
+        ('^[A-Z][a-z]+$','InitCapital'), ('^[A-Z]+$','isAllCapital'),
+        ('^.*[0-9]+.*$','containsDigit'),('^.+[.]$','endsWithDot'),
+        ('^.+[,]$','endsWithComma'),     ('^.+er$','endsWithER'),
+        ('^.+est$','endsWithEst'),       ('^.+ed$','endsWithED'),
+        ('^.+s$','endsWithS'),           ('^.+ing$','endsWithIng'),
+        ('^.+ly$','endsWithly'),         ('^.+-.+$','isDashSeparatedWords'),
+        ('^.*@.*$','isEmailId');
+
+	    -- Label table
+        CREATE TABLE crf_label (id integer,label character varying);
+        INSERT INTO crf_label VALUES
+        (0,'CC'),   (1,'CD'),  (2,'DT'),    (3,'EX'),   (4,'FW'),  (5,'IN'),   (6,'JJ'),  (7,'JJR'), (8,'JJS'),
+        (9,'LS'),   (10,'MD'), (11,'NN'),   (12,'NNS'), (13,'NNP'),(14,'NNPS'),(15,'PDT'),(16,'POS'),(17,'PRP'),
+        (18,'PRP$'),(19,'RB'), (20,'RBR'),  (21,'RBS'), (22,'RP'), (23,'SYM'), (24,'TO'), (25,'UH'), (26,'VB'),
+        (27,'VBD'), (28,'VBG'),(29,'VBN'),  (30,'VBP'), (31,'VBZ'),(32,'WDT'), (33,'WP'), (34,'WP$'),(35,'WRB'),
+        (36,'$'),   (37,'#'),  (38,''''''), (39,'``'),  (40,'('),  (41,')'),   (42,','),  (43,'.'),  (44,':');
+
+        CREATE TABLE train_segmenttbl(start_pos integer,doc_id integer,seg_text text,label integer,max_pos integer);
+        INSERT INTO train_segmenttbl VALUES
+        (0,1,'confidence',11,36),  (1,1,'in',5,36),         (2,1,'the',2,36),         (3,1,'pound',11,36),
+        (4,1,'is',31,36),          (5,1,'widely',19,36),    (6,1,'expected',29,36),   (7,1,'to',24,36),
+        (8,1,'take',26,36),        (9,1,'another',2,36),    (10,1,'sharp',6,36),      (11,1,'dive',11,36),
+        (12,1,'if',5,36),          (13,1,'trade',11,36),    (14,1,'figures',12,36),   (15,1,'for',5,36),
+        (16,1,'september',13,36),  (17,1,',',42,36),        (18,1,'due',6,36),        (19,1,'for',5,36),
+        (20,1,'release',11,36),    (21,1,'tomorrow',11,36), (22,1,',',42,36),         (23,1,'fail',26,36),
+        (24,1,'to',24,36),         (25,1,'show',26,36),     (26,1,'a',2,36),          (27,1,'substantial',6,36),
+        (28,1,'improvement',11,36),(29,1,'from',5,36),      (30,1,'july',13,36),      (31,1,'and',0,36),
+        (32,1,'august',13,36),     (33,1,'''s',16,36),      (34,1,'near-record',6,36),(35,1,'deficits',12,36),
+        (36,1,'.',43,36),          (0,2,'chancellor',13,26),(1,2,'of',5,26),          (2,2,'the',2,26),
+        (3,2,'exchequer',13,26),   (4,2,'nigel',13,26),     (5,2,'lawson',13,26),     (6,2,'''s',16,26),
+        (7,2,'restated',29,26),    (8,2,'commitment',11,26),(9,2,'to',24,26),         (10,2,'a',2,26),
+        (11,2,'firm',11,26),       (12,2,'monetary',6,26),  (13,2,'policy',11,26),    (14,2,'has',31,26),
+        (15,2,'helped',29,26),     (16,2,'to',24,26),       (17,2,'prevent',26,26),   (18,2,'a',2,26),
+        (19,2,'freefall',11,26),   (20,2,'in',5,26),        (21,2,'sterling',11,26),  (22,2,'over',5,26),
+        (23,2,'the',2,26),         (24,2,'past',6,26),      (25,2,'week',11,26),      (26,2,'.',43,26);
+
+
+        SELECT crf_train_fgen('train_segmenttbl', 'train_regex', 'crf_label', 'train_dictionary', 'train_featuretbl','train_featureset');
+
+
+!>)
+m4_changequote(<!`!>,<!'!>)

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/elastic_net/test/elastic_net.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/elastic_net/test/elastic_net.ic.sql_in b/src/ports/postgres/modules/elastic_net/test/elastic_net.ic.sql_in
new file mode 100644
index 0000000..037a6b1
--- /dev/null
+++ b/src/ports/postgres/modules/elastic_net/test/elastic_net.ic.sql_in
@@ -0,0 +1,194 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+/* ------------------------------------------------------------------------
+ * Install check for Elastic Net
+ * ------------------------------------------------------------------------ */
+
+DROP TABLE IF EXISTS lin_housing_wi;
+CREATE TABLE lin_housing_wi (id serial, x float8[], grp_by_col int, y float8);
+COPY lin_housing_wi (x, grp_by_col, y) FROM STDIN NULL '?' DELIMITER '|';
+{1,0.00632,18.00,2.310,NULL,0.5380,6.5750,NULL,4.0900,1,296.0,15.30,396.90,4.98} | 1 | 24.00
+{1,0.00632,18.00,2.310,0,0.5380,6.5750,65.20,4.0900,1,296.0,15.30,396.90,4.98} | 1 | 24.00
+{1,0.02731,0.00,7.070,0,0.4690,6.4210,78.90,4.9671,2,242.0,17.80,396.90,9.14} | 1 | 21.60
+{1,0.02729,0.00,7.070,0,0.4690,7.1850,61.10,4.9671,2,242.0,17.80,392.83,4.03} | 1 | 34.70
+{1,0.03237,0.00,2.180,0,0.4580,6.9980,45.80,6.0622,3,222.0,18.70,394.63,2.94} | 1 | 33.40
+{1,0.06905,0.00,2.180,0,0.4580,7.1470,54.20,6.0622,3,222.0,18.70,396.90,5.33} | 1 | 36.20
+{1,0.02985,0.00,2.180,0,0.4580,6.4300,58.70,6.0622,3,222.0,18.70,394.12,5.21} | 1 | 28.70
+{1,0.08829,12.50,7.870,0,0.5240,6.0120,66.60,5.5605,5,311.0,15.20,395.60,12.43} | 1 | 22.90
+{1,0.14455,12.50,7.870,0,0.5240,6.1720,96.10,5.9505,5,311.0,15.20,396.90,19.15} | 1 | 27.10
+{1,0.21124,12.50,7.870,0,0.5240,5.6310,100.00,6.0821,5,311.0,15.20,386.63,29.93} | 1 | 16.50
+{1,0.17004,12.50,7.870,0,0.5240,6.0040,85.90,6.5921,5,311.0,15.20,386.71,17.10} | 1 | 18.90
+{1,0.22489,12.50,7.870,0,0.5240,6.3770,94.30,6.3467,5,311.0,15.20,392.52,20.45} | 1 | 15.00
+{1,0.11747,12.50,7.870,0,0.5240,6.0090,82.90,6.2267,5,311.0,15.20,396.90,13.27} | 1 | 18.90
+{1,0.09378,12.50,7.870,0,0.5240,5.8890,39.00,5.4509,5,311.0,15.20,390.50,15.71} | 1 | 21.70
+{1,0.62976,0.00,8.140,0,0.5380,5.9490,61.80,4.7075,4,307.0,21.00,396.90,8.26} | 1 | 20.40
+{1,0.63796,0.00,8.140,0,0.5380,6.0960,84.50,4.4619,4,307.0,21.00,380.02,10.26} | 1 | 18.20
+{1,0.62739,0.00,8.140,0,0.5380,5.8340,56.50,4.4986,4,307.0,21.00,395.62,8.47} | 1 | 19.90
+{1,1.05393,0.00,8.140,0,0.5380,5.9350,29.30,4.4986,4,307.0,21.00,386.85,6.58} | 1 | 23.10
+{1,0.78420,0.00,8.140,0,0.5380,5.9900,81.70,4.2579,4,307.0,21.00,386.75,14.67} | 1 | 17.50
+{1,0.80271,0.00,8.140,0,0.5380,5.4560,36.60,3.7965,4,307.0,21.00,288.99,11.69} | 1 | 20.20
+{1,0.72580,0.00,8.140,0,0.5380,5.7270,69.50,3.7965,4,307.0,21.00,390.95,11.28} | 1 | 18.20
+{1,1.25179,0.00,8.140,0,0.5380,5.5700,98.10,3.7979,4,307.0,21.00,376.57,21.02} | 1 | 13.60
+{1,0.85204,0.00,8.140,0,0.5380,5.9650,89.20,4.0123,4,307.0,21.00,392.53,13.83} | 1 | 19.60
+{1,1.23247,0.00,8.140,0,0.5380,6.1420,91.70,3.9769,4,307.0,21.00,396.90,18.72} | 1 | 15.20
+{1,0.98843,0.00,8.140,0,0.5380,5.8130,100.00,4.0952,4,307.0,21.00,394.54,19.88} | 1 | 14.50
+{1,0.75026,0.00,8.140,0,0.5380,5.9240,94.10,4.3996,4,307.0,21.00,394.33,16.30} | 1 | 15.60
+{1,0.84054,0.00,8.140,0,0.5380,5.5990,85.70,4.4546,4,307.0,21.00,303.42,16.51} | 1 | 13.90
+{1,0.67191,0.00,8.140,0,0.5380,5.8130,90.30,4.6820,4,307.0,21.00,376.88,14.81} | 1 | 16.60
+{1,0.95577,0.00,8.140,0,0.5380,6.0470,88.80,4.4534,4,307.0,21.00,306.38,17.28} | 1 | 14.80
+{1,0.77299,0.00,8.140,0,0.5380,6.4950,94.40,4.4547,4,307.0,21.00,387.94,12.80} | 1 | 18.40
+{1,1.00245,0.00,8.140,0,0.5380,6.6740,87.30,4.2390,4,307.0,21.00,380.23,11.98} | 1 | 21.00
+{1,1.13081,0.00,8.140,0,0.5380,5.7130,94.10,4.2330,4,307.0,21.00,360.17,22.60} | 1 | 12.70
+{1,1.35472,0.00,8.140,0,0.5380,6.0720,100.00,4.1750,4,307.0,21.00,376.73,13.04} | 1 | 14.50
+{1,1.38799,0.00,8.140,0,0.5380,5.9500,82.00,3.9900,4,307.0,21.00,232.60,27.71} | 1 | 13.20
+{1,1.15172,0.00,8.140,0,0.5380,5.7010,95.00,3.7872,4,307.0,21.00,358.77,18.35} | 1 | 13.10
+{1,1.61282,0.00,8.140,0,0.5380,6.0960,96.90,3.7598,4,307.0,21.00,248.31,20.34} | 1 | 13.50
+{1,0.06417,0.00,5.960,0,0.4990,5.9330,68.20,3.3603,5,279.0,19.20,396.90,9.68} | 1 | 18.90
+{1,0.09744,0.00,5.960,0,0.4990,5.8410,61.40,3.3779,5,279.0,19.20,377.56,11.41} | 1 | 20.00
+{1,0.08014,0.00,5.960,0,0.4990,5.8500,41.50,3.9342,5,279.0,19.20,396.90,8.77} | 1 | 21.00
+{1,0.17505,0.00,5.960,0,0.4990,5.9660,30.20,3.8473,5,279.0,19.20,393.43,10.13} | 1 | 24.70
+{1,0.02763,75.00,2.950,0,0.4280,6.5950,21.80,5.4011,3,252.0,18.30,395.63,4.32} | 1 | 30.80
+{1,0.03359,75.00,2.950,0,0.4280,7.0240,15.80,5.4011,3,252.0,18.30,395.62,1.98} | 1 | 34.90
+{1,0.12744,0.00,6.910,0,0.4480,6.7700,2.90,5.7209,3,233.0,17.90,385.41,4.84} | 1 | 26.60
+{1,0.14150,0.00,6.910,0,0.4480,6.1690,6.60,5.7209,3,233.0,17.90,383.37,5.81} | 1 | 25.30
+{1,0.15936,0.00,6.910,0,0.4480,6.2110,6.50,5.7209,3,233.0,17.90,394.46,7.44} | 1 | 24.70
+{1,0.12269,0.00,6.910,0,0.4480,6.0690,40.00,5.7209,3,233.0,17.90,389.39,9.55} | 1 | 21.20
+{1,0.17142,0.00,6.910,0,0.4480,5.6820,33.80,5.1004,3,233.0,17.90,396.90,10.21} | 1 | 19.30
+{1,0.18836,0.00,6.910,0,0.4480,5.7860,33.30,5.1004,3,233.0,17.90,396.90,14.15} | 1 | 20.00
+{1,0.22927,0.00,6.910,0,0.4480,6.0300,85.50,5.6894,3,233.0,17.90,392.74,18.80} | 1 | 16.60
+{1,0.25387,0.00,6.910,0,0.4480,5.3990,95.30,5.8700,3,233.0,17.90,396.90,30.81} | 1 | 14.40
+{1,0.21977,0.00,6.910,0,0.4480,5.6020,62.00,6.0877,3,233.0,17.90,396.90,16.20} | 1 | 19.40
+{1,0.08873,21.00,5.640,0,0.4390,5.9630,45.70,6.8147,4,243.0,16.80,395.56,13.45} | 1 | 19.70
+{1,0.04337,21.00,5.640,0,0.4390,6.1150,63.00,6.8147,4,243.0,16.80,393.97,9.43} | 1 | 20.50
+{1,0.05360,21.00,5.640,0,0.4390,6.5110,21.10,6.8147,4,243.0,16.80,396.90,5.28} | 1 | 25.00
+{1,0.04981,21.00,5.640,0,0.4390,5.9980,21.40,6.8147,4,243.0,16.80,396.90,8.43} | 1 | 23.40
+{1,0.01360,75.00,4.000,0,0.4100,5.8880,47.60,7.3197,3,469.0,21.10,396.90,14.80} | 1 | 18.90
+{1,0.01311,90.00,1.220,0,0.4030,7.2490,21.90,8.6966,5,226.0,17.90,395.93,4.81} | 1 | 35.40
+{1,0.02055,85.00,0.740,0,0.4100,6.3830,35.70,9.1876,2,313.0,17.30,396.90,5.77} | 1 | 24.70
+{1,0.01432,100.00,1.320,0,0.4110,6.8160,40.50,8.3248,5,256.0,15.10,392.90,3.95} | 1 | 31.60
+{1,0.15445,25.00,5.130,0,0.4530,6.1450,29.20,7.8148,8,284.0,19.70,390.68,6.86} | 1 | 23.30
+{1,0.10328,25.00,5.130,0,0.4530,5.9270,47.20,6.9320,8,284.0,19.70,396.90,9.22} | 1 | 19.60
+{1,0.14932,25.00,5.130,0,0.4530,5.7410,66.20,7.2254,8,284.0,19.70,395.11,13.15} | 1 | 18.70
+{1,0.17171,25.00,5.130,0,0.4530,5.9660,93.40,6.8185,8,284.0,19.70,378.08,14.44} | 1 | 16.00
+{1,0.11027,25.00,5.130,0,0.4530,6.4560,67.80,7.2255,8,284.0,19.70,396.90,6.73} | 1 | 22.20
+{1,0.12650,25.00,5.130,0,0.4530,6.7620,43.40,7.9809,8,284.0,19.70,395.58,9.50} | 1 | 25.00
+{1,0.01951,17.50,1.380,0,0.4161,7.1040,59.50,9.2229,3,216.0,18.60,393.24,8.05} | 1 | 33.00
+{1,0.03584,80.00,3.370,0,0.3980,6.2900,17.80,6.6115,4,337.0,16.10,396.90,4.67} | 1 | 23.50
+{1,0.04379,80.00,3.370,0,0.3980,5.7870,31.10,6.6115,4,337.0,16.10,396.90,10.24} | 1 | 19.40
+{1,0.05789,12.50,6.070,0,0.4090,5.8780,21.40,6.4980,4,345.0,18.90,396.21,8.10} | 1 | 22.00
+{1,0.13554,12.50,6.070,0,0.4090,5.5940,36.80,6.4980,4,345.0,18.90,396.90,13.09} | 1 | 17.40
+{1,0.12816,12.50,6.070,0,0.4090,5.8850,33.00,6.4980,4,345.0,18.90,396.90,8.79} | 1 | 20.90
+{1,0.08826,0.00,10.810,0,0.4130,6.4170,6.60,5.2873,4,305.0,19.20,383.73,6.72} | 1 | 24.20
+{1,0.15876,0.00,10.810,0,0.4130,5.9610,17.50,5.2873,4,305.0,19.20,376.94,9.88} | 1 | 21.70
+{1,0.09164,0.00,10.810,0,0.4130,6.0650,7.80,5.2873,4,305.0,19.20,390.91,5.52} | 1 | 22.80
+{1,0.19539,0.00,10.810,0,0.4130,6.2450,6.20,5.2873,4,305.0,19.20,377.17,7.54} | 1 | 23.40
+{1,0.07896,0.00,12.830,0,0.4370,6.2730,6.00,4.2515,5,398.0,18.70,394.92,6.78} | 1 | 24.10
+{1,0.09512,0.00,12.830,0,0.4370,6.2860,45.00,4.5026,5,398.0,18.70,383.23,8.94} | 1 | 21.40
+{1,0.10153,0.00,12.830,0,0.4370,6.2790,74.50,4.0522,5,398.0,18.70,373.66,11.97} | 1 | 20.00
+{1,0.08707,0.00,12.830,0,0.4370,6.1400,45.80,4.0905,5,398.0,18.70,386.96,10.27} | 1 | 20.80
+{1,0.05646,0.00,12.830,0,0.4370,6.2320,53.70,5.0141,5,398.0,18.70,386.40,12.34} | 1 | 21.20
+{1,0.08387,0.00,12.830,0,0.4370,5.8740,36.60,4.5026,5,398.0,18.70,396.06,9.10} | 1 | 20.30
+{1,0.04113,25.00,4.860,0,0.4260,6.7270,33.50,5.4007,4,281.0,19.00,396.90,5.29} | 1 | 28.00
+{1,0.04462,25.00,4.860,0,0.4260,6.6190,70.40,5.4007,4,281.0,19.00,395.63,7.22} | 1 | 23.90
+{1,0.03659,25.00,4.860,0,0.4260,6.3020,32.20,5.4007,4,281.0,19.00,396.90,6.72} | 1 | 24.80
+{1,0.03551,25.00,4.860,0,0.4260,6.1670,46.70,5.4007,4,281.0,19.00,390.64,7.51} | 1 | 22.90
+{1,0.05059,0.00,4.490,0,0.4490,6.3890,48.00,4.7794,3,247.0,18.50,396.90,9.62} | 1 | 23.90
+{1,0.05735,0.00,4.490,0,0.4490,6.6300,56.10,4.4377,3,247.0,18.50,392.30,6.53} | 1 | 26.60
+{1,0.05188,0.00,4.490,0,0.4490,6.0150,45.10,4.4272,3,247.0,18.50,395.99,12.86} | 1 | 22.50
+{1,0.07151,0.00,4.490,0,0.4490,6.1210,56.80,3.7476,3,247.0,18.50,395.15,8.44} | 1 | 22.20
+{1,0.05660,0.00,3.410,0,0.4890,7.0070,86.30,3.4217,2,270.0,17.80,396.90,5.50} | 1 | 23.60
+{1,0.05302,0.00,3.410,0,0.4890,7.0790,63.10,3.4145,2,270.0,17.80,396.06,5.70} | 1 | 28.70
+{1,0.04684,0.00,3.410,0,0.4890,6.4170,66.10,3.0923,2,270.0,17.80,392.18,8.81} | 1 | 22.60
+{1,0.03932,0.00,3.410,0,0.4890,6.4050,73.90,3.0921,2,270.0,17.80,393.55,8.20} | 1 | 22.00
+{1,0.04203,28.00,15.040,0,0.4640,6.4420,53.60,3.6659,4,270.0,18.20,395.01,8.16} | 1 | 22.90
+{1,0.02875,28.00,15.040,0,0.4640,6.2110,28.90,3.6659,4,270.0,18.20,396.33,6.21} | 1 | 25.00
+{1,0.04294,28.00,15.040,0,0.4640,6.2490,77.30,3.6150,4,270.0,18.20,396.90,10.59} | 1 | 20.60
+{1,0.12204,0.00,2.890,0,0.4450,6.6250,57.80,3.4952,2,276.0,18.00,357.98,6.65} | 1 | 28.40
+{1,0.11504,0.00,2.890,0,0.4450,6.1630,69.60,3.4952,2,276.0,18.00,391.83,11.34} | 1 | 21.40
+{1,0.12083,0.00,2.890,0,0.4450,8.0690,76.00,3.4952,2,276.0,18.00,396.90,4.21} | 1 | 38.70
+{1,0.08187,0.00,2.890,0,0.4450,7.8200,36.90,3.4952,2,276.0,18.00,393.53,3.57} | 1 | 43.80
+{1,0.06860,0.00,2.890,0,0.4450,7.4160,62.50,3.4952,2,276.0,18.00,396.90,6.19} | 1 | 33.20
+{1,0.14866,0.00,8.560,0,0.5200,6.7270,79.90,2.7778,5,384.0,20.90,394.76,9.42} | 1 | 27.50
+{1,0.11432,0.00,8.560,0,0.5200,6.7810,71.30,2.8561,5,384.0,20.90,395.58,7.67} | 1 | 26.50
+{1,0.22876,0.00,8.560,0,0.5200,6.4050,85.40,2.7147,5,384.0,20.90,70.80,10.63} | 1 | 18.60
+{1,0.21161,0.00,8.560,0,0.5200,6.1370,87.40,2.7147,5,384.0,20.90,394.47,13.44} | 1 | 19.30
+{1,0.13960,0.00,8.560,0,0.5200,6.1670,90.00,2.4210,5,384.0,20.90,392.69,12.33} | 1 | 20.10
+{1,0.13262,0.00,8.560,0,0.5200,5.8510,96.70,2.1069,5,384.0,20.90,394.05,16.47} | 1 | 19.50
+{1,0.17120,0.00,8.560,0,0.5200,5.8360,91.90,2.2110,5,384.0,20.90,395.67,18.66} | 1 | 19.50
+{1,0.13117,0.00,8.560,0,0.5200,6.1270,85.20,2.1224,5,384.0,20.90,387.69,14.09} | 1 | 20.40
+{1,0.12802,0.00,8.560,0,0.5200,6.4740,97.10,2.4329,5,384.0,20.90,395.24,12.27} | 1 | 19.80
+{1,0.26363,0.00,8.560,0,0.5200,6.2290,91.20,2.5451,5,384.0,20.90,391.23,15.55} | 1 | 19.40
+{1,0.10793,0.00,8.560,0,0.5200,6.1950,54.40,2.7778,5,384.0,20.90,393.49,13.00} | 1 | 21.70
+{1,0.10084,0.00,10.010,0,0.5470,6.7150,81.60,2.6775,6,432.0,17.80,395.59,10.16} | 1 | 22.80
+{1,0.12329,0.00,10.010,0,0.5470,5.9130,92.90,2.3534,6,432.0,17.80,394.95,16.21} | 1 | 18.80
+{1,0.22212,0.00,10.010,0,0.5470,6.0920,95.40,2.5480,6,432.0,17.80,396.90,17.09} | 1 | 18.70
+{1,0.14231,0.00,10.010,0,0.5470,6.2540,84.20,2.2565,6,432.0,17.80,388.74,10.45} | 1 | 18.50
+{1,0.17134,0.00,10.010,0,0.5470,5.9280,88.20,2.4631,6,432.0,17.80,344.91,15.76} | 1 | 18.30
+{1,0.13158,0.00,10.010,0,0.5470,6.1760,72.50,2.7301,6,432.0,17.80,393.30,12.04} | 1 | 21.20
+{1,0.15098,0.00,10.010,0,0.5470,6.0210,82.60,2.7474,6,432.0,17.80,394.51,10.30} | 1 | 19.20
+{1,0.13058,0.00,10.010,0,0.5470,5.8720,73.10,2.4775,6,432.0,17.80,338.63,15.37} | 1 | 20.40
+{1,0.14476,0.00,10.010,0,0.5470,5.7310,65.20,2.7592,6,432.0,17.80,391.50,13.61} | 1 | 19.30
+{1,0.06899,0.00,25.650,0,0.5810,5.8700,69.70,2.2577,2,188.0,19.10,389.15,14.37} | 1 | 22.00
+{1,0.07165,0.00,25.650,0,0.5810,6.0040,84.10,2.1974,2,188.0,19.10,377.67,14.27} | 1 | 20.30
+{1,0.09299,0.00,25.650,0,0.5810,5.9610,92.90,2.0869,2,188.0,19.10,378.09,17.93} | 1 | 20.50
+{1,0.15038,0.00,25.650,0,0.5810,5.8560,97.00,1.9444,2,188.0,19.10,370.31,25.41} | 1 | 17.30
+{1,0.09849,0.00,25.650,0,0.5810,5.8790,95.80,2.0063,2,188.0,19.10,379.38,17.58} | 1 | 18.80
+{1,0.16902,0.00,25.650,0,0.5810,5.9860,88.40,1.9929,2,188.0,19.10,385.02,14.81} | 1 | 21.40
+{1,0.38735,0.00,25.650,0,0.5810,5.6130,95.60,1.7572,2,188.0,19.10,359.29,27.26} | 1 | 15.70
+{1,0.25915,0.00,21.890,0,0.6240,5.6930,96.00,1.7883,4,437.0,21.20,392.11,17.19} | 1 | 16.20
+{1,0.32543,0.00,21.890,0,0.6240,6.4310,98.80,1.8125,4,437.0,21.20,396.90,15.39} | 1 | 18.00
+{1,0.88125,0.00,21.890,0,0.6240,5.6370,94.70,1.9799,4,437.0,21.20,396.90,18.34} | 1 | 14.30
+{1,0.34006,0.00,21.890,0,0.6240,6.4580,98.90,2.1185,4,437.0,21.20,395.04,12.60} | 1 | 19.20
+{1,1.19294,0.00,21.890,0,0.6240,6.3260,97.70,2.2710,4,437.0,21.20,396.90,12.26} | 1 | 19.60
+{1,0.59005,0.00,21.890,0,0.6240,6.3720,97.90,2.3274,4,437.0,21.20,385.76,11.12} | 1 | 23.00
+{1,0.32982,0.00,21.890,0,0.6240,5.8220,95.40,2.4699,4,437.0,21.20,388.69,15.03} | 1 | 18.40
+{1,0.97617,0.00,21.890,0,0.6240,5.7570,98.40,2.3460,4,437.0,21.20,262.76,17.31} | 1 | 15.60
+{1,0.55778,0.00,21.890,0,0.6240,6.3350,98.20,2.1107,4,437.0,21.20,394.67,16.96} | 1 | 18.10
+\.
+
+create function check_elastic_net ()
+returns void as $$
+begin
+    EXECUTE 'drop table if exists house_en, house_en_summary';
+    PERFORM elastic_net_train(
+        'lin_housing_wi',
+        'house_en',
+        'y',
+        'x',
+        'gaussian',
+        1,
+        0.2,
+        True,
+        NULL,
+        'fista',
+        '{eta = 2, max_stepsize = 0.5, use_active_set = f
+   }    1',
+        NULL,
+        2,
+        1e-2
+    );
+
+
+end;
+$$ language plpgsql volatile;
+
+select check_elastic_net();


[3/5] madlib git commit: Madpack: Add dev-check and a compact install-check.

Posted by ok...@apache.org.
http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/elastic_net/test/elastic_net_install_check.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/elastic_net/test/elastic_net_install_check.sql_in b/src/ports/postgres/modules/elastic_net/test/elastic_net_install_check.sql_in
deleted file mode 100644
index 28a6fe6..0000000
--- a/src/ports/postgres/modules/elastic_net/test/elastic_net_install_check.sql_in
+++ /dev/null
@@ -1,842 +0,0 @@
-
-/* ------------------------------------------------------------------------
- * Install check for Elastic Net
- * ------------------------------------------------------------------------ */
-
-DROP TABLE IF EXISTS lin_housing_wi;
-CREATE TABLE lin_housing_wi (id serial, x float8[], grp_by_col int, y float8);
-COPY lin_housing_wi (x, grp_by_col, y) FROM STDIN NULL '?' DELIMITER '|';
-{1,0.00632,18.00,2.310,NULL,0.5380,6.5750,NULL,4.0900,1,296.0,15.30,396.90,4.98} | 1 | 24.00
-{1,0.00632,18.00,2.310,0,0.5380,6.5750,65.20,4.0900,1,296.0,15.30,396.90,4.98} | 1 | 24.00
-{1,0.02731,0.00,7.070,0,0.4690,6.4210,78.90,4.9671,2,242.0,17.80,396.90,9.14} | 1 | 21.60
-{1,0.02729,0.00,7.070,0,0.4690,7.1850,61.10,4.9671,2,242.0,17.80,392.83,4.03} | 1 | 34.70
-{1,0.03237,0.00,2.180,0,0.4580,6.9980,45.80,6.0622,3,222.0,18.70,394.63,2.94} | 1 | 33.40
-{1,0.06905,0.00,2.180,0,0.4580,7.1470,54.20,6.0622,3,222.0,18.70,396.90,5.33} | 1 | 36.20
-{1,0.02985,0.00,2.180,0,0.4580,6.4300,58.70,6.0622,3,222.0,18.70,394.12,5.21} | 1 | 28.70
-{1,0.08829,12.50,7.870,0,0.5240,6.0120,66.60,5.5605,5,311.0,15.20,395.60,12.43} | 1 | 22.90
-{1,0.14455,12.50,7.870,0,0.5240,6.1720,96.10,5.9505,5,311.0,15.20,396.90,19.15} | 1 | 27.10
-{1,0.21124,12.50,7.870,0,0.5240,5.6310,100.00,6.0821,5,311.0,15.20,386.63,29.93} | 1 | 16.50
-{1,0.17004,12.50,7.870,0,0.5240,6.0040,85.90,6.5921,5,311.0,15.20,386.71,17.10} | 1 | 18.90
-{1,0.22489,12.50,7.870,0,0.5240,6.3770,94.30,6.3467,5,311.0,15.20,392.52,20.45} | 1 | 15.00
-{1,0.11747,12.50,7.870,0,0.5240,6.0090,82.90,6.2267,5,311.0,15.20,396.90,13.27} | 1 | 18.90
-{1,0.09378,12.50,7.870,0,0.5240,5.8890,39.00,5.4509,5,311.0,15.20,390.50,15.71} | 1 | 21.70
-{1,0.62976,0.00,8.140,0,0.5380,5.9490,61.80,4.7075,4,307.0,21.00,396.90,8.26} | 1 | 20.40
-{1,0.63796,0.00,8.140,0,0.5380,6.0960,84.50,4.4619,4,307.0,21.00,380.02,10.26} | 1 | 18.20
-{1,0.62739,0.00,8.140,0,0.5380,5.8340,56.50,4.4986,4,307.0,21.00,395.62,8.47} | 1 | 19.90
-{1,1.05393,0.00,8.140,0,0.5380,5.9350,29.30,4.4986,4,307.0,21.00,386.85,6.58} | 1 | 23.10
-{1,0.78420,0.00,8.140,0,0.5380,5.9900,81.70,4.2579,4,307.0,21.00,386.75,14.67} | 1 | 17.50
-{1,0.80271,0.00,8.140,0,0.5380,5.4560,36.60,3.7965,4,307.0,21.00,288.99,11.69} | 1 | 20.20
-{1,0.72580,0.00,8.140,0,0.5380,5.7270,69.50,3.7965,4,307.0,21.00,390.95,11.28} | 1 | 18.20
-{1,1.25179,0.00,8.140,0,0.5380,5.5700,98.10,3.7979,4,307.0,21.00,376.57,21.02} | 1 | 13.60
-{1,0.85204,0.00,8.140,0,0.5380,5.9650,89.20,4.0123,4,307.0,21.00,392.53,13.83} | 1 | 19.60
-{1,1.23247,0.00,8.140,0,0.5380,6.1420,91.70,3.9769,4,307.0,21.00,396.90,18.72} | 1 | 15.20
-{1,0.98843,0.00,8.140,0,0.5380,5.8130,100.00,4.0952,4,307.0,21.00,394.54,19.88} | 1 | 14.50
-{1,0.75026,0.00,8.140,0,0.5380,5.9240,94.10,4.3996,4,307.0,21.00,394.33,16.30} | 1 | 15.60
-{1,0.84054,0.00,8.140,0,0.5380,5.5990,85.70,4.4546,4,307.0,21.00,303.42,16.51} | 1 | 13.90
-{1,0.67191,0.00,8.140,0,0.5380,5.8130,90.30,4.6820,4,307.0,21.00,376.88,14.81} | 1 | 16.60
-{1,0.95577,0.00,8.140,0,0.5380,6.0470,88.80,4.4534,4,307.0,21.00,306.38,17.28} | 1 | 14.80
-{1,0.77299,0.00,8.140,0,0.5380,6.4950,94.40,4.4547,4,307.0,21.00,387.94,12.80} | 1 | 18.40
-{1,1.00245,0.00,8.140,0,0.5380,6.6740,87.30,4.2390,4,307.0,21.00,380.23,11.98} | 1 | 21.00
-{1,1.13081,0.00,8.140,0,0.5380,5.7130,94.10,4.2330,4,307.0,21.00,360.17,22.60} | 1 | 12.70
-{1,1.35472,0.00,8.140,0,0.5380,6.0720,100.00,4.1750,4,307.0,21.00,376.73,13.04} | 1 | 14.50
-{1,1.38799,0.00,8.140,0,0.5380,5.9500,82.00,3.9900,4,307.0,21.00,232.60,27.71} | 1 | 13.20
-{1,1.15172,0.00,8.140,0,0.5380,5.7010,95.00,3.7872,4,307.0,21.00,358.77,18.35} | 1 | 13.10
-{1,1.61282,0.00,8.140,0,0.5380,6.0960,96.90,3.7598,4,307.0,21.00,248.31,20.34} | 1 | 13.50
-{1,0.06417,0.00,5.960,0,0.4990,5.9330,68.20,3.3603,5,279.0,19.20,396.90,9.68} | 1 | 18.90
-{1,0.09744,0.00,5.960,0,0.4990,5.8410,61.40,3.3779,5,279.0,19.20,377.56,11.41} | 1 | 20.00
-{1,0.08014,0.00,5.960,0,0.4990,5.8500,41.50,3.9342,5,279.0,19.20,396.90,8.77} | 1 | 21.00
-{1,0.17505,0.00,5.960,0,0.4990,5.9660,30.20,3.8473,5,279.0,19.20,393.43,10.13} | 1 | 24.70
-{1,0.02763,75.00,2.950,0,0.4280,6.5950,21.80,5.4011,3,252.0,18.30,395.63,4.32} | 1 | 30.80
-{1,0.03359,75.00,2.950,0,0.4280,7.0240,15.80,5.4011,3,252.0,18.30,395.62,1.98} | 1 | 34.90
-{1,0.12744,0.00,6.910,0,0.4480,6.7700,2.90,5.7209,3,233.0,17.90,385.41,4.84} | 1 | 26.60
-{1,0.14150,0.00,6.910,0,0.4480,6.1690,6.60,5.7209,3,233.0,17.90,383.37,5.81} | 1 | 25.30
-{1,0.15936,0.00,6.910,0,0.4480,6.2110,6.50,5.7209,3,233.0,17.90,394.46,7.44} | 1 | 24.70
-{1,0.12269,0.00,6.910,0,0.4480,6.0690,40.00,5.7209,3,233.0,17.90,389.39,9.55} | 1 | 21.20
-{1,0.17142,0.00,6.910,0,0.4480,5.6820,33.80,5.1004,3,233.0,17.90,396.90,10.21} | 1 | 19.30
-{1,0.18836,0.00,6.910,0,0.4480,5.7860,33.30,5.1004,3,233.0,17.90,396.90,14.15} | 1 | 20.00
-{1,0.22927,0.00,6.910,0,0.4480,6.0300,85.50,5.6894,3,233.0,17.90,392.74,18.80} | 1 | 16.60
-{1,0.25387,0.00,6.910,0,0.4480,5.3990,95.30,5.8700,3,233.0,17.90,396.90,30.81} | 1 | 14.40
-{1,0.21977,0.00,6.910,0,0.4480,5.6020,62.00,6.0877,3,233.0,17.90,396.90,16.20} | 1 | 19.40
-{1,0.08873,21.00,5.640,0,0.4390,5.9630,45.70,6.8147,4,243.0,16.80,395.56,13.45} | 1 | 19.70
-{1,0.04337,21.00,5.640,0,0.4390,6.1150,63.00,6.8147,4,243.0,16.80,393.97,9.43} | 1 | 20.50
-{1,0.05360,21.00,5.640,0,0.4390,6.5110,21.10,6.8147,4,243.0,16.80,396.90,5.28} | 1 | 25.00
-{1,0.04981,21.00,5.640,0,0.4390,5.9980,21.40,6.8147,4,243.0,16.80,396.90,8.43} | 1 | 23.40
-{1,0.01360,75.00,4.000,0,0.4100,5.8880,47.60,7.3197,3,469.0,21.10,396.90,14.80} | 1 | 18.90
-{1,0.01311,90.00,1.220,0,0.4030,7.2490,21.90,8.6966,5,226.0,17.90,395.93,4.81} | 1 | 35.40
-{1,0.02055,85.00,0.740,0,0.4100,6.3830,35.70,9.1876,2,313.0,17.30,396.90,5.77} | 1 | 24.70
-{1,0.01432,100.00,1.320,0,0.4110,6.8160,40.50,8.3248,5,256.0,15.10,392.90,3.95} | 1 | 31.60
-{1,0.15445,25.00,5.130,0,0.4530,6.1450,29.20,7.8148,8,284.0,19.70,390.68,6.86} | 1 | 23.30
-{1,0.10328,25.00,5.130,0,0.4530,5.9270,47.20,6.9320,8,284.0,19.70,396.90,9.22} | 1 | 19.60
-{1,0.14932,25.00,5.130,0,0.4530,5.7410,66.20,7.2254,8,284.0,19.70,395.11,13.15} | 1 | 18.70
-{1,0.17171,25.00,5.130,0,0.4530,5.9660,93.40,6.8185,8,284.0,19.70,378.08,14.44} | 1 | 16.00
-{1,0.11027,25.00,5.130,0,0.4530,6.4560,67.80,7.2255,8,284.0,19.70,396.90,6.73} | 1 | 22.20
-{1,0.12650,25.00,5.130,0,0.4530,6.7620,43.40,7.9809,8,284.0,19.70,395.58,9.50} | 1 | 25.00
-{1,0.01951,17.50,1.380,0,0.4161,7.1040,59.50,9.2229,3,216.0,18.60,393.24,8.05} | 1 | 33.00
-{1,0.03584,80.00,3.370,0,0.3980,6.2900,17.80,6.6115,4,337.0,16.10,396.90,4.67} | 1 | 23.50
-{1,0.04379,80.00,3.370,0,0.3980,5.7870,31.10,6.6115,4,337.0,16.10,396.90,10.24} | 1 | 19.40
-{1,0.05789,12.50,6.070,0,0.4090,5.8780,21.40,6.4980,4,345.0,18.90,396.21,8.10} | 1 | 22.00
-{1,0.13554,12.50,6.070,0,0.4090,5.5940,36.80,6.4980,4,345.0,18.90,396.90,13.09} | 1 | 17.40
-{1,0.12816,12.50,6.070,0,0.4090,5.8850,33.00,6.4980,4,345.0,18.90,396.90,8.79} | 1 | 20.90
-{1,0.08826,0.00,10.810,0,0.4130,6.4170,6.60,5.2873,4,305.0,19.20,383.73,6.72} | 1 | 24.20
-{1,0.15876,0.00,10.810,0,0.4130,5.9610,17.50,5.2873,4,305.0,19.20,376.94,9.88} | 1 | 21.70
-{1,0.09164,0.00,10.810,0,0.4130,6.0650,7.80,5.2873,4,305.0,19.20,390.91,5.52} | 1 | 22.80
-{1,0.19539,0.00,10.810,0,0.4130,6.2450,6.20,5.2873,4,305.0,19.20,377.17,7.54} | 1 | 23.40
-{1,0.07896,0.00,12.830,0,0.4370,6.2730,6.00,4.2515,5,398.0,18.70,394.92,6.78} | 1 | 24.10
-{1,0.09512,0.00,12.830,0,0.4370,6.2860,45.00,4.5026,5,398.0,18.70,383.23,8.94} | 1 | 21.40
-{1,0.10153,0.00,12.830,0,0.4370,6.2790,74.50,4.0522,5,398.0,18.70,373.66,11.97} | 1 | 20.00
-{1,0.08707,0.00,12.830,0,0.4370,6.1400,45.80,4.0905,5,398.0,18.70,386.96,10.27} | 1 | 20.80
-{1,0.05646,0.00,12.830,0,0.4370,6.2320,53.70,5.0141,5,398.0,18.70,386.40,12.34} | 1 | 21.20
-{1,0.08387,0.00,12.830,0,0.4370,5.8740,36.60,4.5026,5,398.0,18.70,396.06,9.10} | 1 | 20.30
-{1,0.04113,25.00,4.860,0,0.4260,6.7270,33.50,5.4007,4,281.0,19.00,396.90,5.29} | 1 | 28.00
-{1,0.04462,25.00,4.860,0,0.4260,6.6190,70.40,5.4007,4,281.0,19.00,395.63,7.22} | 1 | 23.90
-{1,0.03659,25.00,4.860,0,0.4260,6.3020,32.20,5.4007,4,281.0,19.00,396.90,6.72} | 1 | 24.80
-{1,0.03551,25.00,4.860,0,0.4260,6.1670,46.70,5.4007,4,281.0,19.00,390.64,7.51} | 1 | 22.90
-{1,0.05059,0.00,4.490,0,0.4490,6.3890,48.00,4.7794,3,247.0,18.50,396.90,9.62} | 1 | 23.90
-{1,0.05735,0.00,4.490,0,0.4490,6.6300,56.10,4.4377,3,247.0,18.50,392.30,6.53} | 1 | 26.60
-{1,0.05188,0.00,4.490,0,0.4490,6.0150,45.10,4.4272,3,247.0,18.50,395.99,12.86} | 1 | 22.50
-{1,0.07151,0.00,4.490,0,0.4490,6.1210,56.80,3.7476,3,247.0,18.50,395.15,8.44} | 1 | 22.20
-{1,0.05660,0.00,3.410,0,0.4890,7.0070,86.30,3.4217,2,270.0,17.80,396.90,5.50} | 1 | 23.60
-{1,0.05302,0.00,3.410,0,0.4890,7.0790,63.10,3.4145,2,270.0,17.80,396.06,5.70} | 1 | 28.70
-{1,0.04684,0.00,3.410,0,0.4890,6.4170,66.10,3.0923,2,270.0,17.80,392.18,8.81} | 1 | 22.60
-{1,0.03932,0.00,3.410,0,0.4890,6.4050,73.90,3.0921,2,270.0,17.80,393.55,8.20} | 1 | 22.00
-{1,0.04203,28.00,15.040,0,0.4640,6.4420,53.60,3.6659,4,270.0,18.20,395.01,8.16} | 1 | 22.90
-{1,0.02875,28.00,15.040,0,0.4640,6.2110,28.90,3.6659,4,270.0,18.20,396.33,6.21} | 1 | 25.00
-{1,0.04294,28.00,15.040,0,0.4640,6.2490,77.30,3.6150,4,270.0,18.20,396.90,10.59} | 1 | 20.60
-{1,0.12204,0.00,2.890,0,0.4450,6.6250,57.80,3.4952,2,276.0,18.00,357.98,6.65} | 1 | 28.40
-{1,0.11504,0.00,2.890,0,0.4450,6.1630,69.60,3.4952,2,276.0,18.00,391.83,11.34} | 1 | 21.40
-{1,0.12083,0.00,2.890,0,0.4450,8.0690,76.00,3.4952,2,276.0,18.00,396.90,4.21} | 1 | 38.70
-{1,0.08187,0.00,2.890,0,0.4450,7.8200,36.90,3.4952,2,276.0,18.00,393.53,3.57} | 1 | 43.80
-{1,0.06860,0.00,2.890,0,0.4450,7.4160,62.50,3.4952,2,276.0,18.00,396.90,6.19} | 1 | 33.20
-{1,0.14866,0.00,8.560,0,0.5200,6.7270,79.90,2.7778,5,384.0,20.90,394.76,9.42} | 1 | 27.50
-{1,0.11432,0.00,8.560,0,0.5200,6.7810,71.30,2.8561,5,384.0,20.90,395.58,7.67} | 1 | 26.50
-{1,0.22876,0.00,8.560,0,0.5200,6.4050,85.40,2.7147,5,384.0,20.90,70.80,10.63} | 1 | 18.60
-{1,0.21161,0.00,8.560,0,0.5200,6.1370,87.40,2.7147,5,384.0,20.90,394.47,13.44} | 1 | 19.30
-{1,0.13960,0.00,8.560,0,0.5200,6.1670,90.00,2.4210,5,384.0,20.90,392.69,12.33} | 1 | 20.10
-{1,0.13262,0.00,8.560,0,0.5200,5.8510,96.70,2.1069,5,384.0,20.90,394.05,16.47} | 1 | 19.50
-{1,0.17120,0.00,8.560,0,0.5200,5.8360,91.90,2.2110,5,384.0,20.90,395.67,18.66} | 1 | 19.50
-{1,0.13117,0.00,8.560,0,0.5200,6.1270,85.20,2.1224,5,384.0,20.90,387.69,14.09} | 1 | 20.40
-{1,0.12802,0.00,8.560,0,0.5200,6.4740,97.10,2.4329,5,384.0,20.90,395.24,12.27} | 1 | 19.80
-{1,0.26363,0.00,8.560,0,0.5200,6.2290,91.20,2.5451,5,384.0,20.90,391.23,15.55} | 1 | 19.40
-{1,0.10793,0.00,8.560,0,0.5200,6.1950,54.40,2.7778,5,384.0,20.90,393.49,13.00} | 1 | 21.70
-{1,0.10084,0.00,10.010,0,0.5470,6.7150,81.60,2.6775,6,432.0,17.80,395.59,10.16} | 1 | 22.80
-{1,0.12329,0.00,10.010,0,0.5470,5.9130,92.90,2.3534,6,432.0,17.80,394.95,16.21} | 1 | 18.80
-{1,0.22212,0.00,10.010,0,0.5470,6.0920,95.40,2.5480,6,432.0,17.80,396.90,17.09} | 1 | 18.70
-{1,0.14231,0.00,10.010,0,0.5470,6.2540,84.20,2.2565,6,432.0,17.80,388.74,10.45} | 1 | 18.50
-{1,0.17134,0.00,10.010,0,0.5470,5.9280,88.20,2.4631,6,432.0,17.80,344.91,15.76} | 1 | 18.30
-{1,0.13158,0.00,10.010,0,0.5470,6.1760,72.50,2.7301,6,432.0,17.80,393.30,12.04} | 1 | 21.20
-{1,0.15098,0.00,10.010,0,0.5470,6.0210,82.60,2.7474,6,432.0,17.80,394.51,10.30} | 1 | 19.20
-{1,0.13058,0.00,10.010,0,0.5470,5.8720,73.10,2.4775,6,432.0,17.80,338.63,15.37} | 1 | 20.40
-{1,0.14476,0.00,10.010,0,0.5470,5.7310,65.20,2.7592,6,432.0,17.80,391.50,13.61} | 1 | 19.30
-{1,0.06899,0.00,25.650,0,0.5810,5.8700,69.70,2.2577,2,188.0,19.10,389.15,14.37} | 1 | 22.00
-{1,0.07165,0.00,25.650,0,0.5810,6.0040,84.10,2.1974,2,188.0,19.10,377.67,14.27} | 1 | 20.30
-{1,0.09299,0.00,25.650,0,0.5810,5.9610,92.90,2.0869,2,188.0,19.10,378.09,17.93} | 1 | 20.50
-{1,0.15038,0.00,25.650,0,0.5810,5.8560,97.00,1.9444,2,188.0,19.10,370.31,25.41} | 1 | 17.30
-{1,0.09849,0.00,25.650,0,0.5810,5.8790,95.80,2.0063,2,188.0,19.10,379.38,17.58} | 1 | 18.80
-{1,0.16902,0.00,25.650,0,0.5810,5.9860,88.40,1.9929,2,188.0,19.10,385.02,14.81} | 1 | 21.40
-{1,0.38735,0.00,25.650,0,0.5810,5.6130,95.60,1.7572,2,188.0,19.10,359.29,27.26} | 1 | 15.70
-{1,0.25915,0.00,21.890,0,0.6240,5.6930,96.00,1.7883,4,437.0,21.20,392.11,17.19} | 1 | 16.20
-{1,0.32543,0.00,21.890,0,0.6240,6.4310,98.80,1.8125,4,437.0,21.20,396.90,15.39} | 1 | 18.00
-{1,0.88125,0.00,21.890,0,0.6240,5.6370,94.70,1.9799,4,437.0,21.20,396.90,18.34} | 1 | 14.30
-{1,0.34006,0.00,21.890,0,0.6240,6.4580,98.90,2.1185,4,437.0,21.20,395.04,12.60} | 1 | 19.20
-{1,1.19294,0.00,21.890,0,0.6240,6.3260,97.70,2.2710,4,437.0,21.20,396.90,12.26} | 1 | 19.60
-{1,0.59005,0.00,21.890,0,0.6240,6.3720,97.90,2.3274,4,437.0,21.20,385.76,11.12} | 1 | 23.00
-{1,0.32982,0.00,21.890,0,0.6240,5.8220,95.40,2.4699,4,437.0,21.20,388.69,15.03} | 1 | 18.40
-{1,0.97617,0.00,21.890,0,0.6240,5.7570,98.40,2.3460,4,437.0,21.20,262.76,17.31} | 1 | 15.60
-{1,0.55778,0.00,21.890,0,0.6240,6.3350,98.20,2.1107,4,437.0,21.20,394.67,16.96} | 1 | 18.10
-{1,0.32264,0.00,21.890,0,0.6240,5.9420,93.50,1.9669,4,437.0,21.20,378.25,16.90} | 1 | 17.40
-{1,0.35233,0.00,21.890,0,0.6240,6.4540,98.40,1.8498,4,437.0,21.20,394.08,14.59} | 1 | 17.10
-{1,0.24980,0.00,21.890,0,0.6240,5.8570,98.20,1.6686,4,437.0,21.20,392.04,21.32} | 1 | 13.30
-{1,0.54452,0.00,21.890,0,0.6240,6.1510,97.90,1.6687,4,437.0,21.20,396.90,18.46} | 1 | 17.80
-{1,0.29090,0.00,21.890,0,0.6240,6.1740,93.60,1.6119,4,437.0,21.20,388.08,24.16} | 1 | 14.00
-{1,1.62864,0.00,21.890,0,0.6240,5.0190,100.00,1.4394,4,437.0,21.20,396.90,34.41} | 1 | 14.40
-{1,3.32105,0.00,19.580,1,0.8710,5.4030,100.00,1.3216,5,403.0,14.70,396.90,26.82} | 1 | 13.40
-{1,4.09740,0.00,19.580,0,0.8710,5.4680,100.00,1.4118,5,403.0,14.70,396.90,26.42} | 1 | 15.60
-{1,2.77974,0.00,19.580,0,0.8710,4.9030,97.80,1.3459,5,403.0,14.70,396.90,29.29} | 1 | 11.80
-{1,2.37934,0.00,19.580,0,0.8710,6.1300,100.00,1.4191,5,403.0,14.70,172.91,27.80} | 1 | 13.80
-{1,2.15505,0.00,19.580,0,0.8710,5.6280,100.00,1.5166,5,403.0,14.70,169.27,16.65} | 1 | 15.60
-{1,2.36862,0.00,19.580,0,0.8710,4.9260,95.70,1.4608,5,403.0,14.70,391.71,29.53} | 1 | 14.60
-{1,2.33099,0.00,19.580,0,0.8710,5.1860,93.80,1.5296,5,403.0,14.70,356.99,28.32} | 1 | 17.80
-{1,2.73397,0.00,19.580,0,0.8710,5.5970,94.90,1.5257,5,403.0,14.70,351.85,21.45} | 1 | 15.40
-{1,1.65660,0.00,19.580,0,0.8710,6.1220,97.30,1.6180,5,403.0,14.70,372.80,14.10} | 1 | 21.50
-{1,1.49632,0.00,19.580,0,0.8710,5.4040,100.00,1.5916,5,403.0,14.70,341.60,13.28} | 1 | 19.60
-{1,1.12658,0.00,19.580,1,0.8710,5.0120,88.00,1.6102,5,403.0,14.70,343.28,12.12} | 1 | 15.30
-{1,2.14918,0.00,19.580,0,0.8710,5.7090,98.50,1.6232,5,403.0,14.70,261.95,15.79} | 1 | 19.40
-{1,1.41385,0.00,19.580,1,0.8710,6.1290,96.00,1.7494,5,403.0,14.70,321.02,15.12} | 1 | 17.00
-{1,3.53501,0.00,19.580,1,0.8710,6.1520,82.60,1.7455,5,403.0,14.70,88.01,15.02} | 1 | 15.60
-{1,2.44668,0.00,19.580,0,0.8710,5.2720,94.00,1.7364,5,403.0,14.70,88.63,16.14} | 1 | 13.10
-{1,1.22358,0.00,19.580,0,0.6050,6.9430,97.40,1.8773,5,403.0,14.70,363.43,4.59} | 1 | 41.30
-{1,1.34284,0.00,19.580,0,0.6050,6.0660,100.00,1.7573,5,403.0,14.70,353.89,6.43} | 1 | 24.30
-{1,1.42502,0.00,19.580,0,0.8710,6.5100,100.00,1.7659,5,403.0,14.70,364.31,7.39} | 1 | 23.30
-{1,1.27346,0.00,19.580,1,0.6050,6.2500,92.60,1.7984,5,403.0,14.70,338.92,5.50} | 1 | 27.00
-{1,1.46336,0.00,19.580,0,0.6050,7.4890,90.80,1.9709,5,403.0,14.70,374.43,1.73} | 1 | 50.00
-{1,1.83377,0.00,19.580,1,0.6050,7.8020,98.20,2.0407,5,403.0,14.70,389.61,1.92} | 1 | 50.00
-{1,1.51902,0.00,19.580,1,0.6050,8.3750,93.90,2.1620,5,403.0,14.70,388.45,3.32} | 1 | 50.00
-{1,2.24236,0.00,19.580,0,0.6050,5.8540,91.80,2.4220,5,403.0,14.70,395.11,11.64} | 1 | 22.70
-{1,2.92400,0.00,19.580,0,0.6050,6.1010,93.00,2.2834,5,403.0,14.70,240.16,9.81} | 1 | 25.00
-{1,2.01019,0.00,19.580,0,0.6050,7.9290,96.20,2.0459,5,403.0,14.70,369.30,3.70} | 1 | 50.00
-{1,1.80028,0.00,19.580,0,0.6050,5.8770,79.20,2.4259,5,403.0,14.70,227.61,12.14} | 1 | 23.80
-{1,2.30040,0.00,19.580,0,0.6050,6.3190,96.10,2.1000,5,403.0,14.70,297.09,11.10} | 1 | 23.80
-{1,2.44953,0.00,19.580,0,0.6050,6.4020,95.20,2.2625,5,403.0,14.70,330.04,11.32} | 1 | 22.30
-{1,1.20742,0.00,19.580,0,0.6050,5.8750,94.60,2.4259,5,403.0,14.70,292.29,14.43} | 1 | 17.40
-{1,2.31390,0.00,19.580,0,0.6050,5.8800,97.30,2.3887,5,403.0,14.70,348.13,12.03} | 1 | 19.10
-{1,0.13914,0.00,4.050,0,0.5100,5.5720,88.50,2.5961,5,296.0,16.60,396.90,14.69} | 1 | 23.10
-{1,0.09178,0.00,4.050,0,0.5100,6.4160,84.10,2.6463,5,296.0,16.60,395.50,9.04} | 1 | 23.60
-{1,0.08447,0.00,4.050,0,0.5100,5.8590,68.70,2.7019,5,296.0,16.60,393.23,9.64} | 1 | 22.60
-{1,0.06664,0.00,4.050,0,0.5100,6.5460,33.10,3.1323,5,296.0,16.60,390.96,5.33} | 1 | 29.40
-{1,0.07022,0.00,4.050,0,0.5100,6.0200,47.20,3.5549,5,296.0,16.60,393.23,10.11} | 1 | 23.20
-{1,0.05425,0.00,4.050,0,0.5100,6.3150,73.40,3.3175,5,296.0,16.60,395.60,6.29} | 1 | 24.60
-{1,0.06642,0.00,4.050,0,0.5100,6.8600,74.40,2.9153,5,296.0,16.60,391.27,6.92} | 1 | 29.90
-{1,0.05780,0.00,2.460,0,0.4880,6.9800,58.40,2.8290,3,193.0,17.80,396.90,5.04} | 1 | 37.20
-{1,0.06588,0.00,2.460,0,0.4880,7.7650,83.30,2.7410,3,193.0,17.80,395.56,7.56} | 1 | 39.80
-{1,0.06888,0.00,2.460,0,0.4880,6.1440,62.20,2.5979,3,193.0,17.80,396.90,9.45} | 1 | 36.20
-{1,0.09103,0.00,2.460,0,0.4880,7.1550,92.20,2.7006,3,193.0,17.80,394.12,4.82} | 1 | 37.90
-{1,0.10008,0.00,2.460,0,0.4880,6.5630,95.60,2.8470,3,193.0,17.80,396.90,5.68} | 1 | 32.50
-{1,0.08308,0.00,2.460,0,0.4880,5.6040,89.80,2.9879,3,193.0,17.80,391.00,13.98} | 1 | 26.40
-{1,0.06047,0.00,2.460,0,0.4880,6.1530,68.80,3.2797,3,193.0,17.80,387.11,13.15} | 1 | 29.60
-{1,0.05602,0.00,2.460,0,0.4880,7.8310,53.60,3.1992,3,193.0,17.80,392.63,4.45} | 1 | 50.00
-{1,0.07875,45.00,3.440,0,0.4370,6.7820,41.10,3.7886,5,398.0,15.20,393.87,6.68} | 1 | 32.00
-{1,0.12579,45.00,3.440,0,0.4370,6.5560,29.10,4.5667,5,398.0,15.20,382.84,4.56} | 1 | 29.80
-{1,0.08370,45.00,3.440,0,0.4370,7.1850,38.90,4.5667,5,398.0,15.20,396.90,5.39} | 1 | 34.90
-{1,0.09068,45.00,3.440,0,0.4370,6.9510,21.50,6.4798,5,398.0,15.20,377.68,5.10} | 1 | 37.00
-{1,0.06911,45.00,3.440,0,0.4370,6.7390,30.80,6.4798,5,398.0,15.20,389.71,4.69} | 1 | 30.50
-{1,0.08664,45.00,3.440,0,0.4370,7.1780,26.30,6.4798,5,398.0,15.20,390.49,2.87} | 1 | 36.40
-{1,0.02187,60.00,2.930,0,0.4010,6.8000,9.90,6.2196,1,265.0,15.60,393.37,5.03} | 1 | 31.10
-{1,0.01439,60.00,2.930,0,0.4010,6.6040,18.80,6.2196,1,265.0,15.60,376.70,4.38} | 1 | 29.10
-{1,0.01381,80.00,0.460,0,0.4220,7.8750,32.00,5.6484,4,255.0,14.40,394.23,2.97} | 1 | 50.00
-{1,0.04011,80.00,1.520,0,0.4040,7.2870,34.10,7.3090,2,329.0,12.60,396.90,4.08} | 1 | 33.30
-{1,0.04666,80.00,1.520,0,0.4040,7.1070,36.60,7.3090,2,329.0,12.60,354.31,8.61} | 1 | 30.30
-{1,0.03768,80.00,1.520,0,0.4040,7.2740,38.30,7.3090,2,329.0,12.60,392.20,6.62} | 1 | 34.60
-{1,0.03150,95.00,1.470,0,0.4030,6.9750,15.30,7.6534,3,402.0,17.00,396.90,4.56} | 1 | 34.90
-{1,0.01778,95.00,1.470,0,0.4030,7.1350,13.90,7.6534,3,402.0,17.00,384.30,4.45} | 1 | 32.90
-{1,0.03445,82.50,2.030,0,0.4150,6.1620,38.40,6.2700,2,348.0,14.70,393.77,7.43} | 1 | 24.10
-{1,0.02177,82.50,2.030,0,0.4150,7.6100,15.70,6.2700,2,348.0,14.70,395.38,3.11} | 1 | 42.30
-{1,0.03510,95.00,2.680,0,0.4161,7.8530,33.20,5.1180,4,224.0,14.70,392.78,3.81} | 1 | 48.50
-{1,0.02009,95.00,2.680,0,0.4161,8.0340,31.90,5.1180,4,224.0,14.70,390.55,2.88} | 1 | 50.00
-{1,0.13642,0.00,10.590,0,0.4890,5.8910,22.30,3.9454,4,277.0,18.60,396.90,10.87} | 1 | 22.60
-{1,0.22969,0.00,10.590,0,0.4890,6.3260,52.50,4.3549,4,277.0,18.60,394.87,10.97} | 1 | 24.40
-{1,0.25199,0.00,10.590,0,0.4890,5.7830,72.70,4.3549,4,277.0,18.60,389.43,18.06} | 1 | 22.50
-{1,0.13587,0.00,10.590,1,0.4890,6.0640,59.10,4.2392,4,277.0,18.60,381.32,14.66} | 1 | 24.40
-{1,0.43571,0.00,10.590,1,0.4890,5.3440,100.00,3.8750,4,277.0,18.60,396.90,23.09} | 1 | 20.00
-{1,0.17446,0.00,10.590,1,0.4890,5.9600,92.10,3.8771,4,277.0,18.60,393.25,17.27} | 1 | 21.70
-{1,0.37578,0.00,10.590,1,0.4890,5.4040,88.60,3.6650,4,277.0,18.60,395.24,23.98} | 1 | 19.30
-{1,0.21719,0.00,10.590,1,0.4890,5.8070,53.80,3.6526,4,277.0,18.60,390.94,16.03} | 1 | 22.40
-{1,0.14052,0.00,10.590,0,0.4890,6.3750,32.30,3.9454,4,277.0,18.60,385.81,9.38} | 1 | 28.10
-{1,0.28955,0.00,10.590,0,0.4890,5.4120,9.80,3.5875,4,277.0,18.60,348.93,29.55} | 1 | 23.70
-{1,0.19802,0.00,10.590,0,0.4890,6.1820,42.40,3.9454,4,277.0,18.60,393.63,9.47} | 1 | 25.00
-{1,0.04560,0.00,13.890,1,0.5500,5.8880,56.00,3.1121,5,276.0,16.40,392.80,13.51} | 1 | 23.30
-{1,0.07013,0.00,13.890,0,0.5500,6.6420,85.10,3.4211,5,276.0,16.40,392.78,9.69} | 1 | 28.70
-{1,0.11069,0.00,13.890,1,0.5500,5.9510,93.80,2.8893,5,276.0,16.40,396.90,17.92} | 1 | 21.50
-{1,0.11425,0.00,13.890,1,0.5500,6.3730,92.40,3.3633,5,276.0,16.40,393.74,10.50} | 1 | 23.00
-{1,0.35809,0.00,6.200,1,0.5070,6.9510,88.50,2.8617,8,307.0,17.40,391.70,9.71} | 1 | 26.70
-{1,0.40771,0.00,6.200,1,0.5070,6.1640,91.30,3.0480,8,307.0,17.40,395.24,21.46} | 1 | 21.70
-{1,0.62356,0.00,6.200,1,0.5070,6.8790,77.70,3.2721,8,307.0,17.40,390.39,9.93} | 1 | 27.50
-{1,0.61470,0.00,6.200,0,0.5070,6.6180,80.80,3.2721,8,307.0,17.40,396.90,7.60} | 1 | 30.10
-{1,0.31533,0.00,6.200,0,0.5040,8.2660,78.30,2.8944,8,307.0,17.40,385.05,4.14} | 1 | 44.80
-{1,0.52693,0.00,6.200,0,0.5040,8.7250,83.00,2.8944,8,307.0,17.40,382.00,4.63} | 1 | 50.00
-{1,0.38214,0.00,6.200,0,0.5040,8.0400,86.50,3.2157,8,307.0,17.40,387.38,3.13} | 1 | 37.60
-{1,0.41238,0.00,6.200,0,0.5040,7.1630,79.90,3.2157,8,307.0,17.40,372.08,6.36} | 1 | 31.60
-{1,0.29819,0.00,6.200,0,0.5040,7.6860,17.00,3.3751,8,307.0,17.40,377.51,3.92} | 1 | 46.70
-{1,0.44178,0.00,6.200,0,0.5040,6.5520,21.40,3.3751,8,307.0,17.40,380.34,3.76} | 1 | 31.50
-{1,0.53700,0.00,6.200,0,0.5040,5.9810,68.10,3.6715,8,307.0,17.40,378.35,11.65} | 1 | 24.30
-{1,0.46296,0.00,6.200,0,0.5040,7.4120,76.90,3.6715,8,307.0,17.40,376.14,5.25} | 1 | 31.70
-{1,0.57529,0.00,6.200,0,0.5070,8.3370,73.30,3.8384,8,307.0,17.40,385.91,2.47} | 1 | 41.70
-{1,0.33147,0.00,6.200,0,0.5070,8.2470,70.40,3.6519,8,307.0,17.40,378.95,3.95} | 1 | 48.30
-{1,0.44791,0.00,6.200,1,0.5070,6.7260,66.50,3.6519,8,307.0,17.40,360.20,8.05} | 1 | 29.00
-{1,0.33045,0.00,6.200,0,0.5070,6.0860,61.50,3.6519,8,307.0,17.40,376.75,10.88} | 1 | 24.00
-{1,0.52058,0.00,6.200,1,0.5070,6.6310,76.50,4.1480,8,307.0,17.40,388.45,9.54} | 1 | 25.10
-{1,0.51183,0.00,6.200,0,0.5070,7.3580,71.60,4.1480,8,307.0,17.40,390.07,4.73} | 1 | 31.50
-{1,0.08244,30.00,4.930,0,0.4280,6.4810,18.50,6.1899,6,300.0,16.60,379.41,6.36} | 1 | 23.70
-{1,0.09252,30.00,4.930,0,0.4280,6.6060,42.20,6.1899,6,300.0,16.60,383.78,7.37} | 1 | 23.30
-{1,0.11329,30.00,4.930,0,0.4280,6.8970,54.30,6.3361,6,300.0,16.60,391.25,11.38} | 1 | 22.00
-{1,0.10612,30.00,4.930,0,0.4280,6.0950,65.10,6.3361,6,300.0,16.60,394.62,12.40} | 1 | 20.10
-{1,0.10290,30.00,4.930,0,0.4280,6.3580,52.90,7.0355,6,300.0,16.60,372.75,11.22} | 1 | 22.20
-{1,0.12757,30.00,4.930,0,0.4280,6.3930,7.80,7.0355,6,300.0,16.60,374.71,5.19} | 1 | 23.70
-{1,0.20608,22.00,5.860,0,0.4310,5.5930,76.50,7.9549,7,330.0,19.10,372.49,12.50} | 1 | 17.60
-{1,0.19133,22.00,5.860,0,0.4310,5.6050,70.20,7.9549,7,330.0,19.10,389.13,18.46} | 2 | 18.50
-{1,0.33983,22.00,5.860,0,0.4310,6.1080,34.90,8.0555,7,330.0,19.10,390.18,9.16} | 2 | 24.30
-{1,0.19657,22.00,5.860,0,0.4310,6.2260,79.20,8.0555,7,330.0,19.10,376.14,10.15} | 2 | 20.50
-{1,0.16439,22.00,5.860,0,0.4310,6.4330,49.10,7.8265,7,330.0,19.10,374.71,9.52} | 2 | 24.50
-{1,0.19073,22.00,5.860,0,0.4310,6.7180,17.50,7.8265,7,330.0,19.10,393.74,6.56} | 2 | 26.20
-{1,0.14030,22.00,5.860,0,0.4310,6.4870,13.00,7.3967,7,330.0,19.10,396.28,5.90} | 2 | 24.40
-{1,0.21409,22.00,5.860,0,0.4310,6.4380,8.90,7.3967,7,330.0,19.10,377.07,3.59} | 2 | 24.80
-{1,0.08221,22.00,5.860,0,0.4310,6.9570,6.80,8.9067,7,330.0,19.10,386.09,3.53} | 2 | 29.60
-{1,0.36894,22.00,5.860,0,0.4310,8.2590,8.40,8.9067,7,330.0,19.10,396.90,3.54} | 2 | 42.80
-{1,0.04819,80.00,3.640,0,0.3920,6.1080,32.00,9.2203,1,315.0,16.40,392.89,6.57} | 2 | 21.90
-{1,0.03548,80.00,3.640,0,0.3920,5.8760,19.10,9.2203,1,315.0,16.40,395.18,9.25} | 2 | 20.90
-{1,0.01538,90.00,3.750,0,0.3940,7.4540,34.20,6.3361,3,244.0,15.90,386.34,3.11} | 2 | 44.00
-{1,0.61154,20.00,3.970,0,0.6470,8.7040,86.90,1.8010,5,264.0,13.00,389.70,5.12} | 2 | 50.00
-{1,0.66351,20.00,3.970,0,0.6470,7.3330,100.00,1.8946,5,264.0,13.00,383.29,7.79} | 2 | 36.00
-{1,0.65665,20.00,3.970,0,0.6470,6.8420,100.00,2.0107,5,264.0,13.00,391.93,6.90} | 2 | 30.10
-{1,0.54011,20.00,3.970,0,0.6470,7.2030,81.80,2.1121,5,264.0,13.00,392.80,9.59} | 2 | 33.80
-{1,0.53412,20.00,3.970,0,0.6470,7.5200,89.40,2.1398,5,264.0,13.00,388.37,7.26} | 2 | 43.10
-{1,0.52014,20.00,3.970,0,0.6470,8.3980,91.50,2.2885,5,264.0,13.00,386.86,5.91} | 2 | 48.80
-{1,0.82526,20.00,3.970,0,0.6470,7.3270,94.50,2.0788,5,264.0,13.00,393.42,11.25} | 2 | 31.00
-{1,0.55007,20.00,3.970,0,0.6470,7.2060,91.60,1.9301,5,264.0,13.00,387.89,8.10} | 2 | 36.50
-{1,0.76162,20.00,3.970,0,0.6470,5.5600,62.80,1.9865,5,264.0,13.00,392.40,10.45} | 2 | 22.80
-{1,0.78570,20.00,3.970,0,0.6470,7.0140,84.60,2.1329,5,264.0,13.00,384.07,14.79} | 2 | 30.70
-{1,0.57834,20.00,3.970,0,0.5750,8.2970,67.00,2.4216,5,264.0,13.00,384.54,7.44} | 2 | 50.00
-{1,0.54050,20.00,3.970,0,0.5750,7.4700,52.60,2.8720,5,264.0,13.00,390.30,3.16} | 2 | 43.50
-{1,0.09065,20.00,6.960,1,0.4640,5.9200,61.50,3.9175,3,223.0,18.60,391.34,13.65} | 2 | 20.70
-{1,0.29916,20.00,6.960,0,0.4640,5.8560,42.10,4.4290,3,223.0,18.60,388.65,13.00} | 2 | 21.10
-{1,0.16211,20.00,6.960,0,0.4640,6.2400,16.30,4.4290,3,223.0,18.60,396.90,6.59} | 2 | 25.20
-{1,0.11460,20.00,6.960,0,0.4640,6.5380,58.70,3.9175,3,223.0,18.60,394.96,7.73} | 2 | 24.40
-{1,0.22188,20.00,6.960,1,0.4640,7.6910,51.80,4.3665,3,223.0,18.60,390.77,6.58} | 2 | 35.20
-{1,0.05644,40.00,6.410,1,0.4470,6.7580,32.90,4.0776,4,254.0,17.60,396.90,3.53} | 2 | 32.40
-{1,0.09604,40.00,6.410,0,0.4470,6.8540,42.80,4.2673,4,254.0,17.60,396.90,2.98} | 2 | 32.00
-{1,0.10469,40.00,6.410,1,0.4470,7.2670,49.00,4.7872,4,254.0,17.60,389.25,6.05} | 2 | 33.20
-{1,0.06127,40.00,6.410,1,0.4470,6.8260,27.60,4.8628,4,254.0,17.60,393.45,4.16} | 2 | 33.10
-{1,0.07978,40.00,6.410,0,0.4470,6.4820,32.10,4.1403,4,254.0,17.60,396.90,7.19} | 2 | 29.10
-{1,0.21038,20.00,3.330,0,0.4429,6.8120,32.20,4.1007,5,216.0,14.90,396.90,4.85} | 2 | 35.10
-{1,0.03578,20.00,3.330,0,0.4429,7.8200,64.50,4.6947,5,216.0,14.90,387.31,3.76} | 2 | 45.40
-{1,0.03705,20.00,3.330,0,0.4429,6.9680,37.20,5.2447,5,216.0,14.90,392.23,4.59} | 2 | 35.40
-{1,0.06129,20.00,3.330,1,0.4429,7.6450,49.70,5.2119,5,216.0,14.90,377.07,3.01} | 2 | 46.00
-{1,0.01501,90.00,1.210,1,0.4010,7.9230,24.80,5.8850,1,198.0,13.60,395.52,3.16} | 2 | 50.00
-{1,0.00906,90.00,2.970,0,0.4000,7.0880,20.80,7.3073,1,285.0,15.30,394.72,7.85} | 2 | 32.20
-{1,0.01096,55.00,2.250,0,0.3890,6.4530,31.90,7.3073,1,300.0,15.30,394.72,8.23} | 2 | 22.00
-{1,0.01965,80.00,1.760,0,0.3850,6.2300,31.50,9.0892,1,241.0,18.20,341.60,12.93} | 2 | 20.10
-{1,0.03871,52.50,5.320,0,0.4050,6.2090,31.30,7.3172,6,293.0,16.60,396.90,7.14} | 2 | 23.20
-{1,0.04590,52.50,5.320,0,0.4050,6.3150,45.60,7.3172,6,293.0,16.60,396.90,7.60} | 2 | 22.30
-{1,0.04297,52.50,5.320,0,0.4050,6.5650,22.90,7.3172,6,293.0,16.60,371.72,9.51} | 2 | 24.80
-{1,0.03502,80.00,4.950,0,0.4110,6.8610,27.90,5.1167,4,245.0,19.20,396.90,3.33} | 2 | 28.50
-{1,0.07886,80.00,4.950,0,0.4110,7.1480,27.70,5.1167,4,245.0,19.20,396.90,3.56} | 2 | 37.30
-{1,0.03615,80.00,4.950,0,0.4110,6.6300,23.40,5.1167,4,245.0,19.20,396.90,4.70} | 2 | 27.90
-{1,0.08265,0.00,13.920,0,0.4370,6.1270,18.40,5.5027,4,289.0,16.00,396.90,8.58} | 2 | 23.90
-{1,0.08199,0.00,13.920,0,0.4370,6.0090,42.30,5.5027,4,289.0,16.00,396.90,10.40} | 2 | 21.70
-{1,0.12932,0.00,13.920,0,0.4370,6.6780,31.10,5.9604,4,289.0,16.00,396.90,6.27} | 2 | 28.60
-{1,0.05372,0.00,13.920,0,0.4370,6.5490,51.00,5.9604,4,289.0,16.00,392.85,7.39} | 2 | 27.10
-{1,0.14103,0.00,13.920,0,0.4370,5.7900,58.00,6.3200,4,289.0,16.00,396.90,15.84} | 2 | 20.30
-{1,0.06466,70.00,2.240,0,0.4000,6.3450,20.10,7.8278,5,358.0,14.80,368.24,4.97} | 2 | 22.50
-{1,0.05561,70.00,2.240,0,0.4000,7.0410,10.00,7.8278,5,358.0,14.80,371.58,4.74} | 2 | 29.00
-{1,0.04417,70.00,2.240,0,0.4000,6.8710,47.40,7.8278,5,358.0,14.80,390.86,6.07} | 2 | 24.80
-{1,0.03537,34.00,6.090,0,0.4330,6.5900,40.40,5.4917,7,329.0,16.10,395.75,9.50} | 2 | 22.00
-{1,0.09266,34.00,6.090,0,0.4330,6.4950,18.40,5.4917,7,329.0,16.10,383.61,8.67} | 2 | 26.40
-{1,0.10000,34.00,6.090,0,0.4330,6.9820,17.70,5.4917,7,329.0,16.10,390.43,4.86} | 2 | 33.10
-{1,0.05515,33.00,2.180,0,0.4720,7.2360,41.10,4.0220,7,222.0,18.40,393.68,6.93} | 2 | 36.10
-{1,0.05479,33.00,2.180,0,0.4720,6.6160,58.10,3.3700,7,222.0,18.40,393.36,8.93} | 2 | 28.40
-{1,0.07503,33.00,2.180,0,0.4720,7.4200,71.90,3.0992,7,222.0,18.40,396.90,6.47} | 2 | 33.40
-{1,0.04932,33.00,2.180,0,0.4720,6.8490,70.30,3.1827,7,222.0,18.40,396.90,7.53} | 2 | 28.20
-{1,0.49298,0.00,9.900,0,0.5440,6.6350,82.50,3.3175,4,304.0,18.40,396.90,4.54} | 2 | 22.80
-{1,0.34940,0.00,9.900,0,0.5440,5.9720,76.70,3.1025,4,304.0,18.40,396.24,9.97} | 2 | 20.30
-{1,2.63548,0.00,9.900,0,0.5440,4.9730,37.80,2.5194,4,304.0,18.40,350.45,12.64} | 2 | 16.10
-{1,0.79041,0.00,9.900,0,0.5440,6.1220,52.80,2.6403,4,304.0,18.40,396.90,5.98} | 2 | 22.10
-{1,0.26169,0.00,9.900,0,0.5440,6.0230,90.40,2.8340,4,304.0,18.40,396.30,11.72} | 2 | 19.40
-{1,0.26938,0.00,9.900,0,0.5440,6.2660,82.80,3.2628,4,304.0,18.40,393.39,7.90} | 2 | 21.60
-{1,0.36920,0.00,9.900,0,0.5440,6.5670,87.30,3.6023,4,304.0,18.40,395.69,9.28} | 2 | 23.80
-{1,0.25356,0.00,9.900,0,0.5440,5.7050,77.70,3.9450,4,304.0,18.40,396.42,11.50} | 2 | 16.20
-{1,0.31827,0.00,9.900,0,0.5440,5.9140,83.20,3.9986,4,304.0,18.40,390.70,18.33} | 2 | 17.80
-{1,0.24522,0.00,9.900,0,0.5440,5.7820,71.70,4.0317,4,304.0,18.40,396.90,15.94} | 2 | 19.80
-{1,0.40202,0.00,9.900,0,0.5440,6.3820,67.20,3.5325,4,304.0,18.40,395.21,10.36} | 2 | 23.10
-{1,0.47547,0.00,9.900,0,0.5440,6.1130,58.80,4.0019,4,304.0,18.40,396.23,12.73} | 2 | 21.00
-{1,0.16760,0.00,7.380,0,0.4930,6.4260,52.30,4.5404,5,287.0,19.60,396.90,7.20} | 2 | 23.80
-{1,0.18159,0.00,7.380,0,0.4930,6.3760,54.30,4.5404,5,287.0,19.60,396.90,6.87} | 2 | 23.10
-{1,0.35114,0.00,7.380,0,0.4930,6.0410,49.90,4.7211,5,287.0,19.60,396.90,7.70} | 2 | 20.40
-{1,0.28392,0.00,7.380,0,0.4930,5.7080,74.30,4.7211,5,287.0,19.60,391.13,11.74} | 2 | 18.50
-{1,0.34109,0.00,7.380,0,0.4930,6.4150,40.10,4.7211,5,287.0,19.60,396.90,6.12} | 2 | 25.00
-{1,0.19186,0.00,7.380,0,0.4930,6.4310,14.70,5.4159,5,287.0,19.60,393.68,5.08} | 2 | 24.60
-{1,0.30347,0.00,7.380,0,0.4930,6.3120,28.90,5.4159,5,287.0,19.60,396.90,6.15} | 2 | 23.00
-{1,0.24103,0.00,7.380,0,0.4930,6.0830,43.70,5.4159,5,287.0,19.60,396.90,12.79} | 2 | 22.20
-{1,0.06617,0.00,3.240,0,0.4600,5.8680,25.80,5.2146,4,430.0,16.90,382.44,9.97} | 2 | 19.30
-{1,0.06724,0.00,3.240,0,0.4600,6.3330,17.20,5.2146,4,430.0,16.90,375.21,7.34} | 2 | 22.60
-{1,0.04544,0.00,3.240,0,0.4600,6.1440,32.20,5.8736,4,430.0,16.90,368.57,9.09} | 2 | 19.80
-{1,0.05023,35.00,6.060,0,0.4379,5.7060,28.40,6.6407,1,304.0,16.90,394.02,12.43} | 2 | 17.10
-{1,0.03466,35.00,6.060,0,0.4379,6.0310,23.30,6.6407,1,304.0,16.90,362.25,7.83} | 2 | 19.40
-{1,0.05083,0.00,5.190,0,0.5150,6.3160,38.10,6.4584,5,224.0,20.20,389.71,5.68} | 2 | 22.20
-{1,0.03738,0.00,5.190,0,0.5150,6.3100,38.50,6.4584,5,224.0,20.20,389.40,6.75} | 2 | 20.70
-{1,0.03961,0.00,5.190,0,0.5150,6.0370,34.50,5.9853,5,224.0,20.20,396.90,8.01} | 2 | 21.10
-{1,0.03427,0.00,5.190,0,0.5150,5.8690,46.30,5.2311,5,224.0,20.20,396.90,9.80} | 2 | 19.50
-{1,0.03041,0.00,5.190,0,0.5150,5.8950,59.60,5.6150,5,224.0,20.20,394.81,10.56} | 2 | 18.50
-{1,0.03306,0.00,5.190,0,0.5150,6.0590,37.30,4.8122,5,224.0,20.20,396.14,8.51} | 2 | 20.60
-{1,0.05497,0.00,5.190,0,0.5150,5.9850,45.40,4.8122,5,224.0,20.20,396.90,9.74} | 2 | 19.00
-{1,0.06151,0.00,5.190,0,0.5150,5.9680,58.50,4.8122,5,224.0,20.20,396.90,9.29} | 2 | 18.70
-{1,0.01301,35.00,1.520,0,0.4420,7.2410,49.30,7.0379,1,284.0,15.50,394.74,5.49} | 2 | 32.70
-{1,0.02498,0.00,1.890,0,0.5180,6.5400,59.70,6.2669,1,422.0,15.90,389.96,8.65} | 2 | 16.50
-{1,0.02543,55.00,3.780,0,0.4840,6.6960,56.40,5.7321,5,370.0,17.60,396.90,7.18} | 2 | 23.90
-{1,0.03049,55.00,3.780,0,0.4840,6.8740,28.10,6.4654,5,370.0,17.60,387.97,4.61} | 2 | 31.20
-{1,0.03113,0.00,4.390,0,0.4420,6.0140,48.50,8.0136,3,352.0,18.80,385.64,10.53} | 2 | 17.50
-{1,0.06162,0.00,4.390,0,0.4420,5.8980,52.30,8.0136,3,352.0,18.80,364.61,12.67} | 2 | 17.20
-{1,0.01870,85.00,4.150,0,0.4290,6.5160,27.70,8.5353,4,351.0,17.90,392.43,6.36} | 2 | 23.10
-{1,0.01501,80.00,2.010,0,0.4350,6.6350,29.70,8.3440,4,280.0,17.00,390.94,5.99} | 2 | 24.50
-{1,0.02899,40.00,1.250,0,0.4290,6.9390,34.50,8.7921,1,335.0,19.70,389.85,5.89} | 2 | 26.60
-{1,0.06211,40.00,1.250,0,0.4290,6.4900,44.40,8.7921,1,335.0,19.70,396.90,5.98} | 2 | 22.90
-{1,0.07950,60.00,1.690,0,0.4110,6.5790,35.90,10.7103,4,411.0,18.30,370.78,5.49} | 2 | 24.10
-{1,0.07244,60.00,1.690,0,0.4110,5.8840,18.50,10.7103,4,411.0,18.30,392.33,7.79} | 2 | 18.60
-{1,0.01709,90.00,2.020,0,0.4100,6.7280,36.10,12.1265,5,187.0,17.00,384.46,4.50} | 2 | 30.10
-{1,0.04301,80.00,1.910,0,0.4130,5.6630,21.90,10.5857,4,334.0,22.00,382.80,8.05} | 2 | 18.20
-{1,0.10659,80.00,1.910,0,0.4130,5.9360,19.50,10.5857,4,334.0,22.00,376.04,5.57} | 2 | 20.60
-{1,8.98296,0.00,18.100,1,0.7700,6.2120,97.40,2.1222,24,666.0,20.20,377.73,17.60} | 2 | 17.80
-{1,3.84970,0.00,18.100,1,0.7700,6.3950,91.00,2.5052,24,666.0,20.20,391.34,13.27} | 2 | 21.70
-{1,5.20177,0.00,18.100,1,0.7700,6.1270,83.40,2.7227,24,666.0,20.20,395.43,11.48} | 2 | 22.70
-{1,4.26131,0.00,18.100,0,0.7700,6.1120,81.30,2.5091,24,666.0,20.20,390.74,12.67} | 2 | 22.60
-{1,4.54192,0.00,18.100,0,0.7700,6.3980,88.00,2.5182,24,666.0,20.20,374.56,7.79} | 2 | 25.00
-{1,3.83684,0.00,18.100,0,0.7700,6.2510,91.10,2.2955,24,666.0,20.20,350.65,14.19} | 2 | 19.90
-{1,3.67822,0.00,18.100,0,0.7700,5.3620,96.20,2.1036,24,666.0,20.20,380.79,10.19} | 2 | 20.80
-{1,4.22239,0.00,18.100,1,0.7700,5.8030,89.00,1.9047,24,666.0,20.20,353.04,14.64} | 2 | 16.80
-{1,3.47428,0.00,18.100,1,0.7180,8.7800,82.90,1.9047,24,666.0,20.20,354.55,5.29} | 2 | 21.90
-{1,4.55587,0.00,18.100,0,0.7180,3.5610,87.90,1.6132,24,666.0,20.20,354.70,7.12} | 2 | 27.50
-{1,3.69695,0.00,18.100,0,0.7180,4.9630,91.40,1.7523,24,666.0,20.20,316.03,14.00} | 2 | 21.90
-{1,13.52220,0.00,18.100,0,0.6310,3.8630,100.00,1.5106,24,666.0,20.20,131.42,13.33} | 2 | 23.10
-{1,4.89822,0.00,18.100,0,0.6310,4.9700,100.00,1.3325,24,666.0,20.20,375.52,3.26} | 2 | 50.00
-{1,5.66998,0.00,18.100,1,0.6310,6.6830,96.80,1.3567,24,666.0,20.20,375.33,3.73} | 2 | 50.00
-{1,6.53876,0.00,18.100,1,0.6310,7.0160,97.50,1.2024,24,666.0,20.20,392.05,2.96} | 2 | 50.00
-{1,9.23230,0.00,18.100,0,0.6310,6.2160,100.00,1.1691,24,666.0,20.20,366.15,9.53} | 2 | 50.00
-{1,8.26725,0.00,18.100,1,0.6680,5.8750,89.60,1.1296,24,666.0,20.20,347.88,8.88} | 2 | 50.00
-{1,11.10810,0.00,18.100,0,0.6680,4.9060,100.00,1.1742,24,666.0,20.20,396.90,34.77} | 2 | 13.80
-{1,18.49820,0.00,18.100,0,0.6680,4.1380,100.00,1.1370,24,666.0,20.20,396.90,37.97} | 2 | 13.80
-{1,19.60910,0.00,18.100,0,0.6710,7.3130,97.90,1.3163,24,666.0,20.20,396.90,13.44} | 2 | 15.00
-{1,15.28800,0.00,18.100,0,0.6710,6.6490,93.30,1.3449,24,666.0,20.20,363.02,23.24} | 2 | 13.90
-{1,9.82349,0.00,18.100,0,0.6710,6.7940,98.80,1.3580,24,666.0,20.20,396.90,21.24} | 2 | 13.30
-{1,23.64820,0.00,18.100,0,0.6710,6.3800,96.20,1.3861,24,666.0,20.20,396.90,23.69} | 2 | 13.10
-{1,17.86670,0.00,18.100,0,0.6710,6.2230,100.00,1.3861,24,666.0,20.20,393.74,21.78} | 2 | 10.20
-{1,88.97620,0.00,18.100,0,0.6710,6.9680,91.90,1.4165,24,666.0,20.20,396.90,17.21} | 2 | 10.40
-{1,15.87440,0.00,18.100,0,0.6710,6.5450,99.10,1.5192,24,666.0,20.20,396.90,21.08} | 2 | 10.90
-{1,9.18702,0.00,18.100,0,0.7000,5.5360,100.00,1.5804,24,666.0,20.20,396.90,23.60} | 2 | 11.30
-{1,7.99248,0.00,18.100,0,0.7000,5.5200,100.00,1.5331,24,666.0,20.20,396.90,24.56} | 2 | 12.30
-{1,20.08490,0.00,18.100,0,0.7000,4.3680,91.20,1.4395,24,666.0,20.20,285.83,30.63} | 2 | 8.80
-{1,16.81180,0.00,18.100,0,0.7000,5.2770,98.10,1.4261,24,666.0,20.20,396.90,30.81} | 2 | 7.20
-{1,24.39380,0.00,18.100,0,0.7000,4.6520,100.00,1.4672,24,666.0,20.20,396.90,28.28} | 2 | 10.50
-{1,22.59710,0.00,18.100,0,0.7000,5.0000,89.50,1.5184,24,666.0,20.20,396.90,31.99} | 2 | 7.40
-{1,14.33370,0.00,18.100,0,0.7000,4.8800,100.00,1.5895,24,666.0,20.20,372.92,30.62} | 2 | 10.20
-{1,8.15174,0.00,18.100,0,0.7000,5.3900,98.90,1.7281,24,666.0,20.20,396.90,20.85} | 2 | 11.50
-{1,6.96215,0.00,18.100,0,0.7000,5.7130,97.00,1.9265,24,666.0,20.20,394.43,17.11} | 2 | 15.10
-{1,5.29305,0.00,18.100,0,0.7000,6.0510,82.50,2.1678,24,666.0,20.20,378.38,18.76} | 2 | 23.20
-{1,11.57790,0.00,18.100,0,0.7000,5.0360,97.00,1.7700,24,666.0,20.20,396.90,25.68} | 2 | 9.70
-{1,8.64476,0.00,18.100,0,0.6930,6.1930,92.60,1.7912,24,666.0,20.20,396.90,15.17} | 2 | 13.80
-{1,13.35980,0.00,18.100,0,0.6930,5.8870,94.70,1.7821,24,666.0,20.20,396.90,16.35} | 2 | 12.70
-{1,8.71675,0.00,18.100,0,0.6930,6.4710,98.80,1.7257,24,666.0,20.20,391.98,17.12} | 2 | 13.10
-{1,5.87205,0.00,18.100,0,0.6930,6.4050,96.00,1.6768,24,666.0,20.20,396.90,19.37} | 2 | 12.50
-{1,7.67202,0.00,18.100,0,0.6930,5.7470,98.90,1.6334,24,666.0,20.20,393.10,19.92} | 2 | 8.50
-{1,38.35180,0.00,18.100,0,0.6930,5.4530,100.00,1.4896,24,666.0,20.20,396.90,30.59} | 2 | 5.00
-{1,9.91655,0.00,18.100,0,0.6930,5.8520,77.80,1.5004,24,666.0,20.20,338.16,29.97} | 2 | 6.30
-{1,25.04610,0.00,18.100,0,0.6930,5.9870,100.00,1.5888,24,666.0,20.20,396.90,26.77} | 2 | 5.60
-{1,14.23620,0.00,18.100,0,0.6930,6.3430,100.00,1.5741,24,666.0,20.20,396.90,20.32} | 2 | 7.20
-{1,9.59571,0.00,18.100,0,0.6930,6.4040,100.00,1.6390,24,666.0,20.20,376.11,20.31} | 2 | 12.10
-{1,24.80170,0.00,18.100,0,0.6930,5.3490,96.00,1.7028,24,666.0,20.20,396.90,19.77} | 2 | 8.30
-{1,41.52920,0.00,18.100,0,0.6930,5.5310,85.40,1.6074,24,666.0,20.20,329.46,27.38} | 2 | 8.50
-{1,67.92080,0.00,18.100,0,0.6930,5.6830,100.00,1.4254,24,666.0,20.20,384.97,22.98} | 2 | 5.00
-{1,20.71620,0.00,18.100,0,0.6590,4.1380,100.00,1.1781,24,666.0,20.20,370.22,23.34} | 2 | 11.90
-{1,11.95110,0.00,18.100,0,0.6590,5.6080,100.00,1.2852,24,666.0,20.20,332.09,12.13} | 2 | 27.90
-{1,7.40389,0.00,18.100,0,0.5970,5.6170,97.90,1.4547,24,666.0,20.20,314.64,26.40} | 2 | 17.20
-{1,14.43830,0.00,18.100,0,0.5970,6.8520,100.00,1.4655,24,666.0,20.20,179.36,19.78} | 2 | 27.50
-{1,51.13580,0.00,18.100,0,0.5970,5.7570,100.00,1.4130,24,666.0,20.20,2.60,10.11} | 2 | 15.00
-{1,14.05070,0.00,18.100,0,0.5970,6.6570,100.00,1.5275,24,666.0,20.20,35.05,21.22} | 2 | 17.20
-{1,18.81100,0.00,18.100,0,0.5970,4.6280,100.00,1.5539,24,666.0,20.20,28.79,34.37} | 2 | 17.90
-{1,28.65580,0.00,18.100,0,0.5970,5.1550,100.00,1.5894,24,666.0,20.20,210.97,20.08} | 2 | 16.30
-{1,45.74610,0.00,18.100,0,0.6930,4.5190,100.00,1.6582,24,666.0,20.20,88.27,36.98} | 2 | 7.00
-{1,18.08460,0.00,18.100,0,0.6790,6.4340,100.00,1.8347,24,666.0,20.20,27.25,29.05} | 2 | 7.20
-{1,10.83420,0.00,18.100,0,0.6790,6.7820,90.80,1.8195,24,666.0,20.20,21.57,25.79} | 2 | 7.50
-{1,25.94060,0.00,18.100,0,0.6790,5.3040,89.10,1.6475,24,666.0,20.20,127.36,26.64} | 2 | 10.40
-{1,73.53410,0.00,18.100,0,0.6790,5.9570,100.00,1.8026,24,666.0,20.20,16.45,20.62} | 2 | 8.80
-{1,11.81230,0.00,18.100,0,0.7180,6.8240,76.50,1.7940,24,666.0,20.20,48.45,22.74} | 2 | 8.40
-{1,11.08740,0.00,18.100,0,0.7180,6.4110,100.00,1.8589,24,666.0,20.20,318.75,15.02} | 2 | 16.70
-{1,7.02259,0.00,18.100,0,0.7180,6.0060,95.30,1.8746,24,666.0,20.20,319.98,15.70} | 2 | 14.20
-{1,12.04820,0.00,18.100,0,0.6140,5.6480,87.60,1.9512,24,666.0,20.20,291.55,14.10} | 2 | 20.80
-{1,7.05042,0.00,18.100,0,0.6140,6.1030,85.10,2.0218,24,666.0,20.20,2.52,23.29} | 2 | 13.40
-{1,8.79212,0.00,18.100,0,0.5840,5.5650,70.60,2.0635,24,666.0,20.20,3.65,17.16} | 2 | 11.70
-{1,15.86030,0.00,18.100,0,0.6790,5.8960,95.40,1.9096,24,666.0,20.20,7.68,24.39} | 2 | 8.30
-{1,12.24720,0.00,18.100,0,0.5840,5.8370,59.70,1.9976,24,666.0,20.20,24.65,15.69} | 2 | 10.20
-{1,37.66190,0.00,18.100,0,0.6790,6.2020,78.70,1.8629,24,666.0,20.20,18.82,14.52} | 2 | 10.90
-{1,7.36711,0.00,18.100,0,0.6790,6.1930,78.10,1.9356,24,666.0,20.20,96.73,21.52} | 2 | 11.00
-{1,9.33889,0.00,18.100,0,0.6790,6.3800,95.60,1.9682,24,666.0,20.20,60.72,24.08} | 2 | 9.50
-{1,8.49213,0.00,18.100,0,0.5840,6.3480,86.10,2.0527,24,666.0,20.20,83.45,17.64} | 2 | 14.50
-{1,10.06230,0.00,18.100,0,0.5840,6.8330,94.30,2.0882,24,666.0,20.20,81.33,19.69} | 2 | 14.10
-{1,6.44405,0.00,18.100,0,0.5840,6.4250,74.80,2.2004,24,666.0,20.20,97.95,12.03} | 2 | 16.10
-{1,5.58107,0.00,18.100,0,0.7130,6.4360,87.90,2.3158,24,666.0,20.20,100.19,16.22} | 2 | 14.30
-{1,13.91340,0.00,18.100,0,0.7130,6.2080,95.00,2.2222,24,666.0,20.20,100.63,15.17} | 2 | 11.70
-{1,11.16040,0.00,18.100,0,0.7400,6.6290,94.60,2.1247,24,666.0,20.20,109.85,23.27} | 2 | 13.40
-{1,14.42080,0.00,18.100,0,0.7400,6.4610,93.30,2.0026,24,666.0,20.20,27.49,18.05} | 2 | 9.60
-{1,15.17720,0.00,18.100,0,0.7400,6.1520,100.00,1.9142,24,666.0,20.20,9.32,26.45} | 2 | 8.70
-{1,13.67810,0.00,18.100,0,0.7400,5.9350,87.90,1.8206,24,666.0,20.20,68.95,34.02} | 2 | 8.40
-{1,9.39063,0.00,18.100,0,0.7400,5.6270,93.90,1.8172,24,666.0,20.20,396.90,22.88} | 2 | 12.80
-{1,22.05110,0.00,18.100,0,0.7400,5.8180,92.40,1.8662,24,666.0,20.20,391.45,22.11} | 2 | 10.50
-{1,9.72418,0.00,18.100,0,0.7400,6.4060,97.20,2.0651,24,666.0,20.20,385.96,19.52} | 2 | 17.10
-{1,5.66637,0.00,18.100,0,0.7400,6.2190,100.00,2.0048,24,666.0,20.20,395.69,16.59} | 2 | 18.40
-{1,9.96654,0.00,18.100,0,0.7400,6.4850,100.00,1.9784,24,666.0,20.20,386.73,18.85} | 2 | 15.40
-{1,12.80230,0.00,18.100,0,0.7400,5.8540,96.60,1.8956,24,666.0,20.20,240.52,23.79} | 2 | 10.80
-{1,10.67180,0.00,18.100,0,0.7400,6.4590,94.80,1.9879,24,666.0,20.20,43.06,23.98} | 2 | 11.80
-{1,6.28807,0.00,18.100,0,0.7400,6.3410,96.40,2.0720,24,666.0,20.20,318.01,17.79} | 2 | 14.90
-{1,9.92485,0.00,18.100,0,0.7400,6.2510,96.60,2.1980,24,666.0,20.20,388.52,16.44} | 2 | 12.60
-{1,9.32909,0.00,18.100,0,0.7130,6.1850,98.70,2.2616,24,666.0,20.20,396.90,18.13} | 2 | 14.10
-{1,7.52601,0.00,18.100,0,0.7130,6.4170,98.30,2.1850,24,666.0,20.20,304.21,19.31} | 2 | 13.00
-{1,6.71772,0.00,18.100,0,0.7130,6.7490,92.60,2.3236,24,666.0,20.20,0.32,17.44} | 2 | 13.40
-{1,5.44114,0.00,18.100,0,0.7130,6.6550,98.20,2.3552,24,666.0,20.20,355.29,17.73} | 2 | 15.20
-{1,5.09017,0.00,18.100,0,0.7130,6.2970,91.80,2.3682,24,666.0,20.20,385.09,17.27} | 2 | 16.10
-{1,8.24809,0.00,18.100,0,0.7130,7.3930,99.30,2.4527,24,666.0,20.20,375.87,16.74} | 2 | 17.80
-{1,9.51363,0.00,18.100,0,0.7130,6.7280,94.10,2.4961,24,666.0,20.20,6.68,18.71} | 2 | 14.90
-{1,4.75237,0.00,18.100,0,0.7130,6.5250,86.50,2.4358,24,666.0,20.20,50.92,18.13} | 2 | 14.10
-{1,4.66883,0.00,18.100,0,0.7130,5.9760,87.90,2.5806,24,666.0,20.20,10.48,19.01} | 2 | 12.70
-{1,8.20058,0.00,18.100,0,0.7130,5.9360,80.30,2.7792,24,666.0,20.20,3.50,16.94} | 2 | 13.50
-{1,7.75223,0.00,18.100,0,0.7130,6.3010,83.70,2.7831,24,666.0,20.20,272.21,16.23} | 2 | 14.90
-{1,6.80117,0.00,18.100,0,0.7130,6.0810,84.40,2.7175,24,666.0,20.20,396.90,14.70} | 2 | 20.00
-{1,4.81213,0.00,18.100,0,0.7130,6.7010,90.00,2.5975,24,666.0,20.20,255.23,16.42} | 2 | 16.40
-{1,3.69311,0.00,18.100,0,0.7130,6.3760,88.40,2.5671,24,666.0,20.20,391.43,14.65} | 2 | 17.70
-{1,6.65492,0.00,18.100,0,0.7130,6.3170,83.00,2.7344,24,666.0,20.20,396.90,13.99} | 2 | 19.50
-{1,5.82115,0.00,18.100,0,0.7130,6.5130,89.90,2.8016,24,666.0,20.20,393.82,10.29} | 2 | 20.20
-{1,7.83932,0.00,18.100,0,0.6550,6.2090,65.40,2.9634,24,666.0,20.20,396.90,13.22} | 2 | 21.40
-{1,3.16360,0.00,18.100,0,0.6550,5.7590,48.20,3.0665,24,666.0,20.20,334.40,14.13} | 2 | 19.90
-{1,3.77498,0.00,18.100,0,0.6550,5.9520,84.70,2.8715,24,666.0,20.20,22.01,17.15} | 2 | 19.00
-{1,4.42228,0.00,18.100,0,0.5840,6.0030,94.50,2.5403,24,666.0,20.20,331.29,21.32} | 2 | 19.10
-{1,15.57570,0.00,18.100,0,0.5800,5.9260,71.00,2.9084,24,666.0,20.20,368.74,18.13} | 2 | 19.10
-{1,13.07510,0.00,18.100,0,0.5800,5.7130,56.70,2.8237,24,666.0,20.20,396.90,14.76} | 2 | 20.10
-{1,4.34879,0.00,18.100,0,0.5800,6.1670,84.00,3.0334,24,666.0,20.20,396.90,16.29} | 2 | 19.90
-{1,4.03841,0.00,18.100,0,0.5320,6.2290,90.70,3.0993,24,666.0,20.20,395.33,12.87} | 2 | 19.60
-{1,3.56868,0.00,18.100,0,0.5800,6.4370,75.00,2.8965,24,666.0,20.20,393.37,14.36} | 2 | 23.20
-{1,4.64689,0.00,18.100,0,0.6140,6.9800,67.60,2.5329,24,666.0,20.20,374.68,11.66} | 2 | 29.80
-{1,8.05579,0.00,18.100,0,0.5840,5.4270,95.40,2.4298,24,666.0,20.20,352.58,18.14} | 2 | 13.80
-{1,6.39312,0.00,18.100,0,0.5840,6.1620,97.40,2.2060,24,666.0,20.20,302.76,24.10} | 2 | 13.30
-{1,4.87141,0.00,18.100,0,0.6140,6.4840,93.60,2.3053,24,666.0,20.20,396.21,18.68} | 2 | 16.70
-{1,15.02340,0.00,18.100,0,0.6140,5.3040,97.30,2.1007,24,666.0,20.20,349.48,24.91} | 2 | 12.00
-{1,10.23300,0.00,18.100,0,0.6140,6.1850,96.70,2.1705,24,666.0,20.20,379.70,18.03} | 2 | 14.60
-{1,14.33370,0.00,18.100,0,0.6140,6.2290,88.00,1.9512,24,666.0,20.20,383.32,13.11} | 2 | 21.40
-{1,5.82401,0.00,18.100,0,0.5320,6.2420,64.70,3.4242,24,666.0,20.20,396.90,10.74} | 2 | 23.00
-{1,5.70818,0.00,18.100,0,0.5320,6.7500,74.90,3.3317,24,666.0,20.20,393.07,7.74} | 2 | 23.70
-{1,5.73116,0.00,18.100,0,0.5320,7.0610,77.00,3.4106,24,666.0,20.20,395.28,7.01} | 2 | 25.00
-{1,2.81838,0.00,18.100,0,0.5320,5.7620,40.30,4.0983,24,666.0,20.20,392.92,10.42} | 2 | 21.80
-{1,2.37857,0.00,18.100,0,0.5830,5.8710,41.90,3.7240,24,666.0,20.20,370.73,13.34} | 2 | 20.60
-{1,3.67367,0.00,18.100,0,0.5830,6.3120,51.90,3.9917,24,666.0,20.20,388.62,10.58} | 2 | 21.20
-{1,5.69175,0.00,18.100,0,0.5830,6.1140,79.80,3.5459,24,666.0,20.20,392.68,14.98} | 2 | 19.10
-{1,4.83567,0.00,18.100,0,0.5830,5.9050,53.20,3.1523,24,666.0,20.20,388.22,11.45} | 2 | 20.60
-{1,0.15086,0.00,27.740,0,0.6090,5.4540,92.70,1.8209,4,711.0,20.10,395.09,18.06} | 2 | 15.20
-{1,0.18337,0.00,27.740,0,0.6090,5.4140,98.30,1.7554,4,711.0,20.10,344.05,23.97} | 2 | 7.00
-{1,0.20746,0.00,27.740,0,0.6090,5.0930,98.00,1.8226,4,711.0,20.10,318.43,29.68} | 2 | 8.10
-{1,0.10574,0.00,27.740,0,0.6090,5.9830,98.80,1.8681,4,711.0,20.10,390.11,18.07} | 2 | 13.60
-{1,0.11132,0.00,27.740,0,0.6090,5.9830,83.50,2.1099,4,711.0,20.10,396.90,13.35} | 2 | 20.10
-{1,0.17331,0.00,9.690,0,0.5850,5.7070,54.00,2.3817,6,391.0,19.20,396.90,12.01} | 2 | 21.80
-{1,0.27957,0.00,9.690,0,0.5850,5.9260,42.60,2.3817,6,391.0,19.20,396.90,13.59} | 2 | 24.50
-{1,0.17899,0.00,9.690,0,0.5850,5.6700,28.80,2.7986,6,391.0,19.20,393.29,17.60} | 2 | 23.10
-{1,0.28960,0.00,9.690,0,0.5850,5.3900,72.90,2.7986,6,391.0,19.20,396.90,21.14} | 2 | 19.70
-{1,0.26838,0.00,9.690,0,0.5850,5.7940,70.60,2.8927,6,391.0,19.20,396.90,14.10} | 2 | 18.30
-{1,0.23912,0.00,9.690,0,0.5850,6.0190,65.30,2.4091,6,391.0,19.20,396.90,12.92} | 2 | 21.20
-{1,0.17783,0.00,9.690,0,0.5850,5.5690,73.50,2.3999,6,391.0,19.20,395.77,15.10} | 2 | 17.50
-{1,0.22438,0.00,9.690,0,0.5850,6.0270,79.70,2.4982,6,391.0,19.20,396.90,14.33} | 2 | 16.80
-{1,0.06263,0.00,11.930,0,0.5730,6.5930,69.10,2.4786,1,273.0,21.00,391.99,9.67} | 2 | 22.40
-{1,0.04527,0.00,11.930,0,0.5730,6.1200,76.70,2.2875,1,273.0,21.00,396.90,9.08} | 2 | 20.60
-{1,0.06076,0.00,11.930,0,0.5730,6.9760,91.00,2.1675,1,273.0,21.00,396.90,5.64} | 2 | 23.90
-{1,0.10959,0.00,11.930,0,0.5730,6.7940,89.30,2.3889,1,273.0,21.00,393.45,6.48} | 2 | 22.00
-{1,0.04741,0.00,11.930,0,0.5730,6.0300,80.80,2.5050,1,273.0,21.00,396.90,7.88} | 2 | 11.90
-{1,0.06076,0.00,11.930,0,0.5730,6.9760,91.00,2.1675,1,273.0,21.00,396.90,NULL} | 2 | 23.90
-{1,0.10959,0.00,11.930,NULL,0.5730,6.7940,89.30,2.3889,1,273.0,21.00,NULL,6.48} | 2 | 22.00
-{NULL,0.04741,0.00,11.930,0,0.5730,6.0300,80.80,2.5050,1,273.0,21.00,396.90,7.88} | 2 | 11.90
-\.
-
-DROP TABLE IF EXISTS elastic_type_src;
-
-CREATE TABLE elastic_type_src ( var_int int, var_float8 float8, var_sint smallint);
-COPY elastic_type_src (var_int, var_float8, var_sint) FROM stdin DELIMITER ',' NULL '?' ;
-1, 1.1, 1
-2, 2.2, 2
-3, 3.3, 3
-4, 4.4, 4
-\.
-
-DROP TABLE IF EXISTS housing_test;
-CREATE TABLE housing_test (id serial, x float8[], grp_by_col int, y float8);
-COPY housing_test (x, grp_by_col, y) FROM STDIN NULL '?' DELIMITER '|';
-{1,0.00632,18.00,2.310,0,0.5380,6.5750,65.20,4.0900,1,296.0,15.30,396.90,4.98} | 1 | 24.00
-{1,0.02731,0.00,7.070,0,0.4690,6.4210,78.90,4.9671,2,242.0,17.80,396.90,9.14} | 1 | 21.60
-{1,0.02729,0.00,7.070,0,0.4690,7.1850,61.10,4.9671,2,242.0,17.80,392.83,4.03} | 1 | 34.70
-{1,0.03237,0.00,2.180,0,0.4580,6.9980,45.80,6.0622,3,222.0,18.70,394.63,2.94} | 1 | 33.40
-{1,0.06905,0.00,2.180,0,0.4580,7.1470,54.20,6.0622,3,222.0,18.70,396.90,5.33} | 2 | 36.20
-{1,0.02985,0.00,2.180,0,0.4580,6.4300,58.70,6.0622,3,222.0,18.70,394.12,5.21} | 2 | 28.70
-{1,0.06076,0.00,11.930,0,0.573, NULL,91.00,2.1675,1,273.0,21.00,396.90,5.64} | 2 | 23.90
-{1,0.10959,0.00,11.930,0,0.5730,6.7940,89.30,NULL,1,273.0,21.00,393.45,6.48} | 2 | 22.00
-{1,0.04741,0.00,11.930,0,0.5730,6.0300,80.80,2.5050,NULL,273.0,21.00,396.90,7.88} | 2 | 11.90
-{1,0.04741,0.00,11.930,0,0.5730,6.0300,80.80,2.5050,NULL,273.0,21.00,396.90,7.88} | 3 | 11.90
-\.
-
-create function check_elastic_net ()
-returns void as $$
-begin
-    EXECUTE 'drop table if exists house_en, house_en_summary';
-    PERFORM elastic_net_train(
-        'lin_housing_wi',
-        'house_en',
-        'y',
-        'x',
-        'gaussian',
-        1,
-        0.2,
-        True,
-        NULL,
-        'fista',
-        '{eta = 2, max_stepsize = 0.5, use_active_set = f
-   }    1',
-        NULL,
-        2000,
-        1e-2
-    );
-
-    -- PERFORM assert(relative_error(log_likelihood, -14.41122) < 1e-3,
-    --     'Elastic Net: log-likelihood mismatch (gaussian)!'
-    -- ) from house_en;
-
-    EXECUTE 'DROP TABLE IF EXISTS house_en_pred';
-    PERFORM elastic_net_predict('house_en',
-                                'housing_test',
-                                'id',
-                                'house_en_pred');
-    -- The number of rows in house_en_pred must be equal to the
-    -- number of rows in the input table (housing_test), when
-    -- the model is learnt without using a grouping column
-    PERFORM assert(relative_error(count(*), 10) = 0,
-        'Elastic Net predict: Number of rows predicted mismatch'
-    ) from house_en_pred;
-
-
-    EXECUTE 'drop table if exists house_en, house_en_summary';
-    PERFORM elastic_net_train(
-        'lin_housing_wi',
-        'house_en',
-        'y',
-        'x',
-        'gaussian',
-        1,
-        0.05,
-        True,
-        'grp_by_col',
-        'fista',
-        '{eta = 2, max_stepsize = 0.5, use_active_set = f
-   }    1',
-        NULL,
-        2000,
-        1e-2
-    );
-
-    -- PERFORM assert(((relative_error(log_likelihood, -16.43510) < 1e-3 or
-    --     relative_error(log_likelihood, -13.63313) < 1e-3)),
-    --     'Elastic Net: log-likelihood mismatch (gaussian)!'
-    -- ) from house_en;
-
-    EXECUTE 'DROP TABLE IF EXISTS house_en_pred';
-    PERFORM elastic_net_predict('house_en',
-                                'housing_test',
-                                'id',
-                                'house_en_pred');
-    -- The number of rows in house_en_pred must be equal to the
-    -- number of rows in the input table (housing_test) whose grp_by_col
-    -- value is either 1 or 2, when the model is learnt WITH a grouping column
-    PERFORM assert(relative_error(count(*), 9) = 0,
-        'Elastic Net predict: Number of rows predicted mismatch'
-    ) from house_en_pred;
-
-    -- huge lamda making all coef to be zeroes
-    EXECUTE 'drop table if exists house_en, house_en_summary';
-    PERFORM elastic_net_train(
-        'lin_housing_wi',
-        'house_en',
-        'y',
-        'x',
-        'gaussian',
-        1,
-        1e300,
-        True,
-        NULL,
-        'fista',
-        '{eta = 2, max_stepsize = 0.5, use_active_set = f
-   }    1',
-        NULL,
-        2000,
-        1e-2
-    );
-
-    EXECUTE 'DROP TABLE IF EXISTS house_en_pred';
-    PERFORM elastic_net_predict('house_en',
-                                'housing_test',
-                                'id',
-                                'house_en_pred');
-    -- The number of rows in house_en_pred must be equal to the
-    -- number of rows in the input table (housing_test), when
-    -- the model is learnt without using a grouping column
-    PERFORM assert(relative_error(count(*), 10) = 0,
-        'Elastic Net predict: Number of rows predicted mismatch'
-    ) from house_en_pred;
-
-
-    EXECUTE 'drop table if exists house_en, house_en_summary';
-    PERFORM elastic_net_train(
-        'lin_housing_wi',
-        'house_en',
-        'y',
-        'x',
-        'gaussian',
-        1,
-        0.12,
-        True,
-        'grp_by_col',
-        'igd',
-        '{stepsize = 2
-   }    1',
-        NULL,
-        2000,
-        1e-2
-    );
-
-    -- PERFORM assert(((relative_error(log_likelihood, -17.42548) < 1e-3 or
-    --     relative_error(log_likelihood, -14.76175)<0.000001)),
-    --     'Elastic Net: log-likelihood mismatch (gaussian)!'
-    -- ) from house_en;
-
-    EXECUTE 'DROP TABLE IF EXISTS house_en_pred';
-    PERFORM elastic_net_predict('house_en',
-                                'housing_test',
-                                'id',
-                                'house_en_pred');
-    -- The number of rows in house_en_pred must be equal to the
-    -- number of rows in the input table (housing_test) whose grp_by_col
-    -- value is either 1 or 2, when the model is learnt WITH a grouping column
-    PERFORM assert(relative_error(count(*), 9) = 0,
-        'Elastic Net predict: Number of rows predicted mismatch'
-    ) from house_en_pred;
-
-    EXECUTE 'drop table if exists house_en, house_en_summary';
-    PERFORM elastic_net_train(
-        'lin_housing_wi',
-        'house_en',
-        'y < 20',
-        'x',
-        'binomial',
-        1,
-        0.1,
-        True,
-        NULL,
-        'fista',
-        'eta = 2, max_stepsize = 0.5, use_active_set = f, random_stepsize = t',
-        NULL,
-        20000,
-        1e-2
-    );
-
-    -- PERFORM assert(relative_error(log_likelihood, -0.542468) < 1e-3,
-    --     'Elastic Net: log-likelihood mismatch (use_active_set = f)!'
-    -- ) from house_en;
-
-    EXECUTE 'DROP TABLE IF EXISTS house_en_pred';
-    PERFORM elastic_net_predict('house_en',
-                                'housing_test',
-                                'id',
-                                'house_en_pred');
-    -- The number of rows in house_en_pred must be equal to the
-    -- number of rows in the input table (housing_test), when
-    -- the model is learnt without using a grouping column
-    PERFORM assert(relative_error(count(*), 10) = 0,
-        'Elastic Net predict: Number of rows predicted mismatch'
-    ) from house_en_pred;
-
-
-    EXECUTE 'drop table if exists house_en, house_en_summary';
-    PERFORM elastic_net_train(
-        'lin_housing_wi',
-        'house_en',
-        'y < 20',
-        'x',
-        'binomial',
-        1,
-        0.1,
-        True,
-        'grp_by_col',
-        'fista',
-        'eta = 2, max_stepsize = 0.5, use_active_set = t, activeset_tolerance = 1e-6, random_stepsize = t',
-        NULL,
-        20000,
-        1e-2
-    );
-
-    -- PERFORM assert(((relative_error(log_likelihood, -0.61782) < 1e-3 or
-    --     relative_error(log_likelihood, -0.56592) < 1e-3)),
-    --     'Elastic Net: log-likelihood mismatch (gaussian)!'
-    -- ) from house_en;
-
-    EXECUTE 'DROP TABLE IF EXISTS house_en_pred';
-    PERFORM elastic_net_predict('house_en',
-                                'housing_test',
-                                'id',
-                                'house_en_pred');
-    -- The number of rows in house_en_pred must be equal to the
-    -- number of rows in the input table (housing_test) whose grp_by_col
-    -- value is either 1 or 2, when the model is learnt WITH a grouping column
-    PERFORM assert(relative_error(count(*), 9) = 0,
-        'Elastic Net predict: Number of rows predicted mismatch'
-    ) from house_en_pred;
-
-
-    EXECUTE 'drop table if exists house_en, house_en_summary';
-    PERFORM elastic_net_train(
-        'lin_housing_wi',
-        'house_en',
-        'y < 20',
-        'x',
-        'binomial',
-        1,
-        0.1,
-        True,
-        'grp_by_col',
-        'igd',
-        'stepsize = 1',
-        NULL,
-        20000,
-        1e-2
-    );
-
-    -- PERFORM assert(((relative_error(log_likelihood, -0.84930) < 1e-3 or
-    --     relative_error(log_likelihood, -1.19086) < 1e-3)),
-    --     'Elastic Net: log-likelihood mismatch (gaussian)!'
-    -- ) from house_en;
-
-    EXECUTE 'DROP TABLE IF EXISTS house_en_pred';
-    PERFORM elastic_net_predict('house_en',
-                                'housing_test',
-                                'id',
-                                'house_en_pred');
-    -- The number of rows in house_en_pred must be equal to the
-    -- number of rows in the input table (housing_test) whose grp_by_col
-    -- value is either 1 or 2, when the model is learnt WITH a grouping column
-    PERFORM assert(relative_error(count(*), 9) = 0,
-        'Elastic Net predict: Number of rows predicted mismatch'
-    ) from house_en_pred;
-
-    EXECUTE 'DROP TABLE IF EXISTS elastic_type_res';
-    PERFORM elastic_net_train('elastic_type_src',
-        'elastic_type_res',
-        'var_int < 0',
-        '*',
-        'binomial',
-        0.6,
-        0.02,
-        TRUE,
-        NULL,
-        'igd',
-        '',
-        '',
-        10000,
-        1e-2
-    );
-
-end;
-$$ language plpgsql volatile;
-
-select check_elastic_net();
--- This test has been temporarily removed for GPDB5 alpha support
-
--- DROP TABLE if exists house_en, house_en_summary, house_en_cv;
--- SELECT elastic_net_train(
---     'lin_housing_wi',
---     'house_en',
---     'y',
---     'x',
---     'gaussian',
---     0.1,
---     0.2,
---     True,
---     NULL,
---     'fista',
---     $$ eta = 2, max_stepsize = 0.5, use_active_set = f,
---        n_folds = 3, validation_result=house_en_cv,
---        n_lambdas = 3, alpha = {0, 0.1, 1},
---        warmup = True, warmup_lambdas = {10, 1, 0.1}
---     $$,
---     NULL,
---     100,
---     1e-2
--- );
--- SELECT * FROM house_en;
--- SELECT * FROM house_en_summary;
--- SELECT * FROM house_en_cv;

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/glm/test/glm.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/glm/test/glm.ic.sql_in b/src/ports/postgres/modules/glm/test/glm.ic.sql_in
new file mode 100644
index 0000000..8d66ee2
--- /dev/null
+++ b/src/ports/postgres/modules/glm/test/glm.ic.sql_in
@@ -0,0 +1,364 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+/* -----------------------------------------------------------------------------
+ * Test Multinomial Logistic Regression.
+ * -------------------------------------------------------------------------- */
+
+/*
+ * The values given by the multinomial logistic regression were cross checked
+ * with the Matlab command mnrfit, which is documented at
+ * http://www.mathworks.com/help/toolbox/stats/mnrfit.html
+ *
+ * One important detail in the mnrfit command is that due to a difference in convention,
+ * its answers for the coefficients are the negative of our coefficient.  Our
+ * convention is chosen to match the convention of the binary
+ * logistic regression implementation in madlib.
+ *
+ * For completeness, the matlab code needed to check the answers to the 'test3' example
+ * is included below.  The code assumes that the data is contained in a csv file
+ * and that the columns haven't changed order.  The coefficients will be in the
+ * 'B' variable.
+ *
+ * BEGIN CODE
+ *
+data = csvread(csvFilename);
+N = size(data, 1);      % Number of records
+J = size(data, 2)-1;    % Number of covariates
+
+% Integer encoded categories {0,1...K-1}
+int_y = 1+data(:,end);  % Categories
+x = data(:,1:end-1);    % Independant variables
+
+% Pivot around the last data point
+[B,dev,stats] = mnrfit(x,int_y)
+ *
+ * END CODE
+ */
+
+DROP TABLE IF EXISTS multinom_test;
+
+CREATE TABLE multinom_test (
+    feat1 INTEGER,
+    feat2 INTEGER,
+    cat INTEGER,
+    g CHAR
+);
+
+INSERT INTO multinom_test(feat1, feat2, cat, g) VALUES
+(1,35,1,'A'),
+(2,33,0,'A'),
+(3,39,1,'A'),
+(1,37,1,'A'),
+(2,31,1,'A'),
+(3,36,0,'A'),
+(2,36,1,'A'),
+(2,31,1,'A'),
+(2,41,1,'A'),
+(2,37,1,'A'),
+(1,44,1,'A'),
+(3,33,2,'A'),
+(1,31,1,'A'),
+(2,44,1,'A'),
+(1,35,1,'A'),
+(1,44,0,'A'),
+(1,46,0,'A'),
+(2,46,1,'A'),
+(2,46,2,'A'),
+(3,49,1,'A'),
+(2,39,0,'A'),
+(2,44,1,'A'),
+(1,47,1,'A'),
+(1,44,1,'A'),
+(1,37,2,'A'),
+(3,38,2,'A'),
+(1,49,0,'A'),
+(2,44,0,'A'),
+(1,41,2,'A'),
+(1,50,2,'A'),
+(2,44,0,'A'),
+(1,39,1,'A'),
+(1,40,2,'A'),
+(1,46,2,'A'),
+(2,41,1,'A'),
+(2,39,1,'A'),
+(2,33,1,'A'),
+(3,59,2,'A'),
+(1,41,0,'A'),
+(2,47,2,'A'),
+(2,31,0,'A'),
+(3,42,2,'A'),
+(1,55,2,'A'),
+(3,40,1,'A'),
+(1,44,2,'A'),
+(1,54,1,'A'),
+(2,46,1,'A'),
+(1,54,0,'A'),
+(2,42,1,'A'),
+(2,49,2,'A'),
+(2,41,2,'A'),
+(2,41,1,'A'),
+(1,44,0,'A'),
+(1,57,2,'A'),
+(2,52,2,'A'),
+(1,49,0,'A'),
+(3,41,2,'A'),
+(3,57,0,'A'),
+(1,62,1,'A'),
+(3,33,0,'A'),
+(2,54,1,'A'),
+(2,40,2,'A'),
+(3,52,2,'A'),
+(2,57,1,'A'),
+(2,49,1,'A'),
+(2,46,1,'A'),
+(1,57,0,'A'),
+(2,49,2,'A'),
+(2,52,2,'A'),
+(2,53,0,'A'),
+(3,54,2,'A'),
+(2,57,2,'A'),
+(3,41,2,'A'),
+(1,52,0,'A'),
+(2,57,1,'A'),
+(1,54,0,'A'),
+(2,52,1,'A'),
+(2,52,0,'A'),
+(2,44,0,'A'),
+(2,46,2,'A'),
+(1,49,1,'A'),
+(2,54,2,'A'),
+(3,52,2,'A');
+
+SELECT multinom(
+    'multinom_test',
+    'mglm_test',
+    'cat',
+    'ARRAY[feat1, feat2, 1]',
+    '2',
+    'logit',
+    NULL,
+    NULL,
+    TRUE);
+
+SELECT ordinal(
+    'multinom_test',
+    'ordinal_out',
+    'cat',
+    'ARRAY[feat1, feat2]',
+    '0<1<2',
+    'logit'
+    );
+
+
+DROP TABLE IF EXISTS abalone CASCADE;
+
+CREATE TABLE abalone (
+    id integer,
+    sex text,
+    length double precision,
+    diameter double precision,
+    height double precision,
+    whole double precision,
+    shucked double precision,
+    viscera double precision,
+    shell double precision,
+    rings integer
+);
+
+INSERT INTO abalone VALUES
+(3151, 'F', 0.655000000000000027, 0.505000000000000004, 0.165000000000000008, 1.36699999999999999, 0.583500000000000019, 0.351499999999999979, 0.396000000000000019, 10),
+(2026, 'F', 0.550000000000000044, 0.469999999999999973, 0.149999999999999994, 0.920499999999999985, 0.381000000000000005, 0.243499999999999994, 0.267500000000000016, 10),
+(3751, 'I', 0.434999999999999998, 0.375, 0.110000000000000001, 0.41549999999999998, 0.170000000000000012, 0.0759999999999999981, 0.14499999999999999, 8),
+(720, 'I', 0.149999999999999994, 0.100000000000000006, 0.0250000000000000014, 0.0149999999999999994, 0.00449999999999999966, 0.00400000000000000008, 0.0050000000000000001, 2),
+(1635, 'F', 0.574999999999999956, 0.469999999999999973, 0.154999999999999999, 1.1160000000000001, 0.509000000000000008, 0.237999999999999989, 0.340000000000000024, 10),
+(2648, 'I', 0.5, 0.390000000000000013, 0.125, 0.582999999999999963, 0.293999999999999984, 0.132000000000000006, 0.160500000000000004, 8),
+(1796, 'F', 0.57999999999999996, 0.429999999999999993, 0.170000000000000012, 1.47999999999999998, 0.65349999999999997, 0.32400000000000001, 0.41549999999999998, 10),
+(209, 'F', 0.525000000000000022, 0.41499999999999998, 0.170000000000000012, 0.832500000000000018, 0.275500000000000023, 0.168500000000000011, 0.309999999999999998, 13),
+(1451, 'I', 0.455000000000000016, 0.33500000000000002, 0.135000000000000009, 0.501000000000000001, 0.274000000000000021, 0.0995000000000000051, 0.106499999999999997, 7),
+(1108, 'I', 0.510000000000000009, 0.380000000000000004, 0.115000000000000005, 0.515499999999999958, 0.214999999999999997, 0.113500000000000004, 0.166000000000000009, 8),
+(3675, 'F', 0.594999999999999973, 0.450000000000000011, 0.165000000000000008, 1.08099999999999996, 0.489999999999999991, 0.252500000000000002, 0.279000000000000026, 12),
+(2108, 'F', 0.675000000000000044, 0.550000000000000044, 0.179999999999999993, 1.68849999999999989, 0.562000000000000055, 0.370499999999999996, 0.599999999999999978, 15),
+(3312, 'F', 0.479999999999999982, 0.380000000000000004, 0.135000000000000009, 0.507000000000000006, 0.191500000000000004, 0.13650000000000001, 0.154999999999999999, 12),
+(882, 'M', 0.655000000000000027, 0.520000000000000018, 0.165000000000000008, 1.40949999999999998, 0.585999999999999965, 0.290999999999999981, 0.405000000000000027, 9),
+(3402, 'M', 0.479999999999999982, 0.395000000000000018, 0.149999999999999994, 0.681499999999999995, 0.214499999999999996, 0.140500000000000014, 0.2495, 18),
+(829, 'I', 0.409999999999999976, 0.325000000000000011, 0.100000000000000006, 0.394000000000000017, 0.20799999999999999, 0.0655000000000000027, 0.105999999999999997, 6),
+(1305, 'M', 0.535000000000000031, 0.434999999999999998, 0.149999999999999994, 0.716999999999999971, 0.347499999999999976, 0.14449999999999999, 0.194000000000000006, 9),
+(3613, 'M', 0.599999999999999978, 0.46000000000000002, 0.179999999999999993, 1.1399999999999999, 0.422999999999999987, 0.257500000000000007, 0.364999999999999991, 10),
+(1068, 'I', 0.340000000000000024, 0.265000000000000013, 0.0800000000000000017, 0.201500000000000012, 0.0899999999999999967, 0.0475000000000000006, 0.0550000000000000003, 5),
+(2446, 'M', 0.5, 0.380000000000000004, 0.135000000000000009, 0.583500000000000019, 0.22950000000000001, 0.126500000000000001, 0.179999999999999993, 12),
+(1393, 'M', 0.635000000000000009, 0.474999999999999978, 0.170000000000000012, 1.19350000000000001, 0.520499999999999963, 0.269500000000000017, 0.366499999999999992, 10),
+(359, 'M', 0.744999999999999996, 0.584999999999999964, 0.214999999999999997, 2.49900000000000011, 0.92649999999999999, 0.471999999999999975, 0.699999999999999956, 17),
+(549, 'F', 0.564999999999999947, 0.450000000000000011, 0.160000000000000003, 0.79500000000000004, 0.360499999999999987, 0.155499999999999999, 0.23000000000000001, 12),
+(1154, 'F', 0.599999999999999978, 0.474999999999999978, 0.160000000000000003, 1.02649999999999997, 0.484999999999999987, 0.2495, 0.256500000000000006, 9),
+(1790, 'F', 0.54500000000000004, 0.385000000000000009, 0.149999999999999994, 1.11850000000000005, 0.542499999999999982, 0.244499999999999995, 0.284499999999999975, 9),
+(3703, 'F', 0.665000000000000036, 0.540000000000000036, 0.195000000000000007, 1.76400000000000001, 0.850500000000000034, 0.361499999999999988, 0.469999999999999973, 11),
+(1962, 'F', 0.655000000000000027, 0.515000000000000013, 0.179999999999999993, 1.41199999999999992, 0.619500000000000051, 0.248499999999999999, 0.496999999999999997, 11),
+(1665, 'I', 0.604999999999999982, 0.469999999999999973, 0.14499999999999999, 0.802499999999999991, 0.379000000000000004, 0.226500000000000007, 0.220000000000000001, 9),
+(635, 'M', 0.359999999999999987, 0.294999999999999984, 0.100000000000000006, 0.210499999999999993, 0.0660000000000000031, 0.0524999999999999981, 0.0749999999999999972, 9),
+(3901, 'M', 0.445000000000000007, 0.344999999999999973, 0.140000000000000013, 0.475999999999999979, 0.205499999999999988, 0.101500000000000007, 0.108499999999999999, 15),
+(2734, 'I', 0.41499999999999998, 0.33500000000000002, 0.100000000000000006, 0.357999999999999985, 0.169000000000000011, 0.067000000000000004, 0.104999999999999996, 7),
+(3856, 'M', 0.409999999999999976, 0.33500000000000002, 0.115000000000000005, 0.440500000000000003, 0.190000000000000002, 0.0850000000000000061, 0.135000000000000009, 8),
+(827, 'I', 0.395000000000000018, 0.28999999999999998, 0.0950000000000000011, 0.303999999999999992, 0.127000000000000002, 0.0840000000000000052, 0.076999999999999999, 6),
+(3381, 'I', 0.190000000000000002, 0.130000000000000004, 0.0449999999999999983, 0.0264999999999999993, 0.00899999999999999932, 0.0050000000000000001, 0.00899999999999999932, 5),
+(3972, 'I', 0.400000000000000022, 0.294999999999999984, 0.0950000000000000011, 0.252000000000000002, 0.110500000000000001, 0.0575000000000000025, 0.0660000000000000031, 6),
+(1155, 'M', 0.599999999999999978, 0.455000000000000016, 0.170000000000000012, 1.1915, 0.695999999999999952, 0.239499999999999991, 0.239999999999999991, 8),
+(3467, 'M', 0.640000000000000013, 0.5, 0.170000000000000012, 1.4544999999999999, 0.642000000000000015, 0.357499999999999984, 0.353999999999999981, 9),
+(2433, 'F', 0.609999999999999987, 0.484999999999999987, 0.165000000000000008, 1.08699999999999997, 0.425499999999999989, 0.232000000000000012, 0.380000000000000004, 11),
+(552, 'I', 0.614999999999999991, 0.489999999999999991, 0.154999999999999999, 0.988500000000000045, 0.41449999999999998, 0.195000000000000007, 0.344999999999999973, 13),
+(1425, 'F', 0.729999999999999982, 0.57999999999999996, 0.190000000000000002, 1.73750000000000004, 0.678499999999999992, 0.434499999999999997, 0.520000000000000018, 11),
+(2402, 'F', 0.584999999999999964, 0.41499999999999998, 0.154999999999999999, 0.69850000000000001, 0.299999999999999989, 0.145999999999999991, 0.195000000000000007, 12),
+(1748, 'F', 0.699999999999999956, 0.535000000000000031, 0.174999999999999989, 1.77299999999999991, 0.680499999999999994, 0.479999999999999982, 0.512000000000000011, 15),
+(3983, 'I', 0.57999999999999996, 0.434999999999999998, 0.149999999999999994, 0.891499999999999959, 0.362999999999999989, 0.192500000000000004, 0.251500000000000001, 6),
+(335, 'F', 0.739999999999999991, 0.599999999999999978, 0.195000000000000007, 1.97399999999999998, 0.597999999999999976, 0.408499999999999974, 0.709999999999999964, 16),
+(1587, 'I', 0.515000000000000013, 0.349999999999999978, 0.104999999999999996, 0.474499999999999977, 0.212999999999999995, 0.122999999999999998, 0.127500000000000002, 10),
+(2448, 'I', 0.275000000000000022, 0.204999999999999988, 0.0800000000000000017, 0.096000000000000002, 0.0359999999999999973, 0.0184999999999999991, 0.0299999999999999989, 6),
+(1362, 'F', 0.604999999999999982, 0.474999999999999978, 0.174999999999999989, 1.07600000000000007, 0.463000000000000023, 0.219500000000000001, 0.33500000000000002, 9),
+(2799, 'M', 0.640000000000000013, 0.484999999999999987, 0.149999999999999994, 1.09800000000000009, 0.519499999999999962, 0.222000000000000003, 0.317500000000000004, 10),
+(1413, 'F', 0.67000000000000004, 0.505000000000000004, 0.174999999999999989, 1.01449999999999996, 0.4375, 0.271000000000000019, 0.3745, 10),
+(1739, 'F', 0.67000000000000004, 0.540000000000000036, 0.195000000000000007, 1.61899999999999999, 0.739999999999999991, 0.330500000000000016, 0.465000000000000024, 11),
+(1152, 'M', 0.584999999999999964, 0.465000000000000024, 0.160000000000000003, 0.955500000000000016, 0.45950000000000002, 0.235999999999999988, 0.265000000000000013, 7),
+(2427, 'I', 0.564999999999999947, 0.434999999999999998, 0.154999999999999999, 0.782000000000000028, 0.271500000000000019, 0.16800000000000001, 0.284999999999999976, 14),
+(1777, 'M', 0.484999999999999987, 0.369999999999999996, 0.154999999999999999, 0.967999999999999972, 0.418999999999999984, 0.245499999999999996, 0.236499999999999988, 9),
+(3294, 'M', 0.574999999999999956, 0.455000000000000016, 0.184999999999999998, 1.15599999999999992, 0.552499999999999991, 0.242999999999999994, 0.294999999999999984, 13),
+(1403, 'M', 0.650000000000000022, 0.510000000000000009, 0.190000000000000002, 1.54200000000000004, 0.715500000000000025, 0.373499999999999999, 0.375, 9),
+(2256, 'M', 0.510000000000000009, 0.395000000000000018, 0.14499999999999999, 0.61850000000000005, 0.215999999999999998, 0.138500000000000012, 0.239999999999999991, 12),
+(3984, 'F', 0.584999999999999964, 0.450000000000000011, 0.125, 0.873999999999999999, 0.354499999999999982, 0.20749999999999999, 0.225000000000000006, 6),
+(1116, 'M', 0.525000000000000022, 0.405000000000000027, 0.119999999999999996, 0.755499999999999949, 0.3755, 0.155499999999999999, 0.201000000000000012, 9),
+(1366, 'M', 0.609999999999999987, 0.474999999999999978, 0.170000000000000012, 1.02649999999999997, 0.434999999999999998, 0.233500000000000013, 0.303499999999999992, 10),
+(3759, 'I', 0.525000000000000022, 0.400000000000000022, 0.140000000000000013, 0.605500000000000038, 0.260500000000000009, 0.107999999999999999, 0.209999999999999992, 9);
+
+DROP TABLE IF EXISTS abalone_out, abalone_out_summary;
+SELECT glm(
+    'abalone',
+    'abalone_out',
+    'rings',
+    'ARRAY[1, length, diameter, height, whole, shucked, viscera, shell]',
+    'family=inverse_gaussian, link=sqr_inverse', NULL, 'max_iter=2, tolerance=1e-16'
+);
+
+DROP TABLE IF EXISTS abalone_out, abalone_out_summary;
+SELECT glm(
+    'abalone',
+    'abalone_out',
+    'rings',
+    'ARRAY[1, length, diameter, height, whole, shucked, viscera, shell]',
+    'family=gaussian, link=identity', NULL, 'max_iter=2'
+);
+
+DROP TABLE IF EXISTS abalone_out, abalone_out_summary;
+SELECT glm(
+    'abalone',
+    'abalone_out',
+    'rings',
+    'ARRAY[1, length, diameter, height, whole, shucked, viscera, shell]',
+    'family=gamma, link=inverse', NULL, 'max_iter=2, tolerance=1e-16'
+);
+
+DROP TABLE IF EXISTS abalone_probit_out, abalone_probit_out_summary;
+SELECT glm(
+    'abalone',
+    'abalone_probit_out',
+    'rings < 10',
+    'ARRAY[1, length, diameter, height, whole, shucked, viscera, shell]',
+    'family=binomial, link=probit', NULL, 'max_iter=2, tolerance=1e-16'
+);
+
+DROP TABLE IF EXISTS warpbreaks CASCADE;
+
+CREATE TABLE warpbreaks(
+    id      serial,
+    breaks  integer,
+    wool    char(1),
+    tension char(1),
+    g       char(1)
+);
+
+INSERT INTO warpbreaks(breaks, wool, tension, g) VALUES
+(26, 'A', 'L', '1'),
+(30, 'A', 'L', '1'),
+(54, 'A', 'L', '1'),
+(25, 'A', 'L', '1'),
+(70, 'A', 'L', '1'),
+(52, 'A', 'L', '1'),
+(51, 'A', 'L', '1'),
+(26, 'A', 'L', '1'),
+(67, 'A', 'L', '1'),
+(18, 'A', 'M', '1'),
+(21, 'A', 'M', '1'),
+(29, 'A', 'M', '1'),
+(17, 'A', 'M', '1'),
+(12, 'A', 'M', '1'),
+(18, 'A', 'M', '1'),
+(35, 'A', 'M', '1'),
+(30, 'A', 'M', '1'),
+(36, 'A', 'M', '1'),
+(36, 'A', 'H', '0'),
+(21, 'A', 'H', '0'),
+(24, 'A', 'H', '0'),
+(18, 'A', 'H', '0'),
+(10, 'A', 'H', '0'),
+(43, 'A', 'H', '0'),
+(28, 'A', 'H', '0'),
+(15, 'A', 'H', '0'),
+(26, 'A', 'H', '0'),
+(27, 'B', 'L', '0'),
+(14, 'B', 'L', '0'),
+(29, 'B', 'L', '0'),
+(19, 'B', 'L', '0'),
+(29, 'B', 'L', '0'),
+(31, 'B', 'L', '0'),
+(41, 'B', 'L', '0'),
+(20, 'B', 'L', '1'),
+(44, 'B', 'L', '1'),
+(42, 'B', 'M', '1'),
+(26, 'B', 'M', '1'),
+(19, 'B', 'M', '1'),
+(16, 'B', 'M', '1'),
+(39, 'B', 'M', '1'),
+(28, 'B', 'M', '1'),
+(21, 'B', 'M', '1'),
+(39, 'B', 'M', '1'),
+(29, 'B', 'M', '1'),
+(20, 'B', 'H', '1'),
+(21, 'B', 'H', '1'),
+(24, 'B', 'H', '1'),
+(17, 'B', 'H', '1'),
+(13, 'B', 'H', '1'),
+(15, 'B', 'H', '1'),
+(15, 'B', 'H', '1'),
+(16, 'B', 'H', '1'),
+(28, 'B', 'H', '1');
+
+DROP TABLE IF EXISTS warpbreaks_dummy;
+SELECT create_indicator_variables('warpbreaks', 'warpbreaks_dummy', 'wool,tension');
+
+-- all assertion answers from R:
+
+--------------------------------------------------------------------------
+-- sqrt
+-- glm(breaks~wool+tension, family=poisson(link=sqrt), data=warpbreaks)
+SELECT glm('warpbreaks_dummy',
+           'glm_model_sqrt',
+           'breaks',
+           'ARRAY[1.0,"wool_B","tension_M", "tension_H"]',
+           'family=poisson, link=sqrt', NULL, 'max_iter=2');
+

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/graph/test/graph.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/graph/test/graph.ic.sql_in b/src/ports/postgres/modules/graph/test/graph.ic.sql_in
new file mode 100644
index 0000000..63a1ed6
--- /dev/null
+++ b/src/ports/postgres/modules/graph/test/graph.ic.sql_in
@@ -0,0 +1,116 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+/* ----------------------------------------------------------------------- */
+
+-- Create vertex and edge tables to represent the graph:
+DROP TABLE IF EXISTS vertex, edge;
+CREATE TABLE vertex(
+        id INTEGER,
+        name TEXT
+        );
+CREATE TABLE edge(
+        src INTEGER,
+        dest INTEGER,
+        weight FLOAT8
+        );
+INSERT INTO vertex VALUES
+(0, 'A'),
+(1, 'B'),
+(2, 'C'),
+(3, 'D'),
+(4, 'E'),
+(5, 'F'),
+(6, 'G'),
+(7, 'H');
+INSERT INTO edge VALUES
+(0, 1, 1.0),
+(0, 2, 1.0),
+(0, 4, 10.0),
+(1, 2, 2.0),
+(1, 3, 10.0),
+(2, 3, 1.0),
+(2, 5, 1.0),
+(2, 6, 3.0),
+(3, 0, 1.0),
+(4, 0, -2.0),
+(5, 6, 1.0),
+(6, 7, 1.0);
+
+-- Calculate the all-pair shortest paths:
+DROP TABLE IF EXISTS out_apsp, out_apsp_summary;
+SELECT graph_apsp('vertex',      -- Vertex table
+                  'id',          -- Vertix id column (NULL means use default naming)
+                  'edge',        -- edge table
+                  NULL,
+                  'out_apsp');   -- Output table of shortest paths
+
+-- Compute the closeness measure for all nodes:
+DROP TABLE IF EXISTS out_closeness;
+SELECT graph_closeness('out_apsp', 'out_closeness');
+
+-- Compute the diameter measure for graph
+DROP TABLE IF EXISTS out_diameter;
+SELECT graph_diameter('out_apsp', 'out_diameter');
+-- Compute the average path length measure for graph
+DROP TABLE IF EXISTS out_avg_path_length;
+SELECT graph_avg_path_length('out_apsp', 'out_avg_path_length');
+
+-- Compute the in and out degrees
+DROP TABLE IF EXISTS out_degrees;
+SELECT graph_vertex_degrees('vertex',      -- Vertex table
+                     'id',          -- Vertix id column (NULL means use default naming)
+                     'edge',        -- edge table
+                     NULL,
+                     'out_degrees');
+
+
+DROP TABLE IF EXISTS out_frombfs, out_frombfs_summary;
+SELECT graph_bfs('vertex',NULL,'edge',NULL,2,'out_frombfs');
+
+DROP TABLE IF EXISTS hits_out, hits_out_summary;
+SELECT hits(
+         'vertex',        -- Vertex table
+         NULL,            -- Vertex id column
+         'edge',          -- edge table
+         NULL,
+         'hits_out',       -- Output table of HITS
+         2);                  -- Max number of iteration
+
+DROP TABLE IF EXISTS pagerank_out, pagerank_out_summary;
+SELECT pagerank(
+         'vertex',        -- Vertex table
+         NULL,            -- Vertex id column
+         'edge',          -- edge table
+         NULL,
+         'pagerank_out',       -- Output table of HITS
+         NULL,
+         2);
+
+DROP TABLE IF EXISTS sssp_out, sssp_out_summary;
+SELECT graph_sssp('vertex',NULL,'edge',NULL,0,'sssp_out');
+
+DROP TABLE IF EXISTS wcc_out, wcc_out_summary;
+SELECT weakly_connected_components(
+    'vertex',
+    NULL,
+    'edge',
+    NULL,
+    'wcc_out');

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/kmeans/test/kmeans.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/kmeans/test/kmeans.ic.sql_in b/src/ports/postgres/modules/kmeans/test/kmeans.ic.sql_in
new file mode 100644
index 0000000..22e185e
--- /dev/null
+++ b/src/ports/postgres/modules/kmeans/test/kmeans.ic.sql_in
@@ -0,0 +1,54 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+CREATE TABLE kmeans_2d(
+	id SERIAL,
+	x DOUBLE PRECISION,
+	y DOUBLE PRECISION,
+	position DOUBLE PRECISION[]
+);
+
+INSERT INTO kmeans_2d(x, y, position)
+SELECT
+	x, y,
+	ARRAY[
+		x + random() * 15.0,
+		y + random() * 15.0
+	]::DOUBLE PRECISION[] AS position
+FROM (
+	SELECT
+		random() * 100.0 AS x,
+		random() * 100.0 AS y
+	FROM generate_series(1,10)
+) AS centroids, generate_series(1,10) i;
+
+CREATE TABLE centroids AS
+SELECT x,y,position
+FROM kmeans_2d
+ORDER BY random()
+LIMIT 10;
+
+SELECT * FROM kmeanspp('kmeans_2d', 'position', 2, 'MADLIB_SCHEMA.squared_dist_norm2', 'MADLIB_SCHEMA.avg', 2);
+
+SELECT * FROM kmeans_random('kmeans_2d', 'position', 2, 'MADLIB_SCHEMA.squared_dist_norm2', 'MADLIB_SCHEMA.avg', 2);
+
+SELECT * FROM kmeans('kmeans_2d', 'position', 'centroids', 'position');
+

http://git-wip-us.apache.org/repos/asf/madlib/blob/4ed8b35e/src/ports/postgres/modules/knn/test/knn.ic.sql_in
----------------------------------------------------------------------
diff --git a/src/ports/postgres/modules/knn/test/knn.ic.sql_in b/src/ports/postgres/modules/knn/test/knn.ic.sql_in
new file mode 100644
index 0000000..542727c
--- /dev/null
+++ b/src/ports/postgres/modules/knn/test/knn.ic.sql_in
@@ -0,0 +1,58 @@
+/* ----------------------------------------------------------------------- *//**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *//* ----------------------------------------------------------------------- */
+
+m4_include(`SQLCommon.m4')
+/* -----------------------------------------------------------------------------
+ * Test knn.
+ *
+ * -------------------------------------------------------------------------- */
+
+drop table if exists knn_train_data;
+create table knn_train_data (
+id  integer,
+data    integer[],
+label   integer);
+copy knn_train_data (id, data, label) from stdin delimiter '|';
+1|{1,1}|1
+2|{2,2}|1
+3|{3,3}|1
+4|{4,4}|1
+5|{4,5}|1
+6|{20,50}|0
+7|{10,31}|0
+8|{81,13}|0
+9|{1,111}|0
+\.
+DROP TABLE IF EXISTS knn_test_data;
+create table knn_test_data (
+id  integer,
+data integer[]);
+copy knn_test_data (id, data) from stdin delimiter '|';
+1|{2,1}
+2|{2,6}
+3|{15,40}
+4|{12,1}
+5|{2,90}
+6|{50,45}
+\.
+
+drop table if exists madlib_knn_result_classification;
+select knn('knn_train_data','data','id','label','knn_test_data','data','id','madlib_knn_result_classification',3,False,'MADLIB_SCHEMA.squared_dist_norm2',False);