Example #1
0
LIS_INT lis_vector_get_value(LIS_VECTOR v, LIS_INT i, LIS_SCALAR *value)
{
	LIS_INT err,is,ie;

	LIS_DEBUG_FUNC_IN;

	err = lis_vector_check(v,LIS_VECTOR_CHECK_NULL);
	if( err ) return err;

	is  = v->is;
	ie  = v->ie;
	if( v->origin ) i--;
	if( i<is || i>=ie )
	{
		if( v->origin )
		{
			i++;
			is++;
			ie++;
		}
		LIS_SETERR3(LIS_ERR_ILL_ARG, "i(=%d) is less than %d or not less than %d\n",i,is,ie);
		return LIS_ERR_ILL_ARG;
	}

	*value = v->value[i-is];
	LIS_DEBUG_FUNC_OUT;
	return LIS_SUCCESS;
}
Example #2
0
int lis_vector_get_values(LIS_VECTOR v, int start, int count, LIS_SCALAR value[])
{
	int err,n,gn,i,is,ie;

	LIS_DEBUG_FUNC_IN;

	err = lis_vector_check(v,LIS_VECTOR_CHECK_NULL);
	if( err ) return err;

	n   = v->n;
	gn  = v->gn;
	is  = v->is;
	ie  = v->ie;
	if( v->origin ) start--;
	if( start<is || start>=ie )
	{
		if( v->origin )
		{
			start++;
			is++;
			ie++;
		}
		LIS_SETERR3(LIS_ERR_ILL_ARG, "start(=%d) is less than %d or larger than %d\n",start,is,ie);
		return LIS_ERR_ILL_ARG;
	}
	if( (start-is+count)>n )
	{
		LIS_SETERR3(LIS_ERR_ILL_ARG, "start(=%d) + count(=%d) exceeds the range of vector v(=%d).\n",start,count,ie);
		return LIS_ERR_ILL_ARG;
	}
	for(i=0;i<count;i++)
	{
		value[i] = v->value[start-is + i];
	}

	LIS_DEBUG_FUNC_OUT;
	return LIS_SUCCESS;
}
Example #3
0
int lis_vector_set_value(int flag, int i, LIS_SCALAR value, LIS_VECTOR v)
{
	int n,np,gn,is,ie;

	LIS_DEBUG_FUNC_IN;

	np  = v->np;
	n   = v->n;
	gn  = v->gn;
	is  = v->is;
	ie  = v->ie;
	if( v->origin ) i--;
	if( i<is || i>=ie )
	{
		if( v->origin )
		{
			is++;
			ie++;
			i++;
		}
		LIS_SETERR3(LIS_ERR_ILL_ARG, "i(=%d) is less than %d or larger than %d\n",i,is,ie);
		return LIS_ERR_ILL_ARG;
	}

	if(v->status==LIS_VECTOR_NULL)
	{
		v->value = (LIS_SCALAR *)lis_malloc( np*sizeof(LIS_SCALAR),"lis_vector_set_value::v->value" );
		if( NULL==v->value )
		{

			LIS_SETERR_MEM(np*sizeof(LIS_SCALAR));
			return LIS_OUT_OF_MEMORY;
		}
		v->is_copy = LIS_TRUE;
		v->status  = LIS_VECTOR_ASSEMBLING;
	}
	if(flag==LIS_INS_VALUE)
	{
		v->value[i-is] = value;
	}
	else
	{
		v->value[i-is] += value;
	}
	LIS_DEBUG_FUNC_OUT;
	return LIS_SUCCESS;
}
Example #4
0
LIS_INT lis_vector_set_values2(LIS_INT flag, LIS_INT start, LIS_INT count, LIS_SCALAR value[], LIS_VECTOR v)
{
	LIS_INT np,i,is,ie;

	LIS_DEBUG_FUNC_IN;

	np  = v->np;
	is  = v->is;
	ie  = v->ie;
	if(v->status==LIS_VECTOR_NULL)
	{
		v->value = (LIS_SCALAR *)lis_malloc( np*sizeof(LIS_SCALAR),"lis_vector_set_values::v->value" );
		if( NULL==v->value )
		{
			LIS_SETERR_MEM(np*sizeof(LIS_SCALAR));
			return LIS_OUT_OF_MEMORY;
		}
		v->is_copy = LIS_TRUE;
		v->status  = LIS_VECTOR_ASSEMBLING;
	}
	if(flag==LIS_INS_VALUE)
	{
		for(i=0;i<count;i++)
		{
			start = i;
			if( v->origin ) start--;
			if( start<is || start>=ie )
			{
				if( v->origin )
				{
					is++;
					ie++;
					start++;
					i++;
				}
				LIS_SETERR3(LIS_ERR_ILL_ARG, "%d is less than %d or not less than %d\n",start,is,ie);
				return LIS_ERR_ILL_ARG;
			}
			v->value[start-is] = value[i];
		}
	}
	else
	{
		for(i=0;i<count;i++)
		{
			start = i;
			if( v->origin ) start++;
			if( start<is || start>=ie )
			{
				if( v->origin )
				{
					is++;
					ie++;
					start++;
					i++;
				}
				LIS_SETERR3(LIS_ERR_ILL_ARG, "%d is less than %d or not less than %d\n",start,is,ie);
				return LIS_ERR_ILL_ARG;
			}
			v->value[start-is] += value[i];
		}
	}

	LIS_DEBUG_FUNC_OUT;
	return LIS_SUCCESS;
}