This forum has been archived. All content is frozen. Please use KDE Discuss instead.

.inverse() and FullPivLU.inverse() precision

Tags: None
(comma "," separated)
jensw
Registered Member
Posts
8
Karma
0
Using Eigen 3.3.4

the following test fails for me:

Code: Select all
Eigen::MatrixXd m=Eigen::MatrixXd::Zero(17,17);
  m<<-0.0107438,0.177662,-0.000893645,-0.000893645,-0.000893645,0.345174,-0.000591276,-0.000591276,-0.000591276,0.136613,0.110948,0.140527,0.115047,0.140527,0.115047,0.140527,0.115047,
2.183e-15,1.39936e-14,-0.2034,0.00238481,0.201015,-7.8295e-14,-0.174952,0.00205127,0.172901,-5.75953e-13,-7.55155e-13,-0.234829,-0.324284,0.232076,0.320482,0.00275331,0.00380215,
1.92294e-15,5.30409e-14,-0.114679,0.233489,-0.11881,-1.08691e-13,-0.0986399,0.200833,-0.102193,1.10298e-12,1.56415e-12,-0.132399,-0.182835,-0.137168,-0.189421,0.269568,0.372256,
9.81255e-05,-0.00180964,-0.165679,-0.165679,-0.165679,-0.00572861,-0.144589,-0.144589,-0.144589,-0.283887,-0.391777,0.0942211,0.13068,0.0942211,0.13068,0.0942211,0.13068,
0.0257368,-0.0923997,0.00531379,0.00531379,0.00531379,-2.45842,0.0248521,0.0248521,0.0248521,-0.0235266,0.870391,-0.021766,0.938627,-0.021766,0.938627,-0.021766,0.938627,
-6.05072e-15,-3.50553e-14,0.0320188,-0.217226,0.185207,2.84606e-13,0.164774,-1.11788,0.953107,-3.43579e-13,-7.51681e-12,-0.0107087,-0.224765,-0.0619426,-1.30011,0.0726513,1.52488,
-1.85212e-14,3.71612e-14,0.232345,-0.0884434,-0.143902,1.65531e-12,1.19569,-0.455144,-0.740541,-5.57708e-13,-1.28855e-11,-0.0777079,-1.63101,0.0481279,1.01016,0.0295799,0.620853,
-0.00067642,0.0030588,0.164587,0.164587,0.164587,0.0706733,0.85369,0.85369,0.85369,-0.0833538,-1.77428,0.0291688,0.555286,0.0291688,0.555286,0.0291688,0.555286,
2.67521e-15,1.49908e-14,-0.499711,0.0302687,0.469443,-8.25069e-14,0.794429,-0.0481205,-0.746308,-1.68595e-12,3.88068e-13,-0.631236,0.170551,0.593,-0.16022,0.0382355,-0.0103307,
-2.92301e-15,-4.20358e-14,0.253557,-0.559541,0.305984,2.74225e-14,-0.403099,0.889545,-0.486446,-4.63627e-12,1.28551e-12,0.320293,-0.0865389,0.386519,-0.104432,-0.706813,0.190971,
0.000103179,-0.000739357,-0.399322,-0.399322,-0.399322,-0.00417793,0.631921,0.631921,0.631921,-0.743087,0.196419,0.252682,-0.0664109,0.252682,-0.0664109,0.252682,-0.0664109,
0.00149008,-0.210613,0.0151116,0.0151116,0.0151116,-0.131439,-0.0188722,-0.0188722,-0.0188722,0.641757,-0.258506,0.662618,-0.303913,0.662618,-0.303913,0.662618,-0.303913,
-1.01256e-14,8.31141e-14,0.154221,-0.726494,0.572273,3.21687e-13,-0.180079,0.848303,-0.668224,-6.90137e-12,1.08126e-11,-0.16221,0.269927,-0.601918,1.00163,0.764127,-1.27156,
-1.4385e-14,4.61332e-14,0.749843,-0.241362,-0.508481,3.69788e-13,-0.875567,0.281831,0.593736,-1.00864e-11,1.59982e-11,-0.788686,1.31242,0.534821,-0.889976,0.253865,-0.422448,
8.45112e-05,-0.00427837,-0.539015,-0.539015,-0.539015,-0.00364986,0.62842,0.62842,0.62842,0.873707,-1.42717,-0.270316,0.466699,-0.270316,0.466699,-0.270316,0.466699,
0.220745,1.96298,0.000217492,0.000217492,0.000217492,-3.94464,-0.000657288,-0.000657288,-0.000657288,0.170958,0.775841,0.170979,0.77469,0.170979,0.77469,0.170979,0.77469,
-1.00858,0.364513,2.52534e-06,2.52534e-06,2.52534e-06,-0.192712,-5.74555e-07,-5.74555e-07,-5.74555e-07,-0.0243332,0.0351697,-0.0243273,0.0351687,-0.0243273,0.0351687,-0.0243273,0.0351687;
 
  Eigen::FullPivLU<Eigen::MatrixXd> dec(m);

bool check_inv=(m*dec.inverse()).isApprox(Eigen::MatrixXd::Identity(17,17),0.01);

Code: Select all
dec.isInvertible()
returns true.
Compiler is Intel 18.0.0.20170811

    fails with icc -O3 -DNDEBUG -march=native -mtune=native
    works with icc -O3 -DNDEBUG -march=native -mtune=native using a BLAS/BACKEND
    fails with icc -O2 -g
    works with icc -g

This is quite weird. Any ideas.

Cheers Jens


Bookmarks



Who is online

Registered users: Bing [Bot], Google [Bot], Sogou [Bot]