| #------------------------------------------------------------- |
| # |
| # 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. |
| # |
| #------------------------------------------------------------- |
| |
| fed_type = $in_fed_type; |
| y_type = $in_y_type; |
| |
| if(fed_type == 0) { # single federated worker |
| X = federated(addresses=list($in_X1), |
| ranges=list(list(0, 0), list($rows, $cols))); |
| } |
| else if(fed_type == 1) { # row partitioned |
| X = federated(addresses=list($in_X1, $in_X2, $in_X3, $in_X4), |
| ranges=list(list(0, 0), list($rows, $cols), list($rows, 0), list($rows * 2, $cols), |
| list($rows * 2, 0), list($rows * 3, $cols), list($rows * 3, 0), list($rows * 4, $cols))); |
| } |
| else if(fed_type == 2) { # col partitioned |
| X = federated(addresses=list($in_X1, $in_X2, $in_X3, $in_X4), |
| ranges=list(list(0, 0), list($rows, $cols), list(0, $cols), list($rows, $cols * 2), |
| list(0, $cols * 2), list($rows, $cols * 3), list(0, $cols * 3), list($rows, $cols * 4))); |
| } |
| else if(fed_type == 3) { # full partitioned |
| X = federated(addresses=list($in_X1, $in_X2, $in_X3, $in_X4), |
| ranges=list(list(0, 0), list($rows, $cols), list(0, $cols), list($rows, $cols * 2), |
| list($rows, 0), list($rows * 2, $cols), list($rows, $cols), list($rows * 2, $cols * 2))); |
| } |
| |
| Y = read($in_Y); |
| if(y_type == 3) # make Y federated |
| Y = X + Y; |
| else if(y_type == 4) # make Y federated |
| Y = X[1,] + Y; |
| else if(y_type == 5) # make Y federated |
| Y = X[, 1] + Y; |
| |
| op_type = $in_op_type; |
| |
| if(op_type == 0) |
| Z = (X > Y) |
| else if(op_type == 1) |
| Z = (X < Y) |
| else if(op_type == 2) |
| Z = (X == Y) |
| else if(op_type == 3) |
| Z = (X != Y) |
| else if(op_type == 4) |
| Z = (X >= Y) |
| else if(op_type == 5) |
| Z = (X <= Y) |
| |
| write(Z, $out_Z); |