%%
%% This is file `binomexp.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% binomexp.dtx  (with options: `package')
%% This is a generated file.
%% Copyright (C) 2006 by David Roderick
%% This file may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
%% version 1.2 of this license or (at your option) any later
%% version. The latest version of this license is in:
%% http://www.latex-project.org/lppl.txt
%% and version 1.2 or later is part of all distributions of
%% LaTeX version 1999/12/01 or later.
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
\ProvidesPackage{binomexp}
 [2007/01/07 v1.0 My first attempt]
%% \CharacterTable
%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%%   Digits        \0\1\2\3\4\5\6\7\8\9
%%   Exclamation   \!     Double quote  \"     Hash (number) \#
%%   Dollar        \$     Percent       \%     Ampersand     \&
%%   Acute accent  \'     Left paren    \(     Right paren   \)
%%   Asterisk      \*     Plus          \+     Comma         \,
%%   Minus         \-     Point         \.     Solidus       \/
%%   Colon         \:     Semicolon     \;     Less than     \<
%%   Equals        \=     Greater than  \>     Question mark \?
%%   Commercial at \@     Left bracket  \[     Backslash     \\
%%   Right bracket \]     Circumflex    \^     Underscore    \_
%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%%   Right brace   \}     Tilde         \~}
%%
\RequirePackage{calc,ifthen}
\newcommand\binomexp@replicate[2]{%
   \ifnum#1>\z@ \expandafter\@firstofone
   \else
     \expandafter\@gobble
   \fi
   {#2\expandafter\binomexp@replicate\expandafter{\number\numexpr#1-1\relax}{#2}}%
}
\newcommand{\binomexp@call}[1]{\rule[-0.125cm]{0mm}{0.5cm}\mbox{$#1$}}
\newcounter{binomexp@up}
\newcommand{\binomexp@up}{\number\value{binomexp@up}
\addtocounter{binomexp@up}{1}}
\newcounter{binomexp@down}
\newcommand{\binomexp@down}{\number\value{binomexp@down}
\addtocounter{binomexp@down}{-1}}
\newcounter{binomexp@columns}
\newcounter{binomexp@power}
\newcounter{binomexp@pascalstart}
\newcounter{binomexp@pascalstop}
\newcounter{binomexp@emptytimes}
\newcounter{binomexp@variable1}
\newcounter{binomexp@variable2}
\newcounter{binomexp@answervar}
\newcounter{binomexp@sub}
\protect\newcommand*{\binomexp@printpascal}{
\addtocounter{binomexp@power}{1}
\expandafter\edef\csname
binomexp@morten\roman{binomexp@power}exporti\endcsname{1}
\setcounter{binomexp@sub}{2}
\setcounter{binomexp@variable1}{\numexpr\number\value{binomexp@power}+1\relax}
\whiledo{\number\numexpr\number\value{binomexp@power}+1\relax>
\value{binomexp@sub}}{
\setcounter{binomexp@variable1}{\numexpr\number\value{binomexp@sub}-1\relax}
\setcounter{binomexp@variable2}{\value{binomexp@sub}}
\setcounter{binomexp@answervar}{\number\numexpr\csname
binomexp@x\roman{binomexp@variable1}\endcsname\relax+\number\numexpr\csname
binomexp@x\roman{binomexp@variable2}\endcsname\relax}
\expandafter\edef\csname binomexp@y\roman{binomexp@sub}\endcsname
{\number\value{binomexp@answervar}}\relax
\addtocounter{binomexp@sub}{1}
}
\setcounter{binomexp@sub}{2}
\whiledo{\numexpr\number\value{binomexp@power}+1\relax>\value{binomexp@sub}}{
\setcounter{binomexp@answervar}{\number\numexpr\csname
binomexp@y\roman{binomexp@sub}\endcsname\relax}
\expandafter\edef\csname binomexp@x\roman{binomexp@sub}\endcsname
{\number\value{binomexp@answervar}}
\expandafter\edef\csname
binomexp@morten\roman{binomexp@power}export\roman{binomexp@sub}\endcsname
{\number\value{binomexp@answervar}}
\addtocounter{binomexp@sub}{1}
}
\setcounter{binomexp@variable1}
{\numexpr\number\value{binomexp@power}+1\relax}
\expandafter\edef\csname
binomexp@x\roman{binomexp@variable1}\endcsname{1}
\expandafter\edef\csname
binomexp@morten\roman{binomexp@power}export\roman{binomexp@variable1}\endcsname{1}
}
\newcommand*\binomexp@putpascal[6]{\par
\expandafter\edef\csname binomexp@xi\endcsname{1}
\expandafter\edef\csname binomexp@mortenexporti\endcsname{1}
\setcounter{binomexp@power}{0}
\setcounter{binomexp@pascalstart}{#1}
\setcounter{binomexp@pascalstop}{#2+1}
\setcounter{binomexp@emptytimes}{\value{binomexp@pascalstop}}
\whiledo{\value{binomexp@emptytimes}>1}{
\binomexp@printpascal \addtocounter{binomexp@emptytimes}{-1}
}
\setcounter{binomexp@columns}
{\numexpr\number\value{binomexp@pascalstop}+2\relax}
\begin{math} \begin{array}{@{}|c|*{\value{binomexp@columns}}{|c}|@{}}
\whiledo{\value{binomexp@pascalstart}<
\numexpr\number\value{binomexp@pascalstop}-1\relax}{
\setcounter{binomexp@up}{0}
\setcounter{binomexp@down}{\value{binomexp@pascalstart}}
\binomexp@call{(#3+#4)^{\number\numexpr\number\value{binomexp@pascalstart}\relax}}
\binomexp@replicate{\numexpr\number\value{binomexp@pascalstart}+1\relax}
{&\binomexp@call{\csname
binomexp@morten\romannumeral\numexpr\value{binomexp@pascalstart}\relax
export\romannumeral\numexpr\value{binomexp@up}+1\relax\endcsname
#5^{\binomexp@down} #6^{\binomexp@up}}}\\
\addtocounter{binomexp@pascalstart}{1}
}
\setcounter{binomexp@up}{0}
\setcounter{binomexp@down}{\value{binomexp@pascalstart}}
\binomexp@call{(#3+#4)^{\number\numexpr\number\value{binomexp@pascalstart}\relax}}
\binomexp@replicate{\numexpr\number\value{binomexp@pascalstart}+1\relax}
{&\binomexp@call{\csname
binomexp@morten\romannumeral\numexpr\value{binomexp@pascalstart}\relax
export\romannumeral\numexpr\value{binomexp@up}+1\relax\endcsname
#5^{\binomexp@down} #6^{\binomexp@up}}}
 \end{array} \end{math}
}
\newcommand{\binomexp@proof}[2]{
\[ 7!=7\cdot6\cdot5\cdot4\cdot3\cdot2\cdot1 \hspace*{5em}
{#1 \choose #2} = \frac{#1!}{(#1-#2)!\cdot #2!}=
\frac{#1!}{(#1-#2)!\cdot(#1-(#1-#2))!}={#1 \choose #1-#2}
\]
\begin{eqnarray*} {#1 - 1 \choose #2 - 1} + {#1 - 1 \choose #2}
&=& \frac{(#1 - 1)!}{(#2 - 1)!\cdot[(#1 - 1) - (#2 - 1)]!} +
\frac{(#1 - 1)!}{#2!\cdot[(#1 - 1) - #2)]!}\\
&=& (#1 - 1)!\cdot\left(\frac{1}{(#2 - 1)!\cdot(#1 - #2)!} +
\frac{1}{#2!\cdot[(#1 - #2) - 1)]!}\right)  \\
&=& (#1 - 1)! \cdot\frac{#2 + (#1 - #2)}{#2! (#1 - #2)!} \\
&=& \frac{#1!}{#2!(#1 - #2)!} = {#1 \choose #2}
 \end{eqnarray*}
\[ \frac{#2}{#2!\cdot(#1-#2)!} = \frac{1}{(#2-1)!\cdot(#1-#2)!}
\hspace*{5em} \mbox{because} \hspace*{5em} \\
 \frac{6}{6!\cdot(#1-#2)!} = \frac{1}{5!\cdot(#1-#2)!} \]
\begin{eqnarray*}
(#2 + 1)\cdot {#1 + 1 \choose #2 + 1} &=& (#2 + 1)\cdot
\frac{(#1 + 1)!}{((#2 + 1)!\cdot ((#1 + 1) - (#2 + 1))!}\\
&=& (#2 + 1)\cdot \frac{(#1 + 1)!}{(#2 + 1)!\cdot (#1 - #2)!}\\
&=& (#1 + 1)\cdot \frac{#1!}{#2!\cdot (#1 - #2)!} = (#1 + 1)\cdot
{#1 \choose #2}\\
\end{eqnarray*}
}
\endinput
%%
%% End of file `binomexp.sty'.
