update and add dual likelihood

the reason is 
```c++
eigen_Kernel_LsD.triangularView<Lower>()=Kernel_L*Kernel_D.array().sqrt().matrix().asDiagonal();
```
this line only init the lower Triangular part of the matrix. The memory checker will complain that it uses uninit-ed memory space.