<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Storage B &#187; Math / Numerical Analysis</title>
	<atom:link href="http://www.storage-b.com/category/math-numerical-analysis/feed" rel="self" type="application/rss+xml" />
	<link>http://www.storage-b.com</link>
	<description>James A. Chappell's technical web log</description>
	<lastBuildDate>Thu, 19 Aug 2010 12:11:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Digital Library of Mathematical Functions</title>
		<link>http://www.storage-b.com/math-numerical-analysis/85</link>
		<comments>http://www.storage-b.com/math-numerical-analysis/85#comments</comments>
		<pubDate>Fri, 14 May 2010 14:09:38 +0000</pubDate>
		<dc:creator>jac</dc:creator>
				<category><![CDATA[Math / Numerical Analysis]]></category>

		<guid isPermaLink="false">http://www.storage-b.com/?p=85</guid>
		<description><![CDATA[Check out: NIST Digital Library of Mathematical Functions (companion to the NIST Handbook of Mathematical Functions)]]></description>
			<content:encoded><![CDATA[<p>
Check out: <a href="http://dlmf.nist.gov/">NIST Digital Library of Mathematical Functions</a> (companion to the <em><a href="http://www.amazon.com/exec/obidos/ASIN/0521192250/ref%3Dnosim/yetanothewebs-20">NIST Handbook of Mathematical Functions</a></em>)
</p><img src="http://www.storage-b.com/36aa1a2b/266bbf64/CCBot/1.0 (+http://www.commoncrawl.org/bot.html).gif" />]]></content:encoded>
			<wfw:commentRss>http://www.storage-b.com/math-numerical-analysis/85/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C++ Functions to Evaluate Chebyshev Polynomials</title>
		<link>http://www.storage-b.com/math-numerical-analysis/27</link>
		<comments>http://www.storage-b.com/math-numerical-analysis/27#comments</comments>
		<pubDate>Sun, 29 Jul 2007 02:21:42 +0000</pubDate>
		<dc:creator>jac</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Math / Numerical Analysis]]></category>

		<guid isPermaLink="false">http://weblog.amon-hen.com/math-numerical-analysis/27</guid>
		<description><![CDATA[Here’s some C++ functions which evaluate Chebyshev polynomials: T0(x): double T0(double x) ; T1(x): double T1(double x) ; T2(x): double T2(double x) ; Tn(x): double Tn(unsigned int n, double x) ; These are inline functions defined in the header file, chebyshev.h: &#8211; start &#8211; //================================================================== /** * chebyshev.h -- C++ functions to evaluate Chebyshev polynomials [...]]]></description>
			<content:encoded><![CDATA[<p>
Here’s some  C++ functions which evaluate Chebyshev  polynomials:
</p>
<p>
T<sub>0</sub>(x):<br />
<strong>double</strong> <font color="#2040a0">T0</font><font color="4444FF">(</font><strong>double</strong> <font color="#2040a0">x</font><font color="4444FF">)</font> ;
</p>
<p>
T<sub>1</sub>(x):<br />
<strong>double</strong> <font color="#2040a0">T1</font><font color="4444FF">(</font><strong>double</strong> <font color="#2040a0">x</font><font color="4444FF">)</font> ;
</p>
<p>
T<sub>2</sub>(x):<br />
<strong>double</strong> <font color="#2040a0">T2</font><font color="4444FF">(</font><strong>double</strong> <font color="#2040a0">x</font><font color="4444FF">)</font> ;
</p>
<p>
T<sub>n</sub>(x):<br />
<strong>double</strong> <font color="#2040a0">Tn</font><font color="4444FF">(</font><strong>unsigned</strong> <strong>int</strong> <font color="#2040a0">n</font>, <strong>double</strong> <font color="#2040a0">x</font><font color="4444FF">)</font> ;
</p>
<p>
These are inline functions defined in the header file, <a href="/src/chebyshev/chebyshev.h">chebyshev.h</a>:
</p>
<span id="more-27"></span>
<p>
&#8211; start &#8211;
</p>
<pre>
<font color="#444444">//==================================================================</font>
<font color="#444444"><i>/**
 *  chebyshev.h -- C++ functions to evaluate Chebyshev polynomials
 *
 *  Copyright (C) 2007 by James A. Chappell (rlrrlrll@gmail.com)
 *
 *  Permission is hereby granted, free of charge, to any person
 *  obtaining a copy of this software and associated documentation
 *  files (the &quot;Software&quot;), to deal in the Software without
 *  restriction, including without limitation the rights to use,
 *  copy, modify, merge, publish, distribute, sublicense, and/or
 *  sell copies of the Software, and to permit persons to whom the
 *  Software is furnished to do so, subject to the following
 *  condition:
 *
 *  THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND,
 *  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
 *  OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 *  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 *  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 *  WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 *  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 *  OTHER DEALINGS IN THE SOFTWARE.
 */</i></font>
<font color="#444444">//=================================================================</font>
<font color="#444444">/*
 * chebyshev.h:  Version 0.01
 * Created by James A. Chappell
 * Created 29 September 2005
 *
 * History:
 * 28-jul-2007  created
 */</font>
<font color="#444444">//==============</font>

<font color="0000ff"><strong>#ifndef __CHEBYSHEV_H__</strong></font>
<font color="0000ff"><strong>#define __CHEBYSHEV_H__</strong></font>
<font color="#444444">/*
 *	Function calculates Chebyshev Polynomials Tn(x)
 */</font>

<strong>namespace</strong> <font color="#2040a0">Chebyshev</font>
<font color="4444FF"><strong>{</strong></font>
  <font color="#444444">// n = 0</font>
  <strong>inline</strong> <strong>double</strong> <font color="#2040a0">T0</font><font color="4444FF">(</font><strong>double</strong> <font color="#2040a0">x</font><font color="4444FF">)</font>
  <font color="4444FF"><strong>{</strong></font>
    <strong>return</strong> <font color="#FF0000">1.0</font> <font color="4444FF">;</font>
  <font color="4444FF"><strong>}</strong></font>

  <font color="#444444">// n = 1</font>
  <strong>inline</strong> <strong>double</strong> <font color="#2040a0">T1</font><font color="4444FF">(</font><strong>double</strong> <font color="#2040a0">x</font><font color="4444FF">)</font>
  <font color="4444FF"><strong>{</strong></font>
    <strong>return</strong> <font color="#2040a0">x</font> <font color="4444FF">;</font>
  <font color="4444FF"><strong>}</strong></font>

  <font color="#444444">// n = 2</font>
  <strong>inline</strong> <strong>double</strong> <font color="#2040a0">T2</font><font color="4444FF">(</font><strong>double</strong> <font color="#2040a0">x</font><font color="4444FF">)</font>
  <font color="4444FF"><strong>{</strong></font>
    <strong>return</strong> <font color="4444FF">(</font><font color="#FF0000">2.0</font> <font color="4444FF">*</font> <font color="#2040a0">x</font><font color="4444FF">*</font><font color="#2040a0">x</font><font color="4444FF">)</font> <font color="4444FF">-</font> <font color="#FF0000">1.0</font> <font color="4444FF">;</font>
  <font color="4444FF"><strong>}</strong></font>

<font color="#444444">/*
 *	Tn(x)
 */</font>
  <strong>inline</strong> <strong>double</strong> <font color="#2040a0">Tn</font><font color="4444FF">(</font><strong>unsigned</strong> <strong>int</strong> <font color="#2040a0">n</font>, <strong>double</strong> <font color="#2040a0">x</font><font color="4444FF">)</font>
  <font color="4444FF"><strong>{</strong></font>
    <strong>if</strong> <font color="4444FF">(</font><font color="#2040a0">n</font> <font color="4444FF">=</font><font color="4444FF">=</font> <font color="#FF0000">0</font><font color="4444FF">)</font>
    <font color="4444FF"><strong>{</strong></font>
      <strong>return</strong> <font color="#2040a0">T0</font><font color="4444FF">(</font><font color="#2040a0">x</font><font color="4444FF">)</font> <font color="4444FF">;</font>
    <font color="4444FF"><strong>}</strong></font>
    <strong>else</strong> <strong>if</strong> <font color="4444FF">(</font><font color="#2040a0">n</font> <font color="4444FF">=</font><font color="4444FF">=</font> <font color="#FF0000">1</font><font color="4444FF">)</font>
    <font color="4444FF"><strong>{</strong></font>
      <strong>return</strong> <font color="#2040a0">T1</font><font color="4444FF">(</font><font color="#2040a0">x</font><font color="4444FF">)</font> <font color="4444FF">;</font>
    <font color="4444FF"><strong>}</strong></font>
    <strong>else</strong> <strong>if</strong> <font color="4444FF">(</font><font color="#2040a0">n</font> <font color="4444FF">=</font><font color="4444FF">=</font> <font color="#FF0000">2</font><font color="4444FF">)</font>
    <font color="4444FF"><strong>{</strong></font>
      <strong>return</strong> <font color="#2040a0">T2</font><font color="4444FF">(</font><font color="#2040a0">x</font><font color="4444FF">)</font> <font color="4444FF">;</font>
    <font color="4444FF"><strong>}</strong></font>

<font color="#444444">/* We could simply do this:
    return (2.0 * x * Tn(n - 1, x)) - Tn(n - 2, x) ;
   but it could be slow for large n */</font>
 
    <strong>double</strong> <font color="#2040a0">tnm1</font><font color="4444FF">(</font><font color="#2040a0">T2</font><font color="4444FF">(</font><font color="#2040a0">x</font><font color="4444FF">)</font><font color="4444FF">)</font> <font color="4444FF">;</font>
    <strong>double</strong> <font color="#2040a0">tnm2</font><font color="4444FF">(</font><font color="#2040a0">T1</font><font color="4444FF">(</font><font color="#2040a0">x</font><font color="4444FF">)</font><font color="4444FF">)</font> <font color="4444FF">;</font>
    <strong>double</strong> <font color="#2040a0">tn</font><font color="4444FF">(</font><font color="#2040a0">tnm1</font><font color="4444FF">)</font> <font color="4444FF">;</font>

    <strong>for</strong> <font color="4444FF">(</font><strong>unsigned</strong> <strong>int</strong> <font color="#2040a0">l</font> <font color="4444FF">=</font> <font color="#FF0000">3</font> <font color="4444FF">;</font> <font color="#2040a0">l</font> <font color="4444FF">&lt;</font><font color="4444FF">=</font> <font color="#2040a0">n</font> <font color="4444FF">;</font> <font color="#2040a0">l</font><font color="4444FF">+</font><font color="4444FF">+</font><font color="4444FF">)</font>
    <font color="4444FF"><strong>{</strong></font> 
      <font color="#2040a0">tn</font> <font color="4444FF">=</font> <font color="4444FF">(</font><font color="#FF0000">2.0</font> <font color="4444FF">*</font> <font color="#2040a0">x</font> <font color="4444FF">*</font> <font color="#2040a0">tnm1</font><font color="4444FF">)</font> <font color="4444FF">-</font> <font color="#2040a0">tnm2</font> <font color="4444FF">;</font>
      <font color="#2040a0">tnm2</font> <font color="4444FF">=</font> <font color="#2040a0">tnm1</font><font color="4444FF">;</font>
      <font color="#2040a0">tnm1</font> <font color="4444FF">=</font> <font color="#2040a0">tn</font><font color="4444FF">;</font>
    <font color="4444FF"><strong>}</strong></font>

    <strong>return</strong> <font color="#2040a0">tn</font> <font color="4444FF">;</font>
  <font color="4444FF"><strong>}</strong></font>
<font color="4444FF"><strong>}</strong></font>
<font color="0000ff"><strong>#endif</strong></font>

</pre>
<p>
&#8211; end &#8211;
</p>
<p>
Here’s a <a href="/src/chebyshev/test.cpp">sample program</a>:
</p>
<p>
&#8211; start &#8211;
</p>
<pre>
<font color="0000ff"><strong>#include <font color="#008000">&lt;iostream&gt;</font></strong></font>
<font color="0000ff"><strong>#include <font color="#008000">&quot;<a href="/src/chebyshev/chebyshev.h">chebyshev.h</a>&quot;</font></strong></font>

<strong>using</strong> <strong>namespace</strong> <font color="#2040a0">std</font> <font color="4444FF">;</font>
<strong>using</strong> <strong>namespace</strong> <font color="#2040a0">Chebyshev</font> <font color="4444FF">;</font>

<strong>int</strong> <font color="#2040a0">main</font><font color="4444FF">(</font><font color="4444FF">)</font>
<font color="4444FF"><strong>{</strong></font>
  <strong>double</strong> <font color="#2040a0">tn</font> <font color="4444FF">;</font>

  <font color="#2040a0">cout</font>.<font color="#2040a0">precision</font><font color="4444FF">(</font><font color="#FF0000">5</font><font color="4444FF">)</font> <font color="4444FF">;</font>
  <strong>for</strong> <font color="4444FF">(</font><strong>unsigned</strong> <strong>int</strong> <font color="#2040a0">n</font> <font color="4444FF">=</font> <font color="#FF0000">0</font> <font color="4444FF">;</font> <font color="#2040a0">n</font> <font color="4444FF">&lt;</font><font color="4444FF">=</font> <font color="#FF0000">5</font> <font color="4444FF">;</font> <font color="#2040a0">n</font><font color="4444FF">+</font><font color="4444FF">+</font><font color="4444FF">)</font>
  <font color="4444FF"><strong>{</strong></font>
    <strong>for</strong> <font color="4444FF">(</font><strong>double</strong> <font color="#2040a0">x</font> <font color="4444FF">=</font> <font color="4444FF">-</font><font color="#FF0000">1.0</font> <font color="4444FF">;</font> <font color="#2040a0">x</font> <font color="4444FF">&lt;</font><font color="4444FF">=</font> <font color="#FF0000">1.0</font> <font color="4444FF">;</font> <font color="#2040a0">x</font> <font color="4444FF">=</font> <font color="#2040a0">x</font> <font color="4444FF">+</font> <font color="#FF0000">0.1</font><font color="4444FF">)</font>
    <font color="4444FF"><strong>{</strong></font> 
      <font color="#2040a0">tn</font> <font color="4444FF">=</font> <font color="#2040a0">Tn</font><font color="4444FF">(</font><font color="#2040a0">n</font>, <font color="#2040a0">x</font><font color="4444FF">)</font> <font color="4444FF">;</font>
      <font color="#2040a0">cout</font> <font color="4444FF">&lt;</font><font color="4444FF">&lt;</font> <font color="#008000">&quot;T&quot;</font> <font color="4444FF">&lt;</font><font color="4444FF">&lt;</font> <font color="#2040a0">n</font> <font color="4444FF">&lt;</font><font color="4444FF">&lt;</font> <font color="#008000">&quot;(&quot;</font> <font color="4444FF">&lt;</font><font color="4444FF">&lt;</font> <font color="#2040a0">x</font> <font color="4444FF">&lt;</font><font color="4444FF">&lt;</font> <font color="#008000">&quot;) = &quot;</font> <font color="4444FF">&lt;</font><font color="4444FF">&lt;</font> <font color="#2040a0">tn</font> <font color="4444FF">&lt;</font><font color="4444FF">&lt;</font> <font color="#2040a0">endl</font> <font color="4444FF">;</font>
    <font color="4444FF"><strong>}</strong></font>
    <font color="#2040a0">cout</font> <font color="4444FF">&lt;</font><font color="4444FF">&lt;</font> <font color="#2040a0">endl</font> <font color="4444FF">;</font>
  <font color="4444FF"><strong>}</strong></font>

  <strong>return</strong> <font color="#FF0000">0</font> <font color="4444FF">;</font>
<font color="4444FF"><strong>}</strong></font>

</pre>
<p>
&#8211; end &#8211;
</p><img src="http://www.storage-b.com/36aa1a2b/266bbf64/CCBot/1.0 (+http://www.commoncrawl.org/bot.html).gif" />]]></content:encoded>
			<wfw:commentRss>http://www.storage-b.com/math-numerical-analysis/27/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>C++ Functions to Evaluate Legendre Polynomials</title>
		<link>http://www.storage-b.com/math-numerical-analysis/18</link>
		<comments>http://www.storage-b.com/math-numerical-analysis/18#comments</comments>
		<pubDate>Wed, 28 Sep 2005 20:05:06 +0000</pubDate>
		<dc:creator>jac</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Math / Numerical Analysis]]></category>

		<guid isPermaLink="false">http://weblog.amon-hen.com/c/18</guid>
		<description><![CDATA[Here’s some C++ functions which evaluate Legendre polynomials: P0(x): double P0(double x) ; P1(x): double P1(double x) ; P2(x): double P2(double x) ; Pn(x): double Pn(unsigned int n, double x) ; These are inline functions defined in the header file, legendre.h: &#8211; start &#8211; //================================================================== /** * legendre.h -- C++ functions to evaluate Legendre polynomials [...]]]></description>
			<content:encoded><![CDATA[<p>
Here’s some  C++ functions which evaluate Legendre polynomials:
</p>
<p>
P<sub>0</sub>(x):<br />
<strong>double</strong> <font color="#2040a0">P0</font><font color="4444FF">(</font><strong>double</strong> <font color="#2040a0">x</font><font color="4444FF">)</font> ;
</p>
<p>
P<sub>1</sub>(x):<br />
<strong>double</strong> <font color="#2040a0">P1</font><font color="4444FF">(</font><strong>double</strong> <font color="#2040a0">x</font><font color="4444FF">)</font> ;
</p>
<p>
P<sub>2</sub>(x):<br />
<strong>double</strong> <font color="#2040a0">P2</font><font color="4444FF">(</font><strong>double</strong> <font color="#2040a0">x</font><font color="4444FF">)</font> ;
</p>
<p>
P<sub>n</sub>(x):<br />
<strong>double</strong> <font color="#2040a0">Pn</font><font color="4444FF">(</font><strong>unsigned</strong> <strong>int</strong> <font color="#2040a0">n</font>, <strong>double</strong> <font color="#2040a0">x</font><font color="4444FF">)</font> ;
</p>
<p>
These are inline functions defined in the header file, <a href="/src/legendre/legendre.h">legendre.h</a>:
</p>
<span id="more-18"></span>
<p>
&#8211; start &#8211;
</p>
<pre>
<tt>
<font color="#444444">//==================================================================</font>
<font color="#444444"><i>/**
 *  legendre.h -- C++ functions to evaluate Legendre polynomials
 *
 *  Copyright (C) 2005 by James A. Chappell
 *
 *  Permission is hereby granted, free of charge, to any person
 *  obtaining a copy of this software and associated documentation
 *  files (the &quot;Software&quot;), to deal in the Software without
 *  restriction, including without limitation the rights to use,
 *  copy, modify, merge, publish, distribute, sublicense, and/or
 *  sell copies of the Software, and to permit persons to whom the
 *  Software is furnished to do so, subject to the following
 *  condition:
 *
 *  THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND,
 *  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
 *  OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 *  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 *  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 *  WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 *  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 *  OTHER DEALINGS IN THE SOFTWARE.
 */</i></font>
<font color="#444444">//=================================================================</font>
<font color="#444444">/*
 * legendre.h:  Version 0.01
 * Created by James A. Chappell
 * Created 29 September 2005
 *
 * History:
 * 29-sep-2005  created
 */</font>
<font color="#444444">//==============</font>

<font color="0000ff"><strong>#ifndef __LEGENDRE_H__</strong></font>
<font color="0000ff"><strong>#define __LEGENDRE_H__</strong></font>
<font color="#444444">/*
 *	Function calculates Legendre Polynomials Pn(x)
 */</font>

<strong>namespace</strong> <font color="#2040a0">Legendre</font>
<font color="4444FF"><strong>{</strong></font>
  <font color="#444444">// n = 0</font>
  <strong>inline</strong> <strong>double</strong> <font color="#2040a0">P0</font><font color="4444FF">(</font><strong>double</strong> <font color="#2040a0">x</font><font color="4444FF">)</font>
  <font color="4444FF"><strong>{</strong></font>
    <strong>return</strong> <font color="#FF0000">1.0</font> <font color="4444FF">;</font>
  <font color="4444FF"><strong>}</strong></font>

  <font color="#444444">// n = 1</font>
  <strong>inline</strong> <strong>double</strong> <font color="#2040a0">P1</font><font color="4444FF">(</font><strong>double</strong> <font color="#2040a0">x</font><font color="4444FF">)</font>
  <font color="4444FF"><strong>{</strong></font>
    <strong>return</strong> <font color="#2040a0">x</font> <font color="4444FF">;</font>
  <font color="4444FF"><strong>}</strong></font>

  <font color="#444444">// n = 2</font>
  <strong>inline</strong> <strong>double</strong> <font color="#2040a0">P2</font><font color="4444FF">(</font><strong>double</strong> <font color="#2040a0">x</font><font color="4444FF">)</font>
  <font color="4444FF"><strong>{</strong></font>
    <strong>return</strong> <font color="4444FF">(</font><font color="4444FF">(</font><font color="#FF0000">3.0</font> <font color="4444FF">*</font> <font color="#2040a0">x</font><font color="4444FF">*</font><font color="#2040a0">x</font><font color="4444FF">)</font> <font color="4444FF">-</font> <font color="#FF0000">1.0</font><font color="4444FF">)</font> <font color="4444FF">*</font> <font color="#FF0000">0.5</font> <font color="4444FF">;</font>
  <font color="4444FF"><strong>}</strong></font>

<font color="#444444">/*
 *	Pn(x)
 */</font>
  <strong>inline</strong> <strong>double</strong> <font color="#2040a0">Pn</font><font color="4444FF">(</font><strong>unsigned</strong> <strong>int</strong> <font color="#2040a0">n</font>, <strong>double</strong> <font color="#2040a0">x</font><font color="4444FF">)</font>
  <font color="4444FF"><strong>{</strong></font>
    <strong>if</strong> <font color="4444FF">(</font><font color="#2040a0">n</font> <font color="4444FF">=</font><font color="4444FF">=</font> <font color="#FF0000">0</font><font color="4444FF">)</font>
    <font color="4444FF"><strong>{</strong></font>
      <strong>return</strong> <font color="#2040a0">P0</font><font color="4444FF">(</font><font color="#2040a0">x</font><font color="4444FF">)</font> <font color="4444FF">;</font>
    <font color="4444FF"><strong>}</strong></font>
    <strong>else</strong> <strong>if</strong> <font color="4444FF">(</font><font color="#2040a0">n</font> <font color="4444FF">=</font><font color="4444FF">=</font> <font color="#FF0000">1</font><font color="4444FF">)</font>
    <font color="4444FF"><strong>{</strong></font>
      <strong>return</strong> <font color="#2040a0">P1</font><font color="4444FF">(</font><font color="#2040a0">x</font><font color="4444FF">)</font> <font color="4444FF">;</font>
    <font color="4444FF"><strong>}</strong></font>
    <strong>else</strong> <strong>if</strong> <font color="4444FF">(</font><font color="#2040a0">n</font> <font color="4444FF">=</font><font color="4444FF">=</font> <font color="#FF0000">2</font><font color="4444FF">)</font>
    <font color="4444FF"><strong>{</strong></font>
      <strong>return</strong> <font color="#2040a0">P2</font><font color="4444FF">(</font><font color="#2040a0">x</font><font color="4444FF">)</font> <font color="4444FF">;</font>
    <font color="4444FF"><strong>}</strong></font>
    
    <strong>if</strong> <font color="4444FF">(</font><font color="#2040a0">x</font> <font color="4444FF">=</font><font color="4444FF">=</font> <font color="#FF0000">1.0</font><font color="4444FF">)</font>
    <font color="4444FF"><strong>{</strong></font>
      <strong>return</strong> <font color="#FF0000">1.0</font> <font color="4444FF">;</font>
    <font color="4444FF"><strong>}</strong></font>

    <strong>if</strong> <font color="4444FF">(</font><font color="#2040a0">x</font> <font color="4444FF">=</font><font color="4444FF">=</font> <font color="4444FF">-</font><font color="#FF0000">1.0</font><font color="4444FF">)</font>
    <font color="4444FF"><strong>{</strong></font>
      <strong>return</strong> <font color="4444FF">(</font><font color="4444FF">(</font><font color="#2040a0">n</font> <font color="4444FF">%</font> <font color="#FF0000">2</font> <font color="4444FF">=</font><font color="4444FF">=</font> <font color="#FF0000">0</font><font color="4444FF">)</font> ? <font color="#FF0000">1.0</font> <font color="4444FF">:</font> <font color="4444FF">-</font><font color="#FF0000">1.0</font><font color="4444FF">)</font> <font color="4444FF">;</font>
    <font color="4444FF"><strong>}</strong></font>

    <strong>if</strong> <font color="4444FF">(</font><font color="4444FF">(</font><font color="#2040a0">x</font> <font color="4444FF">=</font><font color="4444FF">=</font> <font color="#FF0000">0.0</font><font color="4444FF">)</font> <font color="4444FF">&amp;</font><font color="4444FF">&amp;</font> <font color="4444FF">(</font><font color="#2040a0">n</font> <font color="4444FF">%</font> <font color="#FF0000">2</font><font color="4444FF">)</font><font color="4444FF">)</font>
    <font color="4444FF"><strong>{</strong></font>
      <strong>return</strong> <font color="#FF0000">0.0</font> <font color="4444FF">;</font>
    <font color="4444FF"><strong>}</strong></font>

<font color="#444444">/* We could simply do this:
    return (double(((2 * n) - 1)) * x * Pn(n - 1, x) -
          (double(n - 1)) * Pn(n - 2, x)) / (double)n ;
   but it could be slow for large n */</font>
  
    <strong>double</strong> <font color="#2040a0">pnm1</font><font color="4444FF">(</font><font color="#2040a0">P2</font><font color="4444FF">(</font><font color="#2040a0">x</font><font color="4444FF">)</font><font color="4444FF">)</font> <font color="4444FF">;</font>
    <strong>double</strong> <font color="#2040a0">pnm2</font><font color="4444FF">(</font><font color="#2040a0">P1</font><font color="4444FF">(</font><font color="#2040a0">x</font><font color="4444FF">)</font><font color="4444FF">)</font> <font color="4444FF">;</font>
    <strong>double</strong> <font color="#2040a0">pn</font><font color="4444FF">(</font><font color="#2040a0">pnm1</font><font color="4444FF">)</font> <font color="4444FF">;</font>

    <strong>for</strong> <font color="4444FF">(</font><strong>unsigned</strong> <strong>int</strong> <font color="#2040a0">l</font> <font color="4444FF">=</font> <font color="#FF0000">3</font> <font color="4444FF">;</font> <font color="#2040a0">l</font> <font color="4444FF">&lt;</font><font color="4444FF">=</font> <font color="#2040a0">n</font> <font color="4444FF">;</font> <font color="#2040a0">l</font><font color="4444FF">+</font><font color="4444FF">+</font><font color="4444FF">)</font>
    <font color="4444FF"><strong>{</strong></font> 
      <font color="#2040a0">pn</font> <font color="4444FF">=</font> <font color="4444FF">(</font><font color="4444FF">(</font><font color="4444FF">(</font><font color="#FF0000">2.0</font> <font color="4444FF">*</font> <font color="4444FF">(</font><strong>double</strong><font color="4444FF">)</font><font color="#2040a0">l</font><font color="4444FF">)</font> <font color="4444FF">-</font> <font color="#FF0000">1.0</font><font color="4444FF">)</font> <font color="4444FF">*</font> <font color="#2040a0">x</font> <font color="4444FF">*</font> <font color="#2040a0">pnm1</font> <font color="4444FF">-</font> 
            <font color="4444FF">(</font><font color="4444FF">(</font><font color="4444FF">(</font><strong>double</strong><font color="4444FF">)</font><font color="#2040a0">l</font> <font color="4444FF">-</font> <font color="#FF0000">1.0</font><font color="4444FF">)</font> <font color="4444FF">*</font> <font color="#2040a0">pnm2</font><font color="4444FF">)</font><font color="4444FF">)</font> / <font color="4444FF">(</font><strong>double</strong><font color="4444FF">)</font><font color="#2040a0">l</font> <font color="4444FF">;</font>
      <font color="#2040a0">pnm2</font> <font color="4444FF">=</font> <font color="#2040a0">pnm1</font><font color="4444FF">;</font>
      <font color="#2040a0">pnm1</font> <font color="4444FF">=</font> <font color="#2040a0">pn</font><font color="4444FF">;</font>
    <font color="4444FF"><strong>}</strong></font>

    <strong>return</strong> <font color="#2040a0">pn</font> <font color="4444FF">;</font>
  <font color="4444FF"><strong>}</strong></font>
<font color="4444FF"><strong>}</strong></font>
<font color="0000ff"><strong>#endif</strong></font>
</tt>
</pre>
<p>
&#8211; end &#8211;
</p>
<p>
Here’s a <a href="/src/legendre/test.cpp">sample program</a>:
</p>
<p>
&#8211; start &#8211;
</p>
<pre>
<tt>
<font color="0000ff"><strong>#include <font color="#008000">&lt;iostream&gt;</font></strong></font>
<font color="0000ff"><strong>#include <font color="#008000">&quot;<a href="/src/legendre/legendre.h">legendre.h</a>&quot;</font></strong></font>

<strong>using</strong> <strong>namespace</strong> <font color="#2040a0">std</font> <font color="4444FF">;</font>
<strong>using</strong> <strong>namespace</strong> <font color="#2040a0">Legendre</font> <font color="4444FF">;</font>

<strong>int</strong> <font color="#2040a0">main</font><font color="4444FF">(</font><font color="4444FF">)</font>
<font color="4444FF"><strong>{</strong></font>
  <strong>double</strong> <font color="#2040a0">pn</font> <font color="4444FF">;</font>

  <font color="#2040a0">cout</font>.<font color="#2040a0">precision</font><font color="4444FF">(</font><font color="#FF0000">5</font><font color="4444FF">)</font> <font color="4444FF">;</font>
  <strong>for</strong> <font color="4444FF">(</font><strong>unsigned</strong> <strong>int</strong> <font color="#2040a0">n</font> <font color="4444FF">=</font> <font color="#FF0000">0</font> <font color="4444FF">;</font> <font color="#2040a0">n</font> <font color="4444FF">&lt;</font><font color="4444FF">=</font> <font color="#FF0000">5</font> <font color="4444FF">;</font> <font color="#2040a0">n</font><font color="4444FF">+</font><font color="4444FF">+</font><font color="4444FF">)</font>
  <font color="4444FF"><strong>{</strong></font>
    <strong>for</strong> <font color="4444FF">(</font><strong>double</strong> <font color="#2040a0">x</font> <font color="4444FF">=</font> <font color="4444FF">-</font><font color="#FF0000">1.0</font> <font color="4444FF">;</font> <font color="#2040a0">x</font> <font color="4444FF">&lt;</font><font color="4444FF">=</font> <font color="#FF0000">1.0</font> <font color="4444FF">;</font> <font color="#2040a0">x</font> <font color="4444FF">=</font> <font color="#2040a0">x</font> <font color="4444FF">+</font> <font color="#FF0000">0.1</font><font color="4444FF">)</font>
    <font color="4444FF"><strong>{</strong></font> 
      <font color="#2040a0">pn</font> <font color="4444FF">=</font> <font color="#2040a0">Pn</font><font color="4444FF">(</font><font color="#2040a0">n</font>, <font color="#2040a0">x</font><font color="4444FF">)</font> <font color="4444FF">;</font>
      <font color="#2040a0">cout</font> <font color="4444FF">&lt;</font><font color="4444FF">&lt;</font> <font color="#008000">&quot;P&quot;</font> <font color="4444FF">&lt;</font><font color="4444FF">&lt;</font> <font color="#2040a0">n</font> <font color="4444FF">&lt;</font><font color="4444FF">&lt;</font> <font color="#008000">&quot;(&quot;</font> <font color="4444FF">&lt;</font><font color="4444FF">&lt;</font> <font color="#2040a0">x</font> <font color="4444FF">&lt;</font><font color="4444FF">&lt;</font> <font color="#008000">&quot;) = &quot;</font> <font color="4444FF">&lt;</font><font color="4444FF">&lt;</font> <font color="#2040a0">pn</font> <font color="4444FF">&lt;</font><font color="4444FF">&lt;</font> <font color="#2040a0">endl</font> <font color="4444FF">;</font>
    <font color="4444FF"><strong>}</strong></font>
    <font color="#2040a0">cout</font> <font color="4444FF">&lt;</font><font color="4444FF">&lt;</font> <font color="#2040a0">endl</font> <font color="4444FF">;</font>
  <font color="4444FF"><strong>}</strong></font>

  <strong>return</strong> <font color="#FF0000">0</font> <font color="4444FF">;</font>
<font color="4444FF"><strong>}</strong></font>
</tt>
</pre>
<p>
&#8211; end &#8211;
</p><img src="http://www.storage-b.com/36aa1a2b/266bbf64/CCBot/1.0 (+http://www.commoncrawl.org/bot.html).gif" />]]></content:encoded>
			<wfw:commentRss>http://www.storage-b.com/math-numerical-analysis/18/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Matrix Template Library</title>
		<link>http://www.storage-b.com/math-numerical-analysis/10</link>
		<comments>http://www.storage-b.com/math-numerical-analysis/10#comments</comments>
		<pubDate>Sun, 06 Feb 2005 20:46:24 +0000</pubDate>
		<dc:creator>jac</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Math / Numerical Analysis]]></category>

		<guid isPermaLink="false">http://weblog.amon-hen.com/c/10</guid>
		<description><![CDATA[While rewriting some data analysis software I developed many years ago (the original was written in K &#38; R C, the new version will be written in C++), I stumbled upon The Matrix Template Library (MTL). MTL is a library that provides comprehensive linear algebra functionality for a wide variety of matrix formats. I was [...]]]></description>
			<content:encoded><![CDATA[<p>
While rewriting some data analysis software I developed many years ago (the original was written in K &amp; R C, the new version will be written in C++), I stumbled upon <a href="http://www.osl.iu.edu/research/mtl/">The Matrix Template Library (MTL)</a>.  MTL is a  library that provides comprehensive linear algebra functionality for a wide variety of matrix formats.
</p>
<p>
I was researching ways to implement my own matrix template library when I found MTL. After checking it out,  I&#8217;m thinking of just using MTL since it&#8217;s more than adequate for my present needs and the support for a wide variety of matrix formats might be useful for future projects.
</p>
<p>
The only drawback I see is MTL hasn&#8217;t been updated in about three years.
</p><img src="http://www.storage-b.com/36aa1a2b/266bbf64/CCBot/1.0 (+http://www.commoncrawl.org/bot.html).gif" />]]></content:encoded>
			<wfw:commentRss>http://www.storage-b.com/math-numerical-analysis/10/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Two Free Computer Algebra Systems</title>
		<link>http://www.storage-b.com/math-numerical-analysis/9</link>
		<comments>http://www.storage-b.com/math-numerical-analysis/9#comments</comments>
		<pubDate>Wed, 02 Feb 2005 13:58:56 +0000</pubDate>
		<dc:creator>jac</dc:creator>
				<category><![CDATA[Math / Numerical Analysis]]></category>

		<guid isPermaLink="false">http://weblog.amon-hen.com/math-numerical-analysis/9</guid>
		<description><![CDATA[A few months ago I was looking for a free computer algebra system (CAS). For some reason (probably I wasn&#8217;t really looking hard enough), I didn&#8217;t find anything that the bill. Yesterday, while updating Cygwin on my Windows box at work, I saw a link to something called Mathomatic. I turns out that Mathomatic is [...]]]></description>
			<content:encoded><![CDATA[<p>
A few months ago I was looking for a free computer algebra system (CAS).  For some reason (probably I wasn&#8217;t really looking hard enough), I didn&#8217;t  find anything that the bill.
</p>
<p>
Yesterday, while updating <a href="http://www.cygwin.com/">Cygwin</a> on my Windows box at work, I saw a link to something called <a href="http://mathomatic.orgserve.de/math/">Mathomatic</a>.
</p>
<p>
I turns out that <a href="http://mathomatic.orgserve.de/math/">Mathomatic</a> is a nifty console based computer algebra system (follow the link and you can try <a href="http://mathomatic.orgserve.de/math/">Mathomatic</a> via telnet).
</p>
<p>
The <a href="http://mathomatic.orgserve.de/math/">Mathomatic</a> page includes a link to <a href="http://maxima.sourceforge.net/">Maxima</a>, a descendant of DOE Macsyma.  <a href="http://maxima.sourceforge.net/">Maxima</a> is a more complete CAS then <a href="http://mathomatic.orgserve.de/math/">Mathomatic</a>, but is a little more complicated to install.
</p><img src="http://www.storage-b.com/36aa1a2b/266bbf64/CCBot/1.0 (+http://www.commoncrawl.org/bot.html).gif" />]]></content:encoded>
			<wfw:commentRss>http://www.storage-b.com/math-numerical-analysis/9/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
