LIS_INT lis_vector_reciprocalex_m(LIS_VECTOR vx) { LIS_INT i,n; LIS_SCALAR *x,*xl; LIS_SCALAR one_hi,one_lo; LIS_QUAD_DECLAR; LIS_DEBUG_FUNC_IN; n = vx->n; x = vx->value; xl = vx->value_lo; one_hi = 1.0; one_lo = 0.0; #ifdef USE_VEC_COMP #pragma cdir nodep #endif #ifdef _OPENMP #ifndef USE_SSE2 #pragma omp parallel for private(i,p1,p2,tq,bhi,blo,chi,clo,sh,eh,sl,el,th,tl) #else #pragma omp parallel private(i,bh,ch,sh,wh,th,bl,cl,sl,wl,tl,p1,p2,t0,t1,t2,eh) #endif #endif for(i=0; i<n; i++) { #ifndef USE_SSE2 LIS_QUAD_DIV(x[i],xl[i],one_hi,one_lo,x[i],xl[i]); #else LIS_QUAD_DIV_SSE2(x[i],xl[i],one_hi,one_lo,x[i],xl[i]); #endif } LIS_DEBUG_FUNC_OUT; return LIS_SUCCESS; }
void lis_quad_div(LIS_QUAD *a, const LIS_QUAD *b, const LIS_QUAD *c) { LIS_QUAD_DECLAR; #ifndef USE_SSE2 LIS_QUAD_DIV(a->hi,a->lo,b->hi,b->lo,c->hi,c->lo); #else LIS_QUAD_DIV_SSE2(a->hi,a->lo,b->hi,b->lo,c->hi,c->lo); #endif }