<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
  <channel>
    <title>MaplePrimes - answers and comments on Question, solve is misbehaving</title>
    <link>http://www.mapleprimes.com/questions/35731-Solve-Is-Misbehaving</link>
    <language>en-us</language>
    <copyright>2026 Maplesoft, A Division of Waterloo Maple Inc.</copyright>
    <generator>Maplesoft Document System</generator>
    <lastBuildDate>Thu, 11 Jun 2026 09:41:04 GMT</lastBuildDate>
    <pubDate>Thu, 11 Jun 2026 09:41:04 GMT</pubDate>
    <itunes:subtitle />
    <itunes:summary />
    <description>The latest answers and comments added to the Question, solve is misbehaving</description>
    <image>
      <url>http://www.mapleprimes.com/images/mapleprimeswhite.jpg</url>
      <title>MaplePrimes - answers and comments on Question, solve is misbehaving</title>
      <link>http://www.mapleprimes.com/questions/35731-Solve-Is-Misbehaving</link>
    </image>
    <item>
      <title>One-level evaluation</title>
      <link>http://www.mapleprimes.com/questions/35731-Solve-Is-Misbehaving?ref=Feed:MaplePrimes:solve is misbehaving:Comments#answer204083</link>
      <itunes:summary>&lt;p&gt;Local variables and parameters evaluate differently from global variables. Quoting from ?eval (seventh paragraph of Description):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;nbsp;The default evaluation rules in Maple are full evaluation for global variables, and one-level evaluation for local variables and parameters.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;When your &lt;strong&gt;eq2 &lt;/strong&gt;(in procedure &lt;strong&gt;f&lt;/strong&gt;) is evaluated to one level, that leaves its &lt;strong&gt;x&amp;nbsp;&lt;/strong&gt;unevaluated. So, the cure is to use &lt;strong&gt;eval(eq2)&lt;/strong&gt;, which forces a full recursive evaluation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;restart;&lt;br /&gt;f:= proc()&lt;br /&gt;local &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x,y,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eq1:= 5+3*x=0,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eq2:= 2+7*x-3*y-5*x*y=0&lt;br /&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x:= solve(eq1,x):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; y:= solve(eval(eq2),y):&lt;br /&gt;lprint('x'=x,'y'=y);&lt;br /&gt;end proc:&lt;br /&gt;&lt;br /&gt;f();&lt;br /&gt;&lt;/strong&gt;x = -5/3, y = 29/16&lt;/p&gt;
&lt;p&gt;To address your second question, about &lt;strong&gt;||&lt;/strong&gt;: The &lt;strong&gt;|| &lt;/strong&gt;operator simply was not intended to concatenate arbitrary expressions. It was intended as a convenient way to create indexed symbols. What you are trying to achieve can be easily done with the formatted print statement, &lt;strong&gt;printf&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;printf("x is %a", -5/3);&lt;/strong&gt;&lt;/p&gt;</itunes:summary>
      <description>&lt;p&gt;Local variables and parameters evaluate differently from global variables. Quoting from ?eval (seventh paragraph of Description):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;nbsp;The default evaluation rules in Maple are full evaluation for global variables, and one-level evaluation for local variables and parameters.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;When your &lt;strong&gt;eq2 &lt;/strong&gt;(in procedure &lt;strong&gt;f&lt;/strong&gt;) is evaluated to one level, that leaves its &lt;strong&gt;x&amp;nbsp;&lt;/strong&gt;unevaluated. So, the cure is to use &lt;strong&gt;eval(eq2)&lt;/strong&gt;, which forces a full recursive evaluation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;restart;&lt;br /&gt;f:= proc()&lt;br /&gt;local &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x,y,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eq1:= 5+3*x=0,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eq2:= 2+7*x-3*y-5*x*y=0&lt;br /&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x:= solve(eq1,x):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; y:= solve(eval(eq2),y):&lt;br /&gt;lprint('x'=x,'y'=y);&lt;br /&gt;end proc:&lt;br /&gt;&lt;br /&gt;f();&lt;br /&gt;&lt;/strong&gt;x = -5/3, y = 29/16&lt;/p&gt;
&lt;p&gt;To address your second question, about &lt;strong&gt;||&lt;/strong&gt;: The &lt;strong&gt;|| &lt;/strong&gt;operator simply was not intended to concatenate arbitrary expressions. It was intended as a convenient way to create indexed symbols. What you are trying to achieve can be easily done with the formatted print statement, &lt;strong&gt;printf&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;printf("x is %a", -5/3);&lt;/strong&gt;&lt;/p&gt;</description>
      <guid>204083</guid>
      <pubDate>Thu, 06 Mar 2014 07:14:43 Z</pubDate>
      <itunes:author>Carl Love</itunes:author>
      <author>Carl Love</author>
    </item>
    <item>
      <title>Comment</title>
      <link>http://www.mapleprimes.com/questions/35731-Solve-Is-Misbehaving?ref=Feed:MaplePrimes:solve is misbehaving:Comments#comment204086</link>
      <itunes:summary>&lt;p&gt;&lt;a href="/questions/35731-Solve-Is-Misbehaving#answer204083"&gt;@Carl Love&lt;/a&gt; Better late than never.&lt;/p&gt;</itunes:summary>
      <description>&lt;p&gt;&lt;a href="/questions/35731-Solve-Is-Misbehaving#answer204083"&gt;@Carl Love&lt;/a&gt; Better late than never.&lt;/p&gt;</description>
      <guid>204086</guid>
      <pubDate>Thu, 06 Mar 2014 07:41:30 Z</pubDate>
      <itunes:author>Markiyan Hirnyk</itunes:author>
      <author>Markiyan Hirnyk</author>
    </item>
  </channel>
</rss>