diff options
author | Karl Berry <karl@freefriends.org> | 2006-09-25 23:46:58 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-09-25 23:46:58 +0000 |
commit | d4f96dc70d6aad918f541123e66589a2e44e18f1 (patch) | |
tree | bc933bc54a70e3ab4cf699a6c2d778b062287d16 /Master/texmf-dist/tex/latex/cool | |
parent | 66d540bf33713d5f36291b9e7c8a8f8039aebdb4 (diff) |
new package cool (25sep06)
git-svn-id: svn://tug.org/texlive/trunk@2199 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/cool')
-rw-r--r-- | Master/texmf-dist/tex/latex/cool/cool.sty | 2631 |
1 files changed, 2631 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/cool/cool.sty b/Master/texmf-dist/tex/latex/cool/cool.sty new file mode 100644 index 00000000000..51fa1ffe6fd --- /dev/null +++ b/Master/texmf-dist/tex/latex/cool/cool.sty @@ -0,0 +1,2631 @@ +%% +%% This is file `cool.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% cool.dtx (with options: `package') +%% +%% This is a generated file +%% +%% This file may be distributed and/or modified under the +%% conditions of the Limited General Product License +%% +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesPackage{cool} + [2006/09/17 v1.2 COntent Oriented LaTeX] +\RequirePackage{ifthen} +\RequirePackage{coollist} +\RequirePackage{coolstr} +\RequirePackage{forloop} +\RequirePackage{amsmath} +\RequirePackage{amssymb} +%% \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 \~} +\newcounter{COOL@ct} %just a general counter +\newcounter{COOL@ct@}%just a general counter +\newcommand{\inp}[2][0cm]{\left(#2\parbox[h][#1]{0cm}{}\right)} + % in parentheses () +\newcommand{\inb}[2][0cm]{\left[#2\parbox[h][#1]{0cm}{}\right]} + % in brackets [] +\newcommand{\inbr}[2][0cm]{\left\{#2\parbox[h][#1]{0cm}{}\right\}} +\newcommand{\inap}[2][0cm]{\left<{#2}\parbox[h][#1]{0cm}{}\right>} +\newcommand{\nop}[1]{\left.{#1}\right.} +\let\COOL@decide@paren@no@type=\relax +\newcommand{\COOL@decide@paren}[3][\COOL@decide@paren@no@type]{% +\ifthenelse{ \equal{#1}{\COOL@decide@paren@no@type} }% +{% +\def\COOL@decide@paren@type{\csname COOL@notation@#2Paren\endcsname}% +}% +{% +\def\COOL@decide@paren@type{#1}% +}% +\ifthenelse{ \equal{\COOL@decide@paren@type}{none} }% +{% +#3% +}% +{% +\ifthenelse{ \equal{\COOL@decide@paren@type}{p} }% +{% +\inp{#3}% +}% +{% +\ifthenelse{ \equal{\COOL@decide@paren@type}{b} }% +{% +\inb{#3}% +}% +{% +\ifthenelse{ \equal{\COOL@decide@paren@type}{br} }% +{% +\inbr{#3}% +}% +{% +\ifthenelse{ \equal{\COOL@decide@paren@type}{ap} }% +{% +\inap{#3}% +}% +{% +\ifthenelse{ \equal{\COOL@decide@paren@type}{inv} }% +{% +\nop{#3}% +}% +{% +\PackageError{cool}{Invalid Parenthesis Option}% +{*Paren can only be `none', `p', `b', `br', `ap', `inv'}% +}% +}% +}% +}% +}% +}% +} +\newcommand{\COOL@decide@indicies}[3]{% +\def\COOL@decide@indicies@placement% +{\csname COOL@notation@#1Indicies\endcsname}% +\ifthenelse{\equal{\COOL@decide@indicies@placement}{local}}% +{% +\ifthenelse{\equal{#2}{u}}% +{^{#3}}% +{_{#3}}% +}% +{% +\ifthenelse{\equal{\COOL@decide@indicies@placement}{up}}% +{% +{^{#3}}% +}% +{% +\ifthenelse{\equal{\COOL@decide@indicies@placement}{down}}% +{% +{_{#3}}% +}% +{% +\PackageError{cool}{Invalid Option Sent}% +{#1Indices can only be 'up', 'down', or 'local'}% +}% +}% +}% +} +\newcommand{\Style}[1]{% +\COOL@keyeater#1,\COOL@keystop\COOL@keyend% +} +\newcommand{\COOL@keystop}{@@@}% +\def\COOL@keyeater#1=#2,#3\COOL@keyend{% +\ifx#3\COOL@keystop% +\expandafter\gdef\csname COOL@notation@#1\endcsname{#2}% +\else% +\expandafter\gdef\csname COOL@notation@#1\endcsname{#2}% +\COOL@keyeater#3\COOL@keyend% +\fi% +} +\newcommand{\UseStyleFile}[1]{} +\newcommand{\I}{i} +\newcommand{\E}{e} +\newcommand{\PI}{\pi} +\newcommand{\GoldenRatio}{\varphi} +\newcommand{\EulerGamma}{\gamma} +\newcommand{\Catalan}{C} +\newcommand{\Glaisher}{\mathord{\operatorname{Glaisher}}} +\newcommand{\Khinchin}{\mathord{\operatorname{Khinchin}}} +\newcommand{\Infinity}{\infty} +\newcommand{\Indeterminant}{% +\mathchoice% +{\mbox{\textrm>}}% +{\mbox{\small>}}% +{\mbox{\scriptsize>}}% +{\mbox{\tiny>}}% +} +\newcommand{\DirectedInfinity}[1]{#1 \, \infty} +\newcommand{\DirInfty}[1]{\DirectedInfinity{#1}} +\newcommand{\ComplexInfinity}{\tilde{\infty}} +\newcommand{\CInfty}{\ComplexInfinity} +\newcommand{\COOL@notation@ExpParen}{p} +\newcommand{\Exp}[1] +{% +\exp\COOL@decide@paren{Exp}{#1}% +} +\newcommand{\COOL@notation@LogParen}{none} +\newcommand{\COOL@notation@LogBaseESymb}{ln}% 'ln', 'log' +\newcommand{\COOL@notation@LogShowBase}{at will}% 'at will', 'always' +\newcommand{\Log}[2][\E] +{% +\ifthenelse{ \equal{\COOL@notation@LogShowBase}{at will} }% +{% +\ifthenelse{ \equal{#1}{\E} }% +{% +\ifthenelse{ \equal{\COOL@notation@LogBaseESymb}{ln} }% +{% +\ln \COOL@decide@paren{Log}{#2}% +}% +{% +\ifthenelse{ \equal{\COOL@notation@LogBaseESymb}{log} }% +{% +\log \COOL@decide@paren{Log}{#2}% +}% +{% +\PackageError{cool}{Invalid Option Sent}% +{LogBaseESymb can only be `ln' or `log'}% +}% +}% +}% +{% +\ifthenelse{ \equal{#1}{10} \AND +\NOT \equal{\COOL@notation@LogBaseESymb}{log} }% +{% +\log \COOL@decide@paren{Log}{#2}% +}% +{% +\log_{#1} \COOL@decide@paren{Log}{#2}% +}% +}% +}% +{% +\ifthenelse{ \equal{\COOL@notation@LogShowBase}{always} }% +{% +\log_{#1}\COOL@decide@paren{Log}{#2}% +}% +{% +\PackageError{cool}{Invalid Option Sent}% +{LogShowBase can only be 'at will' or 'always'}% +}% +}% +} +\newcommand{\COOL@notation@SinParen}{p} +\newcommand{\Sin}[1]{\sin\COOL@decide@paren{Sin}{#1}} +\newcommand{\COOL@notation@CosParen}{p} +\newcommand{\Cos}[1]{\cos\COOL@decide@paren{Cos}{#1}} +\newcommand{\COOL@notation@TanParen}{p} +\newcommand{\Tan}[1]{\tan\COOL@decide@paren{Tan}{#1}} +\newcommand{\COOL@notation@CscParen}{p} +\newcommand{\Csc}[1]{\csc\COOL@decide@paren{Csc}{#1}} +\newcommand{\COOL@notation@SecParen}{p} +\newcommand{\Sec}[1]{\sec\COOL@decide@paren{Sec}{#1}} +\newcommand{\COOL@notation@CotParen}{p} +\newcommand{\Cot}[1]{\cot\COOL@decide@paren{Cot}{#1}} +\def\COOL@notation@ArcTrig{inverse} +\newcommand{\COOL@notation@ArcSinParen}{p} +\newcommand{\ArcSin}[1]{% +\ifthenelse{ \equal{\COOL@notation@ArcTrig}{inverse} }% +{% +\sin^{-1}\COOL@decide@paren{ArcSin}{#1}% +} +{ +\ifthenelse{\equal{\COOL@notation@ArcTrig}{arc}}% +{% +\arcsin\COOL@decide@paren{ArcSin}{#1}% +}% +{% +\PackageError{cool}{Invalid option sent}{}% +}% +}% +} +\newcommand{\COOL@notation@ArcCosParen}{p} +\newcommand{\ArcCos}[1]{% +\ifthenelse{ \equal{\COOL@notation@ArcTrig}{inverse} }% +{% +\cos^{-1}\COOL@decide@paren{ArcCos}{#1}% +}% +{% +\ifthenelse{\equal{\COOL@notation@ArcTrig}{arc}}% +{% +\arccos\COOL@decide@paren{ArcCos}{#1}% +}% +{% +\PackageError{cool}{Invalid option sent}{}% +}% +}% +} +\newcommand{\COOL@notation@ArcTanParen}{p} +\newcommand{\ArcTan}[1]{% +\ifthenelse{ \equal{\COOL@notation@ArcTrig}{inverse} }% +{% +\tan^{-1}\COOL@decide@paren{ArcTan}{#1}% +}% +{% +\ifthenelse{\equal{\COOL@notation@ArcTrig}{arc}}% +{% +\arctan\COOL@decide@paren{ArcTan}{#1}% +}% +{% +\PackageError{cool}{Invalid option sent}{}% +}% +}% +} +\newcommand{\COOL@notation@ArcCscParen}{p} +\newcommand{\ArcCsc}[1]{\csc^{-1}\COOL@decide@paren{ArcCsc}{#1}} +\newcommand{\COOL@notation@ArcSecParen}{p} +\newcommand{\ArcSec}[1]{\sec^{-1}\COOL@decide@paren{ArcSec}{#1}} +\newcommand{\COOL@notation@ArcCotParen}{p} +\newcommand{\ArcCot}[1]{\cot^{-1}\COOL@decide@paren{ArcCot}{#1}} +\newcommand{\COOL@notation@SinhParen}{p} +\newcommand{\Sinh}[1]{\sinh\COOL@decide@paren{Sinh}{#1}} +\newcommand{\COOL@notation@CoshParen}{p} +\newcommand{\Cosh}[1]{\cosh\COOL@decide@paren{Cosh}{#1}} +\newcommand{\COOL@notation@TanhParen}{p} +\newcommand{\Tanh}[1]{\tanh\COOL@decide@paren{Tanh}{#1}} +\newcommand{\COOL@notation@CschParen}{p} +\DeclareMathOperator{\csch}{csch} +\newcommand{\Csch}[1]{\csch\COOL@decide@paren{Csch}{#1}} +\newcommand{\COOL@notation@SechParen}{p} +\DeclareMathOperator{\sech}{sech} +\newcommand{\Sech}[1]{\sech\COOL@decide@paren{Sech}{#1}} +\newcommand{\COOL@notation@CothParen}{p} +\newcommand{\Coth}[1]{\coth\COOL@decide@paren{Coth}{#1}} +\newcommand{\COOL@notation@ArcSinhParen}{p} +\newcommand{\ArcSinh}[1]{\sinh^{-1}\COOL@decide@paren{ArcSinh}{#1}} +\newcommand{\COOL@notation@ArcCoshParen}{p} +\newcommand{\ArcCosh}[1]{\cosh^{-1}\COOL@decide@paren{ArcCosh}{#1}} +\newcommand{\COOL@notation@ArcTanhParen}{p} +\newcommand{\ArcTanh}[1]{\tanh^{-1}\COOL@decide@paren{ArcTanh}{#1}} +\newcommand{\COOL@notation@ArcCschParen}{p} +\newcommand{\ArcCsch}[1]{\csch^{-1}\COOL@decide@paren{ArcCsch}{#1}} +\newcommand{\COOL@notation@ArcSechParen}{p} +\newcommand{\ArcSech}[1]{\sech^{-1}\COOL@decide@paren{ArcSech}{#1}} +\newcommand{\COOL@notation@ArcCothParen}{p} +\newcommand{\ArcCoth}[1]{\coth^{-1}\COOL@decide@paren{ArcCoth}{#1}} +\newcommand{\LambertW}[1]{\ProductLog{#1}} +\newcommand{\COOL@notation@ProductLogParen}{p} +\newcommand{\ProductLog}[1]{% +\listval{#1}{0}% +\ifthenelse{\value{COOL@listpointer}=1}% +{% +W\!\COOL@decide@paren{ProductLog}{#1}% +}% +{% +\ifthenelse{\value{COOL@listpointer}=2}% +{% +W_{\listval{#1}{1}}\!\COOL@decide@paren{ProductLog}{\listval{#1}{2}}% +}% +{% +\PackageError{cool}{`ProductLog' Invaid Argument}% +{Must have a comma separated list of length 1 or 2} +}% +}% +} +\newcommand{\COOL@notation@MaxParen}{p} +\newcommand{\Max}[1]{\max\COOL@decide@paren{Max}{#1}} +\newcommand{\COOL@notation@MinParen}{p} +\newcommand{\Min}[1]{\min\COOL@decide@paren{Min}{#1}} +\newcommand{\COOL@notation@BesselJSymb}{J} +\newcommand{\COOL@notation@BesselJParen}{p} +\newcommand{\BesselJ}[2]% +{\COOL@notation@BesselJSymb_{#1}\!\COOL@decide@paren{BesselJ}{#2}} +\newcommand{\COOL@notation@BesselYSymb}{Y} +\newcommand{\COOL@notation@BesselYParen}{p} +\newcommand{\BesselY}[2]% +{\COOL@notation@BesselYSymb_{#1}\!\COOL@decide@paren{BesselY}{#2}} +\newcommand{\COOL@notation@BesselISymb}{I} +\newcommand{\COOL@notation@BesselIParen}{p} +\newcommand{\BesselI}[2]% +{\COOL@notation@BesselISymb_{#1}\!\COOL@decide@paren{BesselI}{#2}} +\newcommand{\COOL@notation@BesselKSymb}{K} +\newcommand{\COOL@notation@BesselKParen}{p} +\newcommand{\BesselK}[2]% +{\COOL@notation@BesselKSymb_{#1}\!\COOL@decide@paren{BesselK}{#2}} +\newcommand{\COOL@notation@AiryAiParen}{p} +\DeclareMathOperator{\AiryAiSymb}{Ai} +\newcommand{\AiryAi}[1]{\AiryAiSymb\!\COOL@decide@paren{AiryAi}{#1}} +\newcommand{\COOL@notation@AiryBiParen}{p} +\DeclareMathOperator{\AiryBiSymb}{Bi} +\newcommand{\AiryBi}[1]{\AiryBiSymb\!\COOL@decide@paren{AiryBi}{#1}} +\newcommand{\COOL@notation@StruveHParen}{p} +\newcommand{\StruveH}[2]{ {\bf H}_{#1}\!\COOL@decide@paren{StruveH}{#2}} +\newcommand{\COOL@notation@StruveLParen}{p} +\newcommand{\StruveL}[2]{ {\bf L}_{#1}\!\COOL@decide@paren{StruveL}{#2}} +\newcommand{\Floor}[1]{\lfloor #1 \rfloor} +\newcommand{\Ceiling}[1]{\lceil #1 \rceil} +\newcommand{\Round}[1]{\lfloor #1 \rceil} +\newcommand{\COOL@notation@IntegerPartParen}{p} +\DeclareMathOperator{\iPartSymb}{int} +\newcommand{\iPart}[1]{\iPartSymb\COOL@decide@paren{IntegerPart}{#1}} +\newcommand{\IntegerPart}[1]{\iPart{#1}} +\newcommand{\COOL@notation@FractionalPartParen}{p} +\DeclareMathOperator{\fPartSymb}{frac} +\newcommand{\fPart}[1]{\fPartSymb\COOL@decide@paren{FractionalPart}{#1}} +\newcommand{\FractionalPart}[1]{\fPart{#1}} +\newcommand{\COOL@notation@ModDisplay}{mod} +\newcommand{\Mod}[2]{% +\ifthenelse{\equal{\COOL@notation@ModDisplay}{mod}}% +{% +#1 \mod #2% +}% +{ \ifthenelse{\equal{\COOL@notation@ModDisplay}{bmod}}% +{% +#1 \bmod #2% +}% +{ \ifthenelse{\equal{\COOL@notation@ModDisplay}{pmod}}% +{% +#1 \pmod #2% +}% +{\ifthenelse{\equal{\COOL@notation@ModDisplay}{pod}}% +{% +#1 \pod #2% +}% +{% +\PackageError{cool}{Invalid Option Sent}% +{ModDisplay can only be `mod', `bmod', `pmod', or `pod'}% +}}}}% +} +\newcommand{\COOL@notation@QuotientParen}{p} +\DeclareMathOperator{\QuotientSymb}{quotient} +\newcommand{\Quotient}[2]% +{\QuotientSymb\COOL@decide@paren{Quotient}{#1,#2}} +\newcommand{\COOL@notation@GCDParen}{p} +\newcommand{\GCD}[1]{\gcd\COOL@decide@paren{GCD}{#1}} +\newcommand{\COOL@notation@ExtendedGCDParen}{p} +\DeclareMathOperator{\ExtendedGCDSymb}{egcd} +\newcommand{\ExtendedGCD}[2]% +{\ExtendedGCDSymb\COOL@decide@paren{ExtendedGCD}{#1,#2}} +\newcommand{\EGCD}[2]{\ExtendedGCD{#1}{#2}} +\newcommand{\COOL@notation@LCMParen}{p} +\DeclareMathOperator{\LCMSymb}{lcm} +\newcommand{\LCM}[1]{\LCMSymb\COOL@decide@paren{LCM}{#1}} +\newcommand{\COOL@notation@FibonacciParen}{p} +\newcommand{\Fibonacci}[1]{% +\liststore{#1}{COOL@Fibonacci@arg@}% +\listval{#1}{0}% +\ifthenelse{\value{COOL@listpointer} = 1}% +{% +F_{#1}% +}% +{ \ifthenelse{\value{COOL@listpointer} = 2}% +{% +F_{\COOL@Fibonacci@arg@i}\!% +\COOL@decide@paren{Fibonacci}{\COOL@Fibonacci@arg@ii}% +}% +{% +\PackageError{cool}{Invalid Argument}% +{`Fibonacci' can only accept a +comma separate list of length 1 or 2}% +}}% +} +\newcommand{\COOL@notation@EulerParen}{p} +\newcommand{\Euler}[1]{% +\liststore{#1}{COOL@Euler@arg@}% +\listval{#1}{0}% +\ifthenelse{\value{COOL@listpointer} = 1}% +{% +E_{#1}% +}% +{ \ifthenelse{\value{COOL@listpointer} = 2}% +{% +E_{\COOL@Euler@arg@i}\!% +\COOL@decide@paren{Euler}{\COOL@Euler@arg@ii}% +}% +{% +\PackageError{cool}{Invalid Argument}% +{`Euler' can only accept a +comma separate list of length 1 or 2}% +}}% +} +\newcommand{\COOL@notation@BernoulliParen}{p} +\newcommand{\Bernoulli}[1]{% +\liststore{#1}{COOL@Bernoulli@arg@}% +\listval{#1}{0}% +\ifthenelse{\value{COOL@listpointer} = 1}% +{% +B_{#1}% +}% +{ \ifthenelse{\value{COOL@listpointer} = 2}% +{% +B_{\COOL@Bernoulli@arg@i}\!% +\COOL@decide@paren{Bernoulli}{\COOL@Bernoulli@arg@ii}% +}% +{% +\PackageError{cool}{Invalid Argument}% +{`Bernoulli' can only accept a +comma separate list of length 1 or 2}% +}}% +} +\newcommand{\StirlingSOne}[2]{S_{#1}^{\inp{#2}}} +\newcommand{\StirlingSTwo}[2]{{\cal S}_{#1}^{\inp{#2}}} +\newcommand{\COOL@notation@PartitionsPParen}{p} +\newcommand{\PartitionsP}[1]{p\!\COOL@decide@paren{PartitionsP}{#1}} +\newcommand{\COOL@notation@PartitionsQParen}{p} +\newcommand{\PartitionsQ}[1]{q\!\COOL@decide@paren{PartitionsQ}{#1}} +\newcommand{\COOL@notation@DiscreteDeltaParen}{p} +\newcommand{\DiscreteDelta}[1]% +{\delta\COOL@decide@paren{DiscreteDelta}{#1}} +\newcommand{\COOL@notation@KroneckerDeltaUseComma}{false}% +\newcommand{\COOL@notation@KroneckerDeltaIndicies}{local} +\newcommand{\KroneckerDelta}[2][u]{% +\liststore{#2}{COOL@arg@}% +\listval{#2}{0}% +\def\COOL@arg@temp{}% +\forLoop{1}{\value{COOL@listpointer}}{COOL@ct}% +{% +\ifthenelse{\equal{\COOL@notation@KroneckerDeltaUseComma}{true}}% +{% +\ifthenelse{\NOT \value{COOL@ct} = 1} +{% +\edef\COOL@arg@temp% +{\COOL@arg@temp, \csname COOL@arg@\roman{COOL@ct}\endcsname}% +}% +{% +\edef\COOL@arg@temp% +{\COOL@arg@temp \csname COOL@arg@\roman{COOL@ct}\endcsname}% +}% +}% +{% +\edef\COOL@arg@temp% +{\COOL@arg@temp \csname COOL@arg@\roman{COOL@ct}\endcsname}% +}% +}% +\delta\COOL@decide@indicies{KroneckerDelta}{#1}{\COOL@arg@temp}% +} +\newcommand{\COOL@notation@LeviCivitaUseComma}{false} +\newcommand{\COOL@notation@LeviCivitaIndicies}{local} +\newcommand{\LeviCivita}[2][u]{% +\liststore{#2}{COOL@arg@}% +\listval{#2}{0}% +\def\COOL@arg@temp{}% +\forLoop{1}{\value{COOL@listpointer}}{COOL@ct}% +{% +\ifthenelse{\equal{\COOL@notation@LeviCivitaUseComma}{true}}% +{% +\ifthenelse{\NOT \value{COOL@ct} = 1}{,}{}% +\edef\COOL@arg@temp% +{\COOL@arg@temp \csname COOL@arg@\roman{COOL@ct}\endcsname}% +}% +{% +\edef\COOL@arg@temp% +{\COOL@arg@temp \csname COOL@arg@\roman{COOL@ct}\endcsname}% +}% +}% +\epsilon\COOL@decide@indicies{LeviCivita}{#1}{\COOL@arg@temp}% +}% +\newcommand{\Signature}[2][u]{\LeviCivita[#1]{#2}} +\newcommand{\COOL@notation@HermiteHParen}{p} +\newcommand{\COOL@notation@HermiteHSymb}{H} +\newcommand{\HermiteH}[2]% +{\COOL@notation@HermiteHSymb_{#1}\!\COOL@decide@paren{HermiteH}{#2}} +\newcommand{\COOL@notation@LaugerreLParen}{p} +\newcommand{\COOL@notation@LaugerreLSymb}{L} +\newcommand{\LaugerreL}[1]{% +\liststore{#1}{COOL@list@temp@}% +\listval{#1}{0}% +\ifthenelse{\value{COOL@listpointer}=2}% +{% +\COOL@notation@LaugerreLSymb_{\COOL@list@temp@i}% +\!\COOL@decide@paren{LaugerreL}{\COOL@list@temp@ii}% +}% +{ \ifthenelse{\value{COOL@listpointer}=3}% +{% +\COOL@notation@LaugerreLSymb_{\COOL@list@temp@i}^{\COOL@list@temp@ii}% +\!\COOL@decide@paren{LaugerreL}{\COOL@list@temp@iii}% +}% +{% +\PackageError{cool}{Invalid Argument}% +{`LaugerrL' only accepts a comma separated list of length 2 or 3}% +}}% +} +\newcommand{\COOL@notation@LegendrePParen}{p} +\newcommand{\COOL@notation@LegendrePSymb}{P} +\newcommand{\LegendreP}[1]{% +\liststore{#1}{COOL@LegendreP@arg@}% +\listval{#1}{0}% +\ifthenelse{\value{COOL@listpointer} = 2}% +{% +\COOL@notation@LegendrePSymb_{\COOL@LegendreP@arg@i}\!% +\COOL@decide@paren{LegendreP}{\COOL@LegendreP@arg@ii}% +}% +{ \ifthenelse{\value{COOL@listpointer} = 3}% +{% +\COOL@notation@LegendrePSymb_{\COOL@LegendreP@arg@i}% +^{\COOL@LegendreP@arg@ii}\!% +\COOL@decide@paren{LegendreP}{\COOL@LegendreP@arg@iii}% +}% +{ \ifthenelse{\value{COOL@listpointer} = 4}% +{% +\isint{\COOL@LegendreP@arg@iii}% +\ifthenelse{\boolean{COOL@isint}}% +{% +\ifcase\COOL@LegendreP@arg@iii\relax% +\PackageError{cool}{Invalid Argument}% +{`LegendreP' third argument must be $>$ 1}% +\or% +\PackageError{cool}{Invalid Argument}% +{`LegendreP' third argument must be $>$ 1}% +\or% +\COOL@notation@LegendrePSymb_{\COOL@LegendreP@arg@i}% +^{\COOL@LegendreP@arg@ii}\!% +\COOL@decide@paren{LegendreP}{\COOL@LegendreP@arg@iv}% +\or% +{\cal P}_{\COOL@LegendreP@arg@i}% +^{\COOL@LegendreP@arg@ii}\!% +\COOL@decide@paren{LegendreP}{\COOL@LegendreP@arg@iv}% +\else% +\PackageError{cool}{Invalid Argument}{unsupported}% +\fi% +} +{% +\PackageError{cool}{Invalid Argument}{third arg must be int}% +}% +}% +{% +\PackageError{cool}{Invalid Argument}% +{`LegendreP' can only accept a% + comma separated list of length 2-4}% +}}}% +} +\newcommand{\COOL@notation@LegendreQParen}{p} +\newcommand{\COOL@notation@LegendreQSymb}{Q} +\newcommand{\LegendreQ}[1]{% +\liststore{#1}{COOL@LegendreQ@arg@}% +\listval{#1}{0}% +\ifthenelse{\value{COOL@listpointer} = 2}% +{% +\COOL@notation@LegendreQSymb_{\COOL@LegendreQ@arg@i}\!% +\COOL@decide@paren{LegendreQ}{\COOL@LegendreQ@arg@ii}% +}% +{ \ifthenelse{\value{COOL@listpointer} = 3}% +{% +\COOL@notation@LegendreQSymb_{\COOL@LegendreQ@arg@i}% +^{\COOL@LegendreQ@arg@ii}\!% +\COOL@decide@paren{LegendreQ}{\COOL@LegendreQ@arg@iii}% +}% +{ \ifthenelse{\value{COOL@listpointer} = 4}% +{% +\isint{\COOL@LegendreQ@arg@iii}% +\ifthenelse{\boolean{COOL@isint}}% +{% +\ifcase\COOL@LegendreQ@arg@iii\relax% +\PackageError{cool}{Invalid Argument}% +{`LegendreQ' third argument must be $>$ 1}% +\or% +\PackageError{cool}{Invalid Argument}% +{`LegendreQ' third argument must be $>$ 1}% +\or% +\COOL@notation@LegendreQSymb_{\COOL@LegendreQ@arg@i}% +^{\COOL@LegendreQ@arg@ii}\!% +\COOL@decide@paren{LegendreQ}{\COOL@LegendreQ@arg@iv}% +\or% +{\cal Q}_{\COOL@LegendreQ@arg@i}% +^{\COOL@LegendreQ@arg@ii}\!% +\COOL@decide@paren{LegendreQ}{\COOL@LegendreQ@arg@iv}% +\else% +\PackageError{cool}{Invalid Argument}{unsupported}% +\fi% +} +{% +\PackageError{cool}{Invalid Argument}{third arg must be int}% +}% +}% +{% +\PackageError{cool}{Invalid Argument}% +{`LegendreQ' can only accept a% + comma separated list of length 2-4}% +}}}% +} +\newcommand{\COOL@notation@ChebyshevTParen}{p} +\newcommand{\COOL@notation@ChebyshevTSymb}{T} +\newcommand{\ChebyshevT}[2]% +{\COOL@notation@ChebyshevTSymb_{#1}\!\COOL@decide@paren{ChebyshevT}{#2}} +\newcommand{\COOL@notation@ChebyshevUParen}{p} +\newcommand{\COOL@notation@ChebyshevUSymb}{U} +\newcommand{\ChebyshevU}[2]% +{\COOL@notation@ChebyshevUSymb_{#1}\!\COOL@decide@paren{ChebyshevU}{#2}} +\newcommand{\COOL@notation@JacobiPParen}{p} +\newcommand{\COOL@notation@JacobiPSymb}{P} +\newcommand{\JacobiP}[4]{% +\COOL@notation@JacobiPSymb_{#1}^{\inp{#2, #3}}% +\!\COOL@decide@paren{JacobiP}{#4}% +} +\newcommand{\AssocLegendreP}[3]{\LegendreP{#1,#2,#3}} +\newcommand{\AssocLegendreQ}[3]{\LegendreQ{#1,#2,#3}} +\newcommand{\COOL@notation@GegenbauerCParen}{p} +\newcommand{\COOL@notation@GegenbauerCSymb}{C} +\newcommand{\GegenbauerC}[3]{% +\COOL@notation@GegenbauerCSymb_{#1}^{#2}% +\!\COOL@decide@paren{GegenbauerC}{#3}% +} +\newcommand{\COOL@notation@SphericalHarmonicYParen}{p} +\newcommand{\COOL@notation@SphericalHarmonicYSymb}{Y} +\newcommand{\SphericalHarmonicY}[4]{% +\COOL@notation@SphericalHarmonicYSymb_{#1}^{#2}% +\!\COOL@decide@paren{SphericalHarmonicY}{#3,#4}% +} +\newcommand{\SphericalHarmY}[4]{\SphericalHarmonicY{#1}{#2}{#3}{#4}} +\newcommand{\SpHarmY}[4]{\SphericalHarmonicY{#1}{#2}{#3}{#4}} +\newcommand{\COOL@notation@CyclotomicCParen}{p} +\newcommand{\CyclotomicC}[2]% +{C_{#1}\!\COOL@decide@paren{CyclotomicC}{#2}} +\newcommand{\FibonacciF}[2]{\Fibonacci{#1,#2}} +\newcommand{\EulerE}[2]{\Euler{#1,#2}} +\newcommand{\BernoulliB}[2]{\Bernoulli{#1,#2}} +\newcommand{\Factorial}[1]{#1!} +\newcommand{\DblFactorial}[1]{#1!!} +\newcommand{\Binomial}[2]{ \binom{#1}{#2} } +\newcommand{\Multinomial}[1]% +{% +\listval{#1}{0}% get the length of the list +\setcounter{COOL@listlen}{\value{COOL@listpointer}}% record length +\liststore{#1}{COOL@list@temp@}% +\isint{\COOL@list@temp@i}% check that the entries are integers +\setcounter{COOL@ct}{2}% +\whiledo{ \boolean{COOL@isint} \AND +\NOT \value{COOL@ct}>\value{COOL@listlen} }% +{% +\def\COOL@Multinomial@tempa% +{\csname COOL@list@temp@\roman{COOL@ct}\endcsname}% +\isint{\COOL@Multinomial@tempa}% +\stepcounter{COOL@ct}% +}% +\ifthenelse{\boolean{COOL@isint}}% +{% +\setcounter{COOL@ct@}{ \COOL@list@temp@i }% records the sum +\forLoop{2}{\value{COOL@listlen}}{COOL@ct}% +{% +\addtocounter{COOL@ct@}% +{\csname COOL@list@temp@\roman{COOL@ct}\endcsname}% +}% +\left(\arabic{COOL@ct@}% +}% +{% +\left(% +\listval{#1}{1}% +\forLoop{2}{\value{COOL@listlen}}{COOL@ct}% +{% ++ \listval{#1}{\arabic{COOL@ct}}% +}% +}% +;#1\right)% +} +\newcommand{\COOL@notation@GammaFuncParen}{p} +\newcommand{\GammaFunc}[1]{% +\listval{#1}{0}% +\ifthenelse{\value{COOL@listpointer} = 1}% +{% +\Gamma\!\COOL@decide@paren{GammaFunc}{#1}% +}% +{ \ifthenelse{\value{COOL@listpointer} = 2}% +{% +\Gamma\!\COOL@decide@paren{GammaFunc}{#1}% +}% +{ \ifthenelse{\value{COOL@listpointer} = 3}% +{% +\Gamma\!\COOL@decide@paren{GammaFunc}{#1}% +}% +{% +\PackageError{cool}{Invalid Argument}% +{`GammaFunc' can only accept a comma separate list of length 1 to 3}% +}% +}}% +} +\newcommand{\IncGamma}[2]{\GammaFunc{#1,#2}} +\newcommand{\GenIncGamma}[3]{\GammaFunc{#1, #2, #3}} +\newcommand{\COOL@notation@GammaRegularizedParen}{p}% +\newcommand{\GammaRegularized}[1]{% +\listval{#1}{0}% +\ifthenelse{\value{COOL@listpointer} = 2}% +{% +Q\!\COOL@decide@paren{GammaRegularized}{#1}% +}% +{ \ifthenelse{\value{COOL@listpointer} = 3}% +{% +Q\!\COOL@decide@paren{GammaRegularized}{#1}% +}% +{% +\PackageError{cool}{Invalid Argument}% +{`GammaRegularized' can only accept comma% + separated lists of length 2 or 3}% +}% +}% +} +\newcommand{\RegIncGamma}[2]{\GammaRegularized{#1, #2}} +\newcommand{\GammaReg}[1]{\GammaRegularized{#1}} +\newcommand{\COOL@notation@InverseGammaRegularizedParen}{p} +\newcommand{\InverseGammaRegularized}[1]{% +\listval{#1}{0}% +\ifthenelse{\value{COOL@listpointer} = 2}% +{% +Q^{-1}\!\COOL@decide@paren{InverseGammaRegularized}{#1}% +}% +{ \ifthenelse{\value{COOL@listpointer} = 3}% +{% +Q^{-1}\!\COOL@decide@paren{InverseGammaRegularized}{#1}% +}% +{% +\PackageError{cool}{Invalid Argument}% +{`InverseGammaRegularized' can only accept% + a comma separated list of length 2 or 3}% +}% +}% +} +\newcommand{\RegIncGammaInv}[2]{\InverseGammaRegularized{#1, #2}} +\newcommand{\GammaRegInv}[1]{\InverseGammaRegularized{#1}} +\newcommand{\GenRegIncGamma}[3]{\GammaRegularized{#1, #2, #3}} +\newcommand{\GenRegIncGammaInv}[3]{\InverseGammaRegularized{#1, #2, #3}} +\newcommand{\Pochhammer}[2]{\inp{#1}_{#2}} +\newcommand{\COOL@notation@LogGammaParen}{p} +\DeclareMathOperator{\LogGammaSymb}{log\Gamma} +\newcommand{\LogGamma}[1]{\LogGammaSymb\COOL@decide@paren{LogGamma}{#1}} +\newcommand{\COOL@notation@DiGammaParen}{p} +\newcommand{\DiGamma}[1]{\digamma\!\COOL@decide@paren{DiGamma}{#1}} +\newcommand{\COOL@notation@PolyGammaParen}{p} +\newcommand{\PolyGamma}[2]% +{\psi^{\inp{#1}}\!\COOL@decide@paren{PolyGamma}{#2}} +\newcommand{\HarmNum}[1]{% +\listval{#1}{0}% +\ifthenelse{\value{COOL@listpointer}=1}% +{% +H_{#1} +}% +{ \ifthenelse{\value{COOL@listpointer}=2}% +{% +\liststore{#1}{COOL@list@temp@}% +H^{\inp{\COOL@list@temp@ii}}_{\COOL@list@temp@i}% +}% +{% +\PackageError{cool}{Invalid Argument}% +{`Harm Num' can only accept a comma separated list of length 1 or 2}% +}}% +} +\newcommand{\COOL@notation@BetaParen}{p} +\newcommand{\Beta}[1]{% +\liststore{#1}{COOL@Beta@arg@}% +\listval{#1}{0}% +\ifthenelse{\value{COOL@listpointer} = 2}% +{% +B\!\COOL@decide@paren{Beta}{\COOL@Beta@arg@i, \COOL@Beta@arg@ii}% +}% +{ \ifthenelse{\value{COOL@listpointer} = 3}% +{% +B_{\COOL@Beta@arg@i}\!% +\COOL@decide@paren{Beta}{\COOL@Beta@arg@ii, \COOL@Beta@arg@iii}% +}% +{ \ifthenelse{\value{COOL@listpointer} = 4}% +{% +B_{\inp{\COOL@Beta@arg@i,\COOL@Beta@arg@ii}}\!% +\COOL@decide@paren{Beta}{\COOL@Beta@arg@iii, \COOL@Beta@arg@iv}% +}% +{% +\PackageError{cool}{Invalid Argument}% +{`Beta' can only accept a comma separated list of length 2 to 4}% +}% +}}% +} +\newcommand{\IncBeta}[3]{\Beta{#1,#2, #3}} +\newcommand{\GenIncBeta}[4]{\Beta{#1,#2,#3,#4}} +\newcommand{\COOL@notation@BetaRegularizedParen}{p} +\newcommand{\BetaRegularized}[1]{% +\liststore{#1}{COOL@BetaRegularized@arg@}% +\listval{#1}{0}% +\ifthenelse{\value{COOL@listpointer} = 3}% +{% +I_{\COOL@BetaRegularized@arg@i}\!% +\COOL@decide@paren{BetaRegularized}% +{\COOL@BetaRegularized@arg@ii, \COOL@BetaRegularized@arg@iii}% +}% +{ \ifthenelse{\value{COOL@listpointer} = 4}% +{% +I_{\inp{\COOL@BetaRegularized@arg@i, \COOL@BetaRegularized@arg@ii}}\!% +\COOL@decide@paren{BetaRegularized}% +{\COOL@BetaRegularized@arg@iii, \COOL@BetaRegularized@arg@iv}% +}% +{% +\PackageError{cool}{Invalid Argument}% +{`BetaRegularized' can only accept% + a comma separated list of length 3 or 4}% +}% +}% +} +\newcommand{\RegIncBeta}[3]{\BetaRegularized{#1,#2,#3}} +\newcommand{\BetaReg}[1]{\BetaRegularized{#1}} +\newcommand{\COOL@notation@InverseBetaRegularizedParen}{p} +\newcommand{\InverseBetaRegularized}[1]{% +\liststore{#1}{COOL@InverseBetaRegularized@arg@}% +\listval{#1}{0}% +\ifthenelse{\value{COOL@listpointer} = 3}% +{% +I^{-1}_{\COOL@InverseBetaRegularized@arg@i}\!% +\COOL@decide@paren{InverseBetaRegularized}% +{\COOL@InverseBetaRegularized@arg@ii,% + \COOL@InverseBetaRegularized@arg@iii}% +}% +{ \ifthenelse{\value{COOL@listpointer} = 4}% +{% +I^{-1}_{\inp{ \COOL@InverseBetaRegularized@arg@i,% +\COOL@InverseBetaRegularized@arg@ii% + }% +}\!% +\COOL@decide@paren{InverseBetaRegularized}% +{\COOL@InverseBetaRegularized@arg@iii,% + \COOL@InverseBetaRegularized@arg@iv}% +}% +{% +\PackageError{cool}{Invalid Argument}% +{`InverseBetaRegularized' can only accept% + a comma separated list of length 3 or 4}% +}% +}% +} +\newcommand{\RegIncBetaInv}[3]{\InverseBetaRegularized{#1,#2,#3}} +\newcommand{\BetaRegInv}[1]{\InverseBetaRegularized{#1}} +\newcommand{\GenRegIncBeta}[4]{\Beta{#1,#2,#3,#4}} +\newcommand{\GenRegIncBetaInv}[4]{\InverseBetaRegularized{#1,#2,#3,#4}} +\newcommand{\COOL@notation@ErfParen}{p} +\DeclareMathOperator{\ErfSymb}{erf} +\newcommand{\Erf}[1]{% +\liststore{#1}{COOL@Erf@arg@}% +\listval{#1}{0}% +\ifthenelse{\value{COOL@listpointer} = 1}% +{% +\ErfSymb\!\COOL@decide@paren{Erf}{#1} +}% +{ \ifthenelse{\value{COOL@listpointer} = 2}% +{% +\ErfSymb\!\COOL@decide@paren{Erf}{#1} +}% +{% +\PackageError{cool}{Invalid Argument}% +{`Erf' can only accept a comma separated list of length 1 or 2}% +}% +}% +} +\newcommand{\COOL@notation@ErfInvParen}{p} +\newcommand{\ErfInv}[1]{% +\liststore{#1}{COOL@Erf@arg@}% +\listval{#1}{0}% +\ifthenelse{\value{COOL@listpointer} = 1}% +{% +\ErfSymb^{-1}\!\COOL@decide@paren{ErfInv}{#1} +}% +{ \ifthenelse{\value{COOL@listpointer} = 2}% +{% +\ErfSymb^{-1}\!\COOL@decide@paren{ErfInv}{#1} +}% +{% +\PackageError{cool}{Invalid Argument}% +{`Erf' can only accept a comma separated list of length 1 or 2}% +}% +}% +} + +\newcommand{\GenErf}[2]{\Erf{#1,#2}} +\newcommand{\GenErfInv}[2]{\ErfInv{#1, #2}} +\newcommand{\COOL@notation@ErfcParen}{p} +\DeclareMathOperator{\ErfcSymb}{erfc} +\newcommand{\Erfc}[1]{\ErfcSymb\!\COOL@decide@paren{Erfc}{#1}} +\newcommand{\COOL@notation@ErfcInvParen}{p} +\newcommand{\ErfcInv}[1]% +{\ErfcSymb^{-1}\!\COOL@decide@paren{ErfcInv}{#1}} +\newcommand{\COOL@notation@ErfiParen}{p} +\DeclareMathOperator{\ErfiSymb}{erfi} +\newcommand{\Erfi}[1]{\ErfiSymb\!\COOL@decide@paren{Erfi}{#1}} +\newcommand{\COOL@notation@FresnelSParen}{p} +\newcommand{\FresnelS}[1]{S\!\COOL@decide@paren{FresnelS}{#1}} +\newcommand{\COOL@notation@FresnelCParen}{p} +\newcommand{\FresnelC}[1]{C\!\COOL@decide@paren{FresnelC}{#1}} +\newcommand{\COOL@notation@ExpIntEParen}{p} +\newcommand{\ExpIntE}[2]{E_{#1}\!\COOL@decide@paren{ExpIntE}{#2}} +\newcommand{\COOL@notation@ExpIntEiParen}{p} +\DeclareMathOperator{\ExpIntEiSymb}{Ei} +\newcommand{\ExpIntEi}[1]% +{\ExpIntEiSymb\!\COOL@decide@paren{ExpIntEi}{#1}} +\newcommand{\COOL@notation@LogIntParen}{p} +\DeclareMathOperator{\LogIntSymb}{li} +\newcommand{\LogInt}[1]{\LogIntSymb\!\COOL@decide@paren{LogInt}{#1}} +\newcommand{\COOL@notation@SinIntParen}{p} +\DeclareMathOperator{\SinIntSymb}{Si} +\newcommand{\SinInt}[1]{\SinIntSymb\!\COOL@decide@paren{SinInt}{#1}} +\newcommand{\COOL@notation@CosIntParen}{p} +\DeclareMathOperator{\CosIntSymb}{Ci} +\newcommand{\CosInt}[1]{\CosIntSymb\!\COOL@decide@paren{CosInt}{#1}} +\newcommand{\COOL@notation@SinhIntParen}{p} +\DeclareMathOperator{\SinhIntSymb}{Shi} +\newcommand{\SinhInt}[1]{\SinhIntSymb\!\COOL@decide@paren{SinhInt}{#1}} +\newcommand{\COOL@notation@CoshIntParen}{p} +\DeclareMathOperator{\CoshIntSymb}{Chi} +\newcommand{\CoshInt}[1]{\CoshIntSymb\!\COOL@decide@paren{CoshInt}{#1}} +\newcommand{\COOL@Hypergeometric@pq@ab@value}[4]{% +\ifthenelse{\boolean{COOL@#1@isint} \AND \boolean{COOL@#3@islist}}% +{% #1 is an INT and #3 is a LIST +\ifthenelse{ #2 = 0 }% +{% +\PackageWarning{cool}{`#3'-arg ignored}% +}% +{% +\ifthenelse{ #2 = 1 }% +{% +\PackageError{cool}{`Hypergeometric' `#1'-arg mismatch with `#3'-arg}{}% +}% +{% +#4% +}% +}% +}% +{}% +\ifthenelse{ \boolean{COOL@#1@isint} \AND +\NOT \boolean{COOL@#3@islist} }% +{% +\ifthenelse{ #2 = 0 }% +{% +}% +{% +\ifthenelse{ #2 = 1 }% +{% +#4% +}% +{% +\forLoop{1}{#2}{COOL@ct} +{% +\ifthenelse{ \value{COOL@ct} = 1 }{}{,}% +#4_{\arabic{COOL@ct}}% +}% end for loop +}% +}% +}% +{}% +\ifthenelse{ \NOT \boolean{COOL@#1@isint} \AND +\boolean{COOL@#3@islist} }% +{% +\PackageError{cool}{Invalid Argument}% +{`Hypergeometric': `#1'-arg is not int but `#3'-arg is list} +}% +{}% +\ifthenelse{ \NOT \boolean{COOL@#1@isint} \AND +\NOT \boolean{COOL@#3@islist} }% +{% +#4_1,\ldots,#4_{#2}% +}% +{}% +}% +\newcommand{\COOL@notation@HypergeometricParen}{p} +\newcommand{\COOL@notation@HypergeometricSymb}{F} +\newcommand{\Hypergeometric}[6][F]{% +\provideboolean{COOL@p@isint}% +\provideboolean{COOL@q@isint}% +\provideboolean{COOL@a@islist}% +\provideboolean{COOL@b@islist}% +\isint{#2}% +\ifthenelse{\boolean{COOL@isint}}% +{\setboolean{COOL@p@isint}{true}}% +{\setboolean{COOL@p@isint}{false}}% +\isint{#3}% +\ifthenelse{\boolean{COOL@isint}}% +{\setboolean{COOL@q@isint}{true}}% +{\setboolean{COOL@q@isint}{false}}% +\listval{#4}{0}% +\ifthenelse{\value{COOL@listpointer}>1}% +{\setboolean{COOL@a@islist}{true}}% +{\setboolean{COOL@a@islist}{false}}% +\ifthenelse{ \boolean{COOL@p@isint} \AND +\boolean{COOL@a@islist} \AND +\NOT \( #2 = \value{COOL@listpointer} \) }% +{% +\PackageError{cool}{`Hypergeometric' `p'-arg mismatch with `a'-arg}{}% +}% +{}% +\listval{#5}{0}% +\ifthenelse{\value{COOL@listpointer}>1}% +{\setboolean{COOL@b@islist}{true}}% +{\setboolean{COOL@b@islist}{false}}% +\ifthenelse{ \boolean{COOL@q@isint} \AND +\boolean{COOL@b@islist} \AND +\NOT \( #3 = \value{COOL@listpointer} \) }% +{% +\PackageError{cool}{`Hypergeometric' `q'-arg mismatch with `b'-arg}% +{`b' list is not the same length as `q'}% +}% +{}% +\ifthenelse{ \boolean{COOL@a@islist} \AND \NOT \boolean{COOL@p@isint} }% +{% +\PackageError{cool}{`Hypergeometric' `a'-arg mismatch with `p'-arg}% +{happens if `a'-arg is a list and `p'-arg isn't an integer}% +}% +{}% +\ifthenelse{ \boolean{COOL@b@islist} \AND \NOT \boolean{COOL@q@isint} }% +{% +\PackageError{cool}{`Hypergeometric' `b'-arg mismatch with `q'-arg}% +{happens if `b'-arg is a list and `q'-arg isn't an integer}% +}% +{}% +{}_{#2}{\COOL@notation@HypergeometricSymb}_{#3}\!% +\COOL@decide@paren{Hypergeometric}% +{% +\COOL@Hypergeometric@pq@ab@value{p}{#2}{a}{#4};% +\COOL@Hypergeometric@pq@ab@value{q}{#3}{b}{#5};% +#6% +}% +} +\newcommand{\COOL@notation@RegHypergeometricParen}{p} +\newcommand{\COOL@notation@RegHypergeometricSymb}{\tilde{F}} +\newcommand{\RegHypergeometric}[6][\tilde{F}]{% +\provideboolean{COOL@p@isint}% +\provideboolean{COOL@q@isint}% +\provideboolean{COOL@a@islist}% +\provideboolean{COOL@b@islist}% +\isint{#2}% +\ifthenelse{\boolean{COOL@isint}}% +{\setboolean{COOL@p@isint}{true}}% +{\setboolean{COOL@p@isint}{false}}% +\isint{#3}% +\ifthenelse{\boolean{COOL@isint}}% +{\setboolean{COOL@q@isint}{true}}% +{\setboolean{COOL@q@isint}{false}}% +\listval{#4}{0}% +\ifthenelse{\value{COOL@listpointer}>1}% +{\setboolean{COOL@a@islist}{true}}% +{\setboolean{COOL@a@islist}{false}}% +\ifthenelse{ \boolean{COOL@p@isint} \AND +\boolean{COOL@a@islist} \AND +\NOT \( #2 = \value{COOL@listpointer} \) }% +{% +\PackageError{cool}% +{`RegHypergeometric' `p'-arg mismatch with `a'-arg}{}% +}% +{}% +\listval{#5}{0}% +\ifthenelse{\value{COOL@listpointer}>1}% +{\setboolean{COOL@b@islist}{true}}% +{\setboolean{COOL@b@islist}{false}}% +\ifthenelse{ \boolean{COOL@q@isint} \AND +\boolean{COOL@b@islist} \AND +\NOT \( #3 = \value{COOL@listpointer} \) }% +{% +\PackageError{cool}% +{`RegHypergeometric' `q'-arg mismatch with `b'-arg}% +{`b' list is not the same length as `q'}% +}% +{}% +\ifthenelse{ \boolean{COOL@a@islist} \AND \NOT \boolean{COOL@p@isint} }% +{% +\PackageError{cool}% +{`RegHypergeometric' `a'-arg mismatch with `p'-arg}% +{happens if `a'-arg is a list and `p'-arg isn't an integer}% +}% +{}% +\ifthenelse{ \boolean{COOL@b@islist} \AND \NOT \boolean{COOL@q@isint} }% +{% +\PackageError{cool}% +{`RegHypergeometric' `b'-arg mismatch with `q'-arg}% +{happens if `b'-arg is a list and `q'-arg isn't an integer}% +}% +{}% +{}_{#2}{\COOL@notation@RegHypergeometricSymb}_{#3}\!% +\COOL@decide@paren{RegHypergeometric}% +{% +\COOL@Hypergeometric@pq@ab@value{p}{#2}{a}{#4};% +\COOL@Hypergeometric@pq@ab@value{q}{#3}{b}{#5};% +#6% +}% +} +\newcommand{\COOL@notation@AppellFOneParen}{p} +\newcommand{\AppellFOne}[4]% +{F_{1}\!\COOL@decide@paren{AppellFOne}{#1; #2; #3; #4}} +\newcommand{\COOL@notation@HypergeometricUSymb}{U} +\newcommand{\HypergeometricU}[3]% +{\COOL@notation@HypergeometricUSymb\!\inp{#1, #2, #3}} +\newcommand{\COOL@MeijerG@anp@value}[3]{% +\isint{#3}% +\ifthenelse{\boolean{COOL@isint}}% +{% +\isint{#2}% +\ifthenelse{\boolean{COOL@isint}}% +{% +\forLoop{1}{#3}{COOL@ct}% +{% +\ifthenelse{\value{COOL@ct}=1}{}{,}% +#1_{\arabic{COOL@ct}}% +}% +}% +{% +#1_1,\ldots,#1_{#2},#1_{#2+1},\dots,#1_{#3}% +}% +}% +{% +\isint{#2}% +\ifthenelse{\boolean{COOL@isint}}% +{% +\forLoop{1}{#2}{COOL@ct}% +{% +\ifthenelse{\value{COOL@ct}=1}{}{,}% +#1_{\arabic{COOL@ct}}% +}% +\setcounter{COOL@ct}{#2}% +\addtocounter{COOL@ct}{1}% +,#1_{\arabic{COOL@ct}}, \ldots, #1_{#3}% +}% +{% +#1_1,\ldots,#1_{#2},#1_{#2+1},\dots,#1_{#3}% +}% +}% +} +\newcommand{\COOL@notation@MeijerGSymb}{G} +\newcommand{\MeijerG}[6][@,@]{% +\listval{#1}{0} +\ifthenelse{\value{COOL@listpointer}>2 \OR \value{COOL@listpointer}<1}% +{% +\PackageError{cool}{`MeijerG' Invalid Optional Argument}% +{Must be a comma separated list of length 1 or 2}% +}% +{% +}% +\COOL@notation@MeijerGSymb% +\ifthenelse{\equal{#1}{@,@}}% +{% +\listval{#2}{0}% n +\setcounter{COOL@ct}{\value{COOL@listpointer}}% +\listval{#4}{0}% m +\setcounter{COOL@ct@}{\value{COOL@listpointer}}% +^{\arabic{COOL@ct@},\arabic{COOL@ct}}% +\listval{#3}{0}% p - n +\addtocounter{COOL@ct}{\value{COOL@listpointer}}% +\listval{#5}{0}% q - m +\addtocounter{COOL@ct@}{\value{COOL@listpointer}}% +_{\arabic{COOL@ct},\arabic{COOL@ct@}}% +\!\left(% +#6% +\left|% +{ {#2,#3} \@@atop {#4,#5} }% +\right)\right.% +}% +{% +\listval{#1}{0}% +\ifthenelse{\value{COOL@listpointer}=2}% +{% +\provideboolean{COOL@MeijerG@opt@one@blank}% +\def\COOL@MeijerG@sniffer##1,##2\COOL@MeijerG@sniffer@end{% +\ifthenelse{\equal{##1}{}}% +{% +\setboolean{COOL@MeijerG@opt@one@blank}{true}% +}% +{% +\setboolean{COOL@MeijerG@opt@one@blank}{false}% +}% +}% +\expandafter\COOL@MeijerG@sniffer#1\COOL@MeijerG@sniffer@end\relax% +\ifthenelse{\boolean{COOL@MeijerG@opt@one@blank}}% +{% +\listval{#2}{0}% n +\setcounter{COOL@ct}{\value{COOL@listpointer}}% +^{#4,\arabic{COOL@ct}}% +\listval{#3}{0}% p +\addtocounter{COOL@ct}{\value{COOL@listpointer}}% +_{\arabic{COOL@ct},#5}% +\!\left(% +#6% +\left|% +{% +{#2,#3} \@@atop {\COOL@MeijerG@anp@value{\listval{#1}{2}}{#4}{#5}} +}% +\right)\right.% +}% +{% +^{#4,#2}_{#3,#5}% +\!\left(% +#6% +\left|% +{% +{\COOL@MeijerG@anp@value{\listval{#1}{1}}{#2}{#3}}% +\@@atop% +{\COOL@MeijerG@anp@value{\listval{#1}{2}}{#4}{#5}} +}% +\right)\right.% +}% +}% +{% +\listval{#4}{0}% m +\setcounter{COOL@ct}{\value{COOL@listpointer}}% +^{\arabic{COOL@ct}, #2}% +\listval{#5}{0}% q +\addtocounter{COOL@ct}{\value{COOL@listpointer}}% +_{#3, \arabic{COOL@ct}}% +\!\left(% +#6% +\left|% +{% +{\COOL@MeijerG@anp@value{#1}{#2}{#3}} \@@atop {#4,#5} +}% +\right)\right.% +}% +}% +}% +\newcommand{\ClebschGordon}[3]{% +\listval{#1}{0}% +\ifthenelse{\NOT \value{COOL@listpointer}=2}% +{% +\PackageError{cool}{`ClebschGordon' Invalid Argument}% +{Must have a comma separated list of length two}% +}% +{}% +\listval{#2}{0}% +\ifthenelse{\NOT \value{COOL@listpointer}=2}% +{% +\PackageError{cool}{`ClebschGordon' Invalid Argument}% +{Must have a comma separated list of length two}% +}% +{}% +\listval{#3}{0}% +\ifthenelse{\NOT \value{COOL@listpointer}=2}% +{% +\PackageError{cool}{`ClebschGordon' Invalid Argument}% +{Must have a comma separated list of length two}% +}% +{}% +\left<% +\listval{#1}{1},\listval{#2}{1};% +\listval{#1}{2},\listval{#2}{2}% +\left|% +\listval{#1}{1},\listval{#2}{1};% +\listval{#3}{1},\listval{#3}{2}% +\right>\right.% +} +\newcommand{\ThreeJSymbol}[3]{% +\listval{#1}{0}% +\ifthenelse{\NOT \value{COOL@listpointer}=2}% +{% +\PackageError{cool}{`ThreeJSymbol' Invalid Argument}% +{Must have comma separated list of length 2}% +}% +{}% +\listval{#2}{0}% +\ifthenelse{\NOT \value{COOL@listpointer}=2}% +{% +\PackageError{cool}{`ThreeJSymbol' Invalid Argument}% +{Must have comma separated list of length 2}% +}% +{}% +\listval{#3}{0}% +\ifthenelse{\NOT \value{COOL@listpointer}=2}% +{% +\PackageError{cool}{`ThreeJSymbol' Invalid Argument}% +{Must have comma separated list of length 2}% +}% +{}% +\mathchoice{% +\inp{\!% +\begin{array}{ccc}% +\listval{#1}{1} & \listval{#2}{1} & \listval{#3}{1} \\% +\listval{#1}{2} & \listval{#2}{2} & \listval{#3}{2} +\end{array}% + \!}% + }% + {% +\inp{\!% +{\listval{#1}{1} \@@atop \listval{#1}{2}}% +{\listval{#2}{1} \@@atop \listval{#2}{2}}% +{\listval{#3}{1} \@@atop \listval{#3}{2}}% + \!}% + }% + {% +\inp{\!% +{\listval{#1}{1} \@@atop \listval{#1}{2}}% +{\listval{#2}{1} \@@atop \listval{#2}{2}}% +{\listval{#3}{1} \@@atop \listval{#3}{2}}% + \!}% + }% + {% +\inp{\!% +{\listval{#1}{1} \@@atop \listval{#1}{2}}% +{\listval{#2}{1} \@@atop \listval{#2}{2}}% +{\listval{#3}{1} \@@atop \listval{#3}{2}}% + \!}% + }% +} +\newcommand{\SixJSymbol}[2]{% +\listval{#1}{0}% +\ifthenelse{\NOT \value{COOL@listpointer}=3}% +{% +\PackageError{cool}{`SixJSymbol' Invalid Argument}% +{Must have a comma separated list of length 3}% +}% +{}% +\listval{#2}{0}% +\ifthenelse{\NOT \value{COOL@listpointer}=3}% +{% +\PackageError{cool}{`SixJSymbol' Invalid Argument}% +{Must have a comma separated list of length 3}% +}% +{}% +\mathchoice{% +\inbr{\!% +\begin{array}{ccc}% +\listval{#1}{1} & \listval{#1}{2} & \listval{#1}{3} \\% +\listval{#2}{1} & \listval{#2}{2} & \listval{#2}{3}% +\end{array}% + \!}% + }% + {% +\inbr{\!% +{\listval{#1}{1} \@@atop \listval{#2}{1}}% +{\listval{#1}{2} \@@atop \listval{#2}{2}}% +{\listval{#1}{3} \@@atop \listval{#2}{3}}% + \!}% + }% + {% +\inbr{\!% +{\listval{#1}{1} \@@atop \listval{#2}{1}}% +{\listval{#1}{2} \@@atop \listval{#2}{2}}% +{\listval{#1}{3} \@@atop \listval{#2}{3}}% + \!}% + }% + {% +\inbr{\!% +{\listval{#1}{1} \@@atop \listval{#2}{1}}% +{\listval{#1}{2} \@@atop \listval{#2}{2}}% +{\listval{#1}{3} \@@atop \listval{#2}{3}}% + \!}% + }% +} +\newcommand{\COOL@notation@EllipticKParen}{p} +\newcommand{\COOL@notation@EllipticKSymb}{K} +\newcommand{\EllipticK}[1]% +{\COOL@notation@EllipticKSymb\!\COOL@decide@paren{EllipticK}{#1}}% +\newcommand{\COOL@notation@EllipticEParen}{p} +\newcommand{\COOL@notation@EllipticESymb}{E} +\newcommand{\EllipticE}[1]{% +\liststore{#1}{COOL@EllipticE@arg@}% +\listval{#1}{0}% +\ifthenelse{\value{COOL@listpointer} = 1}% +{% +\COOL@notation@EllipticESymb\!\COOL@decide@paren{EllipticE}{#1}% +}% +{ \ifthenelse{\value{COOL@listpointer} = 2}% +{% +\COOL@notation@EllipticESymb\!% +\COOL@decide@paren{EllipticE}% +{\COOL@EllipticE@arg@i \left| \, \COOL@EllipticE@arg@ii \!\!\right.}% +}% +{% +\PackageError{Invalid Argument}% +{`EllipticE' can only accept a comma separated list of length 1 or 2}% +}% +}% +} +\newcommand{\COOL@notation@EllipticPiParen}{p} +\newcommand{\COOL@notation@EllipticPiSymb}{\Pi} +\newcommand{\EllipticPi}[1]{% +\liststore{#1}{COOL@EllipticPi@arg@}% +\listval{#1}{0}% +\ifthenelse{\value{COOL@listpointer} = 2}% +{% +\COOL@notation@EllipticPiSymb% +\!\COOL@decide@paren{EllipticPi}% +{\COOL@EllipticPi@arg@i \left| \, \COOL@EllipticPi@arg@ii \!\!\right.}% +}% +{ \ifthenelse{\value{COOL@listpointer} = 3}% +{% +\COOL@notation@EllipticPiSymb% +\!\COOL@decide@paren{EllipticPi}% +{ \COOL@EllipticPi@arg@i; \,% +\COOL@EllipticPi@arg@ii \left| \,% +\COOL@EllipticPi@arg@iii \!\!\right.% +}% +}% +{% +\PackageError{cool}{Invalid Argument}% +{`EllipticPi' can only accept a comma separated list of length 2 or 3}% +}% +}% +} +\newcommand{\COOL@notation@EllipticFParen}{p} +\newcommand{\COOL@notation@EllipticFSymb}{F} +\newcommand{\EllipticF}[1]{% +\liststore{#1}{COOL@EllipticF@arg@}% +\listval{#1}{0}% +\ifthenelse{ \value{COOL@listpointer} = 2 }% +{% +\COOL@notation@EllipticFSymb% +\!\COOL@decide@paren{EllipticF}% +{\COOL@EllipticF@arg@i \left| \, \COOL@EllipticF@arg@ii \!\!\right.}% +}% +{% +\PackageError{cool}{Invalid Argument}% +{`EllipticF' can only accept a comma separated list of length 2}% +}% +} +\newcommand{\IncEllipticF}[2]{\EllipticF{#1,#2}} +\newcommand{\IncEllipticE}[2]{\EllipticE{#1,#2}} +\newcommand{\IncEllipticPi}[3]{\EllipticPi{#1,#2,#3}} +\newcommand{\COOL@notation@JacobiZetaParen}{p} +\newcommand{\COOL@notation@JacobiZetaSymb}{Z} +\newcommand{\JacobiZeta}[2]{% +\COOL@notation@JacobiZetaSymb +\!\COOL@decide@paren{JacobiZeta}{#1 \left| \, #2 \right.\!\!}% +} +\newcommand{\COOL@notation@EllipticThetaParen}{p} +\newcommand{\EllipticTheta}[3]% +{\vartheta_{#1}\!\COOL@decide@paren{EllipticTheta}{#2, #3}} +\newcommand{\JacobiTheta}[3]{\EllipticTheta{#1}{#2}{#3}} +\newcommand{\COOL@notation@NevilleThetaCParen}{p} +\newcommand{\NevilleThetaC}[2]{% +\vartheta_{c}\!\COOL@decide@paren{NevilleThetaC}% +{#1 \left| \, #2 \right.\!\!}% +} +\newcommand{\COOL@notation@NevilleThetaDParen}{p} +\newcommand{\NevilleThetaD}[2]{% +\vartheta_{d}\!\COOL@decide@paren{NevilleThetaD}% +{#1 \left| \, #2 \right.\!\!}% +} +\newcommand{\COOL@notation@NevilleThetaNParen}{p} +\newcommand{\NevilleThetaN}[2]{% +\vartheta_{n}\!\COOL@decide@paren{NevilleThetaN}% +{#1 \left| \, #2 \right.\!\!}% +} +\newcommand{\COOL@notation@NevilleThetaSParen}{p} +\newcommand{\NevilleThetaS}[2]{% +\vartheta_{s}\!\COOL@decide@paren{NevilleThetaS}% +{#1 \left| \, #2 \right.\!\!}% +} +\newcommand{\COOL@notation@WeierstrassPParen}{p} +\newcommand{\WeierstrassP}[2]{% +\liststore{#2}{COOL@WeiP@arg@g@}% +\listval{#2}{0}% +\ifthenelse{\NOT \value{COOL@listpointer} = 2}% +{% +\PackageError{cool}{Invalid Argument}% +{`WeierstrassP' second argument must be% + a comma separated list of length 2}% +} +{% +\wp\!\COOL@decide@paren{WeierstrassP}{#1; #2} +}% +} +\newcommand{\WeiP}[2]{\WeierstrassP{#1}{#2}} +\newcommand{\COOL@notation@WeierstrassPInvParen}{p} +\newcommand{\WeierstrassPInv}[2]{% +\liststore{#1}{COOL@WeiPinv@arg@z@}% +\liststore{#1}{COOL@WeiPinv@arg@g@}% +\listval{#2}{0}% +\ifthenelse{\NOT \value{COOL@listpointer} = 2}% +{% +\PackageError{cool}{Invalid Argument}% +{`WeierstrassPInv' second argument must be% + a comma separated list of length 2}% +} +{ +\listval{#1}{0}% +\ifthenelse{\value{COOL@listpointer} = 1}% +{% +\wp^{-1}\!\COOL@decide@paren{WeierstrassPInv}{#1; #2}% +}% +{ \ifthenelse{\value{COOL@listpointer} = 2}% +{% +\wp^{-1}\!\COOL@decide@paren{WeierstrassPInv}{#1; #2}% +}% +{% +\PackageError{cool}{Invalid Argument}% +{`WeierstrassPInv' first argument must be% + a comma separate list of length 1 or 2}% +}}% +}% +} +\newcommand{\WeiPInv}[2]{\WeierstrassPInv{#1}{#2}} +\newcommand{\WeierstrassPGenInv}[4]{\WeierstrassPInv{#1,#2}{#3,#4}} +\newcommand{\WeierstrassSigma}[2]{% +\liststore{#1}{COOL@WeiSigma@arg@z@}% +\liststore{#2}{COOL@WeiSigma@arg@g@}% +\listval{#2}{0}% +\ifthenelse{\NOT \value{COOL@listpointer} = 2} +{% +\PackageError{cool}{Invalid Argument}% +{`WeierstrassSigma' second argument must be% + a comma separated list of length 2}% +}% +{% +\listval{#1}{0}% +\ifthenelse{\value{COOL@listpointer} = 1}% +{% +\sigma\!\inp{#1; #2}% +}% +{ \ifthenelse{\value{COOL@listpointer} = 2}% +{% +\sigma_{\COOL@WeiSigma@arg@z@i}\!\inp{\COOL@WeiSigma@arg@z@ii; #2}% +}% +{% +\PackageError{cool}{Invalid Argument}% +{`WeierstrassSigma' first argument must be% + a comma separated list of length 1 or 2}% +}}% +}% +} +\newcommand{\WeiSigma}[2]{\WeierstrassSigma{#1}{#2}} +\newcommand{\AssocWeierstrassSigma}[4]{\WeierstrassSigma{#1,#2}{#3,#4}} +\newcommand{\COOL@notation@WeierstrassZetaParen}{p}% +\newcommand{\WeierstrassZeta}[2]{% +\listval{#2}{0}% +\ifthenelse{\NOT \value{COOL@listpointer} = 2}% +{% +\PackageError{cool}{Invalid Argument}% +{`WeierstrassZeta' second argument must be% + a comma separated list of length 2}% +}% +{% +\zeta\!\COOL@decide@paren{WeierstrassZeta}{#1; #2}% +}% +} +\newcommand{\WeiZeta}[2]{\WeierstrassZeta{#1}{#2}} +\newcommand{\WeierstrassHalfPeriods}[1]{% +\listval{#1}{0}% +\ifthenelse{\NOT \value{COOL@listpointer} = 2}% +{% +\PackageError{cool}{Invalid Argument}% +{`WeierstrassHalfPeriods' can only accept% + a comma separated list of length 2}% +}% +{% +\{ \omega_1\!\inp{#1}, \omega_3\!\inp{#1} \}% +}% +} +\newcommand{\WeiHalfPeriods}[1]{\WeierstrassHalfPeriods{#1}} +\newcommand{\WeierstrassInvariants}[1]{% +\listval{#1}{0}% +\ifthenelse{\NOT \value{COOL@listpointer} = 2}% +{% +\PackageError{cool}{Invalid Argument}% +{`WeierstrassInvariants' can only accept% + a comma separated list of length 2}% +}% +{% +\{ g_2\!\inp{#1}, g_3\!\inp{#1} \}% +}% +} +\newcommand{\WeiInvars}[1]{\WeierstrassInvariants{#1}} +\newcommand{\COOL@hideOnSF}[2] +{% +\ifthenelse{ \equal{\csname COOL@notation@#1\endcsname}{sf} }% +{}% +{#2}% +} +\newcommand{\COOL@notation@WeierstrassPHalfPeriodValuesDisplay}{sf} +\newcommand{\WeierstrassPHalfPeriodValues}[1] +{% +\listval{#1}{0}% +\ifthenelse{\NOT \value{COOL@listpointer} = 2}% +{% +\PackageError{cool}{Invalid Argument}% +{`WeierstrassPHalfPeriodValues' can only accept% + a comma separated list of length 2}% +}% +{% +\{ e_1\COOL@hideOnSF{WeierstrassPHalfPeriodValuesDisplay}{\!\inp{#1}},% +e_2\COOL@hideOnSF{WeierstrassPHalfPeriodValuesDisplay}{\!\inp{#1}},% +e_3\COOL@hideOnSF{WeierstrassPHalfPeriodValuesDisplay}{\!\inp{#1}}% +\}% +}% +} +\newcommand{\WeiPHalfPeriodVal}[1]{\WeierstrassPHalfPeriodValues{#1}} +\newcommand{\COOL@notation@WeierstrassZetaHalfPeriodValuesDisplay}{sf} +\newcommand{\WeierstrassZetaHalfPeriodValues}[1] +{% +\listval{#1}{0}% +\ifthenelse{\NOT \value{COOL@listpointer} = 2}% +{% +\PackageError{cool}{Invalid Argument}% +{`WeierstrassZetaHalfPeriodValues' can only accept% + a comma separated list of length 2}% +}% +{% +\{% +\eta_1\COOL@hideOnSF% +{WeierstrassZetaHalfPeriodValuesDisplay}{\!\inp{#1}},% +\eta_2\COOL@hideOnSF% +{WeierstrassZetaHalfPeriodValuesDisplay}{\!\inp{#1}},% +\eta_3\COOL@hideOnSF% +{WeierstrassZetaHalfPeriodValuesDisplay}{\!\inp{#1}}% +\}% +}% +} +\newcommand{\WeiZetaHalfPeriodVal}[1]% +{\WeierstrassZetaHalfPeriodValues{#1}} +\newcommand{\COOL@notation@JacobiAmplitudeParen}{p} +\DeclareMathOperator{\JacobiAmplitudeSymb}{am} +\newcommand{\JacobiAmplitude}[2]{% +\JacobiAmplitudeSymb\!\COOL@decide@paren% +{JacobiAmplitude}{#1 \left| \, #2 \right.\!\!}% +} +\newcommand{\COOL@notation@JacobiCDParen}{p} +\newcommand{\COOL@notation@JacobiCDInvParen}{p} +\DeclareMathOperator{\JacobiCDSymb}{cd} +\newcommand{\JacobiCD}[2]{% +\JacobiCDSymb\!\COOL@decide@paren% +{JacobiCD}{#1 \left| \, #2 \right.\!\!}% +} +\newcommand{\JacobiCDInv}[2]{% +\JacobiCDSymb^{-1}\!\COOL@decide@paren% +{JacobiCDInv}{#1 \left| \, #2 \right.\!\!}% +} +\newcommand{\COOL@notation@JacobiCNParen}{p} +\newcommand{\COOL@notation@JacobiCNInvParen}{p} +\DeclareMathOperator{\JacobiCNSymb}{cn} +\newcommand{\JacobiCN}[2]{% +\JacobiCNSymb\!\COOL@decide@paren% +{JacobiCN}{#1 \left| \, #2 \right.\!\!}% +} +\newcommand{\JacobiCNInv}[2]{% +\JacobiCNSymb^{-1}\!\COOL@decide@paren% +{JacobiCNInv}{#1 \left| \, #2 \right.\!\!}% +} +\newcommand{\COOL@notation@JacobiCSParen}{p} +\newcommand{\COOL@notation@JacobiCSInvParen}{p} +\DeclareMathOperator{\JacobiCSSymb}{cs} +\newcommand{\JacobiCS}[2]{% +\JacobiCSSymb\!\COOL@decide@paren% +{JacobiCS}{#1 \left| \, #2 \right.\!\!}% +} +\newcommand{\JacobiCSInv}[2]{% +\JacobiCSSymb^{-1}\!\COOL@decide@paren% +{JacobiCSInv}{#1 \left| \, #2 \right.\!\!}% +} +\newcommand{\COOL@notation@JacobiDCParen}{p} +\newcommand{\COOL@notation@JacobiDCInvParen}{p} +\DeclareMathOperator{\JacobiDCSymb}{dc} +\newcommand{\JacobiDC}[2]{% +\JacobiDCSymb\!\COOL@decide@paren% +{JacobiDC}{#1 \left| \, #2 \right.\!\!}% +} +\newcommand{\JacobiDCInv}[2]{% +\JacobiDCSymb^{-1}\!\COOL@decide@paren% +{JacobiDCInv}{#1 \left| \, #2 \right.\!\!}% +} +\newcommand{\COOL@notation@JacobiDNParen}{p} +\newcommand{\COOL@notation@JacobiDNInvParen}{p} +\DeclareMathOperator{\JacobiDNSymb}{dn} +\newcommand{\JacobiDN}[2]{% +\JacobiDNSymb\!\COOL@decide@paren% +{JacobiDN}{#1 \left| \, #2 \right.\!\!}% +} +\newcommand{\JacobiDNInv}[2]{% +\JacobiDNSymb^{-1}\!\COOL@decide@paren% +{JacobiDNInv}{#1 \left| \, #2 \right.\!\!}% +} +\newcommand{\COOL@notation@JacobiDSParen}{p} +\newcommand{\COOL@notation@JacobiDSInvParen}{p} +\DeclareMathOperator{\JacobiDSSymb}{ds} +\newcommand{\JacobiDS}[2]{% +\JacobiDSSymb\!\COOL@decide@paren% +{JacobiDS}{#1 \left| \, #2 \right.\!\!}% +} +\newcommand{\JacobiDSInv}[2]{% +\JacobiDSSymb^{-1}\!\COOL@decide@paren% +{JacobiDSInv}{#1 \left| \, #2 \right.\!\!}% +} +\newcommand{\COOL@notation@JacobiNCParen}{p} +\newcommand{\COOL@notation@JacobiNCInvParen}{p} +\DeclareMathOperator{\JacobiNCSymb}{nc} +\newcommand{\JacobiNC}[2]{% +\JacobiNCSymb\!\COOL@decide@paren% +{JacobiNC}{#1 \left| \, #2 \right.\!\!}% +} +\newcommand{\JacobiNCInv}[2]{% +\JacobiNCSymb^{-1}\!\COOL@decide@paren% +{JacobiNCInv}{#1 \left| \, #2 \right.\!\!}% +} +\newcommand{\COOL@notation@JacobiNDParen}{p} +\newcommand{\COOL@notation@JacobiNDInvParen}{p} +\DeclareMathOperator{\JacobiNDSymb}{nd} +\newcommand{\JacobiND}[2]{% +\JacobiNDSymb\!\COOL@decide@paren% +{JacobiND}{#1 \left| \, #2 \right.\!\!}% +} +\newcommand{\JacobiNDInv}[2]{% +\JacobiNDSymb^{-1}\!\COOL@decide@paren% +{JacobiNDInv}{#1 \left| \, #2 \right.\!\!}% +} +\newcommand{\COOL@notation@JacobiNSParen}{p} +\newcommand{\COOL@notation@JacobiNSInvParen}{p} +\DeclareMathOperator{\JacobiNSSymb}{ns} +\newcommand{\JacobiNS}[2]{% +\JacobiNSSymb\!\COOL@decide@paren% +{JacobiNS}{#1 \left| \, #2 \right.\!\!}% +} +\newcommand{\JacobiNSInv}[2]{% +\JacobiNSSymb^{-1}\!\COOL@decide@paren% +{JacobiNSInv}{#1 \left| \, #2 \right.\!\!}% +} +\newcommand{\COOL@notation@JacobiSCParen}{p} +\newcommand{\COOL@notation@JacobiSCInvParen}{p} +\DeclareMathOperator{\JacobiSCSymb}{sc} +\newcommand{\JacobiSC}[2]{% +\JacobiSCSymb\!\COOL@decide@paren% +{JacobiSC}{#1 \left| \, #2 \right.\!\!}% +} +\newcommand{\JacobiSCInv}[2]{% +\JacobiSCSymb^{-1}\!\COOL@decide@paren% +{JacobiSCInv}{#1 \left| \, #2 \right.\!\!}% +} +\newcommand{\COOL@notation@JacobiSDParen}{p} +\newcommand{\COOL@notation@JacobiSDInvParen}{p} +\DeclareMathOperator{\JacobiSDSymb}{sd} +\newcommand{\JacobiSD}[2]{% +\JacobiSDSymb\!\COOL@decide@paren% +{JacobiSD}{#1 \left| \, #2 \right.\!\!}% +} +\newcommand{\JacobiSDInv}[2]{% +\JacobiSDSymb^{-1}\!\COOL@decide@paren% +{JacobiSDInv}{#1 \left| \, #2 \right.\!\!}% +} +\newcommand{\COOL@notation@JacobiSNParen}{p} +\newcommand{\COOL@notation@JacobiSNInvParen}{p} +\DeclareMathOperator{\JacobiSNSymb}{sn} +\newcommand{\JacobiSN}[2]{% +\JacobiSNSymb\!\COOL@decide@paren% +{JacobiSN}{#1 \left| \, #2 \right.\!\!}% +} +\newcommand{\JacobiSNInv}[2]{% +\JacobiSNSymb^{-1}\!\COOL@decide@paren% +{JacobiSNInv}{#1 \left| \, #2 \right.\!\!}% +} +\newcommand{\COOL@notation@DedekindEtaParen}{p} +\newcommand{\DedekindEta}[1]{\eta\!\COOL@decide@paren{DedekindEta}{#1}} +\newcommand{\COOL@notation@KleinInvariantJParen}{p} +\newcommand{\KleinInvariantJ}[1]% +{J\!\COOL@decide@paren{KleinInvariantJ}{#1}} +\newcommand{\COOL@notation@ModularLambdaParen}{p} +\newcommand{\ModularLambda}[1]% +{\lambda\!\COOL@decide@paren{ModularLambda}{#1}} +\newcommand{\COOL@notation@EllipticNomeQParen}{p} +\newcommand{\COOL@notation@EllipticNomeQInvParen}{p} +\newcommand{\EllipticNomeQ}[1]% +{q\!\COOL@decide@paren{EllipticNomeQ}{#1}} +\newcommand{\EllipticNomeQInv}[1]% +{q^{-1}\!\COOL@decide@paren{EllipticNomeQ}{#1}} +\newcommand{\COOL@notation@ArithGeoMeanParen}{p} +\DeclareMathOperator{\ArithGeoMeanSymb}{agm} +\newcommand{\ArithGeoMean}[2]% +{\ArithGeoMeanSymb\!\COOL@decide@paren{ArithGeoMean}{#1, #2}} +\newcommand{\AGM}[2]{\ArithGeoMean{#1}{#2}} +\newcommand{\COOL@notation@EllipticExpParen}{p} +\DeclareMathOperator{\EllipticExpSymb}{eexp} +\newcommand{\EllipticExp}[2]{% +\liststore{#2}{COOL@EllipticExp@arg@} +\listval{#2}{0}% +\ifthenelse{\NOT \value{COOL@listpointer} = 2}% +{% +\PackageError{cool}{Invalid Argument}% +{`EllipticExp' second argument must be + a comma separated list of length 2}% +}% +{% +\EllipticExpSymb\!\COOL@decide@paren{EllipticExp}{#1; #2}% +}% +} +\newcommand{\EExp}[2]{\EllipticExp{#1}{#2}} +\newcommand{\COOL@notation@EllipticLogParen}{p} +\DeclareMathOperator{\EllipticLogSymb}{elog} +\newcommand{\EllipticLog}[2]{% +\liststore{#1}{COOL@EllipticLog@arg@z@}% +\liststore{#2}{COOL@EllipticLog@arg@a@}% +\listval{#1}{0}% +\ifthenelse{\NOT \value{COOL@listpointer} = 2}% +{% +\PackageError{cool}{Invalid Argument}% +{`EllipticLog' first argument must be + a comma separated list of length 2}% +}% +{% +\listval{#2}{0}% +\ifthenelse{\NOT \value{COOL@listpointer} = 2}% +{% +\PackageError{cool}{Invalid Argument}% +{`EllipticLog' second argument must be% + a comma separated list of length 2}% +}% +{% +\EllipticLogSymb\!\COOL@decide@paren{EllipticLog}{#1; #2}% +}% +}% +} +\newcommand{\ELog}[2]{\EllipticLog{#1}{#2}} +\newcommand{\RiemannZeta}[1]{\Zeta{#1}} +\newcommand{\HurwitzZeta}[2]{\Zeta{#1,#2}} +\newcommand{\COOL@notation@ZetaParen}{p} +\newcommand{\Zeta}[1]{% +\liststore{#1}{COOL@Zeta@arg@}% +\listval{#1}{0}% get the list length +\ifthenelse{\value{COOL@listpointer} = 2}% +{% +\zeta\!\COOL@decide@paren{Zeta}{\COOL@Zeta@arg@i,\COOL@Zeta@arg@ii}% +}% +{% +\ifthenelse{\value{COOL@listpointer} = 1}% +{% +\zeta\!\COOL@decide@paren{Zeta}{#1}% +}% +{% +\PackageError{cool}{`Zeta' Invalid Argument}% +{the Zeta function can only accept% + a comma deliminated list of length 1 or 2} +}% +}% +}% +\newcommand{\COOL@notation@RiemannSiegelThetaParen}{p} +\newcommand{\RiemannSiegelTheta}[1]% +{\vartheta\!\COOL@decide@paren{RiemannSiegelTheta}{#1}} +\newcommand{\COOL@notation@RiemannSiegelZParen}{p} +\newcommand{\RiemannSiegelZ}[1]% +{Z\!\COOL@decide@paren{RiemannSiegelZ}{#1}} +\newcommand{\StieltjesGamma}[1]{\gamma_{#1}} +\newcommand{\COOL@notation@LerchPhiParen}{p} +\newcommand{\LerchPhi}[3]{\Phi\!\COOL@decide@paren{LerchPhi}{#1,#2,#3}} +\newcommand{\COOL@notation@NielsenPolyLogParen}{p} +\newcommand{% +\NielsenPolyLog}[3]{S_{#1}^{#2}\!% +\COOL@decide@paren{NielsenPolyLog}{#3}% +} +\newcommand{\COOL@notation@PolyLogParen}{p} +\DeclareMathOperator{\PolyLogSymb}{Li} +\newcommand{\PolyLog}[1]{% +\liststore{#1}{COOL@PolyLog@arg@}% +\listval{#1}{0}% +\ifthenelse{\value{COOL@listpointer} = 3}% +{% +\NielsenPolyLog{\COOL@PolyLog@arg@i}% +{\COOL@PolyLog@arg@ii}{\COOL@PolyLog@arg@iii}% +}% +{% +\ifthenelse{ \value{COOL@listpointer} = 2 }% +{% +\PolyLogSymb_{\COOL@PolyLog@arg@i}\!% +\COOL@decide@paren{PolyLog}{\COOL@PolyLog@arg@ii}% +}% +{% +\PackageError{cool}{`PolyLog' Invalid Argument}% +{This function returns either the Polylogarithm or the% + Nielsen Polylogarithm. It therefore only accepts a comma% + deliminated list of length two or three (1 or 2 commas)}% +}% +}% +} +\newcommand{\DiLog}[1]{\PolyLog{2,#1}} +\newcommand{\COOL@notation@MathieuCParen}{p} +\DeclareMathOperator{\MathieuCSymb}{Ce} +\newcommand{\MathieuC}[3]% +{\MathieuCSymb\!\COOL@decide@paren{MathieuC}{#1,#2,#3}} +\newcommand{\COOL@notation@MathieuSParen}{p} +\DeclareMathOperator{\MathieuSSymb}{Se} +\newcommand{\MathieuS}[3]% +{\mathord{\MathieuSSymb}\!\COOL@decide@paren{MathieuS}{#1,#2,#3}} +\newcommand{\COOL@notation@MathieuCharacteristicAParen}{p} +\newcommand{\MathieuCharacteristicA}[2]% +{a_{#1}\!\COOL@decide@paren{MathieuCharacteristicA}{#2}} +\newcommand{\MathieuCharisticA}[2]{\MathieuCharacteristicA{#1}{#2}} +\newcommand{\COOL@notation@MathieuCharacteristicBParen}{p} +\newcommand{\MathieuCharacteristicB}[2]% +{b_{#1}\!\COOL@decide@paren{MathieuCharacteristicB}{#2}} +\newcommand{\MathieuCharisticB}[2]{\MathieuCharacteristicB{#1}{#2}} +\newcommand{\COOL@notation@MathieuCharacteristicExponentParen}{p} +\newcommand{\MathieuCharacteristicExponent}[2]% +{r\!\COOL@decide@paren{MathieuCharacteristicExponent}{#1,#2}} +\newcommand{\MathieuCharisticExp}[2]% +{\MathieuCharacteristicExponent{#1}{#2}} +\newcommand{\Abs}[1]{ \left|#1\right| } +\newcommand{\Arg}[1]{ \arg\!\inp{#1} } +\def\COOL@notation@Conjugate{star} +\newcommand{\COOL@notation@ConjugateParen}{inv} +\newcommand{\Conjugate}[1]{\Conj{#1}} +\newcommand{\Conj}[1]{% +\ifthenelse{\equal{\COOL@notation@Conjugate}{bar}}% +{% +\bar{#1}% +}% +{ \ifthenelse{\equal{\COOL@notation@Conjugate}{overline}}% +{% +\overline{#1}% +}% +{ \ifthenelse{\equal{\COOL@notation@Conjugate}{star}}% +{% +\COOL@decide@paren{Conjugate}{#1}^*% +}% +{% +\PackageError{cool}{Invalid Option Sent}% +{`Conjugate' can only be set at `star', `bar', or `overline'}% +}% +}}% +} +\newcommand{\COOL@notation@RealParen}{none} +\DeclareMathOperator{\RealSymb}{Re} +\newcommand{\Real}[1]{% +\ifthenelse{\equal{\COOL@notation@ImagParen}{none}}% +{% +\RealSymb{#1}% +}% +{% +\RealSymb\!\COOL@decide@paren{Imag}{#1}% +}% +} +\newcommand{\COOL@notation@ImagParen}{none} +\DeclareMathOperator{\ImagSymb}{Im} +\newcommand{\Imag}[1]{% +\ifthenelse{\equal{\COOL@notation@ImagParen}{none}}% +{% +\ImagSymb{#1}% +}% +{% +\ImagSymb\!\COOL@decide@paren{Imag}{#1}% +}% +} +\newcommand{\COOL@notation@SignParen}{p} +\newcommand{\Sign}[1]{\operatorname{sgn}\!\COOL@decide@paren{Sign}{#1}} +\newcommand{\COOL@notation@FactorIntegerParen}{p} +\DeclareMathOperator{\FactorIntegerSymb}{factors} +\newcommand{\FactorInteger}[1]% +{\FactorIntegerSymb\!\COOL@decide@paren{FactorInteger}{#1}} +\newcommand{\Factors}[1]{\FactorInteger{#1}} +\newcommand{\COOL@notation@DivisorsParen}{p} +\DeclareMathOperator{\DivisorsSymb}{divisors} +\newcommand{\Divisors}[1]% +{\mathord{\DivisorsSymb}\!\COOL@decide@paren{Divisors}{#1}} +\newcommand{\COOL@notation@PrimeParen}{p} +\DeclareMathOperator{\PrimeSymb}{prime} +\newcommand{\Prime}[1]% +{\mathord{\PrimeSymb}\!\COOL@decide@paren{Prime}{#1}} +\newcommand{\COOL@notation@PrimePiParen}{p} +\newcommand{\PrimePi}[1]{\pi\!\COOL@decide@paren{PrimePi}{#1}} +\newcommand{\COOL@notation@DivisorSigmaParen}{p} +\newcommand{\DivisorSigma}[2]% +{\sigma_{#1}\!\COOL@decide@paren{DivisorSigma}{#2}} +\newcommand{\COOL@notation@EulerPhiParen}{p} +\newcommand{\EulerPhi}[1]{\varphi\!\COOL@decide@paren{EulerPhi}{#1}} +\newcommand{\COOL@notation@MoebiusMuParen}{p} +\newcommand{\MoebiusMu}[1]{\mu\!\COOL@decide@paren{MoebiusMu}{#1}} +\newcommand{\JacobiSymbol}[2]{\inp{\frac{#1}{#2}}} +\newcommand{\COOL@notation@CarmichaelLambdaParen}{p} +\newcommand{\CarmichaelLambda}[1]% +{\lambda\!\COOL@decide@paren{CarmichaelLambda}{#1}} +\newcommand{\DigitCount}[2]{% +\isint{#2}% +\ifthenelse{\boolean{COOL@isint}}% +{% +\{% +\setcounter{COOL@ct@}{#2}% +\addtocounter{COOL@ct@}{-1}% +\forLoop{1}{\arabic{COOL@ct@}}{COOL@ct}% +{% +s^{\arabic{COOL@ct}}_{#2}\!\inp{#1}, +}% +s^{\inp{0}}_{#2}\!\inp{#1}% +\}% +}% +{% +\{% +s^{\inp{1}}_{#2}\!\inp{#1},% +s^{\inp{2}}_{#2}\!\inp{#1},% +\ldots,% +s^{\inp{#2} - 1}_{#2}\!\inp{#1},% +s^{\inp{0}}_{#2}\!\inp{#1}% +\}% +}% +} +\newcommand{\COOL@notation@DiracDeltaParen}{p} +\newcommand{\DiracDelta}[1]{\delta\!\COOL@decide@paren{DiracDelta}{#1}} +\newcommand{\COOL@notation@HeavisideStepParen}{p} +\newcommand{\HeavisideStep}[1]% +{\theta\!\COOL@decide@paren{HeavisideStep}{#1}} +\newcommand{\UnitStep}[1]{\HeavisideStep{#1}} +\newcounter{COOL@multideriv} +\newcommand{\COOL@notation@DDisplayFunc}{inset} +\newcommand{\COOL@notation@DShorten}{true} +\newcommand{\COOL@derivative}[4]{% +\listval{#3}{0}% +\setcounter{COOL@listlen}{\value{COOL@listpointer}}% +\liststore{#3}{COOL@deriv@wrt@}% +\listval{#1}{0}% +\setcounter{COOL@ct}{\value{COOL@listpointer}}% +\ifthenelse{\value{COOL@ct}>\value{COOL@listlen}}% +{\setcounter{COOL@ct}{\value{COOL@listlen}}}{}% +\liststore{#1}{COOL@deriv@powers@}% +\isint{\COOL@deriv@powers@i}% +\setcounter{COOL@multideriv}{2}% +\whiledo{ \boolean{COOL@isint} \AND +\NOT \value{COOL@multideriv}>\value{COOL@ct} }% +{% +\def\COOL@tempd% +{\csname COOL@deriv@powers@\roman{COOL@multideriv}\endcsname}% +\isint{\COOL@tempd}% +\stepcounter{COOL@multideriv}% +}% +\ifthenelse{ \equal{\COOL@notation@DShorten}{true} \AND +\equal{\COOL@notation@DDisplayFunc}{inset} }% +{% +\ifthenelse{ \boolean{COOL@isint} }% +{% +\def\COOL@temp@D@bot{}% +\setcounter{COOL@ct@}{0}% +\forLoop{1}{\value{COOL@ct}}{COOL@multideriv}% +{% +\edef\COOL@power@temp% +{\csname COOL@deriv@powers@\roman{COOL@multideriv}\endcsname}% +\edef\COOL@wrt@temp% +{\csname COOL@deriv@wrt@\roman{COOL@multideriv}\endcsname}% +\addtocounter{COOL@ct@}{\COOL@power@temp}% +\ifthenelse{ \value{COOL@multideriv}=1 }{}% +{\edef\COOL@temp@D@bot{\COOL@temp@D@bot \,}}% +\ifthenelse{ \equal{\COOL@power@temp}{1} }% +{% +\edef\COOL@temp@D@bot% +{\COOL@temp@D@bot #4 \COOL@wrt@temp}% +}% +{% +\edef\COOL@temp@D@bot% +{\COOL@temp@D@bot #4 \COOL@wrt@temp^\COOL@power@temp}% +}% +}% +\ifthenelse{\value{COOL@ct}<\value{COOL@listlen}}% +{% +\edef\COOL@power@temp% +{\csname COOL@deriv@powers@\roman{COOL@ct}\endcsname}% +\stepcounter{COOL@ct}% +\forLoop{\value{COOL@ct}}{\value{COOL@listlen}}{COOL@multideriv}% +{% +\edef\COOL@wrt@temp% +{\csname COOL@deriv@wrt@\roman{COOL@multideriv}\endcsname}% +\addtocounter{COOL@ct@}{\COOL@power@temp}% +\ifthenelse{ \value{COOL@multideriv}=1 }{}% +{\edef\COOL@temp@D@bot{\COOL@temp@D@bot \,}}% +\ifthenelse{ \equal{\COOL@power@temp}{1} }% +{% +\edef\COOL@temp@D@bot% +{\COOL@temp@D@bot #4 \COOL@wrt@temp}% +}% +{% +\edef\COOL@temp@D@bot% +{\COOL@temp@D@bot #4 \COOL@wrt@temp^\COOL@power@temp}% +}% +}% +}% +{}% +\ifthenelse{\value{COOL@ct@}=1}% +{% +\frac{#4 #2}{\COOL@temp@D@bot}% +}% +{% +\frac{#4^{\arabic{COOL@ct@}} #2}{\COOL@temp@D@bot}% +}% +}% +{% +\edef\COOL@temp@D@bot{}% +\def\COOL@temp@D@top@power{}% +\forLoop{1}{\value{COOL@ct}}{COOL@multideriv}% +{% +\edef\COOL@power@temp% +{\csname COOL@deriv@powers@\roman{COOL@multideriv}\endcsname}% +\edef\COOL@wrt@temp% +{\csname COOL@deriv@wrt@\roman{COOL@multideriv}\endcsname}% +\ifthenelse{ \value{COOL@multideriv} = 1}% +{% +\edef\COOL@temp@D@top@power{\COOL@power@temp}% +}% +{% +\edef\COOL@temp@D@top@power% +{\COOL@temp@D@top@power + \COOL@power@temp}% +\edef\COOL@temp@D@bot{\COOL@temp@D@bot \,}% +}% +\ifthenelse{ \equal{\COOL@power@temp}{1} }% +{% +\edef\COOL@temp@D@bot% +{\COOL@temp@D@bot #4 \COOL@wrt@temp}% +}% +{% +\edef\COOL@temp@D@bot% +{\COOL@temp@D@bot #4 \COOL@wrt@temp^\COOL@power@temp}% +}% +}% +\ifthenelse{\value{COOL@ct}<\value{COOL@listlen}}% +{% +\edef\COOL@power@temp% +{\csname COOL@deriv@powers@\roman{COOL@ct}\endcsname}% +\stepcounter{COOL@ct}% +\forLoop{\value{COOL@ct}}{\value{COOL@listlen}}{COOL@multideriv}% +{% +\edef\COOL@wrt@temp% +{\csname COOL@deriv@wrt@\roman{COOL@multideriv}\endcsname}% +\ifthenelse{ \value{COOL@multideriv} = 1}% +{% +\edef\COOL@temp@D@top@power{\COOL@power@temp}% +}% +{% +\edef\COOL@temp@D@top@power% +{\COOL@temp@D@top@power + \COOL@power@temp}% +\edef\COOL@temp@D@bot{\COOL@temp@D@bot \,}% +}% +\ifthenelse{ \equal{\COOL@power@temp}{1} }% +{% +\edef\COOL@temp@D@bot% +{\COOL@temp@D@bot #4 \COOL@wrt@temp}% +}% +{% +\edef\COOL@temp@D@bot% +{\COOL@temp@D@bot #4 \COOL@wrt@temp^\COOL@power@temp}% +}% +}% +}% +{}% +\frac{#4^{\COOL@temp@D@top@power} #2}{\COOL@temp@D@bot}% +}% +}% +{ \ifthenelse{ \equal{\COOL@notation@DShorten}{true} \AND +\equal{\COOL@notation@DDisplayFunc}{outset} }% +{% +\ifthenelse{ \boolean{COOL@isint} }% +{% +\def\COOL@temp@D@bot{}% +\setcounter{COOL@ct@}{0}% +\forLoop{1}{\value{COOL@ct}}{COOL@multideriv}% +{% +\edef\COOL@power@temp% +{\csname COOL@deriv@powers@\roman{COOL@multideriv}\endcsname}% +\edef\COOL@wrt@temp% +{\csname COOL@deriv@wrt@\roman{COOL@multideriv}\endcsname}% +\addtocounter{COOL@ct@}{\COOL@power@temp}% +\ifthenelse{ \value{COOL@multideriv}=1 }{}% +{\edef\COOL@temp@D@bot{\COOL@temp@D@bot \,}}% +\ifthenelse{ \equal{\COOL@power@temp}{1} }% +{% +\edef\COOL@temp@D@bot% +{\COOL@temp@D@bot #4 \COOL@wrt@temp}% +}% +{% +\edef\COOL@temp@D@bot% +{\COOL@temp@D@bot #4 \COOL@wrt@temp^\COOL@power@temp}% +}% +}% +\ifthenelse{\value{COOL@ct}<\value{COOL@listlen}}% +{% +\edef\COOL@power@temp% +{\csname COOL@deriv@powers@\roman{COOL@ct}\endcsname}% +\stepcounter{COOL@ct}% +\forLoop{\value{COOL@ct}}{\value{COOL@listlen}}{COOL@multideriv}% +{% +\edef\COOL@wrt@temp% +{\csname COOL@deriv@wrt@\roman{COOL@multideriv}\endcsname}% +\addtocounter{COOL@ct@}{\COOL@power@temp}% +\ifthenelse{ \value{COOL@multideriv}=1 }{}% +{\edef\COOL@temp@D@bot{\COOL@temp@D@bot \,}}% +\ifthenelse{ \equal{\COOL@power@temp}{1} }% +{% +\edef\COOL@temp@D@bot% +{\COOL@temp@D@bot #4 \COOL@wrt@temp}% +}% +{% +\edef\COOL@temp@D@bot% +{\COOL@temp@D@bot #4 \COOL@wrt@temp^\COOL@power@temp}% +}% +}% +}% +{}% +\ifthenelse{\value{COOL@ct@}=1}% +{% +\frac{#4}{\COOL@temp@D@bot} #2% +}% +{% +\frac{#4^{\arabic{COOL@ct@}}}{\COOL@temp@D@bot} #2% +}% +}% +{% +\edef\COOL@temp@D@bot{}% +\def\COOL@temp@D@top@power{}% +\forLoop{1}{\value{COOL@ct}}{COOL@multideriv}% +{% +\edef\COOL@power@temp% +{\csname COOL@deriv@powers@\roman{COOL@multideriv}\endcsname}% +\edef\COOL@wrt@temp% +{\csname COOL@deriv@wrt@\roman{COOL@multideriv}\endcsname}% +\ifthenelse{ \value{COOL@multideriv} = 1}% +{% +\edef\COOL@temp@D@top@power{\COOL@power@temp}% +}% +{% +\edef\COOL@temp@D@top@power% +{\COOL@temp@D@top@power + \COOL@power@temp}% +\edef\COOL@temp@D@bot{\COOL@temp@D@bot \,}% +}% +\ifthenelse{ \equal{\COOL@power@temp}{1} }% +{% +\edef\COOL@temp@D@bot% +{\COOL@temp@D@bot #4 \COOL@wrt@temp}% +}% +{% +\edef\COOL@temp@D@bot% +{\COOL@temp@D@bot #4 \COOL@wrt@temp^\COOL@power@temp}% +}% +}% +\ifthenelse{\value{COOL@ct}<\value{COOL@listlen}}% +{% +\edef\COOL@power@temp% +{\csname COOL@deriv@powers@\roman{COOL@ct}\endcsname}% +\stepcounter{COOL@ct}% +\forLoop{\value{COOL@ct}}{\value{COOL@listlen}}{COOL@multideriv}% +{% +\edef\COOL@wrt@temp% +{\csname COOL@deriv@wrt@\roman{COOL@multideriv}\endcsname}% +\ifthenelse{ \value{COOL@multideriv} = 1}% +{% +\edef\COOL@temp@D@top@power{\COOL@power@temp}% +}% +{% +\edef\COOL@temp@D@top@power% +{\COOL@temp@D@top@power + \COOL@power@temp}% +\edef\COOL@temp@D@bot{\COOL@temp@D@bot \,}% +}% +\ifthenelse{ \equal{\COOL@power@temp}{1} }% +{% +\edef\COOL@temp@D@bot% +{\COOL@temp@D@bot #4 \COOL@wrt@temp}% +}% +{% +\edef\COOL@temp@D@bot% +{\COOL@temp@D@bot #4 \COOL@wrt@temp^\COOL@power@temp}% +}% +}% +}% +{}% +\frac{#4^{\COOL@temp@D@top@power} }{\COOL@temp@D@bot} #2% +}% +}% +{ \ifthenelse{ \equal{\COOL@notation@DShorten}{false} \AND +\equal{\COOL@notation@DDisplayFunc}{inset} }% +{% +\def\COOL@temp@D@result{}% +\def\COOL@temp@D@bot{}% +\def\COOL@temp@D@top{}% +\setcounter{COOL@ct@}{\value{COOL@ct}}% +\addtocounter{COOL@ct@}{-1} +\forLoop{1}{\value{COOL@ct@}}{COOL@multideriv}% +{% +\edef\COOL@power@temp% +{\csname COOL@deriv@powers@\roman{COOL@multideriv}\endcsname}% +\edef\COOL@wrt@temp% +{\csname COOL@deriv@wrt@\roman{COOL@multideriv}\endcsname}% +\ifthenelse{ \equal{\COOL@power@temp}{1} }% +{% +\edef\COOL@temp@D@top{#4}% +\edef\COOL@temp@D@bot{#4 \COOL@wrt@temp}% +}% +{% +\edef\COOL@temp@D@top{#4^\COOL@power@temp}% +\edef\COOL@temp@D@bot{#4 \COOL@wrt@temp^\COOL@power@temp}% +}% +\edef\COOL@temp@D@result% +{\COOL@temp@D@result \frac{\COOL@temp@D@top}{\COOL@temp@D@bot}}% +}% +\ifthenelse{\value{COOL@ct}<\value{COOL@listlen}}% +{% +\edef\COOL@power@temp% +{\csname COOL@deriv@powers@\roman{COOL@ct}\endcsname}% +\edef\COOL@wrt@temp% +{\csname COOL@deriv@wrt@\roman{COOL@ct}\endcsname}% +\ifthenelse{ \equal{\COOL@power@temp}{1} }% +{% +\edef\COOL@temp@D@top{#4}% +\edef\COOL@temp@D@bot{#4 \COOL@wrt@temp}% +}% +{% +\edef\COOL@temp@D@top{#4^\COOL@power@temp}% +\edef\COOL@temp@D@bot{#4 \COOL@wrt@temp^\COOL@power@temp}% +}% +\edef\COOL@temp@D@result% +{\COOL@temp@D@result \frac{\COOL@temp@D@top}{\COOL@temp@D@bot}}% +\stepcounter{COOL@ct}% +\setcounter{COOL@ct@}{\value{COOL@listlen}}% +\addtocounter{COOL@ct@}{-1}% +\forLoop{\value{COOL@ct}}{\value{COOL@ct@}}{COOL@multideriv}% +{% +\ifthenelse{ \equal{\COOL@power@temp}{1} }% +{% +\edef\COOL@temp@D@top{#4}% +\edef\COOL@temp@D@bot{#4 \COOL@wrt@temp}% +}% +{% +\edef\COOL@temp@D@top{#4^\COOL@power@temp}% +\edef\COOL@temp@D@bot{#4 \COOL@wrt@temp^\COOL@power@temp}% +}% +\edef\COOL@temp@D@result% +{\COOL@temp@D@result \frac{\COOL@temp@D@top}{\COOL@temp@D@bot}}% +}% +\edef\COOL@wrt@temp% +{\csname COOL@deriv@wrt@\roman{COOL@listlen}\endcsname}% +\ifthenelse{ \equal{\COOL@power@temp}{1} }% +{% +\edef\COOL@temp@D@top{#4}% +\edef\COOL@temp@D@bot{#4 \COOL@wrt@temp}% +}% +{% +\edef\COOL@temp@D@top{#4^\COOL@power@temp}% +\edef\COOL@temp@D@bot{#4 \COOL@wrt@temp^\COOL@power@temp}% +}% +\edef\COOL@temp@D@result% +{\COOL@temp@D@result \frac{\COOL@temp@D@top #2}{\COOL@temp@D@bot}}% +}% +{% +\edef\COOL@power@temp% +{\csname COOL@deriv@powers@\roman{COOL@ct}\endcsname}% +\edef\COOL@wrt@temp% +{\csname COOL@deriv@wrt@\roman{COOL@ct}\endcsname}% +\ifthenelse{ \equal{\COOL@power@temp}{1} }% +{% +\edef\COOL@temp@D@top{#4}% +\edef\COOL@temp@D@bot{#4 \COOL@wrt@temp}% +}% +{% +\edef\COOL@temp@D@top{#4^\COOL@power@temp}% +\edef\COOL@temp@D@bot{#4 \COOL@wrt@temp^\COOL@power@temp}% +}% +\edef\COOL@temp@D@result% +{\COOL@temp@D@result \frac{\COOL@temp@D@top #2}{\COOL@temp@D@bot}}% +}% +\COOL@temp@D@result% +}% +{ \ifthenelse{ \equal{\COOL@notation@DShorten}{false} \AND +\equal{\COOL@notation@DDisplayFunc}{outset} }% +{% +\def\COOL@temp@D@result{}% +\def\COOL@temp@D@bot{}% +\def\COOL@temp@D@top{}% +\forLoop{1}{\value{COOL@ct}}{COOL@multideriv}% +{% +\edef\COOL@power@temp% +{\csname COOL@deriv@powers@\roman{COOL@multideriv}\endcsname}% +\edef\COOL@wrt@temp% +{\csname COOL@deriv@wrt@\roman{COOL@multideriv}\endcsname}% +\ifthenelse{ \equal{\COOL@power@temp}{1} }% +{% +\edef\COOL@temp@D@top{#4}% +\edef\COOL@temp@D@bot{#4 \COOL@wrt@temp}% +}% +{% +\edef\COOL@temp@D@top{#4^\COOL@power@temp}% +\edef\COOL@temp@D@bot{#4 \COOL@wrt@temp^\COOL@power@temp}% +}% +\edef\COOL@temp@D@result% +{\COOL@temp@D@result \frac{\COOL@temp@D@top}{\COOL@temp@D@bot}}% +}% +\ifthenelse{\value{COOL@ct}<\value{COOL@listlen}}% +{% +\edef\COOL@power@temp% +{\csname COOL@deriv@powers@\roman{COOL@ct}\endcsname}% +\stepcounter{COOL@ct}% +\forLoop{\value{COOL@ct}}{\value{COOL@listlen}}{COOL@multideriv}% +{% +\edef\COOL@wrt@temp% +{\csname COOL@deriv@wrt@\roman{COOL@multideriv}\endcsname}% +\ifthenelse{ \equal{\COOL@power@temp}{1} }% +{% +\edef\COOL@temp@D@top{#4}% +\edef\COOL@temp@D@bot{#4 \COOL@wrt@temp}% +}% +{% +\edef\COOL@temp@D@top{#4^\COOL@power@temp}% +\edef\COOL@temp@D@bot{#4 \COOL@wrt@temp^\COOL@power@temp}% +}% +\edef\COOL@temp@D@result% +{\COOL@temp@D@result \frac{\COOL@temp@D@top}{\COOL@temp@D@bot}}% +}% +}% +{% +}% +\COOL@temp@D@result #2 +}% +{% +\PackageError{cool}{Invalid Option Sent}% +{DShorten can only be `true' or `false';% + DDisplayFunc can only be `inset' or `outset'}% +}% +}}}% +} +\newcommand{\D}[3][1]{\COOL@derivative{#1}{#2}{#3}{d}} +\newcommand{\pderiv}[3][1]{\COOL@derivative{#1}{#2}{#3}{\partial}} +\newcommand{\COOL@notation@IntegrateDisplayFunc}{inset} +\newcommand{\Integrate}[2]{% +\listval{#2}{0}% +\setcounter{COOL@listlen}{\value{COOL@listpointer}}% +\ifthenelse{ \value{COOL@listlen} = 1 }% +{% +\ifthenelse{\equal{\COOL@notation@IntegrateDisplayFunc}{outset}}% +{% +\int \! d#2 \, #1% +}% +{ \ifthenelse{\equal{\COOL@notation@IntegrateDisplayFunc}{inset}}% +{% +\int #1 \, d#2% +}% +{% +\PackageError{cool}{Invalid Option Sent}% +{`DisplayFunc' can only be `inset' or `outset'}% +}}% +}% +{ \ifthenelse{ \value{COOL@listlen} = 2 }% +{% +\ifthenelse{\equal{\COOL@notation@IntegrateDisplayFunc}{outset}}% +{% +\int_{\listval{#2}{2}} \! d{\listval{#2}{1}} \, #1% +}% +{ \ifthenelse{\equal{\COOL@notation@IntegrateDisplayFunc}{inset}}% +{% +\int_{\listval{#2}{2}} #1 \, d{\listval{#2}{1}}% +}% +{% +\PackageError{cool}{Invalid Option Sent}% +{`DisplayFunc' can only be `inset' or `outset'}% +}}% +}% +{ \ifthenelse{ \value{COOL@listlen} = 3 }% +{% +\ifthenelse{\equal{\COOL@notation@IntegrateDisplayFunc}{outset}}% +{% +\int_{\listval{#2}{2}}^{\listval{#2}{3}} \! d{\listval{#2}{1}} \, #1% +}% +{ \ifthenelse{\equal{\COOL@notation@IntegrateDisplayFunc}{inset}}% +{% +\int_{\listval{#2}{2}}^{\listval{#2}{3}} #1 \, d{\listval{#2}{1}}% +}% +{% +\PackageError{cool}{Invalid Option Sent}% +{`DisplayFunc' can only be `inset' or `outset'}% +}}% +}% +{% +\PackageError{cool}{`Integrate' has invalid parameter list}% + {this happens when the second argument has more than two commas}% +}}}% +}% +\newcommand{\Int}[2]{\Integrate{#1}{#2}} +\newcommand{\Sum}[2]{% +\listval{#2}{0}% +\setcounter{COOL@listlen}{\value{COOL@listpointer}} +\ifthenelse{ \value{COOL@listlen} = 1 }% +{% +\sum_{#2} #1% +}% +{% +\ifthenelse{ \value{COOL@listlen} = 3 }% +{% +\sum_{ \listval{#2}{1} = \listval{#2}{2} }^{ \listval{#2}{3} } #1 +}% +{% +\PackageError{cool}{Invalid list length for `Sum'}% +{can only have none or two commas for second argument}% +}% +}% +} +\newcommand{\Prod}[2]{% +\listval{#2}{0}% +\setcounter{COOL@listlen}{\value{COOL@listpointer}} +\ifthenelse{ \value{COOL@listlen} = 1 }% +{% +\prod_{#2} #1% +}% +{% +\ifthenelse{ \value{COOL@listlen} = 3 }% +{% +\prod_{ \listval{#2}{1} = \listval{#2}{2} }^{ \listval{#2}{3} } #1 +}% +{% +\PackageError{cool}{Invalid list length for `Prod'}% +{can only have none or two commas for second argument}% +}% +}% +} +\newcommand{\DotProduct}[2]{#1 \cdot #2} +\newcommand{\Cross}[2]{#1 \times #2} +\newcommand{\Div}[1]{\nabla \cdot #1} +\newcommand{\Grad}[1]{\nabla #1} +\newcommand{\Curl}[1]{\nabla \times #1} +\newcommand{\Laplacian}[1]{\nabla^2 #1} +\newcommand{\COOL@notation@TransposeParen}{inv} +\newcommand{\Transpose}[1]{ \COOL@decide@paren{Transpose}{#1}^T } +\newcommand{\COOL@notation@DaggerParen}{inv} +\newcommand{\Dagger}[1]{ \COOL@decide@paren{Dagger}{#1}^\dagger } +\newcommand{\COOL@notation@DetParen}{none} +\newcommand{\COOL@notation@DetDisplay}{det} +\newcommand{\Det}[1]{% +\ifthenelse{\equal{\COOL@notation@DetDisplay}{det}}% +{% +\det\COOL@decide@paren{Det}{#1}% +}% +{ \ifthenelse{\equal{\COOL@notation@DetDisplay}{barenc}}% +{% +\left|#1\right|% +}% +{% +\PackageError{cool}{Invalid Option Sent}% +{`DetDisplay' can only be `det' or `barenc'}% +}}% +} +\newcommand{\COOL@notation@TrParen}{none} +\newcommand{\Tr}[2][]{% +\ifthenelse{\equal{#1}{}} +{% +\operatorname{Tr}\COOL@decide@paren{Tr}{#2}% +}% +{% +\operatorname{Tr}_{#1}\COOL@decide@paren{Tr}{#2}% +}% +} +\newcommand{\COOL@notation@IdentityMatrixParen}{p} +\newcounter{COOL@row}% +\newcounter{COOL@col}% +\newcommand{\IdentityMatrix}[1][0]{% +\isint{#1}% +\ifthenelse{\boolean{COOL@isint}}% +{% +\ifthenelse{ #1=0 }% +{% +\mathbb{I}% +}% +{% +\setcounter{COOL@ct}{\value{MaxMatrixCols}}% +\setcounter{MaxMatrixCols}{#1}% +\ifthenelse{\equal{\COOL@notation@IdentityMatrixParen}{p}}% +{% +\begin{pmatrix}% +}% +{ \ifthenelse{\equal{\COOL@notation@IdentityMatrixParen}{b}}% +{% +\begin{bmatrix}% +}% +{ \ifthenelse{\equal{\COOL@notation@IdentityMatrixParen}{br}}% +{% +\begin{Bmatrix}% +}% +{% +\begin{matrix}% +}}}% +\forLoop{1}{#1}{COOL@row}% +{% +\ifthenelse{\NOT \value{COOL@row} = 1}{\\}{}% +\forLoop{1}{#1}{COOL@col}% +{% +\ifthenelse{ \NOT \value{COOL@col} = 1 }{&}{}% +\ifthenelse{ \value{COOL@row}=\value{COOL@col} }{1}{0}% +}% +}% +\ifthenelse{\equal{\COOL@notation@IdentityMatrixParen}{p}}% +{% +\end{pmatrix}% +}% +{ \ifthenelse{\equal{\COOL@notation@IdentityMatrixParen}{b}}% +{% +\end{bmatrix}% +}% +{ \ifthenelse{\equal{\COOL@notation@IdentityMatrixParen}{br}}% +{% +\end{Bmatrix}% +}% +{% +\end{matrix}% +}}}% +\setcounter{MaxMatrixCols}{\value{COOL@ct}}% +}% +}% +{% +\mathbb{I}% +}% +}% +\endinput +%% +%% End of file `cool.sty'. |