question: double startv ( SMat A , double [ ] [ ] wptr , int step , int n ) { double rnm2 , t ; double [ ] r ; int id , i ; rnm2 = svd_ddot ( n , wptr [ 0 ] , 1 , wptr [ 0 ] , 1 ) ; Random random = new Random ( 918273L + step ) ; r = wptr [ 0 ] ; for ( id = 0 ; id < 3 ; id ++ ) { if ( id > 0 || step > 0 || rnm2 == 0 ) for ( i = 0 ; i < n ; i ++ ) r [ i ] = random . nextDouble ( ) ; svd_dcopy ( n , wptr [ 0 ] , 1 , wptr [ 3 ] , 1 ) ; svd_opb ( A , wptr [ 3 ] , wptr [ 0 ] , OPBTemp ) ; svd_dcopy ( n , wptr [ 0 ] , 1 , wptr [ 3 ] , 1 ) ; rnm2 = svd_ddot ( n , wptr [ 0 ] , 1 , wptr [ 3 ] , 1 ) ; if ( rnm2 > 0.0 ) break ; } if ( rnm2 <= 0.0 ) { ierr = 8192 ; return ( - 1 ) ; } if ( step > 0 ) { for ( i = 0 ; i < step ; i ++ ) { store ( n , RETRQ , i , wptr [ 5 ] ) ; t = - svd_ddot ( n , wptr [ 3 ] , 1 , wptr [ 5 ] , 1 ) ; svd_daxpy ( n , t , wptr [ 5 ] , 1 , wptr [ 0 ] , 1 ) ; } t = svd_ddot ( n , wptr [ 4 ] , 1 , wptr [ 0 ] , 1 ) ; svd_daxpy ( n , - t , wptr [ 2 ] , 1 , wptr [ 0 ] , 1 ) ; svd_dcopy ( n , wptr [ 0 ] , 1 , wptr [ 3 ] , 1 ) ; t = svd_ddot ( n , wptr [ 3 ] , 1 , wptr [ 0 ] , 1 ) ; if ( t <= eps * rnm2 ) t = 0.0 ; rnm2 = t ; } return ( Math . sqrt ( rnm2 ) ) ; }
target:  Description ----------- Function delivers a starting vector in r and returns |r|; it returns  zero if the range is spanned, and ierr is non-zero if no starting  vector within range of operator can be found. Parameters  --------- (input) n      dimension of the eigenproblem matrix B wptr   array of pointers that point to work space j      starting index for a Lanczos run eps    machine epsilon (relative precision) (output) wptr   array of pointers that point to work space that contains r[j], q[j], q[j-1], p[j], p[j-1] ierr   error flag (nonzero if no starting vector can be found) Functions used -------------- BLAS		svd_ddot, svd_dcopy, svd_daxpy USER		svd_opb, store MISC		random