1*bf2c3715SXin Li; *************************************************************** 2*bf2c3715SXin Li; * Eigen Visualizer 3*bf2c3715SXin Li; * 4*bf2c3715SXin Li; * Author: Hauke Heibel <[email protected]> 5*bf2c3715SXin Li; * 6*bf2c3715SXin Li; * Support the enhanced debugging of the following Eigen 7*bf2c3715SXin Li; * types (*: any, +:fixed dimension) : 8*bf2c3715SXin Li; * 9*bf2c3715SXin Li; * - Eigen::Matrix<*,4,1,*,*,*> and Eigen::Matrix<*,1,4,*,*,*> 10*bf2c3715SXin Li; * - Eigen::Matrix<*,3,1,*,*,*> and Eigen::Matrix<*,1,3,*,*,*> 11*bf2c3715SXin Li; * - Eigen::Matrix<*,2,1,*,*,*> and Eigen::Matrix<*,1,2,*,*,*> 12*bf2c3715SXin Li; * - Eigen::Matrix<*,-1,-1,*,*,*> 13*bf2c3715SXin Li; * - Eigen::Matrix<*,+,-1,*,*,*> 14*bf2c3715SXin Li; * - Eigen::Matrix<*,-1,+,*,*,*> 15*bf2c3715SXin Li; * - Eigen::Matrix<*,+,+,*,*,*> 16*bf2c3715SXin Li; * 17*bf2c3715SXin Li; * Matrices are displayed properly independently of the memory 18*bf2c3715SXin Li; * alignment (RowMajor vs. ColMajor). 19*bf2c3715SXin Li; * 20*bf2c3715SXin Li; * This file is distributed WITHOUT ANY WARRANTY. Please ensure 21*bf2c3715SXin Li; * that your original autoexp.dat file is copied to a safe 22*bf2c3715SXin Li; * place before proceeding with its modification. 23*bf2c3715SXin Li; *************************************************************** 24*bf2c3715SXin Li 25*bf2c3715SXin Li[Visualizer] 26*bf2c3715SXin Li 27*bf2c3715SXin Li; Fixed size 4-vectors 28*bf2c3715SXin LiEigen::Matrix<*,4,1,*,*,*>|Eigen::Matrix<*,1,4,*,*,*>{ 29*bf2c3715SXin Li children 30*bf2c3715SXin Li ( 31*bf2c3715SXin Li #( 32*bf2c3715SXin Li [internals]: [$c,!], 33*bf2c3715SXin Li x : ($c.m_storage.m_data.array)[0], 34*bf2c3715SXin Li y : ($c.m_storage.m_data.array)[1], 35*bf2c3715SXin Li z : ($c.m_storage.m_data.array)[2], 36*bf2c3715SXin Li w : ($c.m_storage.m_data.array)[3] 37*bf2c3715SXin Li ) 38*bf2c3715SXin Li ) 39*bf2c3715SXin Li 40*bf2c3715SXin Li preview 41*bf2c3715SXin Li ( 42*bf2c3715SXin Li #( 43*bf2c3715SXin Li "[", 44*bf2c3715SXin Li 4, 45*bf2c3715SXin Li "](", 46*bf2c3715SXin Li #array(expr: $e.m_storage.m_data.array[$i], size: 4), 47*bf2c3715SXin Li ")" 48*bf2c3715SXin Li ) 49*bf2c3715SXin Li ) 50*bf2c3715SXin Li} 51*bf2c3715SXin Li 52*bf2c3715SXin Li; Fixed size 3-vectors 53*bf2c3715SXin LiEigen::Matrix<*,3,1,*,*,*>|Eigen::Matrix<*,1,3,*,*,*>{ 54*bf2c3715SXin Li children 55*bf2c3715SXin Li ( 56*bf2c3715SXin Li #( 57*bf2c3715SXin Li [internals]: [$c,!], 58*bf2c3715SXin Li x : ($c.m_storage.m_data.array)[0], 59*bf2c3715SXin Li y : ($c.m_storage.m_data.array)[1], 60*bf2c3715SXin Li z : ($c.m_storage.m_data.array)[2] 61*bf2c3715SXin Li ) 62*bf2c3715SXin Li ) 63*bf2c3715SXin Li 64*bf2c3715SXin Li preview 65*bf2c3715SXin Li ( 66*bf2c3715SXin Li #( 67*bf2c3715SXin Li "[", 68*bf2c3715SXin Li 3, 69*bf2c3715SXin Li "](", 70*bf2c3715SXin Li #array(expr: $e.m_storage.m_data.array[$i], size: 3), 71*bf2c3715SXin Li ")" 72*bf2c3715SXin Li ) 73*bf2c3715SXin Li ) 74*bf2c3715SXin Li} 75*bf2c3715SXin Li 76*bf2c3715SXin Li; Fixed size 2-vectors 77*bf2c3715SXin LiEigen::Matrix<*,2,1,*,*,*>|Eigen::Matrix<*,1,2,*,*,*>{ 78*bf2c3715SXin Li children 79*bf2c3715SXin Li ( 80*bf2c3715SXin Li #( 81*bf2c3715SXin Li [internals]: [$c,!], 82*bf2c3715SXin Li x : ($c.m_storage.m_data.array)[0], 83*bf2c3715SXin Li y : ($c.m_storage.m_data.array)[1] 84*bf2c3715SXin Li ) 85*bf2c3715SXin Li ) 86*bf2c3715SXin Li 87*bf2c3715SXin Li preview 88*bf2c3715SXin Li ( 89*bf2c3715SXin Li #( 90*bf2c3715SXin Li "[", 91*bf2c3715SXin Li 2, 92*bf2c3715SXin Li "](", 93*bf2c3715SXin Li #array(expr: $e.m_storage.m_data.array[$i], size: 2), 94*bf2c3715SXin Li ")" 95*bf2c3715SXin Li ) 96*bf2c3715SXin Li ) 97*bf2c3715SXin Li} 98*bf2c3715SXin Li 99*bf2c3715SXin Li; Fixed size 1-vectors 100*bf2c3715SXin LiEigen::Matrix<*,1,1,*,*,*>|Eigen::Matrix<*,1,1,*,*,*>{ 101*bf2c3715SXin Li children 102*bf2c3715SXin Li ( 103*bf2c3715SXin Li #( 104*bf2c3715SXin Li [internals]: [$c,!], 105*bf2c3715SXin Li x : ($c.m_storage.m_data.array)[0] 106*bf2c3715SXin Li ) 107*bf2c3715SXin Li ) 108*bf2c3715SXin Li 109*bf2c3715SXin Li preview 110*bf2c3715SXin Li ( 111*bf2c3715SXin Li #( 112*bf2c3715SXin Li "[", 113*bf2c3715SXin Li 1, 114*bf2c3715SXin Li "](", 115*bf2c3715SXin Li #array(expr: $e.m_storage.m_data.array[$i], size: 1), 116*bf2c3715SXin Li ")" 117*bf2c3715SXin Li ) 118*bf2c3715SXin Li ) 119*bf2c3715SXin Li} 120*bf2c3715SXin Li 121*bf2c3715SXin Li; Dynamic matrices (ColMajor and RowMajor support) 122*bf2c3715SXin LiEigen::Matrix<*,-1,-1,*,*,*>{ 123*bf2c3715SXin Li children 124*bf2c3715SXin Li ( 125*bf2c3715SXin Li #( 126*bf2c3715SXin Li [internals]: [$c,!], 127*bf2c3715SXin Li rows: $c.m_storage.m_rows, 128*bf2c3715SXin Li cols: $c.m_storage.m_cols, 129*bf2c3715SXin Li ; Check for RowMajorBit 130*bf2c3715SXin Li #if ($c.Flags & 0x1) ( 131*bf2c3715SXin Li #array( 132*bf2c3715SXin Li rank: 2, 133*bf2c3715SXin Li base: 0, 134*bf2c3715SXin Li expr: ($c.m_storage.m_data)[($i % $c.m_storage.m_rows)*$c.m_storage.m_cols + (($i- $i % $c.m_storage.m_rows)/$c.m_storage.m_rows)], 135*bf2c3715SXin Li size: ($r==1)*$c.m_storage.m_rows+($r==0)*$c.m_storage.m_cols 136*bf2c3715SXin Li ) 137*bf2c3715SXin Li ) #else ( 138*bf2c3715SXin Li #array( 139*bf2c3715SXin Li rank: 2, 140*bf2c3715SXin Li base: 0, 141*bf2c3715SXin Li expr: ($c.m_storage.m_data)[$i], 142*bf2c3715SXin Li size: ($r==1)*$c.m_storage.m_rows+($r==0)*$c.m_storage.m_cols 143*bf2c3715SXin Li ) 144*bf2c3715SXin Li ) 145*bf2c3715SXin Li ) 146*bf2c3715SXin Li ) 147*bf2c3715SXin Li 148*bf2c3715SXin Li preview 149*bf2c3715SXin Li ( 150*bf2c3715SXin Li #( 151*bf2c3715SXin Li "[", 152*bf2c3715SXin Li $c.m_storage.m_rows, 153*bf2c3715SXin Li ",", 154*bf2c3715SXin Li $c.m_storage.m_cols, 155*bf2c3715SXin Li "](", 156*bf2c3715SXin Li #array( 157*bf2c3715SXin Li expr : [($c.m_storage.m_data)[$i],g], 158*bf2c3715SXin Li size : $c.m_storage.m_rows*$c.m_storage.m_cols 159*bf2c3715SXin Li ), 160*bf2c3715SXin Li ")" 161*bf2c3715SXin Li ) 162*bf2c3715SXin Li ) 163*bf2c3715SXin Li} 164*bf2c3715SXin Li 165*bf2c3715SXin Li; Fixed rows, dynamic columns matrix (ColMajor and RowMajor support) 166*bf2c3715SXin LiEigen::Matrix<*,*,-1,*,*,*>{ 167*bf2c3715SXin Li children 168*bf2c3715SXin Li ( 169*bf2c3715SXin Li #( 170*bf2c3715SXin Li [internals]: [$c,!], 171*bf2c3715SXin Li rows: $c.RowsAtCompileTime, 172*bf2c3715SXin Li cols: $c.m_storage.m_cols, 173*bf2c3715SXin Li ; Check for RowMajorBit 174*bf2c3715SXin Li #if ($c.Flags & 0x1) ( 175*bf2c3715SXin Li #array( 176*bf2c3715SXin Li rank: 2, 177*bf2c3715SXin Li base: 0, 178*bf2c3715SXin Li expr: ($c.m_storage.m_data)[($i % $c.RowsAtCompileTime)*$c.m_storage.m_cols + (($i- $i % $c.RowsAtCompileTime)/$c.RowsAtCompileTime)], 179*bf2c3715SXin Li size: ($r==1)*$c.RowsAtCompileTime+($r==0)*$c.m_storage.m_cols 180*bf2c3715SXin Li ) 181*bf2c3715SXin Li ) #else ( 182*bf2c3715SXin Li #array( 183*bf2c3715SXin Li rank: 2, 184*bf2c3715SXin Li base: 0, 185*bf2c3715SXin Li expr: ($c.m_storage.m_data)[$i], 186*bf2c3715SXin Li size: ($r==1)*$c.RowsAtCompileTime+($r==0)*$c.m_storage.m_cols 187*bf2c3715SXin Li ) 188*bf2c3715SXin Li ) 189*bf2c3715SXin Li ) 190*bf2c3715SXin Li ) 191*bf2c3715SXin Li 192*bf2c3715SXin Li preview 193*bf2c3715SXin Li ( 194*bf2c3715SXin Li #( 195*bf2c3715SXin Li "[", 196*bf2c3715SXin Li $c.RowsAtCompileTime, 197*bf2c3715SXin Li ",", 198*bf2c3715SXin Li $c.m_storage.m_cols, 199*bf2c3715SXin Li "](", 200*bf2c3715SXin Li #array( 201*bf2c3715SXin Li expr : [($c.m_storage.m_data)[$i],g], 202*bf2c3715SXin Li size : $c.RowsAtCompileTime*$c.m_storage.m_cols 203*bf2c3715SXin Li ), 204*bf2c3715SXin Li ")" 205*bf2c3715SXin Li ) 206*bf2c3715SXin Li ) 207*bf2c3715SXin Li} 208*bf2c3715SXin Li 209*bf2c3715SXin Li; Dynamic rows, fixed columns matrix (ColMajor and RowMajor support) 210*bf2c3715SXin LiEigen::Matrix<*,-1,*,*,*,*>{ 211*bf2c3715SXin Li children 212*bf2c3715SXin Li ( 213*bf2c3715SXin Li #( 214*bf2c3715SXin Li [internals]: [$c,!], 215*bf2c3715SXin Li rows: $c.m_storage.m_rows, 216*bf2c3715SXin Li cols: $c.ColsAtCompileTime, 217*bf2c3715SXin Li ; Check for RowMajorBit 218*bf2c3715SXin Li #if ($c.Flags & 0x1) ( 219*bf2c3715SXin Li #array( 220*bf2c3715SXin Li rank: 2, 221*bf2c3715SXin Li base: 0, 222*bf2c3715SXin Li expr: ($c.m_storage.m_data)[($i % $c.m_storage.m_rows)*$c.ColsAtCompileTime + (($i- $i % $c.m_storage.m_rows)/$c.m_storage.m_rows)], 223*bf2c3715SXin Li size: ($r==1)*$c.m_storage.m_rows+($r==0)*$c.ColsAtCompileTime 224*bf2c3715SXin Li ) 225*bf2c3715SXin Li ) #else ( 226*bf2c3715SXin Li #array( 227*bf2c3715SXin Li rank: 2, 228*bf2c3715SXin Li base: 0, 229*bf2c3715SXin Li expr: ($c.m_storage.m_data)[$i], 230*bf2c3715SXin Li size: ($r==1)*$c.m_storage.m_rows+($r==0)*$c.ColsAtCompileTime 231*bf2c3715SXin Li ) 232*bf2c3715SXin Li ) 233*bf2c3715SXin Li ) 234*bf2c3715SXin Li ) 235*bf2c3715SXin Li 236*bf2c3715SXin Li preview 237*bf2c3715SXin Li ( 238*bf2c3715SXin Li #( 239*bf2c3715SXin Li "[", 240*bf2c3715SXin Li $c.m_storage.m_rows, 241*bf2c3715SXin Li ",", 242*bf2c3715SXin Li $c.ColsAtCompileTime, 243*bf2c3715SXin Li "](", 244*bf2c3715SXin Li #array( 245*bf2c3715SXin Li expr : [($c.m_storage.m_data)[$i],g], 246*bf2c3715SXin Li size : $c.m_storage.m_rows*$c.ColsAtCompileTime 247*bf2c3715SXin Li ), 248*bf2c3715SXin Li ")" 249*bf2c3715SXin Li ) 250*bf2c3715SXin Li ) 251*bf2c3715SXin Li} 252*bf2c3715SXin Li 253*bf2c3715SXin Li; Fixed size matrix (ColMajor and RowMajor support) 254*bf2c3715SXin LiEigen::Matrix<*,*,*,*,*,*>{ 255*bf2c3715SXin Li children 256*bf2c3715SXin Li ( 257*bf2c3715SXin Li #( 258*bf2c3715SXin Li [internals]: [$c,!], 259*bf2c3715SXin Li rows: $c.RowsAtCompileTime, 260*bf2c3715SXin Li cols: $c.ColsAtCompileTime, 261*bf2c3715SXin Li ; Check for RowMajorBit 262*bf2c3715SXin Li #if ($c.Flags & 0x1) ( 263*bf2c3715SXin Li #array( 264*bf2c3715SXin Li rank: 2, 265*bf2c3715SXin Li base: 0, 266*bf2c3715SXin Li expr: ($c.m_storage.m_data.array)[($i % $c.RowsAtCompileTime)*$c.ColsAtCompileTime + (($i- $i % $c.RowsAtCompileTime)/$c.RowsAtCompileTime)], 267*bf2c3715SXin Li size: ($r==1)*$c.RowsAtCompileTime+($r==0)*$c.ColsAtCompileTime 268*bf2c3715SXin Li ) 269*bf2c3715SXin Li ) #else ( 270*bf2c3715SXin Li #array( 271*bf2c3715SXin Li rank: 2, 272*bf2c3715SXin Li base: 0, 273*bf2c3715SXin Li expr: ($c.m_storage.m_data.array)[$i], 274*bf2c3715SXin Li size: ($r==1)*$c.RowsAtCompileTime+($r==0)*$c.ColsAtCompileTime 275*bf2c3715SXin Li ) 276*bf2c3715SXin Li ) 277*bf2c3715SXin Li ) 278*bf2c3715SXin Li ) 279*bf2c3715SXin Li 280*bf2c3715SXin Li preview 281*bf2c3715SXin Li ( 282*bf2c3715SXin Li #( 283*bf2c3715SXin Li "[", 284*bf2c3715SXin Li $c.RowsAtCompileTime, 285*bf2c3715SXin Li ",", 286*bf2c3715SXin Li $c.ColsAtCompileTime, 287*bf2c3715SXin Li "](", 288*bf2c3715SXin Li #array( 289*bf2c3715SXin Li expr : [($c.m_storage.m_data.array)[$i],g], 290*bf2c3715SXin Li size : $c.RowsAtCompileTime*$c.ColsAtCompileTime 291*bf2c3715SXin Li ), 292*bf2c3715SXin Li ")" 293*bf2c3715SXin Li ) 294*bf2c3715SXin Li ) 295*bf2c3715SXin Li} 296