Changeset: 9ca75bb19142 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/9ca75bb19142
Modified Files:
clients/Tests/MAL-signatures.stable.out
clients/Tests/MAL-signatures.stable.out.int128
clients/Tests/exports.stable.out
gdk/gdk_aggr.c
gdk/gdk_calc.h
monetdb5/modules/kernel/algebra.c
Branch: pushcands
Log Message:
aggr.{corr,covariance,covariancep} now have optional candidate lists.
diffs (truncated from 487 to 300 lines):
diff --git a/clients/Tests/MAL-signatures.stable.out
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -110,6 +110,7 @@ stdout of test 'MAL-signatures` in direc
[ "aggr", "corr", "command aggr.corr(X_0:bat[:int], X_1:bat[:int],
X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ", "AGGRcorr;", "" ]
[ "aggr", "corr", "command aggr.corr(X_0:bat[:lng], X_1:bat[:lng],
X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ", "AGGRcorr;", "" ]
[ "aggr", "corr", "command aggr.corr(X_0:bat[:sht], X_1:bat[:sht],
X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ", "AGGRcorr;", "" ]
+[ "aggr", "corr", "command aggr.corr(X_0:bat[:any_2], X_1:bat[:any_2],
X_2:bat[:oid], X_3:bat[:oid]):dbl ", "ALGcorr2;", "" ]
[ "aggr", "corr", "command aggr.corr(X_0:bat[:any_2],
X_1:bat[:any_2]):dbl ", "ALGcorr;", "" ]
[ "aggr", "count", "command aggr.count(X_0:bat[:any_1],
X_1:bat[:oid], X_2:bat[:any_2], X_3:bit):bat[:lng] ", "AGGRcount3;", ""
]
[ "aggr", "count", "command aggr.count(X_0:bat[:any_1],
X_1:bat[:oid], X_2:bat[:any_2]):bat[:lng] ", "AGGRcount3nils;", ""
]
@@ -126,6 +127,7 @@ stdout of test 'MAL-signatures` in direc
[ "aggr", "covariance", "command aggr.covariance(X_0:bat[:int],
X_1:bat[:int], X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ",
"AGGRcovariance;", "" ]
[ "aggr", "covariance", "command aggr.covariance(X_0:bat[:lng],
X_1:bat[:lng], X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ",
"AGGRcovariance;", "" ]
[ "aggr", "covariance", "command aggr.covariance(X_0:bat[:sht],
X_1:bat[:sht], X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ",
"AGGRcovariance;", "" ]
+[ "aggr", "covariance", "command aggr.covariance(X_0:bat[:any_2],
X_1:bat[:any_2], X_2:bat[:oid], X_3:bat[:oid]):dbl ", "ALGcovariance2;",
"" ]
[ "aggr", "covariance", "command aggr.covariance(X_0:bat[:any_2],
X_1:bat[:any_2]):dbl ", "ALGcovariance;", "" ]
[ "aggr", "covariancep", "command aggr.covariancep(X_0:bat[:bte],
X_1:bat[:bte], X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ",
"AGGRcovariancep;", "" ]
[ "aggr", "covariancep", "command aggr.covariancep(X_0:bat[:dbl],
X_1:bat[:dbl], X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ",
"AGGRcovariancep;", "" ]
@@ -133,6 +135,7 @@ stdout of test 'MAL-signatures` in direc
[ "aggr", "covariancep", "command aggr.covariancep(X_0:bat[:int],
X_1:bat[:int], X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ",
"AGGRcovariancep;", "" ]
[ "aggr", "covariancep", "command aggr.covariancep(X_0:bat[:lng],
X_1:bat[:lng], X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ",
"AGGRcovariancep;", "" ]
[ "aggr", "covariancep", "command aggr.covariancep(X_0:bat[:sht],
X_1:bat[:sht], X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ",
"AGGRcovariancep;", "" ]
+[ "aggr", "covariancep", "command aggr.covariancep(X_0:bat[:any_2],
X_1:bat[:any_2], X_2:bat[:oid], X_3:bat[:oid]):dbl ",
"ALGcovariancep2;", "" ]
[ "aggr", "covariancep", "command aggr.covariancep(X_0:bat[:any_2],
X_1:bat[:any_2]):dbl ", "ALGcovariancep;", "" ]
[ "aggr", "exist", "command aggr.exist(X_0:bat[:any_2],
X_1:any_1):bit ", "ALGexist;", "" ]
[ "aggr", "exist", "pattern aggr.exist(X_0:any_1):bit ",
"SQLexist;", "" ]
@@ -329,12 +332,12 @@ stdout of test 'MAL-signatures` in direc
[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:int],
X_1:bat[:int], X_2:bat[:oid], X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:dbl] ",
"AGGRsubcorr;", "" ]
[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:lng],
X_1:bat[:lng], X_2:bat[:oid], X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:dbl] ",
"AGGRsubcorr;", "" ]
[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:sht],
X_1:bat[:sht], X_2:bat[:oid], X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:dbl] ",
"AGGRsubcorr;", "" ]
-[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:bte],
X_1:bat[:bte], X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bit,
X_6:bit):bat[:dbl] ", "AGGRsubcorrcand;", "" ]
-[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:dbl],
X_1:bat[:dbl], X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bit,
X_6:bit):bat[:dbl] ", "AGGRsubcorrcand;", "" ]
-[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:flt],
X_1:bat[:flt], X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bit,
X_6:bit):bat[:dbl] ", "AGGRsubcorrcand;", "" ]
-[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:int],
X_1:bat[:int], X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bit,
X_6:bit):bat[:dbl] ", "AGGRsubcorrcand;", "" ]
-[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:lng],
X_1:bat[:lng], X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bit,
X_6:bit):bat[:dbl] ", "AGGRsubcorrcand;", "" ]
-[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:sht],
X_1:bat[:sht], X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bit,
X_6:bit):bat[:dbl] ", "AGGRsubcorrcand;", "" ]
+[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:bte],
X_1:bat[:bte], X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid],
X_6:bit, X_7:bit):bat[:dbl] ", "AGGRsubcorrcand;", "" ]
+[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:dbl],
X_1:bat[:dbl], X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid],
X_6:bit, X_7:bit):bat[:dbl] ", "AGGRsubcorrcand;", "" ]
+[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:flt],
X_1:bat[:flt], X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid],
X_6:bit, X_7:bit):bat[:dbl] ", "AGGRsubcorrcand;", "" ]
+[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:int],
X_1:bat[:int], X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid],
X_6:bit, X_7:bit):bat[:dbl] ", "AGGRsubcorrcand;", "" ]
+[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:lng],
X_1:bat[:lng], X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid],
X_6:bit, X_7:bit):bat[:dbl] ", "AGGRsubcorrcand;", "" ]
+[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:sht],
X_1:bat[:sht], X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid],
X_6:bit, X_7:bit):bat[:dbl] ", "AGGRsubcorrcand;", "" ]
[ "aggr", "subcount", "command aggr.subcount(X_0:bat[:any_1],
X_1:bat[:oid], X_2:bat[:any_2], X_3:bit):bat[:lng] ", "AGGRsubcount;",
"" ]
[ "aggr", "subcount", "command aggr.subcount(X_0:bat[:any_1],
X_1:bat[:oid], X_2:bat[:any_2], X_3:bat[:oid], X_4:bit):bat[:lng] ",
"AGGRsubcountcand;", "" ]
[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:bte], X_1:bat[:bte], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:dbl] ", "AGGRsubcovariance;",
"" ]
@@ -343,24 +346,24 @@ stdout of test 'MAL-signatures` in direc
[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:int], X_1:bat[:int], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:dbl] ", "AGGRsubcovariance;",
"" ]
[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:lng], X_1:bat[:lng], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:dbl] ", "AGGRsubcovariance;",
"" ]
[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:sht], X_1:bat[:sht], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:dbl] ", "AGGRsubcovariance;",
"" ]
-[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:bte], X_1:bat[:bte], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ",
"AGGRsubcovariancecand;", "" ]
-[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:dbl], X_1:bat[:dbl], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ",
"AGGRsubcovariancecand;", "" ]
-[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:flt], X_1:bat[:flt], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ",
"AGGRsubcovariancecand;", "" ]
-[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:int], X_1:bat[:int], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ",
"AGGRsubcovariancecand;", "" ]
-[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:lng], X_1:bat[:lng], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ",
"AGGRsubcovariancecand;", "" ]
-[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:sht], X_1:bat[:sht], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ",
"AGGRsubcovariancecand;", "" ]
+[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:bte], X_1:bat[:bte], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:bit):bat[:dbl] ",
"AGGRsubcovariancecand;", "" ]
+[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:dbl], X_1:bat[:dbl], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:bit):bat[:dbl] ",
"AGGRsubcovariancecand;", "" ]
+[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:flt], X_1:bat[:flt], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:bit):bat[:dbl] ",
"AGGRsubcovariancecand;", "" ]
+[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:int], X_1:bat[:int], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:bit):bat[:dbl] ",
"AGGRsubcovariancecand;", "" ]
+[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:lng], X_1:bat[:lng], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:bit):bat[:dbl] ",
"AGGRsubcovariancecand;", "" ]
+[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:sht], X_1:bat[:sht], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:bit):bat[:dbl] ",
"AGGRsubcovariancecand;", "" ]
[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:bte], X_1:bat[:bte], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:dbl] ", "AGGRsubcovariancep;",
"" ]
[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:dbl], X_1:bat[:dbl], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:dbl] ", "AGGRsubcovariancep;",
"" ]
[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:flt], X_1:bat[:flt], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:dbl] ", "AGGRsubcovariancep;",
"" ]
[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:int], X_1:bat[:int], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:dbl] ", "AGGRsubcovariancep;",
"" ]
[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:lng], X_1:bat[:lng], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:dbl] ", "AGGRsubcovariancep;",
"" ]
[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:sht], X_1:bat[:sht], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:dbl] ", "AGGRsubcovariancep;",
"" ]
-[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:bte], X_1:bat[:bte], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ",
"AGGRsubcovariancepcand;", "" ]
-[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:dbl], X_1:bat[:dbl], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ",
"AGGRsubcovariancepcand;", "" ]
-[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:flt], X_1:bat[:flt], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ",
"AGGRsubcovariancepcand;", "" ]
-[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:int], X_1:bat[:int], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ",
"AGGRsubcovariancepcand;", "" ]
-[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:lng], X_1:bat[:lng], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ",
"AGGRsubcovariancepcand;", "" ]
-[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:sht], X_1:bat[:sht], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ",
"AGGRsubcovariancepcand;", "" ]
+[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:bte], X_1:bat[:bte], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:bit):bat[:dbl] ",
"AGGRsubcovariancepcand;", "" ]
+[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:dbl], X_1:bat[:dbl], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:bit):bat[:dbl] ",
"AGGRsubcovariancepcand;", "" ]
+[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:flt], X_1:bat[:flt], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:bit):bat[:dbl] ",
"AGGRsubcovariancepcand;", "" ]
+[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:int], X_1:bat[:int], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:bit):bat[:dbl] ",
"AGGRsubcovariancepcand;", "" ]
+[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:lng], X_1:bat[:lng], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:bit):bat[:dbl] ",
"AGGRsubcovariancepcand;", "" ]
+[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:sht], X_1:bat[:sht], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:bit):bat[:dbl] ",
"AGGRsubcovariancepcand;", "" ]
[ "aggr", "subexist", "pattern aggr.subexist(X_0:bat[:any],
X_1:bat[:oid], X_2:bat[:oid], X_3:bat[:oid], X_4:bit):bat[:bit] ",
"SQLsubexist;", "" ]
[ "aggr", "subexist", "pattern aggr.subexist(X_0:bat[:any],
X_1:bat[:oid], X_2:bat[:oid], X_3:bit):bat[:bit] ", "SQLsubexist;", ""
]
[ "aggr", "subjsonaggr", "command aggr.subjsonaggr(X_0:bat[:dbl],
X_1:bat[:oid], X_2:bat[:any_1], X_3:bit):bat[:str] ", "JSONsubjson;", "" ]
diff --git a/clients/Tests/MAL-signatures.stable.out.int128
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -119,6 +119,7 @@ stdout of test 'MAL-signatures` in direc
[ "aggr", "corr", "command aggr.corr(X_0:bat[:int], X_1:bat[:int],
X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ", "AGGRcorr;", "" ]
[ "aggr", "corr", "command aggr.corr(X_0:bat[:lng], X_1:bat[:lng],
X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ", "AGGRcorr;", "" ]
[ "aggr", "corr", "command aggr.corr(X_0:bat[:sht], X_1:bat[:sht],
X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ", "AGGRcorr;", "" ]
+[ "aggr", "corr", "command aggr.corr(X_0:bat[:any_2], X_1:bat[:any_2],
X_2:bat[:oid], X_3:bat[:oid]):dbl ", "ALGcorr2;", "" ]
[ "aggr", "corr", "command aggr.corr(X_0:bat[:any_2],
X_1:bat[:any_2]):dbl ", "ALGcorr;", "" ]
[ "aggr", "count", "command aggr.count(X_0:bat[:any_1],
X_1:bat[:oid], X_2:bat[:any_2], X_3:bit):bat[:lng] ", "AGGRcount3;", ""
]
[ "aggr", "count", "command aggr.count(X_0:bat[:any_1],
X_1:bat[:oid], X_2:bat[:any_2]):bat[:lng] ", "AGGRcount3nils;", ""
]
@@ -136,6 +137,7 @@ stdout of test 'MAL-signatures` in direc
[ "aggr", "covariance", "command aggr.covariance(X_0:bat[:int],
X_1:bat[:int], X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ",
"AGGRcovariance;", "" ]
[ "aggr", "covariance", "command aggr.covariance(X_0:bat[:lng],
X_1:bat[:lng], X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ",
"AGGRcovariance;", "" ]
[ "aggr", "covariance", "command aggr.covariance(X_0:bat[:sht],
X_1:bat[:sht], X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ",
"AGGRcovariance;", "" ]
+[ "aggr", "covariance", "command aggr.covariance(X_0:bat[:any_2],
X_1:bat[:any_2], X_2:bat[:oid], X_3:bat[:oid]):dbl ", "ALGcovariance2;",
"" ]
[ "aggr", "covariance", "command aggr.covariance(X_0:bat[:any_2],
X_1:bat[:any_2]):dbl ", "ALGcovariance;", "" ]
[ "aggr", "covariancep", "command aggr.covariancep(X_0:bat[:bte],
X_1:bat[:bte], X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ",
"AGGRcovariancep;", "" ]
[ "aggr", "covariancep", "command aggr.covariancep(X_0:bat[:dbl],
X_1:bat[:dbl], X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ",
"AGGRcovariancep;", "" ]
@@ -144,6 +146,7 @@ stdout of test 'MAL-signatures` in direc
[ "aggr", "covariancep", "command aggr.covariancep(X_0:bat[:int],
X_1:bat[:int], X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ",
"AGGRcovariancep;", "" ]
[ "aggr", "covariancep", "command aggr.covariancep(X_0:bat[:lng],
X_1:bat[:lng], X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ",
"AGGRcovariancep;", "" ]
[ "aggr", "covariancep", "command aggr.covariancep(X_0:bat[:sht],
X_1:bat[:sht], X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ",
"AGGRcovariancep;", "" ]
+[ "aggr", "covariancep", "command aggr.covariancep(X_0:bat[:any_2],
X_1:bat[:any_2], X_2:bat[:oid], X_3:bat[:oid]):dbl ",
"ALGcovariancep2;", "" ]
[ "aggr", "covariancep", "command aggr.covariancep(X_0:bat[:any_2],
X_1:bat[:any_2]):dbl ", "ALGcovariancep;", "" ]
[ "aggr", "exist", "command aggr.exist(X_0:bat[:any_2],
X_1:any_1):bit ", "ALGexist;", "" ]
[ "aggr", "exist", "pattern aggr.exist(X_0:any_1):bit ",
"SQLexist;", "" ]
@@ -378,13 +381,13 @@ stdout of test 'MAL-signatures` in direc
[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:int],
X_1:bat[:int], X_2:bat[:oid], X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:dbl] ",
"AGGRsubcorr;", "" ]
[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:lng],
X_1:bat[:lng], X_2:bat[:oid], X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:dbl] ",
"AGGRsubcorr;", "" ]
[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:sht],
X_1:bat[:sht], X_2:bat[:oid], X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:dbl] ",
"AGGRsubcorr;", "" ]
-[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:bte],
X_1:bat[:bte], X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bit,
X_6:bit):bat[:dbl] ", "AGGRsubcorrcand;", "" ]
-[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:dbl],
X_1:bat[:dbl], X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bit,
X_6:bit):bat[:dbl] ", "AGGRsubcorrcand;", "" ]
-[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:flt],
X_1:bat[:flt], X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bit,
X_6:bit):bat[:dbl] ", "AGGRsubcorrcand;", "" ]
-[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:hge],
X_1:bat[:hge], X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bit,
X_6:bit):bat[:dbl] ", "AGGRsubcorrcand;", "" ]
-[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:int],
X_1:bat[:int], X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bit,
X_6:bit):bat[:dbl] ", "AGGRsubcorrcand;", "" ]
-[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:lng],
X_1:bat[:lng], X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bit,
X_6:bit):bat[:dbl] ", "AGGRsubcorrcand;", "" ]
-[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:sht],
X_1:bat[:sht], X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bit,
X_6:bit):bat[:dbl] ", "AGGRsubcorrcand;", "" ]
+[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:bte],
X_1:bat[:bte], X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid],
X_6:bit, X_7:bit):bat[:dbl] ", "AGGRsubcorrcand;", "" ]
+[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:dbl],
X_1:bat[:dbl], X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid],
X_6:bit, X_7:bit):bat[:dbl] ", "AGGRsubcorrcand;", "" ]
+[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:flt],
X_1:bat[:flt], X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid],
X_6:bit, X_7:bit):bat[:dbl] ", "AGGRsubcorrcand;", "" ]
+[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:hge],
X_1:bat[:hge], X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid],
X_6:bit, X_7:bit):bat[:dbl] ", "AGGRsubcorrcand;", "" ]
+[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:int],
X_1:bat[:int], X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid],
X_6:bit, X_7:bit):bat[:dbl] ", "AGGRsubcorrcand;", "" ]
+[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:lng],
X_1:bat[:lng], X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid],
X_6:bit, X_7:bit):bat[:dbl] ", "AGGRsubcorrcand;", "" ]
+[ "aggr", "subcorr", "command aggr.subcorr(X_0:bat[:sht],
X_1:bat[:sht], X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid],
X_6:bit, X_7:bit):bat[:dbl] ", "AGGRsubcorrcand;", "" ]
[ "aggr", "subcount", "command aggr.subcount(X_0:bat[:any_1],
X_1:bat[:oid], X_2:bat[:any_2], X_3:bit):bat[:lng] ", "AGGRsubcount;",
"" ]
[ "aggr", "subcount", "command aggr.subcount(X_0:bat[:any_1],
X_1:bat[:oid], X_2:bat[:any_2], X_3:bat[:oid], X_4:bit):bat[:lng] ",
"AGGRsubcountcand;", "" ]
[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:bte], X_1:bat[:bte], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:dbl] ", "AGGRsubcovariance;",
"" ]
@@ -394,13 +397,13 @@ stdout of test 'MAL-signatures` in direc
[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:int], X_1:bat[:int], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:dbl] ", "AGGRsubcovariance;",
"" ]
[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:lng], X_1:bat[:lng], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:dbl] ", "AGGRsubcovariance;",
"" ]
[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:sht], X_1:bat[:sht], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:dbl] ", "AGGRsubcovariance;",
"" ]
-[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:bte], X_1:bat[:bte], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ",
"AGGRsubcovariancecand;", "" ]
-[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:dbl], X_1:bat[:dbl], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ",
"AGGRsubcovariancecand;", "" ]
-[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:flt], X_1:bat[:flt], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ",
"AGGRsubcovariancecand;", "" ]
-[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:hge], X_1:bat[:hge], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ",
"AGGRsubcovariancecand;", "" ]
-[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:int], X_1:bat[:int], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ",
"AGGRsubcovariancecand;", "" ]
-[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:lng], X_1:bat[:lng], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ",
"AGGRsubcovariancecand;", "" ]
-[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:sht], X_1:bat[:sht], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ",
"AGGRsubcovariancecand;", "" ]
+[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:bte], X_1:bat[:bte], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:bit):bat[:dbl] ",
"AGGRsubcovariancecand;", "" ]
+[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:dbl], X_1:bat[:dbl], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:bit):bat[:dbl] ",
"AGGRsubcovariancecand;", "" ]
+[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:flt], X_1:bat[:flt], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:bit):bat[:dbl] ",
"AGGRsubcovariancecand;", "" ]
+[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:hge], X_1:bat[:hge], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:bit):bat[:dbl] ",
"AGGRsubcovariancecand;", "" ]
+[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:int], X_1:bat[:int], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:bit):bat[:dbl] ",
"AGGRsubcovariancecand;", "" ]
+[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:lng], X_1:bat[:lng], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:bit):bat[:dbl] ",
"AGGRsubcovariancecand;", "" ]
+[ "aggr", "subcovariance", "command
aggr.subcovariance(X_0:bat[:sht], X_1:bat[:sht], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:bit):bat[:dbl] ",
"AGGRsubcovariancecand;", "" ]
[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:bte], X_1:bat[:bte], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:dbl] ", "AGGRsubcovariancep;",
"" ]
[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:dbl], X_1:bat[:dbl], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:dbl] ", "AGGRsubcovariancep;",
"" ]
[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:flt], X_1:bat[:flt], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:dbl] ", "AGGRsubcovariancep;",
"" ]
@@ -408,13 +411,13 @@ stdout of test 'MAL-signatures` in direc
[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:int], X_1:bat[:int], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:dbl] ", "AGGRsubcovariancep;",
"" ]
[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:lng], X_1:bat[:lng], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:dbl] ", "AGGRsubcovariancep;",
"" ]
[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:sht], X_1:bat[:sht], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:dbl] ", "AGGRsubcovariancep;",
"" ]
-[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:bte], X_1:bat[:bte], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ",
"AGGRsubcovariancepcand;", "" ]
-[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:dbl], X_1:bat[:dbl], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ",
"AGGRsubcovariancepcand;", "" ]
-[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:flt], X_1:bat[:flt], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ",
"AGGRsubcovariancepcand;", "" ]
-[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:hge], X_1:bat[:hge], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ",
"AGGRsubcovariancepcand;", "" ]
-[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:int], X_1:bat[:int], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ",
"AGGRsubcovariancepcand;", "" ]
-[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:lng], X_1:bat[:lng], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ",
"AGGRsubcovariancepcand;", "" ]
-[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:sht], X_1:bat[:sht], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ",
"AGGRsubcovariancepcand;", "" ]
+[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:bte], X_1:bat[:bte], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:bit):bat[:dbl] ",
"AGGRsubcovariancepcand;", "" ]
+[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:dbl], X_1:bat[:dbl], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:bit):bat[:dbl] ",
"AGGRsubcovariancepcand;", "" ]
+[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:flt], X_1:bat[:flt], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:bit):bat[:dbl] ",
"AGGRsubcovariancepcand;", "" ]
+[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:hge], X_1:bat[:hge], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:bit):bat[:dbl] ",
"AGGRsubcovariancepcand;", "" ]
+[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:int], X_1:bat[:int], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:bit):bat[:dbl] ",
"AGGRsubcovariancepcand;", "" ]
+[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:lng], X_1:bat[:lng], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:bit):bat[:dbl] ",
"AGGRsubcovariancepcand;", "" ]
+[ "aggr", "subcovariancep", "command
aggr.subcovariancep(X_0:bat[:sht], X_1:bat[:sht], X_2:bat[:oid],
X_3:bat[:any_1], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:bit):bat[:dbl] ",
"AGGRsubcovariancepcand;", "" ]
[ "aggr", "subexist", "pattern aggr.subexist(X_0:bat[:any],
X_1:bat[:oid], X_2:bat[:oid], X_3:bat[:oid], X_4:bit):bat[:bit] ",
"SQLsubexist;", "" ]
[ "aggr", "subexist", "pattern aggr.subexist(X_0:bat[:any],
X_1:bat[:oid], X_2:bat[:oid], X_3:bit):bat[:bit] ", "SQLsubexist;", ""
]
[ "aggr", "subjsonaggr", "command aggr.subjsonaggr(X_0:bat[:dbl],
X_1:bat[:oid], X_2:bat[:any_1], X_3:bit):bat[:str] ", "JSONsubjson;", "" ]
@@ -10958,7 +10961,7 @@ stdout of test 'MAL-signatures` in direc
[ "sql", "ms_trunc", "command sql.ms_trunc(X_0:dbl, X_1:int):dbl ",
"dbl_trunc_wrap;", "" ]
[ "sql", "ms_trunc", "command sql.ms_trunc(X_0:flt, X_1:int):flt ",
"flt_trunc_wrap;", "" ]
[ "sql", "mvc", "pattern sql.mvc():int ", "SQLmvc;", ""
]
-[ "sql", "next_value", "unsafe pattern sql.next_value(X_0:str,
X_1:str):lng ", "mvc_next_value;", "" ]
+[ "sql", "next_value", "pattern sql.next_value(X_0:str, X_1:str):lng
", "mvc_next_value;", "" ]
[ "sql", "nth_value", "pattern sql.nth_value(X_0:any_1, X_1:lng,
X_2:bit, X_3:bit, X_4:int, X_5:oid, X_6:oid):any_1 ", "SQLnth_value;",
"" ]
[ "sql", "ntile", "pattern sql.ntile(X_0:any, X_1:any_1, X_2:bit,
X_3:bit):any_1 ", "SQLntile;", "" ]
[ "sql", "optimizer_updates", "pattern sql.optimizer_updates():void
", "SQLoptimizersUpdate;", "" ]
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -31,9 +31,9 @@ BAT *BATcalcbetweencstbat(BAT *b, const
BAT *BATcalcbetweencstcst(BAT *b, const ValRecord *lo, const ValRecord *hi,
BAT *s, bool symmetric, bool linc, bool hinc, bool nils_false, bool anti);
BAT *BATcalccmp(BAT *b1, BAT *b2, BAT *s1, BAT *s2);
BAT *BATcalccmpcst(BAT *b, const ValRecord *v, BAT *s);
-dbl BATcalccorrelation(BAT *b1, BAT *b2);
-dbl BATcalccovariance_population(BAT *b1, BAT *b2);
-dbl BATcalccovariance_sample(BAT *b1, BAT *b2);
+dbl BATcalccorrelation(BAT *b1, BAT *b2, BAT *s1, BAT *s2);
+dbl BATcalccovariance_population(BAT *b1, BAT *b2, BAT *s1, BAT *s2);
+dbl BATcalccovariance_sample(BAT *b1, BAT *b2, BAT *s1, BAT *s2);
BAT *BATcalccstadd(const ValRecord *v, BAT *b, BAT *s, int tp, bool
abort_on_error);
BAT *BATcalccstand(const ValRecord *v, BAT *b, BAT *s);
BAT *BATcalccstcmp(const ValRecord *v, BAT *b, BAT *s);
diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c
--- a/gdk/gdk_aggr.c
+++ b/gdk/gdk_aggr.c
@@ -4218,9 +4218,11 @@ BATcalcvariance_sample(dbl *avgp, BAT *b
#define AGGR_COVARIANCE_SINGLE(TYPE) \
do { \
TYPE x, y; \
- for (i = 0; i < cnt; i++) { \
- x = ((const TYPE *) v1)[i]; \
- y = ((const TYPE *) v2)[i]; \
+ for (i = 0; i < ci1->ncand; i++) { \
+ oid i1 = canditer_next(ci1) - ci1->hseq; \
+ oid i2 = canditer_next(ci2) - ci2->hseq; \
+ x = ((const TYPE *) v1)[i1]; \
+ y = ((const TYPE *) v2)[i2]; \
if (is_##TYPE##_nil(x) || is_##TYPE##_nil(y)) \
continue; \
n++; \
@@ -4229,13 +4231,14 @@ BATcalcvariance_sample(dbl *avgp, BAT *b
delta2 = (dbl) y - mean2; \
mean2 += delta2 / n; \
m2 += delta1 * ((dbl) y - mean2); \
- if (isinf(m2)) \
- goto overflow; \
+ if (isinf(m2)) \
+ goto overflow; \
} \
} while (0)
static dbl
-calccovariance(const void *v1, const void *v2, BUN cnt, int tp, bool issample)
+calccovariance(const void *v1, const void *v2, struct canditer *ci1,
+ struct canditer *ci2, int tp, bool issample)
{
BUN n = 0, i;
dbl mean1 = 0, mean2 = 0, m2 = 0, delta1, delta2;
@@ -4277,26 +4280,40 @@ calccovariance(const void *v1, const voi
}
dbl
-BATcalccovariance_population(BAT *b1, BAT *b2)
+BATcalccovariance_population(BAT *b1, BAT *b2, BAT *s1, BAT *s2)
{
lng t0 = 0;
+ struct canditer ci1, ci2;
TRC_DEBUG_IF(ALGO) t0 = GDKusec();
- dbl v = calccovariance(Tloc(b1, 0), Tloc(b2, 0),
- BATcount(b1), b1->ttype, false);
+ canditer_init(&ci1, b1, s1);
+ canditer_init(&ci2, b2, s2);
+ if (ci1.ncand != ci2.ncand) {
+ GDKerror("bats must be aligned\n");
+ return dbl_nil;
+ }
+ dbl v = calccovariance(Tloc(b1, 0), Tloc(b2, 0), &ci1, &ci2,
+ b1->ttype, false);
TRC_DEBUG(ALGO, "b1=" ALGOBATFMT ",b2=" ALGOBATFMT " (" LLFMT "
usec)\n",
ALGOBATPAR(b1), ALGOBATPAR(b2), GDKusec() - t0);
return v;
}
dbl
-BATcalccovariance_sample(BAT *b1, BAT *b2)
+BATcalccovariance_sample(BAT *b1, BAT *b2, BAT *s1, BAT *s2)
{
lng t0 = 0;
+ struct canditer ci1, ci2;
TRC_DEBUG_IF(ALGO) t0 = GDKusec();
- dbl v = calccovariance(Tloc(b1, 0), Tloc(b2, 0),
- BATcount(b1), b1->ttype, true);
+ canditer_init(&ci1, b1, s1);
+ canditer_init(&ci2, b2, s2);
+ if (ci1.ncand != ci2.ncand) {
+ GDKerror("bats must be aligned\n");
+ return dbl_nil;
+ }
+ dbl v = calccovariance(Tloc(b1, 0), Tloc(b2, 0), &ci1, &ci2,
+ b1->ttype, true);
TRC_DEBUG(ALGO, "b1=" ALGOBATFMT ",b2=" ALGOBATFMT " (" LLFMT "
usec)\n",
ALGOBATPAR(b1), ALGOBATPAR(b2), GDKusec() - t0);
return v;
@@ -4306,8 +4323,10 @@ BATcalccovariance_sample(BAT *b1, BAT *b
do { \
TYPE x, y; \
for (i = 0; i < cnt; i++) { \
- x = ((const TYPE *) v1)[i]; \
- y = ((const TYPE *) v2)[i]; \
+ oid o1 = canditer_next(&ci1) - b1->hseqbase; \
+ oid o2 = canditer_next(&ci2) - b2->hseqbase; \
+ x = ((const TYPE *) v1)[o1]; \
+ y = ((const TYPE *) v2)[o2]; \
if (is_##TYPE##_nil(x) || is_##TYPE##_nil(y)) \
continue; \
n++; \
@@ -4319,19 +4338,26 @@ BATcalccovariance_sample(BAT *b1, BAT *b
up += delta1 * aux; \
down1 += delta1 * ((dbl) x - mean1); \
down2 += delta2 * aux; \
- if (isinf(up) || isinf(down1) || isinf(down2))
\
- goto overflow; \
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list