status.i4.v = expression_evaluate_double_c(expr_stack.g.v, options.u4.v,
						   value.r8.r, units_text.i1a.r,

	This routine evaluates an algebraic expression which can contain
	device names.  This expression must have been parsed by an earlier
	call to expression_parse_double_c.

	expr_stack	expression stack to be evaluated
			(This should have been returned by an earlier
			 call to expression_parse_double_c.)
	options		evaluation options
			(EXPR_OPT_NONE -> no options selected,
			 EXPR_OPT_NO_STALE -> ignore stale data errors)
	value		returned value of the expression
			(A value of NULL can be passed for this argument
			 if the expression value is not needed.)
	units_text	returned device units text
			(LEN_DEV_UNITS characters)
			(A value of NULL can be passed for this argument
			 if units text is not needed.)
	error_string	returned error string (Allow at least 133 characters.)
			(A value of NULL can be passed for this argument
			 if this information is not needed.)

	This function returns ACNET status values as follows:

	OK			success
	CLIB_BUGCHK		null expression pointer passed
	CLIB_INVTYP		expression stack argument is not an expression
	CLIB_MEMFAIL		failed in allocating dynamic memory
	CLIB_SYNTAX		syntax error
	otherwise		other ACNET format error code

	This function requires the following include files:

	cbslib_h, acnet_errors_h

	Related functions:

	expression_parse_double_c, expression_evaluate_c, expression_parse_c,
	expression_free_c, expression_cancel_requests_c, expression_info_c

	C/C++ usage:

	static const char	expression_text[] = "2 * M:OUTTMP + 3.5";
	char	units_text[LEN_DEV_UNITS];
	char	*subst_devices = (char *) NULL;
	char	error_string[133];
	short	default_ftd = FTD_ONESHOT;
	int	status;
	int	text_length = 0;
	int	num_devices = 0;
	int	data_event_type = DIO_EVENT_TYPE_FTD;
	unsigned int	options = EXPR_OPT_PARSE_ONLY;
	double	value;
	void	*expr_stack;

	status = expression_parse_double_c(expression_text,text_length,
					   (void *) &default_ftd,options,

	status = expression_evaluate_double_c(expr_stack,EXPR_OPT_NONE,&value,

	status = expression_free_c(&expr_stack,options,error_string);