From 2a3e8d60314c3a4d6dc7cebea2f7324da3ac1929 Mon Sep 17 00:00:00 2001
From: Christian Beckmann <c.beckmann@donders.ru.nl>
Date: Mon, 10 Nov 2008 17:57:18 +0000
Subject: [PATCH]  added sqrtm

---
 miscmaths.cc | 10 ++++++++++
 miscmaths.h  |  1 +
 2 files changed, 11 insertions(+)

diff --git a/miscmaths.cc b/miscmaths.cc
index 5e9cf87..d617395 100644
--- a/miscmaths.cc
+++ b/miscmaths.cc
@@ -1368,6 +1368,16 @@ ReturnMatrix sqrt(const Matrix& mat)
   return res;
 }
 
+ReturnMatrix sqrtm(const Matrix& mat)
+{
+	Matrix res, tmpU, tmpV;
+	DiagonalMatrix tmpD;
+	SVD(mat, tmpD, tmpU, tmpV);
+	res = tmpU*sqrt(tmpD)*tmpV.t();
+	res.Release();
+	return res;
+}
+
 ReturnMatrix log(const Matrix& mat)
 {
   Matrix res = mat;
diff --git a/miscmaths.h b/miscmaths.h
index 197ae44..bd1a994 100644
--- a/miscmaths.h
+++ b/miscmaths.h
@@ -214,6 +214,7 @@ namespace MISCMATHS {
   ReturnMatrix dist2(const Matrix& mat1, const Matrix& mat2);
   ReturnMatrix abs(const Matrix& mat);
   ReturnMatrix sqrt(const Matrix& mat);
+  ReturnMatrix sqrtm(const Matrix& mat);
   ReturnMatrix log(const Matrix& mat);
   ReturnMatrix exp(const Matrix& mat);
   ReturnMatrix tanh(const Matrix& mat);
-- 
GitLab