public static boolean cs_utsolve ( Dcs U , double [ ] x ) { int p , j , n , Up [ ] , Ui [ ] ; double Ux [ ] ; if ( ! Dcs_util . CS_CSC ( U ) || x == null ) return ( false ) ; /* check inputs */ n = U . n ; Up = U . p ; Ui = U . i ; Ux = U . x ; for ( j = 0 ; j < n ; j ++ ) { for ( p = Up [ j ] ; p < Up [ j + 1 ] - 1 ; p ++ ) { x [ j ] -= Ux [ p ] * x [ Ui [ p ] ] ; } x [ j ] /= Ux [ Up [ j + 1 ] - 1 ] ; } return ( true ) ; }
Solves a lower triangular system U x = b where x and b are dense vectors . The diagonal of U must be the last entry of each column .