This bugzilla service is closed. All entries have been migrated to https://gitlab.com/libeigen/eigen

Bug 756

Summary: M.log().exp() != M for random 3x3 double matrix
Product: Eigen Reporter: Hauke Heibel <hauke.heibel>
Component: Unsupported modulesAssignee: Nobody <eigen.nobody>
Status: NEW ---    
Severity: Unknown CC: jitseniesen
Priority: Normal    
Version: 3.2   
Hardware: x86 - general   
OS: Windows   
Whiteboard:
Attachments:
Description Flags
Sample code to reproduce the issue none

Description Hauke Heibel 2014-03-10 13:45:36 UTC
Created attachment 426 [details]
Sample code to reproduce the issue

The code attached in the sample file does not work, i.e.

  Matrix3d M = Matrix3d::Random();
  bool is_approx = M.isApprox(M.log().exp(), 1e-5);

evaluates to is_approx == false.

The weird part is that the general interpolation works (see attached example).

My compiler is VC11, 64bit.
Comment 1 Hauke Heibel 2014-03-10 15:15:44 UTC
Sample output on VC11:

M.log().exp() == M evaluates to false

  M             =  -0.997497   0.617481  -0.299417
  0.127171   0.170019   0.791925
 -0.613392 -0.0402539    0.64568

  M.log().exp() =   1.06493 -0.256064   0.38904
-0.419692  0.401644  0.609377
 0.040232 -0.317098  0.863866

interp(M,N,s) == interp(N,M,1-s) evaluates to true
Comment 2 Jitse Niesen 2014-03-15 21:54:29 UTC
I tried it on Debian computer and found that with GCC 4.8.2, 4.7.3, 4.6.4, 4.5.3 and 4.4.7 and with LLVM 3.3 it works fine (compiled with -O3 in 64 bits). However, Christoph said that his version of GCC (I think 4.7.1) generates an Internal Compiler Error.
Comment 3 Nobody 2019-12-04 13:03:49 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to gitlab.com's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.com/libeigen/eigen/issues/756.