<HTML> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <!-- Created on December, 22 2009 by texi2html 1.64 --> <!-- Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author) Karl Berry <karl@freefriends.org> Olaf Bachmann <obachman@mathematik.uni-kl.de> and many others. Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de> Send bugs and suggestions to <texi2html@mathematik.uni-kl.de> --> <HEAD> <TITLE>APRON 0.9.10: Sequel of the small example</TITLE> <META NAME="description" CONTENT="APRON 0.9.10: Sequel of the small example"> <META NAME="keywords" CONTENT="APRON 0.9.10: Sequel of the small example"> <META NAME="resource-type" CONTENT="document"> <META NAME="distribution" CONTENT="global"> <META NAME="Generator" CONTENT="texi2html 1.64"> </HEAD> <BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"> <A NAME="SEC44"></A> <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="apron_12.html#SEC43"> < </A>]</TD> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="apron_14.html#SEC45"> > </A>]</TD> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="apron_8.html#SEC39"> << </A>]</TD> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="apron_9.html#SEC40"> Up </A>]</TD> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="apron_15.html#SEC46"> >> </A>]</TD> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="apron.html#SEC_Top">Top</A>]</TD> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="apron_toc.html#SEC_Contents">Contents</A>]</TD> <TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="apron_abt.html#SEC_About"> ? </A>]</TD> </TR></TABLE> <HR SIZE=1> <H3> Sequel of the small example </H3> <!--docid::SEC44::--> An environment can be created as follows: <P> <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>/* Create an environment with 6 real variables */ ap_var_t name_of_dim[6] = { "x","y","z","u","w","v" }; ap_environment_t* env = ap_environment_alloc(NULL,0,name_of_dim,6); </FONT></pre></td></tr></table></P><P> Then, we build an array of constraints. At level 1, an array of constraints is an abstract datatype, which requires careful manipulation w.r.t. memory management. </P><P> <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>/* Create an array of constraints of size 2 */ ap_lincons1_array_t array = ap_lincons1_array_make(env,2); /* 1.a Creation of an inequality constraint */ ap_linexpr1_t expr = ap_linexpr1_make(env,AP_LINEXPR_SPARSE,1); ap_lincons1_t cons = ap_lincons1_make(AP_CONS_SUP,&expr,NULL); /* Now expr is memory-managed by cons */ /* 1.b Fill the constraint */ ap_lincons1_set_list(&cons, AP_COEFF_S_INT,"x", AP_CST_S_FRAC,1,2, AP_END); /* 1.c Put in the array */ ap_lincons1_array_set(&array,0,&cons); /* Now cons is memory-managed by array */ /* 2.a Creation of an inequality constraint */ expr = ap_linexpr1_make(env,AP_LINEXPR_SPARSE,2); cons = ap_lincons1_make(AP_CONS_SUPEQ,&expr,NULL); /* The old cons is not lost, because it is stored in the array. It would be an error to clear it (same for expr). */ /* 2.b Fill the constraint */ ap_lincons1_set_list(&cons, AP_COEFF_S_INT,1,"x", AP_COEFF_S_INT,1,"y", AP_COEFF_S_INT,1,"z", AP_END); /* 2.c Put in the array */ ap_lincons1_array_set(&array,1,&cons); </FONT></pre></td></tr></table></P><P> Last we can build an abstract value. </P><P> <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>/* Creation of an abstract value defined by the array of constraints */ ap_abstract1_t abs = ap_abstract1_of_lincons_array(man,env,&array); fprintf(stdout,"Abstract value:\n"); ap_abstract1_fprint(stdout,man,&abs); </FONT></pre></td></tr></table></P><P> We now deallocate everything: </P><P> <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>/* deallocation */ ap_lincons1_array_clear(&array); ap_abstract1_clear(&abs); ap_environment_free(env); ap_manager_free(man); </FONT></pre></td></tr></table></P><P> <A NAME="Typing issue in C"></A> <HR SIZE=1> <BR> <FONT SIZE="-1"> This document was generated by <I>Bertrand Jeannet</I> on <I>December, 22 2009</I> using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html "><I>texi2html</I></A> </BODY> </HTML>