<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
  <channel>
    <title>MaplePrimes - comments on Post, Table of Isotopes</title>
    <link>http://www.mapleprimes.com/posts/99163-Table-Of-Isotopes</link>
    <language>en-us</language>
    <copyright>2026 Maplesoft, A Division of Waterloo Maple Inc.</copyright>
    <generator>Maplesoft Document System</generator>
    <lastBuildDate>Tue, 16 Jun 2026 14:08:28 GMT</lastBuildDate>
    <pubDate>Tue, 16 Jun 2026 14:08:28 GMT</pubDate>
    <itunes:subtitle />
    <itunes:summary />
    <description>The latest comments added to the Post, Table of Isotopes</description>
    <image>
      <url>http://www.mapleprimes.com/images/mapleprimeswhite.jpg</url>
      <title>MaplePrimes - comments on Post, Table of Isotopes</title>
      <link>http://www.mapleprimes.com/posts/99163-Table-Of-Isotopes</link>
    </image>
    <item>
      <title>Isotope as a proc</title>
      <link>http://www.mapleprimes.com/posts/99163-Table-Of-Isotopes?ref=Feed:MaplePrimes:Table of Isotopes:Comments#comment99220</link>
      <itunes:summary>&lt;p&gt;There was a small error I missed during the for loop when if a set of isotopes contained only 1 isotope my code wouldn't capture it properly, so I've fixed that.&amp;nbsp; And I have now slightly modified the code&amp;nbsp;into a procedure so you can size the isotope chart to any number of elements.&lt;/p&gt;
&lt;p&gt;Note to maplesoft: The Isotope table has not been updated for some time now.&amp;nbsp; Maple 14 contains the same number of isotopes as Maple 12, there have been a number of new discoveries since then.&amp;nbsp; I am requesting that you include updated data in your new releases / updates.&amp;nbsp; Thanks.&lt;/p&gt;
&lt;p&gt;IsotopeTable(116)&lt;br&gt;&lt;img src="/view.aspx?sf=99220/314619/isotopes.jpeg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="/view.aspx?sf=99220/314619/Isotope_-_procedur.mw"&gt;Isotope_-_procedur.mw&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;table width="576" align="center"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p style="margin: 0 0 0 0; padding-top: 0px; padding-bottom: 0px;"&gt;&lt;img style="vertical-align: -6;" src="/view.aspx?sf=99220/314619/c782dfad0aabda85d76a0ee657032653.gif" alt="" width="97" height="23"&gt;&lt;/p&gt;
&lt;p style="margin: 0 0 0 0; padding-top: 0px; padding-bottom: 0px;"&gt;&lt;img style="vertical-align: -6;" src="/view.aspx?sf=99220/314619/6e02547e696859b4aeccfbfd7e7253fa.gif" alt="" width="177" height="23"&gt;&lt;/p&gt;
&lt;p style="margin: 0 0 0 0; padding-top: 0px; padding-bottom: 0px;"&gt;&lt;img style="vertical-align: -6;" src="/view.aspx?sf=99220/314619/c811d25e0f6432b6f1c8836515d84d17.gif" alt="" width="88" height="23"&gt;&lt;/p&gt;
&lt;p style="margin: 0 0 0 0; padding-top: 0px; padding-bottom: 0px;"&gt;&lt;img style="vertical-align: -1697;" src="/view.aspx?sf=99220/314619/3816c796ae9944c2d98089e712d6e93f.gif" alt="" width="576" height="1714" align="middle"&gt;&lt;/p&gt;
&lt;p style="margin: 0 0 0 0; padding-top: 0px; padding-bottom: 0px;"&gt;&lt;img style="vertical-align: -6;" src="/view.aspx?sf=99220/314619/863930a49c813b74f01c7913c74ac50b.gif" alt="" width="122" height="23"&gt;&lt;/p&gt;
&lt;p style="margin: 0 0 0 0; padding-top: 0px; padding-bottom: 0px;"&gt;&lt;img style="vertical-align: -6;" src="/view.aspx?sf=99220/314619/a06d866c169e507abae1d0bc066271ff.gif" alt="" width="11" height="23"&gt;&lt;/p&gt;
&lt;p style="margin: 0 0 0 0; padding-top: 0px; padding-bottom: 0px;"&gt;&lt;img style="vertical-align: -6;" src="/view.aspx?sf=99220/314619/cc2dae8e4d80c2466be0bb9ee4fc5033.gif" alt="" width="11" height="23"&gt;&lt;/p&gt;
&lt;p style="margin: 0 0 0 0; padding-top: 0px; padding-bottom: 0px;"&gt;&lt;img style="vertical-align: -6;" src="/view.aspx?sf=99220/314619/49db099faa3e312311e2cb13dd3bebf3.gif" alt="" width="11" height="23"&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;</itunes:summary>
      <description>The latest comments added to the Post, Table of Isotopes</description>
      <guid>99220</guid>
      <pubDate>Sun, 21 Nov 2010 21:07:36 Z</pubDate>
      <itunes:author>Christopher2222</itunes:author>
      <author>Christopher2222</author>
    </item>
    <item>
      <title>small suggestions</title>
      <link>http://www.mapleprimes.com/posts/99163-Table-Of-Isotopes?ref=Feed:MaplePrimes:Table of Isotopes:Comments#comment99267</link>
      <itunes:summary>&lt;p&gt;That is quite fun. Please don't mind if I make a few really minor suggestions.&lt;/p&gt;
&lt;p&gt;Is there an `option remember` on (or under) convert/units? I ask because the code is converting each of 1 {year,day,hour,minute} into seconds. And it does that inside a double (nested) loop, hence repeating each of those conversions tens of thousands of times for your original size. It would look much cleaner (and be more good efficient practice) if instead it computed those values just once outside the loops, assigning to a few locals say.&lt;/p&gt;
&lt;p&gt;Is it necessary to make `c` a table rather than an outright Array? Is it necessary to call plots[display] when forming `jb`?&lt;/p&gt;
&lt;p&gt;In the loop in which you assign entries of `c`, using if..elif.. could it be that most all the conditions are unnecessarily being tested twice? I mean, consider the fact that you've ordered all the conditionals (great). So if b[i,j] is found to &lt;em&gt;not&lt;/em&gt; be in a given range (b[i,j]&amp;lt;A and b[i,j]&amp;gt;=B) then why subsequently &lt;em&gt;retest&lt;/em&gt; b[i,j]&amp;lt;B, given that you've already sorted the conditionals so that A&amp;gt;B&amp;gt;C, etc?&lt;/p&gt;
&lt;p&gt;It's not great form to load packages outside the proc definition (if members are used in that proc) when it can be done some much more reliably and cleanly inside the proc body with the `uses` construct.&lt;/p&gt;
&lt;p&gt;Maybe you could label the axes more helpfully, for the non-expert?&lt;/p&gt;
&lt;!--break--&gt;
&lt;p&gt;acer&lt;/p&gt;</itunes:summary>
      <description>The latest comments added to the Post, Table of Isotopes</description>
      <guid>99267</guid>
      <pubDate>Mon, 22 Nov 2010 11:29:58 Z</pubDate>
      <itunes:author>acer</itunes:author>
      <author>acer</author>
    </item>
    <item>
      <title>Thanks</title>
      <link>http://www.mapleprimes.com/posts/99163-Table-Of-Isotopes?ref=Feed:MaplePrimes:Table of Isotopes:Comments#comment99283</link>
      <itunes:summary>&lt;p&gt;&lt;a href="http://www.mapleprimes.com/posts/99163-Table-Of-Isotopes#comment99267"&gt;@acer&lt;/a&gt;&amp;nbsp;Thank you for your helpful suggestions.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I addressed most of what you pointed out and have an update here.&amp;nbsp; In my excitement over&amp;nbsp;creating a new isotope table for maple I didn't even realize I had calculated conditions for seconds twice.&amp;nbsp; The only thing I don't quite understand yet is your suggestion for testing conditions twice (b[i,j]&amp;lt;b).&lt;/p&gt;
&lt;p&gt;In the meantime here is&amp;nbsp;my updated procedure.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="/view.aspx?sf=99283/314735/New_Isotope_proc.mw"&gt;New_Isotope_proc.mw&lt;/a&gt;&lt;/p&gt;</itunes:summary>
      <description>The latest comments added to the Post, Table of Isotopes</description>
      <guid>99283</guid>
      <pubDate>Mon, 22 Nov 2010 18:28:39 Z</pubDate>
      <itunes:author>Christopher2222</itunes:author>
      <author>Christopher2222</author>
    </item>
    <item>
      <title>important example</title>
      <link>http://www.mapleprimes.com/posts/99163-Table-Of-Isotopes?ref=Feed:MaplePrimes:Table of Isotopes:Comments#comment99324</link>
      <itunes:summary>&lt;p&gt;&lt;a href="http://www.mapleprimes.com/posts/99163-Table-Of-Isotopes#comment99283"&gt;@Christopher2222&lt;/a&gt; I would say that this Document is an important example of current GUI performance.&lt;/p&gt;
&lt;p&gt;If I download and run your latest revision, which is a Document with 2D Math input for the coded procedure, I see following.&lt;/p&gt;
&lt;p&gt;I first split the proc defn out from the actual call to IsotopeTable(). That's key to seeing one big effect. It takes the Standard GUI 1.2 CPU seconds and 1.9 real-time (wall clock) seconds just to parse and print that proc code. That is...worrying. I call it a bug.&lt;/p&gt;
&lt;p&gt;So I converted the code to 1D Maple Notation. And run it in a Worksheet (just because I find it easier to navigate and execute). Then the proc definition code runs lightning fast, in effectively zero time. Same for Standard as for Classic.&lt;/p&gt;
&lt;p&gt;Then I call IsotopeTable(116), in all three variations: 2D code in Document, 1D code in Standard Worksheet, and 1D code in Classic GUI. It plots and displays a result, after a few seconds. The Classic GUI remains very smooth and responsive. The 1D Worksheet and the 2D Document instances both gets a bit sticky and doesn't scroll smoothly whenever the plot transitions from being "off screen" to "on screen" or is half-visible.&lt;/p&gt;
&lt;p&gt;If I add more calls to IsotopeTable() then Classic stays smooth and responsive while Standard gets harder and harder to scoll and manipulate. I've heard it suggested that one of the problems seen here is that Standard plots are only ever probe-able. If there were a way to throw up a plots in Standard that only allowed as much post-display interaction as happens in Classic then maybe they would not bring the GUI to its knees so easily.&lt;/p&gt;
&lt;p&gt;Here is a 1D editing of the code. Since most of the points in c are very small then it runs faster if order in which the conditionals are tested is reversed from the original code. Also the conditionals now do only one check for each elif (this follows up my earlier comment). You don't need to mess with op(b) just to get the dimensions of b, and note the difference between op(1,b) and op(b)[1]. And you only need compute the dimensions of b once. And now it utilizes `uses`. It's not very much faster, as a lot of time is still spent inside listdensityplot. But maybe it looks a little cleaner.&lt;/p&gt;
&lt;p&gt;Try running it in Classic and a Worksheet, to see the differences. And compare with the earlier 2D version that you uploaded (for which you'd have to insert the time() and time[real]() calls in order to measure just the 2D proc parsing and printing portion.&lt;/p&gt;
&lt;pre&gt;restart:st, str := time(), time[real]():
 IsotopeTable := proc(elements)
 local a,b,c,d,i,j,ja,jb,jc,jd,sy,sd,sh,sm,Isoj,nIsoj,
       maxopopb1,maxopopb2;
 uses ScientificConstants, plots;
 a := table();
 for j to elements do
    Isoj := GetIsotopes(element = j);
    nIsoj := nops([Isoj]);
    if nIsoj &amp;lt;&amp;gt; 1 then
       for i from op(Isoj[1]) to op(Isoj[nIsoj]) do
          try
             a[i, j] := convert(rhs(rhs(GetElement([j, i], halflife)[2])[1]),
                                'units',
                                rhs(rhs(GetElement([j, i], halflife)[2])[3]), s)
          catch:
             try
                if is(GetElement([j, i], abundance) &amp;lt;&amp;gt; 0) then
                   a[i, j] := 0.10e12
                end if
             catch:
                a[i, j] := 1
             end try
          end try
       end do
    elif nIsoj = 1 then
       i := op(Isoj);
       try
          a[i, j] := convert(rhs(rhs(GetElement([j, i], halflife)[2])[1]),
                             'units',
                             rhs(rhs(GetElement([j, i], halflife)[2])[3]), s)
       catch:
          try
             if is(GetElement([j, i], abundance) &amp;lt;&amp;gt; 0) then
                a[i, j] := 0.10e12
             end if
          catch:
             a[i, j] := 1
          end try
       end try
    end if
 end do;
 b := Array(convert(a,array), datatype=float[8]);
 
 # We could alternatively use rtable_dims(b)
 maxopopb1 := op([2,1,2],b); #max(op(op(b)[1]));
 maxopopb2 := op([2,2,2],b); #max(op(op(b)[2]));
 
 c := Array(1 .. maxopopb1, 1 .. maxopopb2);
 sy := convert(1, 'units', year, second);
 sd := convert(1, 'units', day, second);
 sh := 3600; sm := 60;
 
 for i to maxopopb1 do
 for j to maxopopb2 do
 if b[i, j] = 0.0 then c[i, j] := 13
 elif b[i, j] &amp;lt; 0.1e-2 then c[i, j] := 3
 elif b[i, j] &amp;lt; 0.1e-1 then c[i, j] := 4
 elif b[i, j] &amp;lt; .1 then c[i, j] := 5
 elif b[i, j] &amp;lt; 1 then c[i, j] := 7
 elif b[i, j] &amp;lt; sm then c[i, j] := 8
 elif b[i, j] &amp;lt; sh then c[i, j] := 10
 elif b[i, j] &amp;lt; sd then c[i, j] := 15
 elif b[i, j] &amp;lt; sy then c[i, j] := 18
 else c[i, j] := 20 # b[i, j] &amp;gt;= sy
 end if end do end do;
 
 ja := [13, 3, 4, 5, 6, 7, 8, 10, 15, 18, 20];
 jb := [seq(plottools[rectangle](
          [maxopopb1+5, (1/11)*maxopopb2*i-(1/11)*maxopopb2],
          [maxopopb1+15, (1/11)*maxopopb2*i],
                                 color = COLOR(HUE, (1/20)*op(i, ja))),
            i = 1 .. nops(ja))];
 jc := maxopopb1+20;
 jd := textplot({
   [jc, (1/2)*maxopopb2, "unknown"], [jc, (1/22)*maxopopb2, "---"],
   [jc, (3/22)*maxopopb2, "0 - 0.001"], [jc, (5/22)*maxopopb2, "0.001 - 0.01"],
   [jc, (7/22)*maxopopb2, "0.01 - 0.1"], [jc, (9/22)*maxopopb2, "0.1 - 1"],
   [jc, (13/22)*maxopopb2, "seconds"], [jc, (15/22)*maxopopb2, "minutes"],
   [jc, (17/22)*maxopopb2, "hours"], [jc, (19/22)*maxopopb2, "days"],
   [jc, (21/22)*maxopopb2, "years"]}, align = right);
 d := listdensityplot(c, colorstyle = HUE, range = 0 .. 20,
         title = ["Half-Life Table of the Isotopes",
         font = [TIMES, BOLD, 20]],
         labels = ["Atomic Mass \n            A",
                   "Atomic Number \n              Z"]);
 display(d, jb, jd);
 end proc:
 time()-st, time[real]()-str;
 st,ba:=time(),kernelopts(bytesalloc):
    IsotopeTable(116);
 time()-st,kernelopts(bytesalloc)-ba;
&lt;/pre&gt;
&lt;p&gt;acer&lt;/p&gt;</itunes:summary>
      <description>The latest comments added to the Post, Table of Isotopes</description>
      <guid>99324</guid>
      <pubDate>Mon, 22 Nov 2010 23:38:19 Z</pubDate>
      <itunes:author>acer</itunes:author>
      <author>acer</author>
    </item>
    <item>
      <title>Thanks</title>
      <link>http://www.mapleprimes.com/posts/99163-Table-Of-Isotopes?ref=Feed:MaplePrimes:Table of Isotopes:Comments#comment99355</link>
      <itunes:summary>&lt;p&gt;&lt;a href="http://www.mapleprimes.com/posts/99163-Table-Of-Isotopes#comment99324"&gt;@acer&lt;/a&gt;&amp;nbsp;Great!&amp;nbsp; Thanks!&amp;nbsp; I&amp;nbsp;understand&amp;nbsp;now what you meant&amp;nbsp;about testing conditions twice.&amp;nbsp;&amp;nbsp;&amp;nbsp;And thanks for tweaking the code a little bit.&amp;nbsp;&lt;/p&gt;</itunes:summary>
      <description>The latest comments added to the Post, Table of Isotopes</description>
      <guid>99355</guid>
      <pubDate>Tue, 23 Nov 2010 23:02:04 Z</pubDate>
      <itunes:author>Christopher2222</itunes:author>
      <author>Christopher2222</author>
    </item>
  </channel>
</rss>