Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 5 Oct 2016 04:28:06 +0000 (UTC)
From:      Jan Beich <jbeich@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r423317 - in head/math/eigen3: . files
Message-ID:  <201610050428.u954S6e6024816@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jbeich
Date: Wed Oct  5 04:28:06 2016
New Revision: 423317
URL: https://svnweb.freebsd.org/changeset/ports/423317

Log:
  math/eigen3: unbreak consumers on 9.x after r421231
  
  In file included from /usr/local/include/eigen3/unsupported/Eigen/MatrixFunctions:58,
                   from modules/contrib/src/rgbdodometry.cpp:65:
  /usr/local/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h: In member function 'void Eigen::MatrixExponential<MatrixType>::computeUV(float)':
  /usr/local/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h:296: error: call of overloaded 'pow(int, int&)' is ambiguous
  /usr/include/math.h:210: note: candidates are: double pow(double, double)
  /usr/include/c++/4.2/cmath:357: note:                 float std::pow(float, float)
  /usr/include/c++/4.2/cmath:361: note:                 long double std::pow(long double, long double)
  /usr/include/c++/4.2/cmath:365: note:                 double std::pow(double, int)
  /usr/include/c++/4.2/cmath:369: note:                 float std::pow(float, int)
  /usr/include/c++/4.2/cmath:373: note:                 long double std::pow(long double, int)
  
  Reported by:	pkg-fallout

Added:
  head/math/eigen3/files/
  head/math/eigen3/files/patch-unsupported_Eigen_src_MatrixFunctions_MatrixExponential.h   (contents, props changed)
Modified:
  head/math/eigen3/Makefile   (contents, props changed)

Modified: head/math/eigen3/Makefile
==============================================================================
--- head/math/eigen3/Makefile	Wed Oct  5 04:27:47 2016	(r423316)
+++ head/math/eigen3/Makefile	Wed Oct  5 04:28:06 2016	(r423317)
@@ -2,6 +2,7 @@
 
 PORTNAME=	eigen
 PORTVERSION=	3.2.9
+PORTREVISION=	1
 CATEGORIES=	math
 MASTER_SITES=	https://bitbucket.org/${PORTNAME}/${PORTNAME}/get/
 DISTNAME=	${PORTVERSION}

Added: head/math/eigen3/files/patch-unsupported_Eigen_src_MatrixFunctions_MatrixExponential.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/math/eigen3/files/patch-unsupported_Eigen_src_MatrixFunctions_MatrixExponential.h	Wed Oct  5 04:28:06 2016	(r423317)
@@ -0,0 +1,63 @@
+Back out 8125108ba3e8 to unbreak consumers on libstdc++ 4.2
+
+  In file included from /usr/local/include/eigen3/unsupported/Eigen/MatrixFunctions:58,
+                   from modules/contrib/src/rgbdodometry.cpp:65:
+  /usr/local/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h: In member function 'void Eigen::MatrixExponential<MatrixType>::computeUV(float)':
+  /usr/local/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h:296: error: call of overloaded 'pow(int, int&)' is ambiguous
+  /usr/include/math.h:210: note: candidates are: double pow(double, double)
+  /usr/include/c++/4.2/cmath:357: note:                 float std::pow(float, float)
+  /usr/include/c++/4.2/cmath:361: note:                 long double std::pow(long double, long double)
+  /usr/include/c++/4.2/cmath:365: note:                 double std::pow(double, int)
+  /usr/include/c++/4.2/cmath:369: note:                 float std::pow(float, int)
+  /usr/include/c++/4.2/cmath:373: note:                 long double std::pow(long double, int)
+
+--- unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h.orig	2016-07-18 14:28:24 UTC
++++ unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h
+@@ -293,7 +293,11 @@
+     const float maxnorm = 3.925724783138660f;
+     frexp(m_l1norm / maxnorm, &m_squarings);
+     if (m_squarings < 0) m_squarings = 0;
++#if !defined(__GLIBCXX__) || __GLIBCXX__ > 20070831
+     MatrixType A = m_M / Scalar(pow(2, m_squarings));
++#else
++    MatrixType A = m_M / pow(Scalar(2), m_squarings);
++#endif
+     pade7(A);
+   }
+ }
+@@ -315,7 +315,11 @@
+     const double maxnorm = 5.371920351148152;
+     frexp(m_l1norm / maxnorm, &m_squarings);
+     if (m_squarings < 0) m_squarings = 0;
++#if !defined(__GLIBCXX__) || __GLIBCXX__ > 20070831
+     MatrixType A = m_M / Scalar(pow(2, m_squarings));
++#else
++    MatrixType A = m_M / pow(Scalar(2), m_squarings);
++#endif
+     pade13(A);
+   }
+ }
+@@ -340,7 +340,11 @@
+     const long double maxnorm = 4.0246098906697353063L;
+     frexp(m_l1norm / maxnorm, &m_squarings);
+     if (m_squarings < 0) m_squarings = 0;
++#if !defined(__GLIBCXX__) || __GLIBCXX__ > 20070831
+     MatrixType A = m_M / Scalar(pow(2, m_squarings));
++#else
++    MatrixType A = m_M / pow(Scalar(2), m_squarings);
++#endif
+     pade13(A);
+   }
+ #elif LDBL_MANT_DIG <= 106  // double-double
+@@ -376,7 +376,11 @@
+     const long double maxnorm = 2.884233277829519311757165057717815L;
+     frexp(m_l1norm / maxnorm, &m_squarings);
+     if (m_squarings < 0) m_squarings = 0;
++#if !defined(__GLIBCXX__) || __GLIBCXX__ > 20070831
+     MatrixType A = m_M / Scalar(pow(2, m_squarings));
++#else
++    MatrixType A = m_M / pow(Scalar(2), m_squarings);
++#endif
+     pade17(A);
+   }
+ #else



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201610050428.u954S6e6024816>