# The determinant of a matrix

## Details

• Type: New Feature
• Status: Resolved
• Priority: Major
• Resolution: Won't Fix
• Affects Version/s: None
• Fix Version/s: None
• Component/s:
• Labels:
None

## Description

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);
}

## People

• Assignee:
Unassigned
Reporter:
Edward J. Yoon