;aglorithm written by peter for comparing the two data arrays (defun applygrovelr (datarray filename) (let ((lm (make-array (list (array-dimension datarray 0) (array-dimension datarray 0)) :initial-element nil)) (tempval 0) (totalpairs 0) (totalmatches 0)) (with-open-file (out filename :direction :output :if-exists :supersede) (dotimes (i (array-dimension lm 0)) ;(format t "Now on: ~a~%" i) (dotimes (j (array-dimension lm 0)) (if (equalp (aref lm i j) nil) (cond ((= (aref datarray i 2) (aref datarray j 2)) (handler-case (setf tempval (grovelr1(aref datarray i 1) (aref datarray j 1) (* (aref datarray i 2) (expt 10 -5)))) (floating-point-overflow (setf tempval 'inf))) (setf (aref lm i j) tempval) (setf (aref lm j i) tempval) (if (not (= i j)) (setf totalpairs (+ totalpairs 1))) (cond ((and (or (> tempval 500) (equalp tempval 'inf)) (not (= i j))) (setf totalmatches (+ totalmatches 1)) (with-standard-io-syntax (format out "~a ~a ~a ~a ~a ~a~%" (aref datarray i 2) (aref datarray i 0) (aref datarray j 0) (aref datarray i 1) (aref datarray j 1) tempval))) )))))) 'done)))