Update of /cvsroot/monetdb/pathfinder/compiler/semantics
In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv29486/semantics

Modified Files:
        xquery_fo.c 
Log Message:
- Implement pf:product(), pf:log() and pf:sqrt() for the algebra version.
  There is one remaining problem pf:product(()) returns 0 instead of 1.



U xquery_fo.c
Index: xquery_fo.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/semantics/xquery_fo.c,v
retrieving revision 1.182
retrieving revision 1.183
diff -u -d -r1.182 -r1.183
--- xquery_fo.c 17 Feb 2009 00:54:08 -0000      1.182
+++ xquery_fo.c 10 Mar 2009 12:20:45 -0000      1.183
@@ -2623,46 +2623,78 @@
             .par_ty = (PFty_t[]) { PFty_xs_anyNode () },
             .ret_ty = PFty_xs_string () } },
         .alg = PFbui_pf_nid }
+    , /* pf:log (integer) as integer */
+      { .ns = PFns_lib, .loc = "log",
+        .arity = 1, .sig_count = 1, .sigs = { {
+            .par_ty = (PFty_t[]) { PFty_xs_integer () },
+            .ret_ty = PFty_xs_integer () } },
+        .alg = PFbui_pf_log_int }
     , /* pf:log (decimal) as decimal */
       { .ns = PFns_lib, .loc = "log",
         .arity = 1, .sig_count = 1, .sigs = { {
             .par_ty = (PFty_t[]) { PFty_xs_decimal () },
-            .ret_ty = PFty_xs_decimal () } } }
+            .ret_ty = PFty_xs_decimal () } },
+        .alg = PFbui_pf_log_dec }
     , /* pf:log (double) as double */
       { .ns = PFns_lib, .loc = "log",
         .arity = 1, .sig_count = 1, .sigs = { {
             .par_ty = (PFty_t[]) { PFty_xs_double () },
-            .ret_ty = PFty_xs_double () } } }
+            .ret_ty = PFty_xs_double () } },
+        .alg = PFbui_pf_log_dbl }
+    , /* pf:log (integer?) as integer? */
+      { .ns = PFns_lib, .loc = "log",
+        .arity = 1, .sig_count = 1, .sigs = { {
+            .par_ty = (PFty_t[]) { PFty_opt (PFty_xs_integer ()) },
+            .ret_ty = PFty_opt (PFty_xs_integer ()) } },
+        .alg = PFbui_pf_log_int }
     , /* pf:log (decimal?) as decimal? */
       { .ns = PFns_lib, .loc = "log",
         .arity = 1, .sig_count = 1, .sigs = { {
             .par_ty = (PFty_t[]) { PFty_opt (PFty_xs_decimal ()) },
-            .ret_ty = PFty_opt (PFty_xs_decimal ()) } } }
+            .ret_ty = PFty_opt (PFty_xs_decimal ()) } },
+        .alg = PFbui_pf_log_dec }
     , /* pf:log (double?) as double? */
       { .ns = PFns_lib, .loc = "log",
         .arity = 1, .sig_count = 1, .sigs = { {
             .par_ty = (PFty_t[]) { PFty_opt (PFty_xs_double ()) },
-            .ret_ty = PFty_opt (PFty_xs_double ()) } } }
+            .ret_ty = PFty_opt (PFty_xs_double ()) } },
+        .alg = PFbui_pf_log_dbl }
+    , /* pf:sqrt (integer) as integer */
+      { .ns = PFns_lib, .loc = "sqrt",
+        .arity = 1, .sig_count = 1, .sigs = { {
+            .par_ty = (PFty_t[]) { PFty_xs_integer () },
+            .ret_ty = PFty_xs_integer () } },
+        .alg = PFbui_pf_sqrt_int }
     , /* pf:sqrt (decimal) as decimal */
       { .ns = PFns_lib, .loc = "sqrt",
         .arity = 1, .sig_count = 1, .sigs = { {
             .par_ty = (PFty_t[]) { PFty_xs_decimal () },
-            .ret_ty = PFty_xs_decimal () } } }
+            .ret_ty = PFty_xs_decimal () } },
+        .alg = PFbui_pf_sqrt_dec }
     , /* pf:sqrt (double) as double */
       { .ns = PFns_lib, .loc = "sqrt",
         .arity = 1, .sig_count = 1, .sigs = { {
             .par_ty = (PFty_t[]) { PFty_xs_double () },
-            .ret_ty = PFty_xs_double () } } }
+            .ret_ty = PFty_xs_double () } },
+        .alg = PFbui_pf_sqrt_dbl }
+    , /* pf:sqrt (integer?) as integer? */
+      { .ns = PFns_lib, .loc = "sqrt",
+        .arity = 1, .sig_count = 1, .sigs = { {
+            .par_ty = (PFty_t[]) { PFty_opt (PFty_xs_integer ()) },
+            .ret_ty = PFty_opt (PFty_xs_integer ()) } },
+        .alg = PFbui_pf_sqrt_int }
     , /* pf:sqrt (decimal?) as decimal? */
       { .ns = PFns_lib, .loc = "sqrt",
         .arity = 1, .sig_count = 1, .sigs = { {
             .par_ty = (PFty_t[]) { PFty_opt (PFty_xs_decimal ()) },
-            .ret_ty = PFty_opt (PFty_xs_decimal ()) } } }
+            .ret_ty = PFty_opt (PFty_xs_decimal ()) } },
+        .alg = PFbui_pf_sqrt_dec }
     , /* pf:sqrt (double?) as double? */
       { .ns = PFns_lib, .loc = "sqrt",
         .arity = 1, .sig_count = 1, .sigs = { {
             .par_ty = (PFty_t[]) { PFty_opt (PFty_xs_double ()) },
-            .ret_ty = PFty_opt (PFty_xs_double ()) } } }
+            .ret_ty = PFty_opt (PFty_xs_double ()) } },
+        .alg = PFbui_pf_sqrt_dbl }
     , /* pf:pow (decimal, decimal) as decimal */
       { .ns = PFns_lib, .loc = "pow",
         .arity = 2, .sig_count = 1, .sigs = { {
@@ -2691,9 +2723,8 @@
       { .ns = PFns_lib, .loc = "product",
         .arity = 1, .sig_count = 1, .sigs = { {
             .par_ty = (PFty_t[]) { PFty_star (PFty_xs_double ()) },
-            .ret_ty = PFty_xs_double () } }
-      }
-
+            .ret_ty = PFty_xs_double () } },
+        .alg = PFbui_fn_prod_dbl }
 
 /* #3. UPDATE FUNCTIONS */
     /* Below are the function declarations for the UpdateX functions */


------------------------------------------------------------------------------
_______________________________________________
Monetdb-pf-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins

Reply via email to