Changeset: c1d63c67c6bb for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c1d63c67c6bb
Modified Files:
        monetdb5/modules/mal/sample.c
        monetdb5/modules/mal/sample.h
        monetdb5/modules/mal/sample.mal
Branch: Jan2014
Log Message:

added missing subuniform_dbl code


diffs (50 lines):

diff --git a/monetdb5/modules/mal/sample.c b/monetdb5/modules/mal/sample.c
--- a/monetdb5/modules/mal/sample.c
+++ b/monetdb5/modules/mal/sample.c
@@ -132,3 +132,24 @@ SAMPLEuniform_dbl(bat *r, bat *b, dbl *p
        BBPunfix(bb->batCacheid);
        return SAMPLEuniform(r, b, &s);
 }
+
+str
+SAMPLEsubuniform_dbl(bat *r, bat *b, dbl *p) {
+       BAT *bb;
+       double pr = *p;
+       wrd s;
+
+       if ( pr < 0.0 || pr > 1.0 ) {
+               throw(MAL, "sample.subuniform", ILLEGAL_ARGUMENT
+                               " p should be between 0 and 1.0" );
+       } else if (pr == 0) {/* special case */
+               s = 0;
+               return SAMPLEsubuniform(r, b, &s);
+       }
+       if ((bb = BATdescriptor(*b)) == NULL) {
+               throw(MAL, "sample.uniform", INTERNAL_BAT_ACCESS);
+       }
+       s = (wrd) (pr*(double)BATcount(bb));
+       BBPunfix(bb->batCacheid);
+       return SAMPLEsubuniform(r, b, &s);
+}
diff --git a/monetdb5/modules/mal/sample.h b/monetdb5/modules/mal/sample.h
--- a/monetdb5/modules/mal/sample.h
+++ b/monetdb5/modules/mal/sample.h
@@ -47,4 +47,7 @@ SAMPLEsubuniform(bat *r, bat *b, wrd *s)
 sample_export str
 SAMPLEuniform_dbl(bat *r, bat *b, dbl *p);
 
+sample_export str
+SAMPLEsubuniform_dbl(bat *r, bat *b, dbl *p);
+
 #endif
diff --git a/monetdb5/modules/mal/sample.mal b/monetdb5/modules/mal/sample.mal
--- a/monetdb5/modules/mal/sample.mal
+++ b/monetdb5/modules/mal/sample.mal
@@ -34,3 +34,7 @@ comment "Returns the oids of a uniform s
 command uniform(b:bat[:oid,:any],p:dbl):bat[:oid,:any]
 address SAMPLEuniform_dbl
 comment "Returns a uniform sample of size = (p x count(b)), where 0 <= p <= 
1.0"
+
+command subuniform(b:bat[:oid,:any],p:dbl):bat[:oid,:oid]
+address SAMPLEsubuniform_dbl
+comment "Returns the oids of a uniform sample of size = (p x count(b)), where 
0 <= p <= 1.0";
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to