- data_string = str(post_data[0][1])
- data_rows = data_string.splitlines()
- for index, row in enumerate(data_rows):
- data_rows[index] = row.split()
-
- given_matrix = data_rows
- null_space = null(given_matrix)
- try:
- null_space = null_space / null_space.max()
- except:
- pass
-
-# la, v = scipy.linalg.eig(given_matrix)
-# output += "eigenvalues:<br>"
-# for l in la:
-# output += str(l)
- determinant = scipy.linalg.det(given_matrix)
+def application(environ, start_response):
+ parameters = cgi.parse_qs(environ.get('QUERY_STRING'))
+
+ if not 'matrix' in parameters or parameters['matrix'] == '':
+ return fail(start_response, 'missing matrix')
+ query_string = str(parameters['matrix'][0])
+ matrix = query_string.splitlines()
+ for index, row in enumerate(matrix):
+ matrix[index] = row.split()
+ if len(matrix[index]) != len(matrix[0]):
+ return fail(start_response, 'ragged matrix')
+ for index, n in enumerate(matrix[index]):
+ try: float(n)
+ except ValueError:
+ return fail(start_response, 'invalid matrix element')
+
+ while len(matrix) < len(matrix[0]):
+ matrix.append([0]*len(matrix[0]))
+
+ nullspace = calculate_nullspace(matrix)
+ if nullspace.max() != 0:
+ nullspace = nullspace / nullspace.max()
+
+ eigenvalues = calculate_eigenvalues(matrix)
+ determinant = det(matrix)