incubator-hama-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Edward J. Yoon (JIRA)" <j...@apache.org>
Subject [jira] Created: (HAMA-66) The determinant of a matrix
Date Fri, 19 Sep 2008 09:16:44 GMT
The determinant of a matrix
---------------------------

                 Key: HAMA-66
                 URL: https://issues.apache.org/jira/browse/HAMA-66
             Project: Hama
          Issue Type: New Feature
          Components: implementation
            Reporter: Edward J. Yoon


This is my old map/reduce code to get the determinant of a matrix.

Map: 

  public void map(HStoreKey key, MapWritable value,
      OutputCollector<Text, MapWritable> output, Reporter reporter)
      throws IOException {

    int r = Integer.parseInt(String.valueOf(key.getRow()));
    checkObj.set(r, 0,  0.0);
    double d = matrix_a.get(r, 0) * Math.pow(-1.0, r) * minor(r, 1);
    checkObj.set(r, 0, 1.0);

    MapWritable val = new MapWritable();
    val.put(Constants.COLUMN, getBytesWritable(d));
    output.collect(Constants.DETERMINANT, val);
  }

  private double minor(int processRow, int processColumn)
      throws IOException {
    double result = 0.0;
    int i = 0;
    if ((row - processColumn) == 0) {
      return 1.0;
    }

    for (int r = 0; r < row; r++) {
      double trans = checkObj.get(r, 0);
      if (trans != 0.0) {
        checkObj.set(r, 0, 0.0);
        result += matrix_a.get(r, processColumn) * Math.pow(-1.0, i)
            * minor(r, processColumn + 1);
        checkObj.set(r, 0, 1.0);
        i++;
      }
    }

    return result;
  }

Reduce:

  public void reduce(Text key, Iterator<MapWritable> values,
      OutputCollector<Text, MapWritable> output, Reporter reporter)
      throws IOException {

    double sum = 0;
    while (values.hasNext()) {
      sum += getDouble(values.next().get(Constants.COLUMN));
    }

    MapWritable value = new MapWritable();
    value.put(Constants.COLUMN, getBytesWritable(sum));
    output.collect(key, value);
  }




-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message