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 | |
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')
-rw-r--r-- | Master/texmf-dist/doc/latex/cool/Content_LaTeX_Package_Demo.pdf | bin | 0 -> 159960 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/cool/Content_LaTeX_Package_Demo.tex | 2225 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/cool/README | 43 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/cool/cool.pdf | bin | 0 -> 311475 bytes | |||
-rw-r--r-- | Master/texmf-dist/source/latex/cool/cool.dtx | 5787 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/cool/cool.ins | 40 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/cool/cool.sty | 2631 | ||||
-rw-r--r-- | Master/texmf-dist/tpm/cool.tpm | 31 | ||||
-rw-r--r-- | Master/texmf/lists/cool | 10 | ||||
-rw-r--r-- | Master/texmf/tpm/collection-latexextra.tpm | 1 |
10 files changed, 10768 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/cool/Content_LaTeX_Package_Demo.pdf b/Master/texmf-dist/doc/latex/cool/Content_LaTeX_Package_Demo.pdf Binary files differnew file mode 100644 index 00000000000..0bff259ca5b --- /dev/null +++ b/Master/texmf-dist/doc/latex/cool/Content_LaTeX_Package_Demo.pdf diff --git a/Master/texmf-dist/doc/latex/cool/Content_LaTeX_Package_Demo.tex b/Master/texmf-dist/doc/latex/cool/Content_LaTeX_Package_Demo.tex new file mode 100644 index 00000000000..4a2d5f757b1 --- /dev/null +++ b/Master/texmf-dist/doc/latex/cool/Content_LaTeX_Package_Demo.tex @@ -0,0 +1,2225 @@ +\documentclass[12pt]{article} % Specifies the document class + +% The preamble begins here. + +%<-------------------------------------------Included Packages----------------------------------------------------> +%\usepackage[dvips]{epsfig} + % for displaying pictures +%\usepackage[b]{esvect} +\usepackage{amssymb} +\usepackage{amsmath} +\usepackage{ifthen} +\usepackage{cool} +\usepackage{makeidx} +\makeindex +%<-----------------------------------------End Included Packages--------------------------------------------------> + + +%<------------------------------------------Document Properties---------------------------------------------------> +\title{Content \LaTeXe} % Declares the document's title. +\author{N. Setzer} % Declares the author's name. +%\date{} % Declares the date. Aren't you glad you have that kind of power? +%\setlength{\topmargin}{-0.8in} +%\setlength{\topskip}{0.2in} % between header and text +%\setlength{\textheight}{9.0in} % height of main text +%\setlength{\textwidth}{7.3in} % width of text +%\setlength{\oddsidemargin}{-0.4in} % odd page left margin +%\setlength{\evensidemargin}{-0.4in} % even page left margin +%<----------------------------------------End Document Properties-------------------------------------------------> + + +%<----------------------------------------Modified LaTeX Command Definitions---------------------------------------> +\newcommand{\var}[1]{} +\newenvironment{declaration}{\hide}{} +\newcommand{\hide}[1]{} +\newenvironment{derivation}{\begin{eqnarray*}}{\end{eqnarray*}} +\newenvironment{der}{\begin{eqnarray*}}{\end{eqnarray*}} +%<--------------------------------------End Modified LaTeX Command Definitions-------------------------------------> + +%<-------------------------------------------Command Definitions---------------------------------------------------> +%%%%%%%%%%%%% Formatting +\newcommand{\headerRow}{\bf \textrm Command & \bf \textrm Inline & \bf \textrm Display \\} +%%%%%%%%%%%%% Indexing +\newcommand{\bs}{\symbol{'134}}% backslash +\newcommand{\idxc}[2][]{\texttt{\bs#2}\index{#2#1@\texttt{\bs#2}#1}} +%<-----------------------------------------End Command Definitions-------------------------------------------------> + + +%############################################Sectioning Templates################################################### + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%\section{} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +%\subsection{} +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%\subsubsection{} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% %%% %%% %%% %%% %%% %%% %%% %%% %%% %%% %%% %%% %%% %%% %%% %%% %%% %%% %%% +%\subsubsubsection{} +%%% %%% %%% %%% %%% %%% %%% %%% %%% %%% %%% %%% %%% %%% %%% %%% %%% %%% %%% %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% | % | % | % | % | % | % | % | % | % | % | % | % | % | % | +%\appendix +% | % | % | % | % | % | % | % | % | % | % | % | % | % | % | +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%##########################################End Sectioning Templates################################################# + + +\begin{document} % End of preamble and beginning of text. + +\maketitle + + +%%%%%%%%%%%%%% IMPORTANT: we can have seemingly UNLIMITE number of booleans !!!!!! +%%%%%%%%%%%%%% however, we can only create an 'array' of 746 of them + +% STRING capacity exceeded---this just won't work the way you want it to. +%\newcounter{testing} +%\setcounter{testing}{0} +%\whiledo{\value{testing}<6430}% +%{% +%\addtocounter{testing}{1}% +%\newboolean{j\arabic{testing}}% +%} + +% no errors but is not effective +%\newcounter{arrayTrav} +%\def\newarray#1#2{\def#1##1{% +%\ifthenelse{\equal{##1}{length}} +% {% +% #2 +% }% +%% Else +%\ifcase##1{0} +%\forLoop{1}{#2}{arrayTrav}% +% {% +% \or{0} +% }% +%\fi +%}} +%\def\setval#1#2#3{% +%\def#1##1{% +%\ifcase##1% +%\forLoop{1}{#1{length}}{arrayTrav} +% {% +% \or +% \ifthenelse{\value{arrayTrav}=#2} +% {#3} +% {#1{\arabic{arrayTrav}}} +% }% +%\fi +%}} +% +%\newarray{\joker}{10} +%\joker{2} +%\setval{\joker}{2}{t} +%\joker{2} + + +%% Works but costs alot of counters and only allows integers and single characters +%\newcommand{\newarray}[3][0]{% +%\newcounter{length#2}% +%\setcounter{length#2}{#3} +%\newcounter{fill#2} +%\forLoop{1}{\value{length#2}}{fill#2}% +% {% +% \newcounter{values#2\arabic{fill#2}} +% \setcounter{values#2\arabic{fill#2}}{#1} +% }% +%} +% +%\newcommand{\newstring}[3][0]{% +%\newcounter{strlen#2}% +%\setcounter{strlen#2}{#3} +%\newcounter{charfill#2} +%\forLoop{1}{\value{strlen#2}}{charfill#2}% +% {% +% \newcounter{strchar#2\arabic{charfill#2}} +% \setcounter{strchar#2\arabic{charfill#2}}{`#1} +% }% +%} +%\newcommand{\setchar}[3]{\setcounter{strchar#1#2}{`#3}} +%\newcommand{\strchar}[2]{\char\value{strchar#1#2}} +%\newcommand{\setstr}[2] +%{% +%\forLoop{1}{\value{strlen#1}}{charfill#1}% +% {% +% }% +%} +% +%\newcommand{\setval}[3]{\setcounter{values#1#2}{#3}} +%\newcommand{\arrayval}[2]{\arabic{values#1#2}} +% +%\newarray{joker}{13} +% +%\arrayval{joker}{2} +%\setval{joker}{2}{3} +%\arrayval{joker}{2} +%\setval{joker}{3}{12} +%\arrayval{joker}{3} +% +%\newstring{string}{114} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Commands} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +\label{Section:Commands} +% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +\subsection{Constants} +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{center} +\begin{tabular}{ccc} +\headerRow +\idxc[ ($\sqrt{-1}$)]{I} & $\I$ & $\displaystyle \I$ \\ +\idxc[ (base of natural log)]{E}& $\E$ & $\displaystyle \E$ \\ +\idxc{PI} & $\PI$ & $\displaystyle \PI$ \\ +\idxc{GoldenRatio} & $\GoldenRatio$ & $\displaystyle \GoldenRatio$ \\ +\idxc{EulerGamma} & $\EulerGamma$ & $\displaystyle \EulerGamma$ \\ +\idxc{Catalan} & $\Catalan$ & $\displaystyle \Catalan$ \\ +\idxc{Glaisher} & $\Glaisher$ & $\displaystyle \Glaisher$ \\ +\idxc{Khinchin} & $\Khinchin$ & $\displaystyle \Khinchin$ \\ +\end{tabular} +\end{center} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Symbols} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{center} +\begin{tabular}{ccc} +\idxc{Infinity} & $\Infinity$ & $\displaystyle \Infinity$ \\ +\idxc{Indeterminant} & $\Indeterminant$ & $\displaystyle \Indeterminant$ \\ +\idxc{DirectedInfinity}\verb|{z}| & $\DirectedInfinity{z}$ & $\displaystyle \DirectedInfinity{z}$ \\ +\idxc{DirInfty}\verb|{z}| & $\DirInfty{z}$ & $\displaystyle \DirInfty{z}$ \\ +\idxc{ComplexInfinity} & $\ComplexInfinity$ & $\displaystyle \ComplexInfinity$ \\ +\idxc{CInfty} & $\CInfty$ & $\displaystyle \CInfty$ \\ +\end{tabular} +\end{center} + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +\subsection{} +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Exponential and Logarithmic Functions} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{center} +\begin{tabular}{ccc} +\headerRow +\idxc{Exp}\verb|{5x}| & $\Exp{5x}$ & $\displaystyle \Exp{5x}$ \\ +\verb|\Style{ExpParen=b}|% +\Style{ExpParen=b} \\ +\idxc{Exp}\verb|{5x}| & $\Exp{5x}$ & $\displaystyle \Exp{5x}$ \\ +\verb|\Style{ExpParen=br}|% +\Style{ExpParen=br} \\ +\idxc{Exp}\verb|{5x}| & $\Exp{5x}$ & $\displaystyle \Exp{5x}$ \\ +\idxc{Log}\verb|{5}| & $\Log{5}$ & $\displaystyle \Log{5}$ \\ +\idxc{Log}\verb|[10]{5}| & $\Log[10]{5}$ & $\displaystyle \Log[10]{5}$ \\ +\idxc{Log}\verb|[4]{5}| & $\Log[4]{5}$ & $\displaystyle \Log[4]{5}$ \\ +\verb|\Style{LogBaseESymb=log}|% +\Style{LogBaseESymb=log} \\ +\idxc{Log}\verb|{5}| & $\Log{5}$ & $\displaystyle \Log{5}$ \\ +\idxc{Log}\verb|[10]{5}| & $\Log[10]{5}$ & $\displaystyle \Log[10]{5}$ \\ +\idxc{Log}\verb|[4]{5}| & $\Log[4]{5}$ & $\displaystyle \Log[4]{5}$ \\ +\verb|\Style{LogShowBase=always}|% +\Style{LogBaseESymb=ln}% +\Style{LogShowBase=always} \\ +\idxc{Log}\verb|{5}| & $\Log{5}$ & $\displaystyle \Log{5}$ \\ +\idxc{Log}\verb|[10]{5}| & $\Log[10]{5}$ & $\displaystyle \Log[10]{5}$ \\ +\idxc{Log}\verb|[4]{5}| & $\Log[4]{5}$ & $\displaystyle \Log[4]{5}$ \\ +\verb|\Style{LogShowBase=at will}|% +\Style{LogShowBase=at will} \\ +\idxc{Log}\verb|{5}| & $\Log{5}$ & $\displaystyle \Log{5}$ \\ +\idxc{Log}\verb|[10]{5}| & $\Log[10]{5}$ & $\displaystyle \Log[10]{5}$ \\ +\idxc{Log}\verb|[4]{5}| & $\Log[4]{5}$ & $\displaystyle \Log[4]{5}$ \\ +\verb|\Style{LogParen=p}|% +\Style{LogParen=p} \\ +\idxc{Log}\verb|[4]{5}| & $\Log[4]{5}$ & $\displaystyle \Log[4]{5}$ \\ +\end{tabular} +\end{center} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Trigonometric Functions} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Trigonometric Functions} + +\begin{center} +\begin{tabular}{ccc} +%%%%%% Trigonometric Functions +\idxc{Sin}\verb|{x}| & $\Sin{x}$ & $\displaystyle \Sin{x}$ \\ +\idxc{Cos}\verb|{x}| & $\Cos{x}$ & $\displaystyle \Cos{x}$ \\ +\idxc{Tan}\verb|{x}| & $\Tan{x}$ & $\displaystyle \Tan{x}$ \\ +\idxc{Csc}\verb|{x}| & $\Csc{x}$ & $\displaystyle \Csc{x}$ \\ +\idxc{Sec}\verb|{x}| & $\Sec{x}$ & $\displaystyle \Sec{x}$ \\ +\idxc{Cot}\verb|{x}| & $\Cot{x}$ & $\displaystyle \Cot{x}$ \\ +\end{tabular} +\end{center} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Inverse Trigonometric Functions} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Trigonometric Functions!Inverse} + +\begin{center} +\begin{tabular}{ccc} +%%%%%% Inverse Trigonometric Functions +\Style{ArcTrig=inverse}% +\verb|\Style{ArcTrig=inverse}| (default)% + \\ +\idxc{ArcSin}\verb|{x}| & $\ArcSin{x}$ & $\displaystyle \ArcSin{x}$ \\ +\idxc{ArcCos}\verb|{x}| & $\ArcCos{x}$ & $\displaystyle \ArcCos{x}$ \\ +\idxc{ArcTan}\verb|{x}| & $\ArcTan{x}$ & $\displaystyle \ArcTan{x}$ \\ +% +\Style{ArcTrig=arc}% +\verb|\Style{ArcTrig=arc}|% + \\ +\idxc{ArcSin}\verb|{x}| & $\ArcSin{x}$ & $\displaystyle \ArcSin{x}$ \\ +\idxc{ArcCos}\verb|{x}| & $\ArcCos{x}$ & $\displaystyle \ArcCos{x}$ \\ +\idxc{ArcTan}\verb|{x}| & $\ArcTan{x}$ & $\displaystyle \ArcTan{x}$ \\ + \\ +\idxc{ArcCsc}\verb|{x}| & $\ArcCsc{x}$ & $\displaystyle \ArcCsc{x}$ \\ +\idxc{ArcSec}\verb|{x}| & $\ArcSec{x}$ & $\displaystyle \ArcSec{x}$ \\ +\idxc{ArcCot}\verb|{x}| & $\ArcCot{x}$ & $\displaystyle \ArcCot{x}$ \\ +\end{tabular} +\end{center} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Hyberbolic Functions} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Hyperbolic Functions} + +\begin{center} +\begin{tabular}{ccc} +%%%%%% Hyperbolic Functions +\idxc{Sinh}\verb|{x}| & $\Sinh{x}$ & $\displaystyle \Sinh{x}$ \\ +\idxc{Cosh}\verb|{x}| & $\Cosh{x}$ & $\displaystyle \Cosh{x}$ \\ +\idxc{Tanh}\verb|{x}| & $\Tanh{x}$ & $\displaystyle \Tanh{x}$ \\ +\idxc{Csch}\verb|{x}| & $\Csch{x}$ & $\displaystyle \Csch{x}$ \\ +\idxc{Sech}\verb|{x}| & $\Sech{x}$ & $\displaystyle \Sech{x}$ \\ +\idxc{Coth}\verb|{x}| & $\Coth{x}$ & $\displaystyle \Coth{x}$ \\ +\end{tabular} +\end{center} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Inverse Hyberbolic Functions} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Hyperbolic Functions!Inverse} + +\begin{center} +\begin{tabular}{ccc} +%%%%%% Inverse Hyberbolic Functions +\idxc{ArcSinh}\verb|{x}| & $\ArcSinh{x}$ & $\displaystyle \ArcSinh{x}$ \\ +\idxc{ArcCosh}\verb|{x}| & $\ArcCosh{x}$ & $\displaystyle \ArcCosh{x}$ \\ +\idxc{ArcTanh}\verb|{x}| & $\ArcTanh{x}$ & $\displaystyle \ArcTanh{x}$ \\ +\idxc{ArcCsch}\verb|{x}| & $\ArcCsch{x}$ & $\displaystyle \ArcCsch{x}$ \\ +\idxc{ArcSech}\verb|{x}| & $\ArcSech{x}$ & $\displaystyle \ArcSech{x}$ \\ +\idxc{ArcCoth}\verb|{x}| & $\ArcCoth{x}$ & $\displaystyle \ArcCoth{x}$ \\ +\end{tabular} +\end{center} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Product Logarithms} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Lambert Function} +\index{Lambert Function!Generalized} +\index{Generalized Lambert Function} +\index{Product Logarithms} +\index{Logarithms!Product} + +\begin{center} +\begin{tabular}{ccc} +\headerRow +%%%%%%% Lambert Function +\idxc{LambertW}\verb|{z}| & $\LambertW{z}$ & $\displaystyle \LambertW{z}$ \\ +%%%%%%%% Lambert Function +\idxc{ProductLog}\verb|{z}| & $\ProductLog{z}$ & $\displaystyle \ProductLog{z}$ \\ + \\ + +%%%%%%% Generalized Lambert Function +\idxc{LambertW}\verb|{k,z}| & $\LambertW{k,z}$ & $\displaystyle \LambertW{k,z}$ \\ +%%%%%%%% Generalized Lambert Function +\idxc{ProductLog}\verb|{k,z}| & $\ProductLog{k,z}$ & $\displaystyle \ProductLog{k,z}$ \\ +\end{tabular} +\end{center} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Max and Min} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{center} +\begin{tabular}{ccc} +%%%%%% Max and Min +\idxc{Max}\verb|{1,2,3,4,5}| & $\Max{1,2,3,4,5}$ & $\displaystyle \Max{1,2,3,4,5}$ \\ +\idxc{Min}\verb|{1,2,3,4,5}| & $\Min{1,2,3,4,5}$ & $\displaystyle \Min{1,2,3,4,5}$ +\end{tabular} +\end{center} + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +\subsection{Bessel, Airy, and Struve Functions} +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Bessel} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Bessel functions can be `renamed' with the \verb|\Style| tag. For example, \verb|\Style{BesselYSymb=N}| yields \Style{BesselYSymb=N} $\BesselY{\nu}{x}$ \Style{BesselYSymb=Y} + +\index{Bessel Functions} + + +\begin{center} +\begin{tabular}{ccc} +\headerRow +%%%%%% Bessel +% Bessel Function of the first Kind +\idxc{BesselJ}\verb|{0}{x}| & $\BesselJ{0}{x}$ & $\displaystyle \BesselJ{0}{x}$ \\ +% Bessel Function of the second Kind +\idxc{BesselY}\verb|{0}{x}| & $\BesselY{0}{x}$ & $\displaystyle \BesselY{0}{x}$ \\ +% Modified Bessel Function of the first Kind +\idxc{BesselI}\verb|{0}{x}| & $\BesselI{0}{x}$ & $\displaystyle \BesselI{0}{x}$ \\ +% Modified Bessel Function of the second Kind +\idxc{BesselK}\verb|{0}{x}| & $\BesselK{0}{x}$ & $\displaystyle \BesselK{0}{x}$ \\ +\end{tabular} +\end{center} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Airy} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Airy Functions} + +\begin{center} +\begin{tabular}{ccc} +%%%%%% Airy +\idxc{AiryAi}\verb|{x}| & $\AiryAi{x}$ & $\displaystyle \AiryAi{x}$ \\ +\idxc{AiryBi}\verb|{x}| & $\AiryBi{x}$ & $\displaystyle \AiryBi{x}$ \\ +\end{tabular} +\end{center} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Struve} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Struve Functions} + +\begin{center} +\begin{tabular}{ccc} +%%%%%% Struve +\idxc{StruveH}\verb|{\nu}{x}| & $\StruveH{\nu}{x}$ & $\displaystyle \StruveH{\nu}{x}$ \\ +\idxc{StruveL}\verb|{\nu}{x}| & $\StruveL{\nu}{x}$ & $\displaystyle \StruveL{\nu}{x}$ +\end{tabular} +\end{center} + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +\subsection{Integer Functions} +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{center} +\begin{tabular}{ccc} +\headerRow +% Floor +\idxc{Floor}\verb|{x}| & $\Floor{x}$ & $\displaystyle \Floor{x}$ \\ +\idxc{Ceiling}\verb|{x}| & $\Ceiling{x}$ & $\displaystyle \Ceiling{x}$ \\ +\idxc{Round}\verb|{x}| & $\Round{x}$ & $\displaystyle \Round{x}$ \\ +\end{tabular} +\end{center} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{int@\textrm{int}|see{\texttt{\bs iPart}}} +\index{frac@\textrm{frac}|see{\texttt{\bs fPart}}} + +\begin{center} +\begin{tabular}{ccc} +\idxc{iPart}\verb|{x}| & $\iPart{x}$ & $\displaystyle \iPart{x}$ \\ +\idxc{IntegerPart}\verb|{x}| & $\IntegerPart{x}$ & $\displaystyle \IntegerPart{x}$ \\ +\idxc{fPart}\verb|{x}| & $\fPart{x}$ & $\displaystyle \fPart{x}$ \\ +\idxc{FractionalPart}\verb|{x}| & $\FractionalPart{x}$ & $\displaystyle \FractionalPart{x}$ \\ +\end{tabular} +\end{center} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Greatest Common Divisor} +\index{Least Common Multiple} + +\begin{center} +\begin{tabular}{ccc} +\verb|\Style{ModDisplay=mod}| (default)% +\Style{ModDisplay=mod} \\ +\idxc{Mod}\verb|{m}{n}| & $\Mod{m}{n}$ & $\displaystyle \Mod{m}{n}$ \\ +\verb|\Style{ModDisplay=bmod}|% +\Style{ModDisplay=bmod} \\ +\idxc{Mod}\verb|{m}{n}| & $\Mod{m}{n}$ & $\displaystyle \Mod{m}{n}$ \\ +\verb|\Style{ModDisplay=pmod}|% +\Style{ModDisplay=pmod} \\ +\idxc{Mod}\verb|{m}{n}| & $\Mod{m}{n}$ & $\displaystyle \Mod{m}{n}$ \\ +\verb|\Style{ModDisplay=pod}|% +\Style{ModDisplay=pod} \\ +\idxc{Mod}\verb|{m}{n}| & $\Mod{m}{n}$ & $\displaystyle \Mod{m}{n}$ \\ + \\ +\idxc{Quotient}\verb|{m}{n}| & $\Quotient{m}{n}$ & $\displaystyle \Quotient{m}{n}$ \\ +\idxc{GCD}\verb|{m, n}| & $\GCD{m, n}$ & $\displaystyle \GCD{m, n}$ \\ +\idxc{ExtendedGCD}\verb|{m}{n}| & $\ExtendedGCD{m}{n}$ & $\displaystyle \ExtendedGCD{m}{n}$ \\ +\idxc{EGCD}\verb|{m}{n}| & $\EGCD{m}{n}$ & $\displaystyle \EGCD{m}{n}$ \\ +\idxc{LCM}\verb|{m, n}| & $\LCM{m, n}$ & $\displaystyle \LCM{m, n}$ \\ +\end{tabular} +\end{center} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Fibonacci Number} + +\begin{center} +\begin{tabular}{ccc} +\idxc{Fibonacci}\verb|{\nu}| & $\Fibonacci{\nu}$ & $\displaystyle \Fibonacci{\nu}$ \\ +\idxc{Euler}\verb|{m}| & $\Euler{m}$ & $\displaystyle \Euler{m}$ \\ +\idxc{Bernoulli}\verb|{m}| & $\Bernoulli{m}$ & $\displaystyle \Bernoulli{m}$ \\ +\idxc{StirlingSOne}\verb|{n}{m}| & $\StirlingSOne{n}{m}$ & $\displaystyle \StirlingSOne{n}{m}$ \\ +\idxc{StirlingSTwo}\verb|{n}{m}| & $\StirlingSTwo{n}{m}$ & $\displaystyle \StirlingSTwo{n}{m}$ \\ +\idxc{PartitionsP}\verb|{n}| & $\PartitionsP{n}$ & $\displaystyle \PartitionsP{n}$ \\ +\idxc{PartitionsQ}\verb|{n}| & $\PartitionsQ{n}$ & $\displaystyle \PartitionsQ{n}$ \\ +\end{tabular} +\end{center} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{center} +\begin{tabular}{ccc} +%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\idxc{DiscreteDelta}\verb|{n, m}| & $\DiscreteDelta{n, m}$ & $\displaystyle \DiscreteDelta{n, m}$ + \\ +\idxc{KroneckerDelta}\verb|{n m}| & $\KroneckerDelta{n m}$ & $\displaystyle \KroneckerDelta{n m}$ + \\ +\idxc{KroneckerDelta}\verb|[d]{n m}| & $\KroneckerDelta[d]{n m}$ & $\displaystyle \KroneckerDelta[d]{n m}$ + \\ +\idxc{LeviCivita}\verb|{i j k}| & $\LeviCivita{i j k}$ & $\displaystyle \LeviCivita{i j k}$ + \\ +\idxc{LeviCivita}\verb|[d]{i j k}| & $\LeviCivita[d]{i j k}$ & $\displaystyle \LeviCivita[d]{i j k}$ + \\ +\idxc{Signature}\verb|{i j k}| & $\Signature{i j k}$ & $\displaystyle \Signature{i j k}$ + \\ +\verb|\Style{LeviCivitaIndicies=up}|% +\Style{LeviCivitaIndicies=up} \\ +\idxc{LeviCivita}\verb|[d]{i j k}| & $\LeviCivita[d]{i j k}$ & $\displaystyle \LeviCivita[d]{i j k}$ + \\ +\verb|\Style{LeviCivitaIndicies=local}|% +\Style{LeviCivitaIndicies=local} \\ +\idxc{LeviCivita}\verb|[d]{i j k}| & $\LeviCivita[d]{i j k}$ & $\displaystyle \LeviCivita[d]{i j k}$ + \\ +\end{tabular} +\end{center} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +\subsection{Polynomials} +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Polynomials can be `renamed' with the \verb|\Style| command: + +\begin{center} +\verb|\Style{| $\langle\mbox{\textit{Polynomial command} }\rangle$% + \verb|Symb=|$\langle\mbox{\textit{Symbol} }\rangle$% + \verb|}| +\end{center} + +As in \verb|\Style{HermiteHSymb=h,LegendrePSymb=p}| \verb|$\HermiteH{n}{x}$| \verb|$\LegendreP{n,x}$| yielding: +\Style{HermiteHSymb=h,LegendrePSymb=p} $\HermiteH{n}{x}$ $\LegendreP{n,x}$ +\Style{HermiteHSymb=H,LegendrePSymb=P} + +\index{Polynomials!Hermite} +\index{Polynomials!Laugerre} +\index{Polynomials!Legendre} +\index{Polynomials!Chebyshev} +\index{Polynomials!Jacobi} +\index{Polynomials!Gegenbauer} +\index{Polynomials!Cyclotomic} +\index{Polynomials!Fibonacci} +\index{Polynomials!Euler} +\index{Polynomials!Bernoulli} +\index{Generalized Laugerre} + +\begin{center} +\begin{tabular}{ccc} +\headerRow +% Hermite H +\idxc{HermiteH}\verb|{n}{x}| & $\HermiteH{n}{x}$ & $\displaystyle \HermiteH{n}{x}$ \\ +% Laugerre L +\idxc{LaugerreL}\verb|{n,x}| & $\LaugerreL{n,x}$ & $\displaystyle \LaugerreL{n,x}$ \\ +% Legendre P +\idxc{LegendreP}\verb|{n,x}| & $\LegendreP{n,x}$ & $\displaystyle \LegendreP{n,x}$ \\ +% Chebyshev T +\idxc{ChebyshevT}\verb|{n}{x}| & $\ChebyshevT{n}{x}$ & $\displaystyle \ChebyshevT{n}{x}$ \\ +% Chebyshev U +\idxc{ChebyshevU}\verb|{n}{x}| & $\ChebyshevU{n}{x}$ & $\displaystyle \ChebyshevU{n}{x}$ \\ +% Jacobi P +\idxc{JacobiP}\verb|{n}{a}{b}{x}| & $\JacobiP{n}{a}{b}{x}$& $\displaystyle \JacobiP{n}{a}{b}{x}$ \\ + \\ +% Associated Legendre P +\idxc{AssocLegendreP}\verb|{\ell}{m}{x}| + & $\AssocLegendreP{\ell}{m}{x}$ + & $\displaystyle \AssocLegendreP{\ell}{m}{x}$ + \\ +% Associated Legendre Q +\idxc{AssocLegendreQ}\verb|{\ell}{m}{x}| + & $\AssocLegendreQ{\ell}{m}{x}$ + & $\displaystyle \AssocLegendreQ{\ell}{m}{x}$ + \\ +% Generalized Laugerre Polynomial +\idxc{LaugerreL}\verb|{n,\lambda,x}| + & $\LaugerreL{n,\lambda,x}$ + & $\displaystyle \LaugerreL{n,\lambda,x}$ + \\ +% Gegenbauer Polynomial +\idxc{GegenbauerC}\verb|{n}{\lambda}{x}| + & $\GegenbauerC{n}{\lambda}{x}$ + & $\displaystyle \GegenbauerC{n}{\lambda}{x}$ + \\ +% Spherical Harmonics +\idxc{SphericalHarmY}\verb|{n}{m}{\theta}{\phi}| + & $\SphericalHarmY{n}{m}{\theta}{\phi}$ + & $\displaystyle \SphericalHarmY{n}{m}{\theta}{\phi}$ + \\ + \\ +% Cyclotomic +\idxc{CyclotomicC}\verb|{n}{x}| & $\CyclotomicC{n}{x}$ & $\displaystyle \CyclotomicC{n}{x}$ \\ +% Fibonacci +\idxc{FibonacciF}\verb|{n}{x}| & $\FibonacciF{n}{x}$ & $\displaystyle \FibonacciF{n}{x}$ \\ +% Euler +\idxc{EulerE}\verb|{n}{x}| & $\EulerE{n}{x}$ & $\displaystyle \EulerE{n}{x}$ \\ +% Bernoulli +\idxc{BernoulliB}\verb|{n}{x}| & $\BernoulliB{n}{x}$ & $\displaystyle \BernoulliB{n}{x}$ \\ +\end{tabular} +\end{center} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +\subsection{Gamma, Beta, and Error Functions} +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Factorials} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%% Gamma, Beta, Error Functions +\begin{center} + +\begin{tabular}{ccc} +\headerRow +%%%%%% Factorial +\idxc{Factorial}\verb|{n}| & $\Factorial{n}$ & $\displaystyle \Factorial{n}$ \\ +\idxc{DblFactorial}\verb|{n}| & $\DblFactorial{n}$ & $\displaystyle \DblFactorial{n}$ \\ +\idxc{Binomial}\verb|{n}{k}| & $\Binomial{n}{k}$ & $\displaystyle \Binomial{n}{k}$ \\ +\idxc{Multinomial}\verb|{1,2,3,4}| & $\Multinomial{1,2,3,4}$ + & $\displaystyle \Multinomial{1,2,3,4}$ \\ +\end{tabular} + +\vspace{0.25cm} + +\begin{tabular}{c} +\idxc{Multinomial}\verb|{n_1, n_2, \ldots, n_m}| +\\ + \begin{tabular}{cc} + {\bf Inline:} & $\Multinomial{n_1,n_2,\ldots,n_m}$ \\ + {\bf Display:} & $\displaystyle \Multinomial{n_1, n_2, \ldots, n_m}$ \\ + \end{tabular} +\\ +\\ +\end{tabular} + +\end{center} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Gamma Functions} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Incomplete Gamma Function} +\index{Gamma Functions} +\index{Gamma Functions!Inverse} + +\begin{center} +\begin{tabular}{ccc} +%%%%%% Gamma Functions +\idxc{GammaFunc}\verb|{x}| & $\GammaFunc{x}$ & $\displaystyle \GammaFunc{x}$ \\ +% incomplete Gamma function G(a,x) +\idxc{IncGamma}\verb|{a}{x}| & $\IncGamma{a}{x}$ & $\displaystyle \IncGamma{a}{x}$ \\ +% Generalized Incomplete Gamma G(a, x, y) +\idxc{GenIncGamma}\verb|{a}{x}{y}| & $\GenIncGamma{a}{x}{y}$ + & $\displaystyle \GenIncGamma{a}{x}{y}$ \\ +% Regularized Incomplete Gamma Q(a,x) +\idxc{RegIncGamma}\verb|{a}{x}| & $\RegIncGamma{a}{x}$ & $\displaystyle \RegIncGamma{a}{x}$ \\ +% Inverse of Regularized Incomplete Gamma InvQ(a,x) +% \ArcRegIncGamma +\idxc{RegIncGammaInv}\verb|{a}{x}| & $\RegIncGammaInv{a}{x}$ + & $\displaystyle \RegIncGammaInv{a}{x}$ \\ +% Generalized Regularized Incomplete Gamma Q(a, x, y) +\idxc{GenRegIncGamma}\verb|{a}{x}{y}| + & $\GenRegIncGamma{a}{x}{y}$ + & $\displaystyle \GenRegIncGamma{a}{x}{y}$ + \\ +% Inverse of Gen. Reg. Incomplete Gamma InvQ(a, x, y) +% \ArcGenRegIncGamma +\idxc{GenRegIncGammaInv}\verb|{a}{x}{y}| + & $\GenRegIncGammaInv{a}{x}{y}$ + & $\displaystyle \GenRegIncGammaInv{a}{x}{y}$ + \\ +% Pochhammer Symbol (a)_n +\idxc{Pochhammer}\verb|{a}{n}| & $\Pochhammer{a}{n}$ & $\displaystyle \Pochhammer{a}{n}$ \\ +% Log Gamma Func +\idxc{LogGamma}\verb|{x}| & $\LogGamma{x}$ & $\displaystyle \LogGamma{x}$ \\ +\end{tabular} +\end{center} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Derivatives of Gamma Functions} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Derivatives!of Gamma Functions} +\index{Beta Functions} +\index{Beta Functions!Inverse} + +\begin{center} +\begin{tabular}{ccc} +%%%%%% Derivative of Gamma Functions +% Digamma function +\idxc{DiGamma}\verb|{x}| & $\DiGamma{x}$ & $\displaystyle \DiGamma{x}$ \\ +% PolyGamma function psi^(\nu) (x) +\idxc{PolyGamma}\verb|{\nu}{x}| & $\PolyGamma{\nu}{x}$ & $\displaystyle \PolyGamma{\nu}{x}$ \\ +% Harmonic Number H_x +\idxc{HarmNum}\verb|{x}| & $\HarmNum{x}$ & $\displaystyle \HarmNum{x}$ \\ +% Generalized Harmonic Number H_x^(r) +\idxc{HarmNum}\verb|{x,r}| & $\HarmNum{x,r}$ & $\displaystyle \HarmNum{x,r}$ \\ +% Beta Function B(a, b) +\idxc{Beta}\verb|{a,b}| & $\Beta{a,b}$ & $\displaystyle \Beta{a,b}$ \\ +% Incomplete Beta Function B_z(a, b) +\idxc{IncBeta}\verb|{z}{a}{b}| & $\IncBeta{z}{a}{b}$ & $\displaystyle \IncBeta{z}{a}{b}$ \\ +% Generalized Inc. Beta Func. B_(x,y) (a, b) +\idxc{GenIncBeta}\verb|{x}{y}{a}{b}| + & $\GenIncBeta{x}{y}{a}{b}$ + & $\displaystyle \GenIncBeta{x}{y}{a}{b}$ + \\ +% Regularized Incomplete Beta Function I_z(a,b) +\idxc{RegIncBeta}\verb|{z}{a}{b}| & $\RegIncBeta{z}{a}{b}$ + & $\displaystyle \RegIncBeta{z}{a}{b}$ \\ +% Inverse of Reg. Incomplete Beta Function InvI_z(a,b) +% \ArcRegIncBeta +\idxc{RegIncBetaInv}\verb|{z}{a}{b}| + & $\RegIncBetaInv{z}{a}{b}$ + & $\displaystyle \RegIncBetaInv{z}{a}{b}$ + \\ +% Gen. Regularized Inc. Beta Func. I_(x,y) (a, b) +\idxc{GenRegIncBeta}\verb|{x}{y}{a}{b}| + & $\GenRegIncBeta{x}{y}{a}{b}$ + & $\displaystyle \GenRegIncBeta{x}{y}{a}{b}$ + \\ +% Inv. of Gen. Reg. Inc. Beta InvI_(x,y) (a, b) +%\ArcGenRegIncBeta +\idxc{GenRegIncBetaInv}\verb|{x}{y}{a}{b}| + & $\GenRegIncBetaInv{x}{y}{a}{b}$ + & $\displaystyle \GenRegIncBetaInv{x}{y}{a}{b}$ + \\ +\end{tabular} +\end{center} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Error Functions} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Error Functions} +\index{Error Functions!Inverse} + +\begin{center} +\begin{tabular}{ccc} +%%%%%% Error Functions +% Error Function +\idxc{Erf}\verb|{x}| & $\Erf{x}$ & $\displaystyle \Erf{x}$ \\ +% Inverse of Error Function +%\ArcErf +\idxc{InvErf}\verb|{x}| & $\ErfInv{x}$ & $\displaystyle \ErfInv{x}$ \\ +% Generalized Error Function +\idxc{GenErf}\verb|{x}|{y} & $\GenErf{x}{y}$ & $\displaystyle \GenErf{x}{y}$ \\ +% Inverse of Generalized Error Function +%\ArcGenErf +\idxc{GenErfInv}\verb|{x}{y}| & $\GenErfInv{x}{y}$ & $\displaystyle \GenErfInv{x}{y}$ \\ +% Complimentary Error Function +\idxc{Erfc}\verb|{x}| & $\Erfc{x}$ & $\displaystyle \Erfc{x}$ \\ +% Inverse of Complimentary Error Function +% \ArcErfc +\idxc{ErfcInv}\verb|{x}| & $\ErfcInv{x}$ & $\displaystyle \ErfcInv{x}$ \\ +% Imaginary Error Function +\idxc{Erfi}\verb|{x}| & $\Erfi{x}$ & $\displaystyle \Erfi{x}$ \\ +\end{tabular} +\end{center} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Fresnel Integrals} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Fresnel Integrals} +\index{Integrals!Fresnel} + +\begin{center} +\begin{tabular}{ccc} +%%%%%% Fresnel +\idxc{FresnelS}\verb|{x}| & $\FresnelS{x}$ & $\displaystyle \FresnelS{x}$ \\ +\idxc{FresnelC}\verb|{x}| & $\FresnelC{x}$ & $\displaystyle \FresnelC{x}$ \\ +\end{tabular} +\end{center} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Exponential Integrals} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Exponential Integrals} +\index{Integrals!Exponential} + +\begin{center} +\begin{tabular}{ccc} +%%%%%% Exponential Integrals +% Exponential Integral E_\nu (x) +\idxc{ExpIntE}\verb|{\nu}{x}| & $\ExpIntE{\nu}{x}$ & $\displaystyle \ExpIntE{\nu}{x}$ \\ +% Exponential Integral Ei(x) +\idxc{ExpIntEi}\verb|{x}| & $\ExpIntEi{x}$ & $\displaystyle \ExpIntEi{x}$ \\ +% Logarithmic Integral li(x) +\idxc{LogInt}\verb|{x}| & $\LogInt{x}$ & $\displaystyle \LogInt{x}$ \\ +% Sine Integral +\idxc{SinInt}\verb|{x}| & $\SinInt{x}$ & $\displaystyle \SinInt{x}$ \\ +% Cosine Integral +\idxc{CosInt}\verb|{x}| & $\CosInt{x}$ & $\displaystyle \CosInt{x}$ \\ +% Hyperbolic Sine Integral +\idxc{SinhInt}\verb|{x}| & $\SinhInt{x}$ & $\displaystyle \SinhInt{x}$ \\ +% Hyperbolic Cosine Integral +\idxc{CoshInt}\verb|{x}| & $\CoshInt{x}$ & $\displaystyle \CoshInt{x}$ \\ +\end{tabular} +\end{center} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +\subsection{Hypergeometric Functions} +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Hypergeometric Function} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Hypergeometric Functions} + +\begin{center} +\begin{tabular}{c} +\idxc{Hypergeometric}\verb|{0}{0}{}{}{x}| +\\ + \begin{tabular}{cc} + $\Hypergeometric{0}{0}{}{}{x}$ & $\displaystyle \Hypergeometric{0}{0}{}{}{x}$ \\ + \end{tabular} +\\ +\\ +\idxc{Hypergeometric}\verb|{0}{1}{}{b}{x}| +\\ + \begin{tabular}{cc} + $\Hypergeometric{0}{1}{}{b}{x}$ & $\displaystyle \Hypergeometric{0}{1}{}{b}{x}$ \\ + \end{tabular} +\\ +\\ +\idxc{Hypergeometric}\verb|{1}{1}{a}{b}{x}| +\\ + \begin{tabular}{cc} + $\Hypergeometric{1}{1}{a}{b}{x}$ & $\displaystyle \Hypergeometric{1}{1}{a}{b}{x}$ \\ + \end{tabular} +\\ +\\ +\idxc{Hypergeometric}\verb|{1}{1}{1}{1}{x}| +\\ + \begin{tabular}{cc} + $\Hypergeometric{1}{1}{1}{1}{x}$ & $\displaystyle \Hypergeometric{1}{1}{1}{1}{x}$ \\ + \end{tabular} +\\ +\\ +\idxc{Hypergeometric}\verb|{3}{5}{a}{b}{x}| +\\ + \begin{tabular}{cc} + $\Hypergeometric{3}{5}{a}{b}{x}$ & $\displaystyle \Hypergeometric{3}{5}{a}{b}{x}$ \\ + \end{tabular} +\\ +\\ +\idxc{Hypergeometric}\verb|{3}{5}{1,2,3}{1,2,3,4,5}{x}| +\\ + \begin{tabular}{cc} + $\Hypergeometric{3}{5}{1,2,3}{1,2,3,4,5}{x}$ & $\displaystyle \Hypergeometric{3}{5}{1,2,3}{1,2,3,4,5}{x}$ + \\ + \end{tabular} +\\ +\\ +\idxc{Hypergeometric}\verb|{p}{5}{a}{b}{x}| +\\ + \begin{tabular}{cc} + $\Hypergeometric{p}{5}{a}{b}{x}$ & $\displaystyle \Hypergeometric{p}{5}{a}{b}{x}$ \\ + \end{tabular} +\\ +\\ +\idxc{Hypergeometric}\verb|{p}{3}{a}{1,2,3}{x}| +\\ + \begin{tabular}{cc} + $\Hypergeometric{p}{3}{a}{1,2,3}{x}$ $\displaystyle \Hypergeometric{p}{3}{a}{1,2,3}{x}$ \\ + \end{tabular} +\\ +\\ +\idxc{Hypergeometric}\verb|{p}{q}{a}{b}{x}| +\\ + \begin{tabular}{cc} + $\Hypergeometric{p}{q}{a}{b}{x}$ & $\displaystyle \Hypergeometric{p}{q}{a}{b}{x}$ \\ + + \end{tabular} +\end{tabular} +\end{center} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Regularized Hypergeometric Function} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Hypergeometric Functions!Regularized} + +\begin{center} +\begin{tabular}{c} +\idxc{RegHypergeometric}\verb|{0}{0}{}{}{x}| +\\ + \begin{tabular}{cc} + $\RegHypergeometric{0}{0}{}{}{x}$ & $\displaystyle \RegHypergeometric{0}{0}{}{}{x}$ \\ + \end{tabular} +\\ +\\ +\idxc{RegHypergeometric}\verb|{0}{1}{}{b}{x}| +\\ + \begin{tabular}{cc} + $\RegHypergeometric{0}{1}{}{b}{x}$ & $\displaystyle \RegHypergeometric{0}{1}{}{b}{x}$ \\ + \end{tabular} +\\ +\\ +\idxc{RegHypergeometric}\verb|{3}{5}{a}{b}{x}| +\\ + \begin{tabular}{cc} + $\RegHypergeometric{3}{5}{a}{b}{x}$ & $\displaystyle \RegHypergeometric{3}{5}{a}{b}{x}$ \\ + \end{tabular} +\\ +\\ +\idxc{RegHypergeometric}\verb|{3}{5}{1,2,3}{1,2,3,4,5}{x}| +\\ + \begin{tabular}{cc} + $\RegHypergeometric{3}{5}{1,2,3}{1,2,3,4,5}{x}$ & $\displaystyle \RegHypergeometric{3}{5}{1,2,3}{1,2,3,4,5}{x}$ + \\ + \end{tabular} +\\ +\\ +\idxc{RegHypergeometric}\verb|{p}{5}{a}{b}{x}| +\\ + \begin{tabular}{cc} + $\RegHypergeometric{p}{5}{a}{b}{x}$ & $\displaystyle \RegHypergeometric{p}{5}{a}{b}{x}$ \\ + \end{tabular} +\\ +\\ +\idxc{RegHypergeometric}\verb|{p}{3}{a}{1,2,3}{x}| +\\ + \begin{tabular}{cc} + $\RegHypergeometric{p}{3}{a}{1,2,3}{x}$ & $\displaystyle \RegHypergeometric{p}{3}{a}{1,2,3}{x}$ \\ + \end{tabular} +\\ +\\ +\idxc{RegHypergeometric}\verb|{p}{q}{a}{b}{x}| +\\ + \begin{tabular}{cc} + $\RegHypergeometric{p}{q}{a}{b}{x}$ & $\displaystyle \RegHypergeometric{p}{q}{a}{b}{x}$ \\ + + \end{tabular} +\end{tabular} +\end{center} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Meijer G-Function} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Meijer G-Function} +\index{G-Function} + +\begin{center} +\begin{tabular}{c} +\idxc{MeijerG}\verb|[a,b]{n}{p}{m}{q}{x}| \vspace{0.10cm} +\\ + \begin{tabular}{cc} + $\MeijerG[a,b]{n}{p}{m}{q}{x}$ + & $\displaystyle \MeijerG[a,b]{n}{p}{m}{q}{x}$ + \end{tabular} +\\ +\end{tabular} + +\vspace{0.5cm} + +\begin{tabular}{c} +\idxc{MeijerG}\verb|{1,2,3,4}{5,6}{3,6,9}{12,15,18,21,24}{x}| \vspace{0.10cm} +\\ + \begin{tabular}{cc} + $\MeijerG{1,2,3,4}{5,6}{3,6,9}{12,15,18,21,24}{x}$ + & $\displaystyle \MeijerG{1,2,3,4}{5,6}{3,6,9}{12,15,18,21,24}{x}$ + \end{tabular} +\\ +\\ +\idxc{MeijerG}\verb|[a,b]{4}{6}{3}{8}{x}| \vspace{0.10cm} +\\ + \begin{tabular}{cc} + $\MeijerG[a,b]{4}{6}{3}{8}{x}$ + & $\displaystyle \MeijerG[a,b]{4}{6}{3}{8}{x}$ + \\ + \end{tabular} +\\ +\\ +\idxc{MeijerG}\verb|[a,b]{4}{p}{3}{8}{x}| \vspace{0.10cm} +\\ + \begin{tabular}{cc} + $\MeijerG[a,b]{4}{p}{3}{8}{x}$ + & $\displaystyle \MeijerG[a,b]{4}{p}{3}{8}{x}$ + \\ + \end{tabular} +\\ +\\ +\idxc{MeijerG}\verb|[a,b]{n}{p}{3}{8}{x}| \vspace{0.10cm} +\\ + \begin{tabular}{cc} + $\MeijerG[a,b]{n}{p}{3}{8}{x}$ + & $\displaystyle \MeijerG[a,b]{n}{p}{3}{8}{x}$ + \\ + \end{tabular} +\\ +\end{tabular} + +\begin{tabular}{c} +\idxc{MeijerG}\verb|[a]{4}{6}{3,6,9}{12,15,18,21,24}{x}| \vspace{0.10cm} +\\ + \begin{tabular}{cc} + $\MeijerG[a]{4}{6}{3,6,9}{12,15,18,21,24}{x}$ + & $\displaystyle \MeijerG[a]{4}{6}{3,6,9}{12,15,18,21,24}{x}$ + \\ + \end{tabular} +\\ +\\ +\idxc{MeijerG}\verb|[a]{4}{p}{3,6,9}{12,15,18,21,24}{x}| \vspace{0.10cm} +\\ + \begin{tabular}{cc} + $\MeijerG[a]{4}{p}{3,6,9}{12,15,18,21,24}{x}$ + & $\displaystyle \MeijerG[a]{4}{p}{3,6,9}{12,15,18,21,24}{x}$ + \\ + \end{tabular} +\\ +\\ +\idxc{MeijerG}\verb|[a]{n}{6}{3,6,9}{12,15,18,21,24}{x}| \vspace{0.10cm} +\\ + \begin{tabular}{cc} + $\MeijerG[a]{n}{6}{3,6,9}{12,15,18,21,24}{x}$ + & $\displaystyle \MeijerG[a]{n}{6}{3,6,9}{12,15,18,21,24}{x}$ + \\ + \end{tabular} +\\ +\\ +\idxc{MeijerG}\verb|[a]{n}{p}{3,6,9}{12,15,18,21,24}{x}| \vspace{0.10cm} +\\ + \begin{tabular}{cc} + $\MeijerG[a]{n}{p}{3,6,9}{12,15,18,21,24}{x}$ + & $\displaystyle \MeijerG[a]{n}{p}{3,6,9}{12,15,18,21,24}{x}$ + \\ + \end{tabular} +\\ +\end{tabular} + +\begin{tabular}{c} +\idxc{MeijerG}\verb|[,b]{1,2,3,4}{5,6}{3}{8}{x}| \vspace{0.10cm} +\\ + \begin{tabular}{cc} + $\MeijerG[,b]{1,2,3,4}{5,6}{3}{8}{x}$ + & $\displaystyle \MeijerG[,b]{1,2,3,4}{5,6}{3}{8}{x}$ + \\ + \end{tabular} +\\ +\\ +\idxc{MeijerG}\verb|[,b]{1,2,3,4}{5,6}{3}{q}{x}| \vspace{0.10cm} +\\ + \begin{tabular}{cc} + $\MeijerG[,b]{1,2,3,4}{5,6}{3}{q}{x}$ + & $\displaystyle \MeijerG[,b]{1,2,3,4}{5,6}{3}{q}{x}$ + \\ + \end{tabular} +\\ +\\ +\idxc{MeijerG}\verb|[,b]{1,2,3,4}{5,6}{m}{q}{x}| \vspace{0.10cm} +\\ + \begin{tabular}{cc} + $\MeijerG[,b]{1,2,3,4}{5,6}{m}{q}{x}$ + & $\displaystyle \MeijerG[,b]{1,2,3,4}{5,6}{m}{q}{x}$ + \\ + \end{tabular} +\\ +\\ +\end{tabular} + +\index{Generalized Meijer G-Function} +\index{Meijer G-Function!Generalized} + +\begin{tabular}{c} +\idxc{MeijerG}\verb|[a,b]{n}{p}{m}{q}{x, r}| \vspace{0.10cm} +\\ + \begin{tabular}{cc} + $\MeijerG[a,b]{n}{p}{m}{q}{x, r}$ + & $\displaystyle \MeijerG[a,b]{n}{p}{m}{q}{x, r}$ + \end{tabular} +\\ +\end{tabular} +\end{center} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Appell Hypergeometric Function $F_1$} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Appell Hypergeometric Function} +\index{Hypergeometric Functions!Appell} + +\begin{center} +\begin{tabular}{c} +\idxc{AppellFOne}\verb|{a}{b_1, b_2}{c}{x, y}| +\\ + \begin{tabular}{cc} + $\AppellFOne{a}{b_1,b_2}{c}{x,y}$ & $\displaystyle \AppellFOne{a}{b_1, b_2}{c}{x, y}$ \\ + \end{tabular} +\end{tabular} +\end{center} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Tricomi Confluent Hypergeometric Function} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Tricomi Confluent Hypergeometric Function} +\index{Hypergeometric Functions!Tricomi Confluent} + +\begin{center} +\begin{tabular}{ccc} +\headerRow +\idxc{HypergeometricU}\verb|{a}{b}{x}| + & $\HypergeometricU{a}{b}{x}$ + & $\displaystyle \HypergeometricU{a}{b}{x}$ \\ +\end{tabular} +\end{center} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Angular Momentum Functions} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Clebsch-Gordon Coefficients} +\index{6-j Symbol} +\index{Six-j Symbol@6-j Symbol} +\index{Racah 6-j Symbol} +\index{3-j Symbol} +\index{Three-j Symbol@3-j Symbol} +\index{Wigner 3-j Symbol} + + +\begin{center} +\begin{tabular}{c} +\idxc{ClebschGordon}\verb|{j_1,m_1}{j_2,m_2}{j,m}| +\\ + \begin{tabular}{cc} + $\ClebschGordon{j_1, m_1}{j_2, m_2}{j, m}$ & $\displaystyle \ClebschGordon{j_1, m_1}{j_2, m_2}{j, m}$ + \\ + \end{tabular} +\\ +\\ +\idxc{SixJSymbol}\verb|{j_1,j_2,j_3}{j_4,j_5,j_6}| +\\ + \begin{tabular}{cc} + $\SixJSymbol{j_1,j_2,j_3}{j_4,j_5,j_6}$ & $\displaystyle \SixJSymbol{j_1,j_2,j_3}{j_4,j_5,j_6}$ + \\ + \end{tabular} +\\ +\\ +\idxc{ThreeJSymbol}\verb|{j_1,m_1}{j_2,m_2}{j_3,m_3}| +\\ + \begin{tabular}{cc} + $\ThreeJSymbol{j_1,m_1}{j_2,m_2}{j_3,m_3}$ & $\displaystyle \ThreeJSymbol{j_1,m_1}{j_2,m_2}{j_3,m_3}$ + \\ + \end{tabular} +\end{tabular} +\end{center} + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +\subsection{Elliptic Integrals} +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Elliptic!Integrals} +\index{Integrals!Elliptic} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Complete Elliptic Integrals} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Complete Elliptic Integrals} +\index{Integrals!Elliptic!Complete} + +\begin{center} +\begin{tabular}{ccc} +\headerRow +%%%%%% Complete Elliptic Integrals +% Complete Elliptic Integral of the First Kind +\idxc{EllipticK}\verb|{x}| & $\EllipticK{x}$ & $\displaystyle \EllipticK{x}$ \\ +% Complete Elliptic Integral of the Second Kind +\idxc{EllipticE}\verb|{x}| & $\EllipticE{x}$ & $\displaystyle \EllipticE{x}$ \\ +% Complete Elliptic Integral of the Third Kind +\idxc{EllipticPi}\verb|{n,m}| & $\EllipticPi{n,m}$ & $\displaystyle \EllipticPi{n,m}$ \\ +\end{tabular} +\end{center} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Incomplete Elliptic Integrals} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Incomplete Elliptic Integrals} +\index{Integrals!Elliptic!Incomplete} + +\begin{center} +\begin{tabular}{ccc} +\headerRow +%%%%%% Incomplete Elliptic Integrals +% Incomplete Elliptic Integral of the First Kind +\idxc{IncEllipticF}\verb|{x}{m}| & $\IncEllipticF{x}{m}$ & $\displaystyle \IncEllipticF{x}{m}$ \\ +% Incomplete Elliptic Integral of the Second Kind +\idxc{IncEllipticE}\verb|{x}{m}| & $\IncEllipticE{x}{m}$ & $\displaystyle \IncEllipticE{x}{m}$ \\ +% Complete Elliptic Integral of the Third Kind +\idxc{IncEllipticPi}\verb|{n}{x}{m}| + & $\IncEllipticPi{n}{x}{m}$ + & $\displaystyle \IncEllipticPi{n}{x}{m}$ + \\ +\idxc{JacobiZeta}\verb|{x}{m}| & $\JacobiZeta{x}{m}$ & $\displaystyle \JacobiZeta{x}{m}$ \\ +\end{tabular} +\end{center} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +\subsection{Elliptic Functions} +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Elliptic!Functions} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Jacobi Theta Functions} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Theta Functions!Jacobi} +\index{Jacobi Theta Functions} + +\begin{center} +\begin{tabular}{ccc} +\headerRow +%%%%%% Jacobi Theta Functions +% Jacobi Theta 1 .. 4 +\idxc{EllipticTheta}\verb|{1}{x}{q}| + & $\EllipticTheta{1}{x}{q}$ + & $\displaystyle \EllipticTheta{1}{x}{q}$ + \\ +% Jacobi Theta 1 ... 4 (Alternate Notation) +\idxc{JacobiTheta}\verb|{1}{x}{q}| & $\JacobiTheta{1}{x}{q}$ + & $\displaystyle \JacobiTheta{1}{x}{q}$ \\ +\end{tabular} +\end{center} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Neville Theta Functions} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Theta Functions!Neville} +\index{Neville Theta Functions} + +\begin{center} +\begin{tabular}{ccc} +\headerRow +%%%%%% Neville Theta Functions +% Neville Theta D +\idxc{NevilleThetaC}\verb|{x}{m}| & $\NevilleThetaC{x}{m}$ + & $\displaystyle \NevilleThetaC{x}{m}$ \\ +\idxc{NevilleThetaD}\verb|{x}{m}| & $\NevilleThetaD{x}{m}$ + & $\displaystyle \NevilleThetaD{x}{m}$ \\ +\idxc{NevilleThetaN}\verb|{x}{m}| & $\NevilleThetaN{x}{m}$ + & $\displaystyle \NevilleThetaN{x}{m}$ \\ +\idxc{NevilleThetaS}\verb|{x}{m}| & $\NevilleThetaS{x}{m}$ + & $\displaystyle \NevilleThetaS{x}{m}$ \\ +\end{tabular} +\end{center} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Weierstrass Functions} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Weierstrass Functions} + +\begin{center} +\begin{tabular}{c} +%%%%%% Weierstrass Functions +\idxc{WeierstrassP}\verb|{z}{g_2,g_3}| +\\ + \begin{tabular}{cc} + $\WeierstrassP{z}{g_2,g_3}$ & $\displaystyle \WeierstrassP{z}{g_2,g_3}$ \\ + \end{tabular} +\\ +\\ +\idxc{WeierstrassPInv}\verb|{z}{g_2,g_3}| +\\ + \begin{tabular}{cc} + $\WeierstrassPInv{z}{g_2,g_3}$ & $\displaystyle \WeierstrassPInv{z}{g_2,g_3}$ \\ + \end{tabular} +\\ +\\ +\idxc{WeierstrassPGenInv}\verb|{z_1}{z_2}{g_2}{g_3}| +\\ + \begin{tabular}{cc} + $\WeierstrassPGenInv{z_1}{z_2}{g_2}{g_3}$ + & $\displaystyle \WeierstrassPGenInv{z_1}{z_2}{g_2}{g_3}$ + \\ + \end{tabular} +\\ +\\ +\idxc{WeierstrassSigma}\verb|{z}{g_2,g_3}| +\\ + \begin{tabular}{cc} + $\WeierstrassSigma{z}{g_2,g_3}$ & $\displaystyle \WeierstrassSigma{z}{g_2,g_3}$ \\ + \end{tabular} +\\ +\\ +\idxc{AssocWeierstrassSigma}\verb|{n}{z}{g_2}{g_3}| +\\ +\idxc{WeiSigma}\verb|{n,z}{g_2,g_3}| +\\ + \begin{tabular}{cc} + $\AssocWeierstrassSigma{n}{z}{g_2}{g_3}$ + & $\displaystyle \WeiSigma{n,z}{g_2,g_3}$ + \\ + \end{tabular} +\\ +\\ +\idxc{WeierstrassZeta}\verb|{z}{g_2,g_3}| +\\ + \begin{tabular}{cc} + $\WeierstrassZeta{z}{g_2,g_3}$ & $\displaystyle \WeierstrassZeta{z}{g_2,g_3}$ \\ + \end{tabular} +\\ +\\ +\idxc{WeierstrassHalfPeriods}\verb|{g_2,g_3}| +\\ + \begin{tabular}{cc} + $\WeierstrassHalfPeriods{g_2,g_3}$ & $\displaystyle \WeierstrassHalfPeriods{g_2,g_3}$ \\ + \end{tabular} +\\ +\\ +\idxc{WeierstrassInvariants}\verb|{\omega_1,\omega_3}| +\\ + \begin{tabular}{cc} + $\WeierstrassInvariants{\omega_1,\omega_3}$ + & $\displaystyle \WeierstrassInvariants{\omega_1,\omega_3}$ + \\ + \end{tabular} +\\ +\end{tabular} + +\vspace{1.0cm} + +\begin{tabular}{c} +\verb|\Style{WeierstrassPHalfPeriodValuesDisplay=sf}| (Default)% +\Style{WeierstrassPHalfPeriodValuesDisplay=sf} +\\ +\idxc{WeierstrassPHalfPeriodValues}\verb|{g_2,g_3}| +\\ + \begin{tabular}{cc} + $\WeierstrassPHalfPeriodValues{g_2,g_3}$ + & $\displaystyle \WeierstrassPHalfPeriodValues{g_2,g_3}$ + \\ + \end{tabular} +\\ +\\ +\\ +\verb|\Style{WeierstrassPHalfPeriodValuesDisplay=ff}|% +\Style{WeierstrassPHalfPeriodValuesDisplay=ff} +\\ +\idxc{WeierstrassPHalfPeriodValues}\verb|{g_2,g_3}| +\\ + \begin{tabular}{cc} + $\WeierstrassPHalfPeriodValues{g_2,g_3}$ + & $\displaystyle \WeierstrassPHalfPeriodValues{g_2,g_3}$ + \\ + \end{tabular} +\\ +\end{tabular} + +\vspace{1cm} + +\begin{tabular}{c} +\verb|\Style{WeierstrassZetaHalfPeriodValuesDisplay=sf}| (Default)% +\Style{WeierstrassZetaHalfPeriodValuesDisplay=sf} +\\ +\idxc{WeierstrassZetaHalfPeriodValues}\verb|{g_2,g_3}| +\\ + \begin{tabular}{cc} + $\WeierstrassZetaHalfPeriodValues{g_2,g_3}$ + & $\displaystyle \WeierstrassZetaHalfPeriodValues{g_2,g_3}$ + \\ + \end{tabular} +\\ +\\ +\\ +\verb|\Style{WeierstrassZetaHalfPeriodValuesDisplay=ff}|% +\Style{WeierstrassZetaHalfPeriodValuesDisplay=ff} +\\ +\idxc{WeierstrassZetaHalfPeriodValues}\verb|{g_2,g_3}| +\\ + \begin{tabular}{cc} + $\WeierstrassZetaHalfPeriodValues{g_2,g_3}$ + & $\displaystyle \WeierstrassZetaHalfPeriodValues{g_2,g_3}$ + \\ + \end{tabular} +\end{tabular} +\end{center} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Jacobi Functions} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Jacobi Functions} +\index{Jacobi Functions!Inverse} + +\begin{center} +\begin{tabular}{ccc} +\headerRow +%%%%%% Jacobi Functions +% am(z | m) +\idxc{JacobiAmplitude}\verb|{z}{m}| & $\JacobiAmplitude{z}{m}$ + & $\displaystyle \JacobiAmplitude{z}{m}$ + \\ +% cd(z | m) +\idxc{JacobiCD}\verb|{z}{m}| & $\JacobiCD{z}{m}$ & $\displaystyle \JacobiCD{z}{m}$ \\ +\idxc{JacobiCDInv}\verb|{z}{m}| & $\JacobiCDInv{z}{m}$ & $\displaystyle \JacobiCDInv{z}{m}$ \\ +% cn(z | m) +\idxc{JacobiCN}\verb|{z}{m}| & $\JacobiCN{z}{m}$ & $\displaystyle \JacobiCN{z}{m}$ \\ +\idxc{JacobiCNInv}\verb|{z}{m}| & $\JacobiCNInv{z}{m}$ & $\displaystyle \JacobiCNInv{z}{m}$ \\ +% cs(z | m) +\idxc{JacobiCS}\verb|{z}{m}| & $\JacobiCS{z}{m}$ & $\displaystyle \JacobiCS{z}{m}$ \\ +\idxc{JacobiCSInv}\verb|{z}{m}| & $\JacobiCSInv{z}{m}$ & $\displaystyle \JacobiCSInv{z}{m}$ \\ +% dc(z | m) +\idxc{JacobiDC}\verb|{z}{m}| & $\JacobiDC{z}{m}$ & $\displaystyle \JacobiDC{z}{m}$ \\ +\idxc{JacobiDCInv}\verb|{z}{m}| & $\JacobiDCInv{z}{m}$ & $\displaystyle \JacobiDCInv{z}{m}$ \\ +% dn(z | m) +\idxc{JacobiDN}\verb|{z}{m}| & $\JacobiDN{z}{m}$ & $\displaystyle \JacobiDN{z}{m}$ \\ +\idxc{JacobiDNInv}\verb|{z}{m}| & $\JacobiDNInv{z}{m}$ & $\displaystyle \JacobiDNInv{z}{m}$ \\ +% dn(z | m) +\idxc{JacobiDS}\verb|{z}{m}| & $\JacobiDS{z}{m}$ & $\displaystyle \JacobiDS{z}{m}$ \\ +\idxc{JacobiDSInv}\verb|{z}{m}| & $\JacobiDSInv{z}{m}$ & $\displaystyle \JacobiDSInv{z}{m}$ \\ +% nc(z | m) +\idxc{JacobiNC}\verb|{z}{m}| & $\JacobiNC{z}{m}$ & $\displaystyle \JacobiNC{z}{m}$ \\ +\idxc{JacobiNCInv}\verb|{z}{m}| & $\JacobiNCInv{z}{m}$ & $\displaystyle \JacobiNCInv{z}{m}$ \\ +% nd(z | m) +\idxc{JacobiND}\verb|{z}{m}| & $\JacobiND{z}{m}$ & $\displaystyle \JacobiND{z}{m}$ \\ +\idxc{JacobiNDInv}\verb|{z}{m}| & $\JacobiNDInv{z}{m}$ & $\displaystyle \JacobiNDInv{z}{m}$ \\ +% ns(z | m) +\idxc{JacobiNS}\verb|{z}{m}| & $\JacobiNS{z}{m}$ & $\displaystyle \JacobiNS{z}{m}$ \\ +\idxc{JacobiNSInv}\verb|{z}{m}| & $\JacobiNSInv{z}{m}$ & $\displaystyle \JacobiNSInv{z}{m}$ \\ +% sc(z | m) +\idxc{JacobiSC}\verb|{z}{m}| & $\JacobiSC{z}{m}$ & $\displaystyle \JacobiSC{z}{m}$ \\ +\idxc{JacobiSCInv}\verb|{z}{m}| & $\JacobiSCInv{z}{m}$ & $\displaystyle \JacobiSCInv{z}{m}$ \\ +% sd(z | m) +\idxc{JacobiSD}\verb|{z}{m}| & $\JacobiSD{z}{m}$ & $\displaystyle \JacobiSD{z}{m}$ \\ +\idxc{JacobiSDInv}\verb|{z}{m}| & $\JacobiSDInv{z}{m}$ & $\displaystyle \JacobiSDInv{z}{m}$ \\ +% sn(z | m) +\idxc{JacobiSN}\verb|{z}{m}| & $\JacobiSN{z}{m}$ & $\displaystyle \JacobiSN{z}{m}$ \\ +\idxc{JacobiSNInv}\verb|{z}{m}| & $\JacobiSNInv{z}{m}$ & $\displaystyle \JacobiSNInv{z}{m}$ \\ +\end{tabular} +\end{center} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Modular Functions} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Modular Functions} + +\begin{center} +\begin{tabular}{ccc} +\headerRow +%%%%%% Modular Functions +\idxc{DedekindEta}\verb|{z}| & $\DedekindEta{z}$ & $\displaystyle \DedekindEta{z}$ \\ +\idxc{KleinInvariantJ}\verb|{z}| & $\KleinInvariantJ{z}$ & $\displaystyle \KleinInvariantJ{z}$ \\ +\idxc{ModularLambda}\verb|{z}| & $\ModularLambda{z}$ & $\displaystyle \ModularLambda{z}$ \\ +\idxc{EllipticNomeQ}\verb|{z}| & $\EllipticNomeQ{z}$ & $\displaystyle \EllipticNomeQ{z}$ \\ +\idxc{EllipticNomeQInv}\verb|{z}| & $\EllipticNomeQInv{z}$ + & $\displaystyle \EllipticNomeQInv{z}$ \\ +\end{tabular} +\end{center} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Arithmetic Geometric Mean} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Arithmetic Geometric Mean} + +\begin{center} +\begin{tabular}{ccc} +\headerRow +%%%%%% Arithmetic Geometric Mean +\idxc{ArithGeoMean}\verb|{a}{b}| & $\ArithGeoMean{a}{b}$ & $\displaystyle \ArithGeoMean{a}{b}$ \\ +\end{tabular} +\end{center} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Elliptic Exp and Log} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Elliptic!Exponential} +\index{Elliptic!Logarithm} + +\begin{center} +\begin{tabular}{ccc} +\headerRow +%%%%%% Elliptic Exp and Log +\idxc{EllipticExp}\verb|{x}{a,b}| & $\EllipticExp{x}{a,b}$ + & $\displaystyle \EllipticExp{x}{a,b}$ \\ +% elog(z_1, z_2; a,b) +\idxc{EllipticLog}\verb|{x,y}{a,b}| + & $\EllipticLog{x,y}{a,b}$ + & $\displaystyle \EllipticLog{x,y}{a,b}$ + \\ +\end{tabular} +\end{center} + + + + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +\subsection{Zeta Functions and Polylogarithms} +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Zeta!Functions} +\index{Polylogarithm} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Zeta Functions} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Zeta!Riemann} +\index{Zeta!Hurwitz} +\index{Zeta} + +\begin{center} +\begin{tabular}{ccc} +\headerRow +%%%%%% Riemann Zeta Function +\idxc{RiemannZeta}\verb|{s}| & $\RiemannZeta{s}$ & $\displaystyle \RiemannZeta{s}$ \\ +\idxc{Zeta}\verb|{s}| & $\Zeta{s}$ & $\displaystyle \Zeta{s}$ \\ + \\ +%%%%%% Hurwitz Zeta Function +\idxc{HurwitzZeta}\verb|{s}{a}| & $\HurwitzZeta{s}{a}$ & $\displaystyle \HurwitzZeta{s}{a}$ \\ +\idxc{Zeta}\verb|{s,a}| & $\Zeta{s,a}$ & $\displaystyle \Zeta{s,a}$ \\ + \\ +%%%%%% Riemann-Siegel Theta Function +\idxc{RiemannSiegelTheta}\verb|{x}| + & $\RiemannSiegelTheta{x}$ & $\displaystyle \RiemannSiegelTheta{x}$ \\ +%%%%%% Riemann-Siegel Z Function +\idxc{RiemannSiegelZ}\verb|{x}| & $\RiemannSiegelZ{x}$ & $\displaystyle \RiemannSiegelZ{x}$ \\ +%%%%%% Stieltjes Constant [\gamma_n] +\idxc{StieltjesGamma}\verb|{n}| & $\StieltjesGamma{n}$ & $\displaystyle \StieltjesGamma{n}$ \\ +%%%%%% Lerch transcendent [\Phi(z,s,a)] +\idxc{LerchPhi}\verb|{z}{s}{a}| & $\LerchPhi{z}{s}{a}$ & $\displaystyle \LerchPhi{z}{s}{a}$ \\ + \\ +%%%%%% Nielsen Polylogarithm [S_\nu^p(z)] +\idxc{NielsenPolyLog}\verb|{\nu}{p}{z}| + & $\NielsenPolyLog{\nu}{p}{z}$ & $\displaystyle \NielsenPolyLog{\nu}{p}{z}$ \\ +\idxc{PolyLog}\verb|{\nu,p,z}| & $\PolyLog{\nu,p,z}$ & $\displaystyle \PolyLog{\nu,p,z}$ \\ + \\ +%%%%%% Polylogarithm [Li_\nu (z)] +\idxc{PolyLog}\verb|{\nu,z}| & $\PolyLog{\nu,z}$ & $\displaystyle \PolyLog{\nu,z}$ \\ +%%%%%% Dilogarithm [\PolyLog{2,x}] +\idxc{DiLog}\verb|{z}| & $\DiLog{z}$ & $\displaystyle \DiLog{z}$ \\ +\end{tabular} +\end{center} + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +\subsection{Mathieu Functions and Characteristics} +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Mathieu!Functions} +\index{Mathieu!Characteristics} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Mathieu Functions} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{center} +\begin{tabular}{ccc} +\headerRow +%%%%%% Mathieu Functions +%%%%%%%% Even Mathieu Function Ce(a,q,z) +\idxc{MathieuC}\verb|{a}{q}{z}| & $\MathieuC{a}{q}{z}$ & $\displaystyle \MathieuC{a}{q}{z}$ \\ +%%%%%%%% Odd Mathieu Function Se(a,q,z) +\idxc{MathieuS}\verb|{a}{q}{z}| & $\MathieuS{a}{q}{z}$ & $\displaystyle \MathieuS{a}{q}{z}$ \\ +\end{tabular} +\end{center} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Mathieu Characteristics} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{center} +\begin{tabular}{ccc} +\headerRow +%%%%%% Mathieu Characteristics +%%%%%%%% Characteristic Value of Even Mathieu Fucntion a_r(q) +\idxc{MathieuCharacteristicA}\verb|{r}{q}| + & $\MathieuCharacteristicA{r}{q}$ & $\displaystyle \MathieuCharacteristicA{r}{q}$ \\ +\idxc{MathieuCharisticA}\verb|{r}{q}| + & $\MathieuCharisticA{r}{q}$ & $\displaystyle \MathieuCharisticA{r}{q}$ \\ + \\ +%%%%%%%% Characteristic Value of Even Mathieu Fucntion b_r(q) +\idxc{MathieuCharacteristicB}\verb|{r}{q}| + & $\MathieuCharacteristicB{r}{q}$ & $\displaystyle \MathieuCharacteristicB{r}{q}$ \\ +\idxc{MathieuCharisticB}\verb|{r}{q}| + & $\MathieuCharisticB{r}{q}$ & $\displaystyle \MathieuCharisticB{r}{q}$ \\ + \\ +%%%%%%%% Characteristic Exponent of a Mathieu Fucntion r(a,q) +\idxc{MathieuCharacteristicExponent}\verb|{a}{q}| + & $\MathieuCharacteristicExponent{a}{q}$ + & $\displaystyle \MathieuCharacteristicExponent{a}{q}$ + \\ +\idxc{MathieuCharisticExp}\verb|{a}{q}| + & $\MathieuCharisticExp{a}{q}$ + & $\displaystyle \MathieuCharisticExp{a}{q}$ + \\ +\end{tabular} +\end{center} + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +\subsection{Complex Components} +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Complex Components} + +\begin{center} +\begin{tabular}{ccc} +\headerRow +\idxc{Abs}\verb|{z}| & $\Abs{z}$ & $\displaystyle \Abs{z}$ \\ +\idxc{Arg}\verb|{z}| & $\Arg{z}$ & $\displaystyle \Arg{z}$ \\ +\idxc{Conj}\verb|{z}| & $\Conj{z}$ & $\displaystyle \Conj{z}$ \\ +\Style{Conjugate=bar}% +\verb|\Style{Conjugate=bar}|% +\idxc{Conj}\verb|{z}| & $\Conj{z}$ & $\displaystyle \Conj{z}$ \\ +\Style{Conjugate=overline}% +\verb|\Style{Conjugate=overline}|% +\idxc{Conj}\verb|{z}| & $\Conj{z}$ & $\displaystyle \Conj{z}$ \\ +\idxc{Real}\verb|{z}| & $\Real{z}$ & $\displaystyle \Real{z}$ \\ +\idxc{Imag}\verb|{z}| & $\Imag{z}$ & $\displaystyle \Imag{z}$ \\ +\idxc{Sign}\verb|{z}| & $\Sign{z}$ & $\displaystyle \Sign{z}$ \\ +\end{tabular} +\end{center} + + + + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +\subsection{Number Theory Functions} +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Number Theory} +\index{Functions!Number Theory} +\index{Totient Function} +\index{Euler Totient Function} +\index{Moebius Function} +\index{Jacobi!Symbol} +\index{Symbol!Jacobi} +\index{Charmicheal Lambda Function} +\index{Lambda Function!Charmicheal} + +\begin{center} +\begin{tabular}{ccc} +\headerRow +\idxc{FactorInteger}\verb|{n}| & $\FactorInteger{n}$ & $\displaystyle \FactorInteger{n}$ \\ +\idxc{Factors}\verb|{n}| & $\Factors{n}$ & $\displaystyle \Factors{n}$ \\ + \\ +%%%%%% Divisors +\idxc{Divisors}\verb|{n}| & $\Divisors{n}$ & $\displaystyle \Divisors{n}$ \\ +%%%%%% Prime +\idxc{Prime}\verb|{n}| & $\Prime{n}$ & $\displaystyle \Prime{n}$ \\ +%%%%%% pi(x) +\idxc{PrimePi}\verb|{x}| & $\PrimePi{x}$ & $\displaystyle \PrimePi{x}$ \\ +%%%%%% Sum of divisor powers \DivisorSigma{k}{n} +\idxc{DivisorSigma}\verb|{k}{n}| & $\DivisorSigma{k}{n}$ & $\displaystyle \DivisorSigma{k}{n}$ \\ +%%%%%% Euler Totient Function +\idxc{EulerPhi}\verb|{n}| & $\EulerPhi{n}$ & $\displaystyle \EulerPhi{n}$ \\ +%%%%%% Moebius Function +\idxc{MoebiusMu}\verb|{n}| & $\MoebiusMu{n}$ & $\displaystyle \MoebiusMu{n}$ \\ +%%%%%% Jacobi Symbol \JacobiSymbol{n}{m} +\idxc{JacobiSymbol}\verb|{n}{m}| & $\JacobiSymbol{n}{m}$ & $\displaystyle \JacobiSymbol{n}{m}$ \\ + \\ +%%%%%% Carmichael Lambda Function +\idxc{CarmichaelLambda}\verb|{n}| & $\CarmichaelLambda{n}$ + & $\displaystyle \CarmichaelLambda{n}$ \\ +\end{tabular} + +\begin{tabular}{c} +\idxc{DigitCount}\verb|{n}{b}| +\\ + \begin{tabular}{cc} + {\bf Inline:} & $\DigitCount{n}{b}$ \\ + {\bf Display:} & $\displaystyle \DigitCount{n}{b}$ \\ + \end{tabular} +\\ +\\ +\idxc{DigitCount}\verb|{n}{6}| +\\ + \begin{tabular}{cc} + {\bf Inline:} & $\DigitCount{n}{6}$ \\ + {\bf Display:} & $\displaystyle \DigitCount{n}{6}$ \\ + \end{tabular} +\end{tabular} +\end{center} + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +\subsection{Generalized Functions} +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Generalized Functions} +\index{Functions!Generalized} +\index{Heaviside Step} +%\index{Functions!Heaviside Step} +\index{Unit Step} +%\index{Functions!Unit Step} + +\begin{center} +\begin{tabular}{ccc} +\headerRow +%%%%%% Dirac Delta Function +\idxc{DiracDelta}\verb|{x}| & $\DiracDelta{x}$ & $\displaystyle \DiracDelta{x}$ \\ +\idxc{DiracDelta}\verb|{x_1, x_2}| & $\DiracDelta{x_1, x_2}$ & $\displaystyle \DiracDelta{x_1, x_2}$ \\ + \\ +%%%%%% Heaviside Step Function +\idxc{HeavisideStep}\verb|{x}| & $\HeavisideStep{x}$ & $\displaystyle \HeavisideStep{x}$ \\ +\idxc{HeavisideStep}\verb|{x, y}| & $\HeavisideStep{x,y}$ & $\displaystyle \HeavisideStep{x,y}$ \\ +\idxc{UnitStep}\verb|{x}| & $\UnitStep{x}$ & $\displaystyle \UnitStep{x}$ \\ +\idxc{UnitStep}\verb|{x,y}| & $\UnitStep{x,y}$ & $\displaystyle \UnitStep{x,y}$ \\ +\end{tabular} +\end{center} + + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +\subsection{Calculus Functions} +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Calculus} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Derivatives} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Calculus!Derivatives} +\index{Derivatives!Total} +\index{Total Derivatives} + +\begin{center} + +\begin{tabular}{c} +\verb|\Style{DDisplayFunc=inset,DShorten=true}| (Default)% +\Style{DDisplayFunc=inset,DShorten=true} \\ + \\ +\begin{tabular}{ccc} +\idxc{D}\verb|{f}{x}| & $\D{f}{x}$ & $\displaystyle \D{f}{x}$ \\ + \\ +\idxc{D}\verb|[n]{f}{x}| & $\D[n]{f}{x}$ & $\displaystyle \D[n]{f}{x}$ \\ + \\ +\end{tabular} +\end{tabular} + +\vspace{.5cm} + +\begin{tabular}{c} +\verb|\Style{DDisplayFunc=outset,DShorten=false}|% +\Style{DDisplayFunc=outset,DShorten=false} \\ + \\ +\begin{tabular}{ccc} +\idxc{D}\verb|{f}{x}| & $\D{f}{x}$ & $\displaystyle \D{f}{x}$ \\ + \\ +\idxc{D}\verb|[n]{f}{x}| & $\D[n]{f}{x}$ & $\displaystyle \D[n]{f}{x}$ \\ + \\ +\idxc{D}\verb|{f}{x,y,z}| & $\D{f}{x,y,z}$ & $\displaystyle \D{f}{x,y,z}$ \\ + \\ +\idxc{D}\verb|[2,n,3]{f}{x,y,z}| & $\D[2,n,3]{f}{x,y,z}$ & $\displaystyle \D[2,n,3]{f}{x,y,z}$ + \\ + \\ +\idxc{D}\verb|[1,n,3]{f}{x,y,z}| & $\D[1,n,3]{f}{x,y,z}$ & $\displaystyle \D[1,n,3]{f}{x,y,z}$ + \\ +\end{tabular} +\end{tabular} + +\vspace{.5cm} + +\begin{tabular}{c} +\verb|\Style{DDisplayFunc=outset,DShorten=true}|% +\Style{DDisplayFunc=outset,DShorten=true} \\ + \\ +\begin{tabular}{ccc} +\idxc{D}\verb|{f}{x}| & $\D{f}{x}$ & $\displaystyle \D{f}{x}$ \\ + \\ +\idxc{D}\verb|[n]{f}{x}| & $\D[n]{f}{x}$ & $\displaystyle \D[n]{f}{x}$ \\ + \\ +\idxc{D}\verb|{f}{x,y,z}| & $\D{f}{x,y,z}$ & $\displaystyle \D{f}{x,y,z}$ \\ + \\ +\idxc{D}\verb|[2,n,3]{f}{x,y,z}| & $\D[2,n,3]{f}{x,y,z}$ & $\displaystyle \D[2,n,3]{f}{x,y,z}$ + \\ + \\ +\idxc{D}\verb|[1,n,3]{f}{x,y,z}| & $\D[1,n,3]{f}{x,y,z}$ & $\displaystyle \D[1,n,3]{f}{x,y,z}$ + \\ +\end{tabular} +\end{tabular} + +\vspace{0.5cm} + +\begin{tabular}{c} +\verb|\Style{DDisplayFunc=inset,DShorten=true}| +\Style{DDisplayFunc=inset,DShorten=true} \\ + \\ +\begin{tabular}{ccc} +\idxc{D}\verb|{f}{x}| & $\D{f}{x}$ & $\displaystyle \D{f}{x}$ \\ + \\ +\idxc{D}\verb|[n]{f}{x}| & $\D[n]{f}{x}$ & $\displaystyle \D[n]{f}{x}$ \\ + \\ +\idxc{D}\verb|{f}{x,y,z}| & $\D{f}{x,y,z}$ & $\displaystyle \D{f}{x,y,z}$ \\ + \\ +\idxc{D}\verb|[2,n,3]{f}{x,y,z}| & $\D[2,n,3]{f}{x,y,z}$ & $\displaystyle \D[2,n,3]{f}{x,y,z}$ + \\ + \\ +\idxc{D}\verb|[1,n,3]{f}{x,y,z}| & $\D[1,n,3]{f}{x,y,z}$ & $\displaystyle \D[1,n,3]{f}{x,y,z}$ +\end{tabular} +\end{tabular} + +\end{center} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Partial Derivatives} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Calculus!Derivatives} +\index{Derivatives!Partial} +\index{Partial Derivatives} + +\begin{center} + +\begin{tabular}{c} +\verb|\Style{DDisplayFunc=inset,DShorten=true}| (Default)% +\Style{DDisplayFunc=inset,DShorten=true} \\ + \\ +\begin{tabular}{ccc} +\idxc{pderiv}\verb|{f}{x}| & $\pderiv{f}{x}$ & $\displaystyle \pderiv{f}{x}$ \\ + \\ +\idxc{pderiv}\verb|[n]{f}{x}| & $\pderiv[n]{f}{x}$ & $\displaystyle \pderiv[n]{f}{x}$ \\ + \\ +\end{tabular} +\end{tabular} + +\vspace{.5cm} + +\begin{tabular}{c} +\verb|\Style{DDisplayFunc=outset,DShorten=false}|% +\Style{DDisplayFunc=outset,DShorten=false} \\ + \\ +\begin{tabular}{ccc} +\idxc{pderiv}\verb|{f}{x}| & $\pderiv{f}{x}$ & $\displaystyle \pderiv{f}{x}$ \\ + \\ +\idxc{pderiv}\verb|[n]{f}{x}| & $\pderiv[n]{f}{x}$ & $\displaystyle \pderiv[n]{f}{x}$ \\ + \\ +\idxc{pderiv}\verb|{f}{x,y,z}| & $\pderiv{f}{x,y,z}$ & $\displaystyle \pderiv{f}{x,y,z}$ \\ + \\ +\idxc{pderiv}\verb|[2,n,3]{f}{x,y,z}| & $\pderiv[2,n,3]{f}{x,y,z}$ & $\displaystyle \pderiv[2,n,3]{f}{x,y,z}$ + \\ + \\ +\idxc{pderiv}\verb|[1,n,3]{f}{x,y,z}| & $\pderiv[1,n,3]{f}{x,y,z}$ & $\displaystyle \pderiv[1,n,3]{f}{x,y,z}$ + \\ +\end{tabular} +\end{tabular} + +\vspace{.5cm} + +\begin{tabular}{c} +\verb|\Style{DDisplayFunc=outset,DShorten=true}|% +\Style{DDisplayFunc=outset,DShorten=true} \\ + \\ +\begin{tabular}{ccc} +\idxc{pderiv}\verb|{f}{x}| & $\pderiv{f}{x}$ & $\displaystyle \pderiv{f}{x}$ \\ + \\ +\idxc{pderiv}\verb|[n]{f}{x}| & $\pderiv[n]{f}{x}$ & $\displaystyle \pderiv[n]{f}{x}$ \\ + \\ +\idxc{pderiv}\verb|{f}{x,y,z}| & $\pderiv{f}{x,y,z}$ & $\displaystyle \pderiv{f}{x,y,z}$ \\ + \\ +\idxc{pderiv}\verb|[2,n,3]{f}{x,y,z}| & $\pderiv[2,n,3]{f}{x,y,z}$ & $\displaystyle \pderiv[2,n,3]{f}{x,y,z}$ + \\ + \\ +\idxc{pderiv}\verb|[1,n,3]{f}{x,y,z}| & $\pderiv[1,n,3]{f}{x,y,z}$ & $\displaystyle \pderiv[1,n,3]{f}{x,y,z}$ + \\ +\end{tabular} +\end{tabular} + +\vspace{0.5cm} + +\begin{tabular}{c} +\verb|\Style{DDisplayFunc=inset,DShorten=true}| +\Style{DDisplayFunc=inset,DShorten=true} \\ + \\ +\begin{tabular}{ccc} +\idxc{pderiv}\verb|{f}{x}| & $\pderiv{f}{x}$ & $\displaystyle \pderiv{f}{x}$ \\ + \\ +\idxc{pderiv}\verb|[n]{f}{x}| & $\pderiv[n]{f}{x}$ & $\displaystyle \pderiv[n]{f}{x}$ \\ + \\ +\idxc{pderiv}\verb|{f}{x,y,z}| & $\pderiv{f}{x,y,z}$ & $\displaystyle \pderiv{f}{x,y,z}$ \\ + \\ +\idxc{pderiv}\verb|[2,n,3]{f}{x,y,z}| & $\pderiv[2,n,3]{f}{x,y,z}$ & $\displaystyle \pderiv[2,n,3]{f}{x,y,z}$ + \\ + \\ +\idxc{pderiv}\verb|[1,n,3]{f}{x,y,z}| & $\pderiv[1,n,3]{f}{x,y,z}$ & $\displaystyle \pderiv[1,n,3]{f}{x,y,z}$ +\end{tabular} +\end{tabular} + +\end{center} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Integrals} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Calculus!Integrals} +\index{Integrals} +\index{Integrals!Definite} +\index{Integrals!Indefinite} + +\begin{center} +\begin{tabular}{ccc} +\headerRow + \\ +\idxc{Integrate}\verb|{f}{x}| & $\Integrate{f}{x}$ & $\displaystyle \Integrate{f}{x}$ + \\ + \\ +\idxc{Int}\verb|{f(x)}{x}| & $\Int{f(x)}{x}$ & $\displaystyle \Int{f(x)}{x}$ \\ + \\ +\idxc{Int}\verb|{f}{S,C}| & $\Int{f}{S,C}$ & $\displaystyle \Int{f}{S,C}$ \\ + \\ +\idxc{Int}\verb|{f(x)}{x,a,b}| & $\Int{f(x)}{x,a,b}$ & $\displaystyle \Int{f(x)}{x,a,b}$ + \\ + \\ +\idxc{Int}\verb|{f(x)}{x,0,b}| & $\Int{f(x)}{x,0,b}$ & $\displaystyle \Int{f(x)}{x,0,b}$ + \\ +\idxc{Int}\verb|{\Int{f(x)}{x,0,y}}{y,0,z}| + & $\Int{ \Int{f(x)}{x,0,y} }{y,0,z}$ + & $\displaystyle \Int{ \Int{f(x)}{x,0,y} }{y,0,z}$ +\end{tabular} +\end{center} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Sums and Products} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{center} +\begin{tabular}{ccc} +\headerRow + \\ +\idxc{Sum}\verb|{a(k)}{k}| & $\Sum{a(k)}{k}$ & $\displaystyle \Sum{a(k)}{k}$ \\ + \\ +\idxc{Sum}\verb|{a(k)}{k,1,n}| & $\Sum{a(k)}{k,1,n}$ & $\displaystyle \Sum{a(k)}{k,1,n}$ + \\ + \\ +\idxc{Prod}\verb|{a(k)}{k}| & $\Prod{a(k)}{k}$ & $\displaystyle \Prod{a(k)}{k}$ + \\ + \\ +\idxc{Prod}\verb|{a(k)}{k,1,n}| & $\Prod{a(k)}{k,1,n}$ & $\displaystyle \Prod{a(k)}{k,1,n}$ +\end{tabular} +\end{center} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +\subsubsection{Matrices} +%% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\index{Matrix!Identity} +\index{Matrices!Identity} + +\begin{center} +\begin{tabular}{ccc} +\headerRow \\ +\idxc{IdentityMatrix} & $\IdentityMatrix$ & $\displaystyle \IdentityMatrix$ \\ +\verb|\Style{IdentityMatrixParen=p}| (Default)% +\Style{IdentityMatrixParen=p} \\ +\idxc{IdentityMatrix[2]} & $\IdentityMatrix[2]$ & $\displaystyle \IdentityMatrix[2]$ \\ +\verb|\Style{IdentityMatrixParen=b}|% +\Style{IdentityMatrixParen=b} \\ +\idxc{IdentityMatrix[2]} & $\IdentityMatrix[2]$ & $\displaystyle \IdentityMatrix[2]$ \\ +\verb|\Style{IdentityMatrixParen=br}|% +\Style{IdentityMatrixParen=br} \\ +\idxc{IdentityMatrix[2]} & $\IdentityMatrix[2]$ & $\displaystyle \IdentityMatrix[2]$ \\ +\verb|\Style{IdentityMatrixParen=none}|% +\Style{IdentityMatrixParen=none} \\ +\idxc{IdentityMatrix[2]} & $\IdentityMatrix[2]$ & $\displaystyle \IdentityMatrix[2]$% +\Style{IdentityMatrixParen=p} \\ +\end{tabular} +\end{center} + +\idxc{IdentityMatrix}\verb|[20]| yields + +$$ +\IdentityMatrix[20] +$$ + +\printindex + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ REFERENCES ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%\newpage + +%\begin{thebibliography}{hello} +%\end{thebibliography} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ END REFERENCES ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\end{document} % End of document diff --git a/Master/texmf-dist/doc/latex/cool/README b/Master/texmf-dist/doc/latex/cool/README new file mode 100644 index 00000000000..9d5710e2993 --- /dev/null +++ b/Master/texmf-dist/doc/latex/cool/README @@ -0,0 +1,43 @@ +Description
+-----------
+
+The cool of the cool package stands for COntent Oriented LaTeX. It is designed
+to give LaTeX the power to retain mathematical meaning of its expressions in
+addition to the typsetting instructions.
+
+One advantage of keeping mathematical meaning is that conversion of LaTeX
+documents to other executable formats (such as Content MathML or Mathematica
+code) is greatly simplified.
+
+This package requires the following, non-standard LaTeX packages
+(all of which are available on www.ctan.org):
+
+* coolstr
+* coollist
+* forloop
+
+
+Installation
+------------
+
+To install this package, run cool.ins through LaTeX. This will generate
+a file called cool.sty. Put this file somewhere where LaTeX will find
+it---for instance localtexmf/tex/latex/cool/ (note that you will need
+to create the folder cool).
+
+If you are using MikTeX, you then need to refresh the file name database
+by using MikTeX Options
+
+
+License
+-------
+
+This pacakge is released under the Lesser GNU General Public License. See
+http://www.gnu.org/licenses/licenses.html#LGPL for more details.
+
+Contact
+-------
+
+Any bugs may be reported to the author by sending an email to the address with
+the first part being nsetzer, then an at sign, the next part is umd, and
+finally it ends in dot edu.
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/cool/cool.pdf b/Master/texmf-dist/doc/latex/cool/cool.pdf Binary files differnew file mode 100644 index 00000000000..47917b2d216 --- /dev/null +++ b/Master/texmf-dist/doc/latex/cool/cool.pdf diff --git a/Master/texmf-dist/source/latex/cool/cool.dtx b/Master/texmf-dist/source/latex/cool/cool.dtx new file mode 100644 index 00000000000..0312fb8fee0 --- /dev/null +++ b/Master/texmf-dist/source/latex/cool/cool.dtx @@ -0,0 +1,5787 @@ +% \iffalse +% +%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01] +%<package>\ProvidesPackage{cool} +%<package> [2006/09/17 v1.2 COntent Oriented LaTeX] +%<package>\RequirePackage{ifthen} +%<package>\RequirePackage{coollist} +%<package>\RequirePackage{coolstr} +%<package>\RequirePackage{forloop} +%<package>\RequirePackage{amsmath} +%<package>\RequirePackage{amssymb} +% +% +%<*driver> +\documentclass{ltxdoc} +\usepackage{cool} +\usepackage{url} +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\begin{document} +\DocInput{cool.dtx} +\end{document} +%</driver> +% \fi +% +% \iffalse meta-comment +% remove this comment to get a checksum +% \CheckSum{0} +% \fi +% +%% \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 \~} +% +% \changes{v0}{2005/07/20}{pre-Initial version [tenative edition]} +% \changes{v1.0}{2005/08/27}{Initial Release} +% \changes{v1.1}{2006/03/19}{Added listlenstore to package to allow storing of the list length} +% \changes{v1.2}{2006/09/17}{Split off the list, string, and forloop parts to separate packages} +% +% \GetFileInfo{cool.sty} +% +% \DoNotIndex{\#,\$,\%,\&,\@,\\,\{,\},\^,\_,\~,\ ,\!,\(,\),\,} +% \DoNotIndex{\@ne,\expandafter} +% \DoNotIndex{\advance,\begingroup,\catcode,\closein} +% \DoNotIndex{\newcommand,\renewcommand,\providecommand} +% \DoNotIndex{\closeout,\day,\def,\edef,\gdef,\let,\empty,\endgroup} +% \DoNotIndex{\newcounter,\providecounter,\addtocounter,\setcounter,\stepcounter,\value,\arabic} +% \DoNotIndex{\if,\fi,\ifthenelse,\else,\setboolean,\boolean,\newboolean,\provideboolean,\equal,\AND,\OR,\NOT,\whiledo} +% \DoNotIndex{\ifcase,\ifcat,\or,\else} +% \DoNotIndex{\par,\parbox,\mbox,\hbox,\begin,\end,\nabla,\partial} +% \DoNotIndex{\overline,\bar,\small,\tiny,\mathchoice,\scriptsize,\textrm,\texttt} +% \DoNotIndex{\alpha,\beta,\gamma,\epsilon,\varepsilon,\delta,\zeta,\eta,\theta,\vartheta,\iota,\kappa,\lambda,\mu,\nu} +% \DoNotIndex{\xi,\omicron,\pi,\varpi,\rho,\varrho,\sigma,\tau,\upsilon,\phi,\varphi,\chi,\psi,\omega} +% \DoNotIndex{\Delta,\Gamma,\Theta,\Lambda,\Xi,\Pi,\Sigma,\Phi,\Psi,\Omega} +% \DoNotIndex{\digamma,\lceil,\rceil,\lfloor,\rfloor,\left,\right,\inp,\inb,\inbr,\inap,\nop} +% \DoNotIndex{\sum,\prod,\int,\log,\ln,\exp,\sin,\cos,\tan,\csc,\sec,\cot,\arcsin,\arccos,\arctan,\det} +% \DoNotIndex{\sinh,\cosh,\tanh,\csch,\sech,\coth,\arcsinh,\arccosh,\arctanh} +% \DoNotIndex{\mod,\max,\min,\gcd,\lcm,\wp,\arg,\dots,\infty,} +% \DoNotIndex{\frac,\binom,\braket,\@@atop} +% \DoNotIndex{\cdot,\ldots,\tilde,\times,\dagger,\relax} +% \DoNotIndex{\mathbb,\roman,\bf,\mathord,\cal,\DeclareMathOperator,\PackageError,\PackageWarning} +% \DoNotIndex{\csname,\endcsname,\ifx,\ifnum} +% \DoNotIndex{\COOL@Hypergeometric@pq,\COOL@Hypergeometric@pq@ab@value,\hideOnSF,\COOL@decide@paren} +% \DoNotIndex{\COOL@decide@indicies} +% \DoNotIndex{\mod,\bmod,\pmod,\pod,\operatorname} +% \DoNotIndex{\forLoop} +% \DoNotIndex{ +% \COOL@notation@AiryAiParen, +% \COOL@notation@AiryBiParen, +% \COOL@notation@AppellFOneParen, +% \COOL@notation@ArcCoshParen, +% \COOL@notation@ArcCosParen, +% \COOL@notation@ArcCothParen, +% \COOL@notation@ArcCotParen, +% \COOL@notation@ArcCschParen, +% \COOL@notation@ArcCscParen, +% \COOL@notation@ArcSechParen, +% \COOL@notation@ArcSecParen, +% \COOL@notation@ArcSinhParen, +% \COOL@notation@ArcSinParen, +% \COOL@notation@ArcTanhParen, +% \COOL@notation@ArcTanParen, +% \COOL@notation@ArithGeoMeanParen, +% \COOL@notation@AssocLegendrePParen, +% \COOL@notation@AssocLegendreQParen, +% \COOL@notation@BernoulliParen, +% \COOL@notation@BernoulliBParen, +% \COOL@notation@BesselIParen, +% \COOL@notation@BesselJParen, +% \COOL@notation@BesselKParen, +% \COOL@notation@BesselYParen, +% \COOL@notation@BetaParen, +% \COOL@notation@BetaRegularizedParen, +% \COOL@notation@CarmichaelLambdaParen, +% \COOL@notation@ChebyshevTParen, +% \COOL@notation@ChebyshevUParen, +% \COOL@notation@ConjugateParen, +% \COOL@notation@CoshIntParen, +% \COOL@notation@CoshParen, +% \COOL@notation@CosIntParen, +% \COOL@notation@CosParen, +% \COOL@notation@CothParen, +% \COOL@notation@CotParen, +% \COOL@notation@CschParen, +% \COOL@notation@CscParen, +% \COOL@notation@CyclotomicCParen, +% \COOL@notation@DaggerParen, +% \COOL@notation@DedekindEtaParen, +% \COOL@notation@DetParen, +% \COOL@notation@DiGammaParen, +% \COOL@notation@DiracDeltaParen, +% \COOL@notation@DivisorsParen, +% \COOL@notation@DivisorSigmaParen, +% \COOL@notation@DiscreteDeltaParen, +% \COOL@notation@EllipticEParen, +% \COOL@notation@EllipticExpParen, +% \COOL@notation@EllipticFParen, +% \COOL@notation@EllipticKParen, +% \COOL@notation@EllipticLogParen, +% \COOL@notation@EllipticNomeQInvParen, +% \COOL@notation@EllipticNomeQParen, +% \COOL@notation@EllipticPiParen, +% \COOL@notation@EllipticThetaParen, +% \COOL@notation@ErfcInvParen, +% \COOL@notation@ErfcParen, +% \COOL@notation@ErfInvParen, +% \COOL@notation@ErfiParen, +% \COOL@notation@ErfParen, +% \COOL@notation@EulerParen, +% \COOL@notation@EulerEParen, +% \COOL@notation@EulerPhiParen, +% \COOL@notation@ExpIntEiParen, +% \COOL@notation@ExpIntEParen, +% \COOL@notation@ExpParen, +% \COOL@notation@ExtendedGCDParen, +% \COOL@notation@FactorIntegerParen, +% \COOL@notation@FibonacciParen, +% \COOL@notation@FibonacciFParen, +% \COOL@notation@FractionalPartParen, +% \COOL@notation@FresnelCParen, +% \COOL@notation@FresnelSParen, +% \COOL@notation@GammaFuncParen, +% \COOL@notation@GammaRegularizedParen, +% \COOL@notation@GCDParen, +% \COOL@notation@GegenbauerCParen, +% \COOL@notation@HeavisideStepParen, +% \COOL@notation@HermiteHParen, +% \COOL@notation@HypergeometricParen, +% \COOL@notation@IdentityMatrixParen, +% \COOL@notation@ImagParen, +% \COOL@notation@IntegerPartParen, +% \COOL@notation@InverseBetaRegularizedParen, +% \COOL@notation@InverseGammaRegularizedParen, +% \COOL@notation@JacobiAmplitudeParen, +% \COOL@notation@JacobiCDInvParen, +% \COOL@notation@JacobiCDParen, +% \COOL@notation@JacobiCNInvParen, +% \COOL@notation@JacobiCNParen, +% \COOL@notation@JacobiCSInvParen, +% \COOL@notation@JacobiCSParen, +% \COOL@notation@JacobiDCInvParen, +% \COOL@notation@JacobiDCParen, +% \COOL@notation@JacobiDNInvParen, +% \COOL@notation@JacobiDNParen, +% \COOL@notation@JacobiDSInvParen, +% \COOL@notation@JacobiDSParen, +% \COOL@notation@JacobiNCInvParen, +% \COOL@notation@JacobiNCParen, +% \COOL@notation@JacobiNDInvParen, +% \COOL@notation@JacobiNDParen, +% \COOL@notation@JacobiNSInvParen, +% \COOL@notation@JacobiNSParen, +% \COOL@notation@JacobiPParen, +% \COOL@notation@JacobiSCInvParen, +% \COOL@notation@JacobiSCParen, +% \COOL@notation@JacobiSDInvParen, +% \COOL@notation@JacobiSDParen, +% \COOL@notation@JacobiSNInvParen, +% \COOL@notation@JacobiSNParen, +% \COOL@notation@JacobiZetaParen, +% \COOL@notation@KleinInvariantJParen, +% \COOL@notation@LaugerreLParen, +% \COOL@notation@LCMParen, +% \COOL@notation@LegendrePParen, +% \COOL@notation@LegendreQParen, +% \COOL@notation@LerchPhiParen, +% \COOL@notation@LogGammaParen, +% \COOL@notation@LogIntParen, +% \COOL@notation@LogParen, +% \COOL@notation@MathieuCharacteristicAParen, +% \COOL@notation@MathieuCharacteristicBParen, +% \COOL@notation@MathieuCharacteristicExponentParen, +% \COOL@notation@MathieuSParen, +% \COOL@notation@MathieuCParen, +% \COOL@notation@MoebiusMuParen, +% \COOL@notation@MaxParen, +% \COOL@notation@MinParen, +% \COOL@notation@ModularLambdaParen, +% \COOL@notation@NevilleThetaCParen, +% \COOL@notation@NevilleThetaDParen, +% \COOL@notation@NevilleThetaNParen, +% \COOL@notation@NevilleThetaSParen, +% \COOL@notation@NielsenPolyLogParen, +% \COOL@notation@PartitionsPParen, +% \COOL@notation@PartitionsQParen, +% \COOL@notation@PolyGammaParen, +% \COOL@notation@PolyLogParen, +% \COOL@notation@PrimeParen, +% \COOL@notation@PrimePiParen, +% \COOL@notation@ProductLogParen, +% \COOL@notation@QuotientParen, +% \COOL@notation@RealParen, +% \COOL@notation@RegHypergeometricParen, +% \COOL@notation@RiemannSiegelThetaParen, +% \COOL@notation@RiemannSiegelZParen, +% \COOL@notation@SechParen, +% \COOL@notation@SecParen, +% \COOL@notation@SignParen, +% \COOL@notation@SinhIntParen, +% \COOL@notation@SinhParen, +% \COOL@notation@SinIntParen, +% \COOL@notation@SinParen, +% \COOL@notation@SphericalHarmonicYParen, +% \COOL@notation@StruveHParen, +% \COOL@notation@StruveLParen, +% \COOL@notation@TanhParen, +% \COOL@notation@TanParen, +% \COOL@notation@TransposeParen, +% \COOL@notation@TrParen, +% \COOL@notation@WeierstrassPInvParen, +% \COOL@notation@WeierstrassPParen, +% \COOL@notation@WeierstrassZetaParen, +% \COOL@notation@ZetaParen} +% \DoNotIndex{\COOL@notation@KroneckerDeltaIndicies,\COOL@notation@LeviCivitaIndicies} +% \DoNotIndex{\COOL@notation@SphericalHarmonicParen,\COOL@notation@SphericalHarmonicSymb} +% \DoNotIndex{\COOL@notation@WeierstrassPHalfPeriodValuesDisplay,\COOL@notation@WeierstrassZetaHalfPeriodValuesDisplay} +% \DoNotIndex{ +% \COOL@Beta@arg@i, +% \COOL@Beta@arg@ii, +% \COOL@Beta@arg@iii, +% \COOL@Beta@arg@iv, +% \COOL@BetaRegularized@arg@i, +% \COOL@BetaRegularized@arg@ii, +% \COOL@BetaRegularized@arg@iii, +% \COOL@BetaRegularized@arg@iv, +% \COOL@EllipticE@arg@i, +% \COOL@EllipticE@arg@ii, +% \COOL@EllipticF@arg@i, +% \COOL@EllipticF@arg@ii, +% \COOL@EllipticPi@arg@i, +% \COOL@EllipticPi@arg@ii, +% \COOL@EllipticPi@arg@iii, +% \COOL@Euler@arg@i, +% \COOL@Euler@arg@ii, +% \COOL@Fibonacci@arg@i, +% \COOL@Fibonacci@arg@ii, +% \COOL@InverseBetaRegularized@arg@i, +% \COOL@InverseBetaRegularized@arg@ii, +% \COOL@InverseBetaRegularized@arg@iii, +% \COOL@InverseBetaRegularized@arg@iv, +% \COOL@LegendreP@arg@i, +% \COOL@LegendreP@arg@ii, +% \COOL@LegendreP@arg@iii, +% \COOL@LegendreP@arg@iv, +% \COOL@LegendreQ@arg@i, +% \COOL@LegendreQ@arg@ii, +% \COOL@LegendreQ@arg@iii, +% \COOL@LegendreQ@arg@iv, +% \COOL@PolyLog@arg@i, +% \COOL@PolyLog@arg@ii, +% \COOL@PolyLog@arg@iii, +% \COOL@WeiSigma@arg@z@i, +% \COOL@WeiSigma@arg@z@ii, +% \COOL@Zeta@arg@i, +% \COOL@Zeta@arg@ii} +% \DoNotIndex{ +% \COOL@notation@AssocLegendrePSymb, +% \COOL@notation@AssocLegendreQSymb, +% \COOL@notation@BesselISymb, +% \COOL@notation@BesselJSymb, +% \COOL@notation@BesselKSymb, +% \COOL@notation@BesselYSymb, +% \COOL@notation@ChebyshevTSymb, +% \COOL@notation@ChebyshevUSymb, +% \COOL@notation@EllipticESymb, +% \COOL@notation@EllipticFSymb, +% \COOL@notation@EllipticKSymb, +% \COOL@notation@EllipticPiSymb, +% \COOL@notation@GegenbauerCSymb, +% \COOL@notation@HermiteHSymb, +% \COOL@notation@HypergeometricSymb, +% \COOL@notation@HypergeometricUSymb, +% \COOL@notation@JacobiPSymb, +% \COOL@notation@JacobiZetaSymb, +% \COOL@notation@LaugerreLSymb, +% \COOL@notation@LegendrePSymb, +% \COOL@notation@LegendreQSymb, +% \COOL@notation@LogBaseESymb, +% \COOL@notation@MeijerGSymb, +% \COOL@notation@RegHypergeometricSymb, +% \COOL@notation@SphericalHarmonicYSymb} +% \DoNotIndex{\COOL@wrt@temp,\COOL@temp@D@top@power,\COOL@temp@D@top,\COOL@temp@D@result,\COOL@temp@D@bot} +% \DoNotIndex{\COOL@power@temp} +% \DoNotIndex{\listval,\liststore,\isint,\isnumeric} +% \DoNotIndex{ +% \COOL@list@temp@i, +% \COOL@list@temp@ii, +% \COOL@list@temp@iii} +% \DoNotIndex{ +% \COOL@MeijerG@sniffer, +% \COOL@MeijerG@sniffer@end} +% \DoNotIndex{\COOL@Multinomial@tempa} +% \DoNotIndex{ +% \COOL@notation@ArcTrig, +% \COOL@notation@Conjugate, +% \COOL@notation@DShorten, +% \COOL@notation@LogShowBase} +% \DoNotIndex{ +% \COOL@notation@DDisplayFunc, +% \COOL@notation@DetDisplay, +% \COOL@notation@IntegrateDisplayFunc, +% \COOL@notation@ModDisplay} +% \DoNotIndex{ +% \COOL@notation@KroneckerDeltaUseComma, +% \COOL@notation@LeviCivitaUseComma} +% +% \title{The \textsf{cool} package\thanks{This document +% corresponds to \textsf{cool}~\fileversion, +% dated~\filedate.}} +% \author{nsetzer} +% +% \maketitle +% +% \setcounter{IndexColumns}{2} +% \StopEventually{\PrintChanges\PrintIndex} +% +% +% This is the \textsf{cool} package: a COntent Oriented \LaTeX{} package. That is, it is designed to give \LaTeX{} +% commands the ability to contain the mathematical meaning while retaining the typesetting versatility. +% +% This package requires the following, non-standard \LaTeX{} packages (all of which are available on \url{www.ctan.org}): +% \textsf{coolstr}, +% \textsf{coollist}, +% \textsf{forloop} +% +% +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%\section{Implementation} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macrocode} +\newcounter{COOL@ct} %just a general counter +\newcounter{COOL@ct@}%just a general counter +% \end{macrocode} +% +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +%\subsection{Parenthesis} +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macrocode} +\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\}} + % in braces {} +\newcommand{\inap}[2][0cm]{\left<{#2}\parbox[h][#1]{0cm}{}\right>} + % in angular parentheses <> +\newcommand{\nop}[1]{\left.{#1}\right.} + % no parentheses +% \end{macrocode} +% +% +% \begin{macro}{\COOL@decide@paren} +% |\COOL@decide@paren[|\meta{parenthesis type}|]{|\meta{function name}|}{|\meta{contained text}|}|. +% +% \noindent Since the handling of parentheses is something that will be common to many elements this +% function will take care of it. +% +% If the optional argument is given, |\COOL@notation@|\meta{function name}|Paren| is ignored and +% \meta{parenthesis type} is used +% +% \meta{parenthesis type} and |\COOL@notation@|\meta{function name}|Paren| must be one of |none|, |p| for |()|, |b| for |[]|, |br| for |{}|, |ap| for \meta{}, |inv| for |\left.\right.| +% \begin{macrocode} +\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}% + }% +% Else + {% + \def\COOL@decide@paren@type{#1}% + }% +\ifthenelse{ \equal{\COOL@decide@paren@type}{none} }% + {% + #3% + }% +% Else + {% + \ifthenelse{ \equal{\COOL@decide@paren@type}{p} }% + {% + \inp{#3}% + }% + % Else + {% + \ifthenelse{ \equal{\COOL@decide@paren@type}{b} }% + {% + \inb{#3}% + }% + % Else + {% + \ifthenelse{ \equal{\COOL@decide@paren@type}{br} }% + {% + \inbr{#3}% + }% + % Else + {% + \ifthenelse{ \equal{\COOL@decide@paren@type}{ap} }% + {% + \inap{#3}% + }% + % Else + {% + \ifthenelse{ \equal{\COOL@decide@paren@type}{inv} }% + {% + \nop{#3}% + }% + % Else + {% + \PackageError{cool}{Invalid Parenthesis Option}% + {*Paren can only be `none', `p', `b', `br', `ap', `inv'}% + }% + }% + }% + }% + }% + }% +} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +%\subsection{Indicies} +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\COOL@decide@indicies} +% |\COOL@decide@indicies|\marg{function name}\marg{local indication}\marg{indicies} +% +% \noindent Since up or down indicies can be as common as the parenthesis decision, this macro is the solution. +% +% \meta{local indication} must be either |u| or |d| +% +% \meta{indicies} is very likely to be required to be a comma separated list in the near future +% +% the options for indicies are +% +% \begin{tabular}{ll} +% |local| & allow the indicies to be decided by an optional argument to \\ +% & the function (such as |\LeviCivita[u]{i j}|) \\ +% |up| & force the indicies to appear as superscript \\ +% |down| & force the indicies to appear as subscript \\ +% \end{tabular} +% +% \begin{macrocode} +\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}}% + }% +% Else + {% + \ifthenelse{\equal{\COOL@decide@indicies@placement}{up}}% + {% + {^{#3}}% + }% + % Else + {% + \ifthenelse{\equal{\COOL@decide@indicies@placement}{down}}% + {% + {_{#3}}% + }% + % else + {% + \PackageError{cool}{Invalid Option Sent}% + {#1Indices can only be 'up', 'down', or 'local'}% + }% + }% + }% +} +% \end{macrocode} +% \end{macro} +% +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +%\subsection{COntent Oriented LaTeX (COOL)} +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\Style} +% |\Style{|\meta{options}|}| sets the style of the output (how to notate particular functions). +% \meta{options} is a comma delimited list of the form \meta{key}|=|\meta{value}, where \meta{key} is the \emph{long} +% form of the command name without the preceeding backslash (i.e. |Integrate| and not |Int| or |\Int|). +% The list can be in any order and need only contain the styles that the user desires to set. +% +% There can be multiple |\Style| commands within any document---the styled output of the command depends on the +% last |\Style| command to have specified its style. +% +% For a list of styling options for a command, see the code where the command is defined +% +% \begin{macrocode} +\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% +} +% \end{macrocode} +% \end{macro} +% +% +% +% \begin{macro}{\UseStyleFile} +% Since notational style should be kept consistent and will likely need to span several documents, use this command +% to input a notation style file that has previously been prepared. (to be implemented in a future release) +% \begin{macrocode} +\newcommand{\UseStyleFile}[1]{} +% \end{macrocode} +% \end{macro} +% +% +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Fundamental Constants} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% see \url{http://functions.wolfram.com/} for the definitions +% \begin{macro}{\I} +% The square root of minus 1 ($\sqrt{-1}$), $\I$. +% \begin{macrocode} +\newcommand{\I}{i} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\E} +% Euler's constant and the base of the natural logarithm, $\E$. +% \begin{macrocode} +\newcommand{\E}{e} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\PI} +% Pi---the ratio of the circumference of a circle to its diameter, $\PI$. +% \begin{macrocode} +\newcommand{\PI}{\pi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\GoldenRatio} +% The Golden Ratio, $\GoldenRatio$ +% \begin{macrocode} +\newcommand{\GoldenRatio}{\varphi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\EulerGamma} +% Euler's Gamma constant, $\EulerGamma$ +% \begin{macrocode} +\newcommand{\EulerGamma}{\gamma} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Catalan} +% Catalan constant, $\Catalan$ +% \begin{macrocode} +\newcommand{\Catalan}{C} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Glaisher} +% Glaisher constant, $\Glaisher$ +% \begin{macrocode} +\newcommand{\Glaisher}{\mathord{\operatorname{Glaisher}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Khinchin} +% Khinchin constant, $\Khinchin$ +% \begin{macrocode} +\newcommand{\Khinchin}{\mathord{\operatorname{Khinchin}}} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Symbols} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\Infinity} +% Infinity, $\Infinity$ +% \begin{macrocode} +\newcommand{\Infinity}{\infty} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Indeterminant} +% An indeterminant quantity +% \begin{macrocode} +\newcommand{\Indeterminant}{% + \mathchoice% + {\mbox{\textrm>}}% + {\mbox{\small>}}% + {\mbox{\scriptsize>}}% + {\mbox{\tiny>}}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\DirectedInfinity} +% \begin{macro}{\DirInfty} +% Directed Infinity |\DirectedInfinity{|\meta{complex number}|}| or |\DirInfty{|\meta{complex number}|}| +% \begin{macrocode} +\newcommand{\DirectedInfinity}[1]{#1 \, \infty} +\newcommand{\DirInfty}[1]{\DirectedInfinity{#1}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\ComplexInfinity} +% \begin{macro}{\CInfty} +% Complex infinity, $\CInfty$ +% \begin{macrocode} +\newcommand{\ComplexInfinity}{\tilde{\infty}} +\newcommand{\CInfty}{\ComplexInfinity} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Exponential Functions} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\Exp} +% Exponential---for use when $\E^x$ won't suffice, $\Exp{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@ExpParen}{p} +\newcommand{\Exp}[1] +{% +\exp\COOL@decide@paren{Exp}{#1}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Log} +% Logarithm, |\Log{x}|. This function has several options to be set. The usual parentheses, then some +% about the notation to be used for displaying the symbol. +% \begin{macrocode} + \newcommand{\COOL@notation@LogParen}{none} +% \end{macrocode} +% The following set the symbols: +% +% |LogBaseESymb| can be |ln| or |log|, indicating what symbol should be used for the natural logarithm. If set to +% |log| then logarithms of base 10 are displayed as $\log_{10}$. +% +% |LogShowBase| can be either |at will| or |always| and decides whether or not one should show the base, as in +% |log_b x|. If this option is set to |always| then |LogBaseESymb| is ignored. +% +% \begin{tabular}{lll} +% |\Log{5}| & $\Log{5}$ & $\displaystyle \Log{5}$ \\ +% |\Log[10]{5}| & $\Log[10]{5}$ & $\displaystyle \Log[10]{5}$ \\ +% |\Log[4]{5}| & $\Log[4]{5}$ & $\displaystyle \Log[4]{5}$ \\ +% |\Style{LogBaseESymb=log}|% +% \Style{LogBaseESymb=log} \\ +% |\Log{5}| & $\Log{5}$ & $\displaystyle \Log{5}$ \\ +% |\Log[10]{5}| & $\Log[10]{5}$ & $\displaystyle \Log[10]{5}$ \\ +% |\Log[4]{5}| & $\Log[4]{5}$ & $\displaystyle \Log[4]{5}$ \\ +% |\Style{LogShowBase=always}|% +% \Style{LogBaseESymb=ln}% +% \Style{LogShowBase=always} \\ +% |\Log{5}| & $\Log{5}$ & $\displaystyle \Log{5}$ \\ +% |\Log[10]{5}| & $\Log[10]{5}$ & $\displaystyle \Log[10]{5}$ \\ +% |\Log[4]{5}| & $\Log[4]{5}$ & $\displaystyle \Log[4]{5}$ \\ +% |\Style{LogShowBase=at will}|% +% \Style{LogShowBase=at will} \\ +% |\Log{5}| & $\Log{5}$ & $\displaystyle \Log{5}$ \\ +% |\Log[10]{5}| & $\Log[10]{5}$ & $\displaystyle \Log[10]{5}$ \\ +% |\Log[4]{5}| & $\Log[4]{5}$ & $\displaystyle \Log[4]{5}$ \\ +% |\Style{LogParen=p}|% +% \Style{LogParen=p} \\ +% |\Log[4]{5}| & $\Log[4]{5}$ & $\displaystyle \Log[4]{5}$ \\ +% \end{tabular} +% \begin{macrocode} + \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}% + }% + % Else + {% + \ifthenelse{ \equal{\COOL@notation@LogBaseESymb}{log} }% + {% + \log \COOL@decide@paren{Log}{#2}% + }% + % Else + {% + \PackageError{cool}{Invalid Option Sent}% + {LogBaseESymb can only be `ln' or `log'}% + }% + }% + }% + % Else + {% + \ifthenelse{ \equal{#1}{10} \AND + \NOT \equal{\COOL@notation@LogBaseESymb}{log} }% + {% + \log \COOL@decide@paren{Log}{#2}% + }% + % Else + {% + \log_{#1} \COOL@decide@paren{Log}{#2}% + }% + }% + }% +% Else + {% + \ifthenelse{ \equal{\COOL@notation@LogShowBase}{always} }% + {% + \log_{#1}\COOL@decide@paren{Log}{#2}% + }% + % Else + {% + \PackageError{cool}{Invalid Option Sent}% + {LogShowBase can only be 'at will' or 'always'}% + }% + }% +} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Trigonometric Functions} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\Sin} +% The sine function, |\Sin{x}|, $\Sin{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@SinParen}{p} +\newcommand{\Sin}[1]{\sin\COOL@decide@paren{Sin}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Cos} +% The cosine function, |\Cos{x}|, $\Cos{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@CosParen}{p} +\newcommand{\Cos}[1]{\cos\COOL@decide@paren{Cos}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Tan} +% The tangent function, |\Tan{x}|, $\Tan{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@TanParen}{p} +\newcommand{\Tan}[1]{\tan\COOL@decide@paren{Tan}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Csc} +% The cosecant function, |\Csc{x}|, $\Csc{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@CscParen}{p} +\newcommand{\Csc}[1]{\csc\COOL@decide@paren{Csc}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Sec} +% The secant function, |\Sec{x}|, $\Sec{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@SecParen}{p} +\newcommand{\Sec}[1]{\sec\COOL@decide@paren{Sec}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Cot} +% The cotangent function, |\Cot{x}|, $\Cot{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@CotParen}{p} +\newcommand{\Cot}[1]{\cot\COOL@decide@paren{Cot}{#1}} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Inverse Trigonometric Functions} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\COOL@notation@ArcTrig} +% The inverse trigoneometric functions style is governed by this global key. It's options are +% +% |inverse| (default), this displays as $\sin^{-1}$ +% +% |arc|, this displays as $\arcsin$ +% \begin{macrocode} + \def\COOL@notation@ArcTrig{inverse} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ArcSin} +% The inverse of the sine function, |\ArcSin{x}|, $\ArcSin{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@ArcSinParen}{p} +\newcommand{\ArcSin}[1]{% +\ifthenelse{ \equal{\COOL@notation@ArcTrig}{inverse} }% + {% + \sin^{-1}\COOL@decide@paren{ArcSin}{#1}% + } +% else + { + \ifthenelse{\equal{\COOL@notation@ArcTrig}{arc}}% + {% + \arcsin\COOL@decide@paren{ArcSin}{#1}% + }% + % else + {% + \PackageError{cool}{Invalid option sent}{}% + }% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ArcCos} +% the inverse of the cosine function, |\ArcCos{x}|, $\ArcCos{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@ArcCosParen}{p} +\newcommand{\ArcCos}[1]{% +\ifthenelse{ \equal{\COOL@notation@ArcTrig}{inverse} }% + {% + \cos^{-1}\COOL@decide@paren{ArcCos}{#1}% + }% +% else + {% + \ifthenelse{\equal{\COOL@notation@ArcTrig}{arc}}% + {% + \arccos\COOL@decide@paren{ArcCos}{#1}% + }% + % else + {% + \PackageError{cool}{Invalid option sent}{}% + }% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ArcTan} +% The inverse of the tangent function, |\ArcTan{x}|, $\ArcTan{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@ArcTanParen}{p} +\newcommand{\ArcTan}[1]{% +\ifthenelse{ \equal{\COOL@notation@ArcTrig}{inverse} }% + {% + \tan^{-1}\COOL@decide@paren{ArcTan}{#1}% + }% +% else + {% + \ifthenelse{\equal{\COOL@notation@ArcTrig}{arc}}% + {% + \arctan\COOL@decide@paren{ArcTan}{#1}% + }% + % else + {% + \PackageError{cool}{Invalid option sent}{}% + }% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ArcCsc} +% The Inverse Cosecant function, |\ArcCsc{x}|, $\ArcCsc{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@ArcCscParen}{p} +\newcommand{\ArcCsc}[1]{\csc^{-1}\COOL@decide@paren{ArcCsc}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ArcSec} +% The inverse secant function, |\ArcSec{x}|, $\ArcSec{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@ArcSecParen}{p} +\newcommand{\ArcSec}[1]{\sec^{-1}\COOL@decide@paren{ArcSec}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ArcCot} +% The inverse cotangent function, |\ArcCot{x}|, $\ArcCot{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@ArcCotParen}{p} +\newcommand{\ArcCot}[1]{\cot^{-1}\COOL@decide@paren{ArcCot}{#1}} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Hyperbolic Functions} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\Sinh} +% Hyperbolic sine, |\Sinh{x}|, $\Sinh{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@SinhParen}{p} +\newcommand{\Sinh}[1]{\sinh\COOL@decide@paren{Sinh}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Cosh} +% Hyperbolic cosine, |\Cosh{x}|, $\Cosh{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@CoshParen}{p} +\newcommand{\Cosh}[1]{\cosh\COOL@decide@paren{Cosh}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Tanh} +% Hyperbolic Tangent, |\Tanh{x}|, $\Tanh{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@TanhParen}{p} +\newcommand{\Tanh}[1]{\tanh\COOL@decide@paren{Tanh}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Csch} +% Hyperbolic cosecant |\Csch{x}|, $\Csch{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@CschParen}{p} + \DeclareMathOperator{\csch}{csch} +\newcommand{\Csch}[1]{\csch\COOL@decide@paren{Csch}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Sech} +% Hyperbolic secant, |\Sech{x}|, $\Sech{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@SechParen}{p} + \DeclareMathOperator{\sech}{sech} +\newcommand{\Sech}[1]{\sech\COOL@decide@paren{Sech}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Coth} +% Hyperbolic Cotangent, |\Coth{x}|, $\Coth{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@CothParen}{p} +\newcommand{\Coth}[1]{\coth\COOL@decide@paren{Coth}{#1}} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Inverse Hyperbolic Functions} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\ArcSinh} +% Inverse hyperbolic sine, |\ArcSinh{x}|, $\ArcSinh{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@ArcSinhParen}{p} +\newcommand{\ArcSinh}[1]{\sinh^{-1}\COOL@decide@paren{ArcSinh}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ArcCosh} +% Inverse hyperbolic cosine, |\ArcCosh{x}|, $\ArcCosh{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@ArcCoshParen}{p} +\newcommand{\ArcCosh}[1]{\cosh^{-1}\COOL@decide@paren{ArcCosh}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ArcTanh} +% Inverse hyperbolic tangent, |\ArcTanh{x}|, $\ArcTanh{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@ArcTanhParen}{p} +\newcommand{\ArcTanh}[1]{\tanh^{-1}\COOL@decide@paren{ArcTanh}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ArcCsch} +% Inverse hyperbolic cosecant, |\ArcCsch{x}|, $\ArcCsch{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@ArcCschParen}{p} +\newcommand{\ArcCsch}[1]{\csch^{-1}\COOL@decide@paren{ArcCsch}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ArcSech} +% Inverse hyperbolic secant, |\ArcSech{x}|, $\ArcSech{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@ArcSechParen}{p} +\newcommand{\ArcSech}[1]{\sech^{-1}\COOL@decide@paren{ArcSech}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ArcCoth} +% Inverse hyperbolic cotangent, |\ArcCoth{x}|, $\ArcCoth{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@ArcCothParen}{p} +\newcommand{\ArcCoth}[1]{\coth^{-1}\COOL@decide@paren{ArcCoth}{#1}} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Product Logarithms} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% +% \begin{macro}{\LambertW} +% Lambert Function. |\LambertW| is an alias for |\ProductLog| and its properties are therefore set using that function +% \begin{macrocode} +\newcommand{\LambertW}[1]{\ProductLog{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ProductLog} +% Generalized Lambert Function |\ProductLog{|[\meta{index}|,|]\meta{variable}|}|. +% +% \begin{tabular}{lll} +% Lambert Function & |\ProductLog{x}| & $\ProductLog{x}$ \\ +% Generalized Lambert Function & |\ProductLog{k,x}| & $\ProductLog{k,x}$ \\ +% \end{tabular} +% \begin{macrocode} + \newcommand{\COOL@notation@ProductLogParen}{p} +\newcommand{\ProductLog}[1]{% +\listval{#1}{0}% +\ifthenelse{\value{COOL@listpointer}=1}% + {% + W\!\COOL@decide@paren{ProductLog}{#1}% + }% +% else + {% + \ifthenelse{\value{COOL@listpointer}=2}% + {% + W_{\listval{#1}{1}}\!\COOL@decide@paren{ProductLog}{\listval{#1}{2}}% + }% + % else + {% + \PackageError{cool}{`ProductLog' Invaid Argument}% + {Must have a comma separated list of length 1 or 2} + }% + }% +} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Max and Min} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\Max} +% the maximum function, |\Max{x,y,z}|, $\Max{x,y,z}$ +% \begin{macrocode} + \newcommand{\COOL@notation@MaxParen}{p} +\newcommand{\Max}[1]{\max\COOL@decide@paren{Max}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Min} +% the minimum function, |\Min{x,y,z}|, $\Min{x,y,z}$ +% \begin{macrocode} + \newcommand{\COOL@notation@MinParen}{p} +\newcommand{\Min}[1]{\min\COOL@decide@paren{Min}{#1}} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Bessel Functions} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\BesselJ} +% Bessel Function of the first kind, |\BesselJ{\nu}{x}|, $\BesselJ{\nu}{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@BesselJSymb}{J} + \newcommand{\COOL@notation@BesselJParen}{p} +\newcommand{\BesselJ}[2]% +{\COOL@notation@BesselJSymb_{#1}\!\COOL@decide@paren{BesselJ}{#2}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\BesselY} +% Bessel Function of the second kind, |\BesselY{\nu}{x}|, $\BesselY{\nu}{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@BesselYSymb}{Y} + \newcommand{\COOL@notation@BesselYParen}{p} +\newcommand{\BesselY}[2]% +{\COOL@notation@BesselYSymb_{#1}\!\COOL@decide@paren{BesselY}{#2}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\BesselI} +% Modified Bessel Function of the first kind, |\BesselI{\nu}{x}|, $\BesselI{\nu}{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@BesselISymb}{I} + \newcommand{\COOL@notation@BesselIParen}{p} +\newcommand{\BesselI}[2]% +{\COOL@notation@BesselISymb_{#1}\!\COOL@decide@paren{BesselI}{#2}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\BesselK} +% Modified Bessel Function of the second kind, |\BesselK{\nu}{x}|, $\BesselK{\nu}{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@BesselKSymb}{K} + \newcommand{\COOL@notation@BesselKParen}{p} +\newcommand{\BesselK}[2]% +{\COOL@notation@BesselKSymb_{#1}\!\COOL@decide@paren{BesselK}{#2}} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Airy Functions} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\AiryAi} +% Airy Ai Function, |\AiryAi{x}|, $\AiryAi{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@AiryAiParen}{p} + \DeclareMathOperator{\AiryAiSymb}{Ai} +\newcommand{\AiryAi}[1]{\AiryAiSymb\!\COOL@decide@paren{AiryAi}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\AiryBi} +% Airy Bi Function, |\AiryBi{x}|, $\AiryBi{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@AiryBiParen}{p} + \DeclareMathOperator{\AiryBiSymb}{Bi} +\newcommand{\AiryBi}[1]{\AiryBiSymb\!\COOL@decide@paren{AiryBi}{#1}} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Struve Functions} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\StruveH} +% Struve H function, |\StruveH{\nu}{z}|, $\StruveH{\nu}{z}$ +% \begin{macrocode} + \newcommand{\COOL@notation@StruveHParen}{p} +\newcommand{\StruveH}[2]{ {\bf H}_{#1}\!\COOL@decide@paren{StruveH}{#2}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\StruveL} +% Struve L function, |\StruveL{\nu}{z}|, $\StruveL{\nu}{z}$ +% \begin{macrocode} + \newcommand{\COOL@notation@StruveLParen}{p} +\newcommand{\StruveL}[2]{ {\bf L}_{#1}\!\COOL@decide@paren{StruveL}{#2}} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Integer Functions} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\Floor} +% floor, |\Floor{x}|, $\Floor{x}$ +% \begin{macrocode} +\newcommand{\Floor}[1]{\lfloor #1 \rfloor} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Ceiling} +% ceiling, |\Ceiling{x}|, $\Ceiling{x}$ +% \begin{macrocode} +\newcommand{\Ceiling}[1]{\lceil #1 \rceil} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Round} +% round, |\Round{x}|, $\Round{x}$ +% \begin{macrocode} +\newcommand{\Round}[1]{\lfloor #1 \rceil} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\iPart} +% \begin{macro}{\IntegerPart} +% The integer part of a real number, |\iPart{x}|, |\IntegerPart{x}|, $\iPart{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@IntegerPartParen}{p} + \DeclareMathOperator{\iPartSymb}{int} +\newcommand{\iPart}[1]{\iPartSymb\COOL@decide@paren{IntegerPart}{#1}} +\newcommand{\IntegerPart}[1]{\iPart{#1}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\fPart} +% \begin{macro}{\FractionalPart} +% the fractional part of a real number, |\fPart{x}|, |\FractionalPart{x}|, $\fPart{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@FractionalPartParen}{p} + \DeclareMathOperator{\fPartSymb}{frac} +\newcommand{\fPart}[1]{\fPartSymb\COOL@decide@paren{FractionalPart}{#1}} +\newcommand{\FractionalPart}[1]{\fPart{#1}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\Mod} +% Modulo, |\Mod{n}{m}|, $\Mod{n}{m}$ +% \begin{macrocode} + \newcommand{\COOL@notation@ModDisplay}{mod} +\newcommand{\Mod}[2]{% +\ifthenelse{\equal{\COOL@notation@ModDisplay}{mod}}% + {% + #1 \mod #2% + }% +% ElseIf +{ \ifthenelse{\equal{\COOL@notation@ModDisplay}{bmod}}% + {% + #1 \bmod #2% + }% +% ElseIf +{ \ifthenelse{\equal{\COOL@notation@ModDisplay}{pmod}}% + {% + #1 \pmod #2% + }% +% ElseIf +{\ifthenelse{\equal{\COOL@notation@ModDisplay}{pod}}% + {% + #1 \pod #2% + }% +% Else + {% + \PackageError{cool}{Invalid Option Sent}% + {ModDisplay can only be `mod', `bmod', `pmod', or `pod'}% + }}}}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Quotient} +% quotient, |\Quotient{m}{n}|, $\Quotient{m}{n}$ +% \begin{macrocode} + \newcommand{\COOL@notation@QuotientParen}{p} + \DeclareMathOperator{\QuotientSymb}{quotient} +\newcommand{\Quotient}[2]% +{\QuotientSymb\COOL@decide@paren{Quotient}{#1,#2}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\GCD} +% greatest common divisor, |\GCD{n_1,n_2,\dots,n_m}|, $\GCD{n_1,n_2,\dots,n_m}$ +% \begin{macrocode} + \newcommand{\COOL@notation@GCDParen}{p} +\newcommand{\GCD}[1]{\gcd\COOL@decide@paren{GCD}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ExtendedGCD} +% \begin{macro}{\EGCD} +% Extended Greatest Common Divisor, +% +%|\EGCD{n}{m}|, |\ExtendedGCD{n}{m}|, $\EGCD{n}{m}$ +% \begin{macrocode} + \newcommand{\COOL@notation@ExtendedGCDParen}{p} + \DeclareMathOperator{\ExtendedGCDSymb}{egcd} +\newcommand{\ExtendedGCD}[2]% +{\ExtendedGCDSymb\COOL@decide@paren{ExtendedGCD}{#1,#2}} +\newcommand{\EGCD}[2]{\ExtendedGCD{#1}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\LCM} +% Least Common Multiple, |\LCM{n_1,n_2,\ldots,n_m}|, $\LCM{n_1,n_2,\ldots,n_m}$ +% \begin{macrocode} + \newcommand{\COOL@notation@LCMParen}{p} + \DeclareMathOperator{\LCMSymb}{lcm} +\newcommand{\LCM}[1]{\LCMSymb\COOL@decide@paren{LCM}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Fibonacci} +% Fibonacci number, |\Fibonacci{n}|, $\Fibonacci{n}$, and +% +% Fibonacci Polynomial, |\Fibonacci{n,x}|, $\Fibonacci{n,x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@FibonacciParen}{p} +\newcommand{\Fibonacci}[1]{% +\liststore{#1}{COOL@Fibonacci@arg@}% +\listval{#1}{0}% +\ifthenelse{\value{COOL@listpointer} = 1}% + {% + F_{#1}% + }% +% ElseIf +{ \ifthenelse{\value{COOL@listpointer} = 2}% + {% + F_{\COOL@Fibonacci@arg@i}\!% + \COOL@decide@paren{Fibonacci}{\COOL@Fibonacci@arg@ii}% + }% +% Else + {% + \PackageError{cool}{Invalid Argument}% + {`Fibonacci' can only accept a + comma separate list of length 1 or 2}% + }}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Euler} +% Euler number, |\Euler{n}|, $\Euler{n}$, and Euler Polynomial, |\Euler{n,x}|, $\Euler{n,x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@EulerParen}{p} +\newcommand{\Euler}[1]{% +\liststore{#1}{COOL@Euler@arg@}% +\listval{#1}{0}% +\ifthenelse{\value{COOL@listpointer} = 1}% + {% + E_{#1}% + }% +% ElseIf +{ \ifthenelse{\value{COOL@listpointer} = 2}% + {% + E_{\COOL@Euler@arg@i}\!% + \COOL@decide@paren{Euler}{\COOL@Euler@arg@ii}% + }% +% Else + {% + \PackageError{cool}{Invalid Argument}% + {`Euler' can only accept a + comma separate list of length 1 or 2}% + }}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Bernoulli} +% Bernoulli number, |\Bernoulli{n}|, $\Bernoulli{n}$ and +% +% Bernoulli Polynomial |\Bernoulli{n,x}|, $\Bernoulli{n,x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@BernoulliParen}{p} +\newcommand{\Bernoulli}[1]{% +\liststore{#1}{COOL@Bernoulli@arg@}% +\listval{#1}{0}% +\ifthenelse{\value{COOL@listpointer} = 1}% + {% + B_{#1}% + }% +% ElseIf +{ \ifthenelse{\value{COOL@listpointer} = 2}% + {% + B_{\COOL@Bernoulli@arg@i}\!% + \COOL@decide@paren{Bernoulli}{\COOL@Bernoulli@arg@ii}% + }% +% Else + {% + \PackageError{cool}{Invalid Argument}% + {`Bernoulli' can only accept a + comma separate list of length 1 or 2}% + }}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\StirlingSOne} +% Stirling number of the first kind |\StirlingSOne{n}{m}|, $\StirlingSOne{n}{m}$ +% \begin{macrocode} +\newcommand{\StirlingSOne}[2]{S_{#1}^{\inp{#2}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\StirlingSTwo} +% Stirling number of the second kind, |\StirlingSTwo{n}{m}|, $\StirlingSTwo{n}{m}$ +% \begin{macrocode} +\newcommand{\StirlingSTwo}[2]{{\cal S}_{#1}^{\inp{#2}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\PartitionsP} +% Number of unrestricted partitions of an integer, |\PartitionsP{x}|, $\PartitionsP{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@PartitionsPParen}{p} +\newcommand{\PartitionsP}[1]{p\!\COOL@decide@paren{PartitionsP}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\PartitionsQ} +% number of partitions of an integer into distinct parts, |\PartitionsQ{x}|, $\PartitionsQ{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@PartitionsQParen}{p} +\newcommand{\PartitionsQ}[1]{q\!\COOL@decide@paren{PartitionsQ}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\DiscreteDelta} +% Discrete delta function, +% +% |\DiscreteDelta{n_1,n_2,\ldots,n_m}|, $\DiscreteDelta{n_1,n_2,\ldots,n_m}$ +% \begin{macrocode} + \newcommand{\COOL@notation@DiscreteDeltaParen}{p} +\newcommand{\DiscreteDelta}[1]% +{\delta\COOL@decide@paren{DiscreteDelta}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\KroneckerDelta} +% Kronecker Delta, |\KroneckerDelta{n_1,n_2,\ldots,n_m}|, $\KroneckerDelta{n_1,n_2,\ldots,n_m}$ +% \begin{macrocode} + \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}% + }% + % Else + {% + \edef\COOL@arg@temp% + {\COOL@arg@temp \csname COOL@arg@\roman{COOL@ct}\endcsname}% + }% + }% + % Else + {% + \edef\COOL@arg@temp% + {\COOL@arg@temp \csname COOL@arg@\roman{COOL@ct}\endcsname}% + }% + }% +\delta\COOL@decide@indicies{KroneckerDelta}{#1}{\COOL@arg@temp}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\LeviCivita} +% \begin{macro}{\Signature} +% Levi-Civita totally anti-symmetric Tensor density, +% +% |\LeviCivita{n_1,n_2,\ldots,n_m}|, $\LeviCivita{n_1,n_2,\ldots,n_m}$ +% \begin{macrocode} + \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}% + }% + % Else + {% + \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}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Classical Orthogonal Polynomials} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\HermiteH} +% Hermite Polynomial, |\HermiteH{n}{x}|, $\HermiteH{n}{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@HermiteHParen}{p} + \newcommand{\COOL@notation@HermiteHSymb}{H} +\newcommand{\HermiteH}[2]% +{\COOL@notation@HermiteHSymb_{#1}\!\COOL@decide@paren{HermiteH}{#2}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\LaugerreL} +% Laugerre Polynomial, |\LaugerreL{\nu,x}|, $\LaugerreL{\nu,x}$ and +% +% \noindent Generalized Laugerre Polynomial |\LaugerreL{\nu,\lambda,x}|, $\LaugerreL{\nu,\lambda,x}$ +% \begin{macrocode} + \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}% + }% +% Else If +{ \ifthenelse{\value{COOL@listpointer}=3}% + {% + \COOL@notation@LaugerreLSymb_{\COOL@list@temp@i}^{\COOL@list@temp@ii}% + \!\COOL@decide@paren{LaugerreL}{\COOL@list@temp@iii}% + }% +% Else +{% + \PackageError{cool}{Invalid Argument}% + {`LaugerrL' only accepts a comma separated list of length 2 or 3}% +}}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\LegendreP} +% Legendre Polynomials +% +% \begin{tabular}{lll} +% Legendre Polynomial & |\LegendreP{n,x}| & $\LegendreP{n,x}$ \\ +% Associated Legendre Polynomial \\ +% \indent of the first kind of type 2 +% & |\LegendreP{\ell,m,x}| & $\LegendreP{\ell,m,x}$ \\ +% & |\LegendreP{\ell,m,2,x}| & $\LegendreP{\ell,m,2,x}$ \\ +% Associated Legendre Function \\ +% \indent of the first kind of type 3 +% & |\LegendreP{\ell,m,3,x}| & $\LegendreP{\ell,m,3,x}$ \\ +% \end{tabular} +% \begin{macrocode} + \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}% + }% +% ElseIf +{ \ifthenelse{\value{COOL@listpointer} = 3}% + {% + \COOL@notation@LegendrePSymb_{\COOL@LegendreP@arg@i}% + ^{\COOL@LegendreP@arg@ii}\!% + \COOL@decide@paren{LegendreP}{\COOL@LegendreP@arg@iii}% + }% +% ElseIf +{ \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% + } + % Else + {% + \PackageError{cool}{Invalid Argument}{third arg must be int}% + }% + }% +% Else + {% + \PackageError{cool}{Invalid Argument}% + {`LegendreP' can only accept a% + comma separated list of length 2-4}% + }}}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\LegendreQ} +% Legendre Polynomials of the second kind +% +% \begin{tabular}{lll} +% Legendre Polynomial & |\LegendreQ{n,x}| & $\LegendreQ{n,x}$ \\ +% Associated Legendre Polynomial \\ +% \indent of the second kind of type 2 +% & |\LegendreQ{\ell,m,x}| & $\LegendreQ{\ell,m,x}$ \\ +% & |\LegendreQ{\ell,m,2,x}| & $\LegendreQ{\ell,m,2,x}$ \\ +% Associated Legendre Function \\ +% \indent of the second kind of type 3 +% & |\LegendreQ{\ell,m,3,x}| & $\LegendreQ{\ell,m,3,x}$ \\ +% \end{tabular} +% \begin{macrocode} + \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}% + }% +% ElseIf +{ \ifthenelse{\value{COOL@listpointer} = 3}% + {% + \COOL@notation@LegendreQSymb_{\COOL@LegendreQ@arg@i}% + ^{\COOL@LegendreQ@arg@ii}\!% + \COOL@decide@paren{LegendreQ}{\COOL@LegendreQ@arg@iii}% + }% +% ElseIf +{ \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% + } + % Else + {% + \PackageError{cool}{Invalid Argument}{third arg must be int}% + }% + }% +% Else + {% + \PackageError{cool}{Invalid Argument}% + {`LegendreQ' can only accept a% + comma separated list of length 2-4}% + }}}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ChebyshevT} +% Chebyshev Polynomial of the first kind, |ChebyshevT{n}{x}|, $ChebyshevT{n}{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@ChebyshevTParen}{p} + \newcommand{\COOL@notation@ChebyshevTSymb}{T} +\newcommand{\ChebyshevT}[2]% +{\COOL@notation@ChebyshevTSymb_{#1}\!\COOL@decide@paren{ChebyshevT}{#2}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ChebyshevU}, |\ChebyshevU{n}{z}|, $\ChebyshevU{n}{z}$ +% Chebyshev Polynomial of the second kind +% \begin{macrocode} + \newcommand{\COOL@notation@ChebyshevUParen}{p} + \newcommand{\COOL@notation@ChebyshevUSymb}{U} +\newcommand{\ChebyshevU}[2]% +{\COOL@notation@ChebyshevUSymb_{#1}\!\COOL@decide@paren{ChebyshevU}{#2}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\JacobiP} +% Jacobi Polynomial, |\JacobiP{n}{a}{b}{x}|, $\JacobiP{n}{a}{b}{x}$ +% \begin{macrocode} + \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}% +} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Associated Polynomials} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\AssocLegendreP} +% Associated Legendre Polynomial of the first kind of type 2 +% +% |\AssocLegendreP{\ell}{m}{x}|, $\AssocLegendreP{\ell}{m}{x}$ +% \begin{macrocode} +\newcommand{\AssocLegendreP}[3]{\LegendreP{#1,#2,#3}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\AssocLegendreQ} +% Associated Legendre Polynomial of the second kind of type 2 +% +% |\AssocLegendreQ{\ell}{m}{x}|, $\AssocLegendreQ{\ell}{m}{x}$ +% \begin{macrocode} +\newcommand{\AssocLegendreQ}[3]{\LegendreQ{#1,#2,#3}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\GegenbauerC} +% Gegenbauer Polynomial, |\GegenbauerC{n}{\lambda}{x}|, $\GegenbauerC{n}{\lambda}{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@GegenbauerCParen}{p} + \newcommand{\COOL@notation@GegenbauerCSymb}{C} +\newcommand{\GegenbauerC}[3]{% +\COOL@notation@GegenbauerCSymb_{#1}^{#2}% +\!\COOL@decide@paren{GegenbauerC}{#3}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\SphericalHarmonicY} +% \begin{macro}{\SphericalHarmY} +% \begin{macro}{\SpHarmY} +% Spherical Harmonic, |\SpHarmY{\ell}{m}{\theta}{\phi}|, +% +% |\SphericalHarmY{\ell}{m}{\theta}{\phi}|, +% +% |\SphericalHarmonicY{\ell}{m}{\theta}{\phi}|, $\SpHarmY{\ell}{m}{\theta}{\phi}$ +% \begin{macrocode} + \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}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Other Polynomials} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\CyclotomicC} +% Cyclotomic Polynomial, |\CyclotomicC{n}{z}|, $\CyclotomicC{n}{z}$ +% \begin{macrocode} + \newcommand{\COOL@notation@CyclotomicCParen}{p} +\newcommand{\CyclotomicC}[2]% +{C_{#1}\!\COOL@decide@paren{CyclotomicC}{#2}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\FibonacciF} +% Fibonacci Polynomial, |\FibonacciF{n}{z}|, $\FibonacciF{n}{z}$ +% \begin{macrocode} +\newcommand{\FibonacciF}[2]{\Fibonacci{#1,#2}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\EulerE} +% Euler Polynomial, |\EulerE{n}{z}|, $\EulerE{n}{z}$ +% \begin{macrocode} +\newcommand{\EulerE}[2]{\Euler{#1,#2}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\BernoulliB} +% Bernoulli Polynomial, |\BernoulliB{n}{z}|, $\BernoulliB{n}{z}$ +% \begin{macrocode} +\newcommand{\BernoulliB}[2]{\Bernoulli{#1,#2}} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Factorial Functions} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\Factorial} +% Factorial, |\Factorial{n}|, $\Factorial{n}$ +% \begin{macrocode} +\newcommand{\Factorial}[1]{#1!} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\DblFactorial} +% Double Factorial, |\DblFactorial{n}|, $\DblFactorial{n}$ +% \begin{macrocode} +\newcommand{\DblFactorial}[1]{#1!!} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Binomial} +% binomial, |\Binomial{n}{r}|, $\Binomial{n}{r}$ +% \begin{macrocode} +\newcommand{\Binomial}[2]{ \binom{#1}{#2} } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Multinomial} +% Multinomial, |\Multinomial{n_1,\ldots,n_m}|, $\Multinomial{n_1,\ldots,n_m}$ +% \begin{macrocode} +\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}}% + {% + % all of them are integers + \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@}% + }% +% Else + {% + \left(% + \listval{#1}{1}% + \forLoop{2}{\value{COOL@listlen}}{COOL@ct}% + {% + + \listval{#1}{\arabic{COOL@ct}}% + }% + }% +;#1\right)% +} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Gamma Functions} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\GammaFunc} +% Gamma Function +% +% \noindent \begin{tabular}{lll} +% Gamma Function & |\GammaFunc{z}| & $\GammaFunc{z}$ \\ +% Incomplete Gamma Function & |\GammaFunc{a,z}| & $\GammaFunc{a,z}$ \\ +% Generalized Incomplete Gamma Function & |\GammaFunc{a,x,y}| & $\GammaFunc{a,x,y}$ +% \end{tabular} +% \begin{macrocode} + \newcommand{\COOL@notation@GammaFuncParen}{p} +\newcommand{\GammaFunc}[1]{% +\listval{#1}{0}% +\ifthenelse{\value{COOL@listpointer} = 1}% + {% + \Gamma\!\COOL@decide@paren{GammaFunc}{#1}% + }% +% ElseIf +{ \ifthenelse{\value{COOL@listpointer} = 2}% + {% + \Gamma\!\COOL@decide@paren{GammaFunc}{#1}% + }% +% ElseIf +{ \ifthenelse{\value{COOL@listpointer} = 3}% + {% + \Gamma\!\COOL@decide@paren{GammaFunc}{#1}% + }% +% Else + {% + \PackageError{cool}{Invalid Argument}% + {`GammaFunc' can only accept a comma separate list of length 1 to 3}% + }% +}}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\IncGamma} +% incomplete Gamma function, |\IncGamma{a}{x}|, $\IncGamma{a}{x}$ +% \begin{macrocode} +\newcommand{\IncGamma}[2]{\GammaFunc{#1,#2}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\GenIncGamma} +% Generalized Incomplete Gamma, |\GenIncGamma{a}{x}{y}|, $\GenIncGamma{a}{x}{y}$ +% \begin{macrocode} +\newcommand{\GenIncGamma}[3]{\GammaFunc{#1, #2, #3}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\GammaRegularized} +% \begin{macro}{\RegIncGamma} +% \begin{macro}{\GammaReg} +% Regularized Incomplete Gamma +% +% \begin{tabular}{ll} +% |\GammaRegularized{a,x}| & $\GammaRegularized{a,x}$ \\ +% |\RegIncGamma{a}{x}| & $\RegIncGamma{a}{x}$ \\ +% |\GammaReg{a,x}| & $\GammaReg{a,x}$ \\ +% \end{tabular} +% \begin{macrocode} + \newcommand{\COOL@notation@GammaRegularizedParen}{p}% +\newcommand{\GammaRegularized}[1]{% +\listval{#1}{0}% +\ifthenelse{\value{COOL@listpointer} = 2}% + {% + Q\!\COOL@decide@paren{GammaRegularized}{#1}% + }% +% ElseIf +{ \ifthenelse{\value{COOL@listpointer} = 3}% + {% + Q\!\COOL@decide@paren{GammaRegularized}{#1}% + }% +% Else + {% + \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}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\RegIncGammaInv} +% \begin{macro}{\InverseGammaRegularized} +% \begin{macro}{\GammaRegInv} +% Inverse of Regularized Incomplete Gamma, +% +% \begin{tabular}{ll} +% |\RegIncGammaInv{a}{x}| & $\RegIncGammaInv{a}{x}$ \\ +% |\InverseGammaRegularized{a,x}| & $\InverseGammaRegularized{a,x}$ \\ +% |\GammaRegInv{a,x}| & $\GammaRegInv{a,x}$ \\ +% \end{tabular} +% \begin{macrocode} + \newcommand{\COOL@notation@InverseGammaRegularizedParen}{p} +\newcommand{\InverseGammaRegularized}[1]{% +\listval{#1}{0}% +\ifthenelse{\value{COOL@listpointer} = 2}% + {% + Q^{-1}\!\COOL@decide@paren{InverseGammaRegularized}{#1}% + }% +% ElseIf +{ \ifthenelse{\value{COOL@listpointer} = 3}% + {% + Q^{-1}\!\COOL@decide@paren{InverseGammaRegularized}{#1}% + }% +% Else + {% + \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}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GenRegIncGamma} +% Generalized Regularized Incomplete Gamma +% +% \begin{tabular}{ll} +% |\GenRegIncGamma{a}{x}{y}| & $\GenRegIncGamma{a}{x}{y}$ \\ +% |\GammaRegularized{a,x,y}| & $\GammaRegularized{a,x,y}$ +% \end{tabular} +% \begin{macrocode} +\newcommand{\GenRegIncGamma}[3]{\GammaRegularized{#1, #2, #3}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\GenRegIncGammaInv} +% Inverse of Gen. Reg. Incomplete Gamma, |\GenRegIncGammaInv{a}{x}{y}|, $\GenRegIncGammaInv{a}{x}{y}$ +% \begin{macrocode} +\newcommand{\GenRegIncGammaInv}[3]{\InverseGammaRegularized{#1, #2, #3}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Pochhammer} +% Pochhammer Symbol |\Pochhammer{a}{n}|, $\Pochhammer{a}{n}$ +% \begin{macrocode} +\newcommand{\Pochhammer}[2]{\inp{#1}_{#2}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\LogGamma} +% Log Gamma Function, |\LogGamma{x}|, $\LogGamma{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@LogGammaParen}{p} + \DeclareMathOperator{\LogGammaSymb}{log\Gamma} +\newcommand{\LogGamma}[1]{\LogGammaSymb\COOL@decide@paren{LogGamma}{#1}} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Derivatives of Gamma Functions} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\DiGamma} +% Digamma function, |\DiGamma{x}|, $\DiGamma{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@DiGammaParen}{p} +\newcommand{\DiGamma}[1]{\digamma\!\COOL@decide@paren{DiGamma}{#1}} +% \end{macrocode} +% \end{macro} +% PolyGamma function, |\PolyGamma{\nu}{x}|, $\PolyGamma{\nu}{x}$ +% \begin{macro}{\PolyGamma} +% +% \begin{macrocode} + \newcommand{\COOL@notation@PolyGammaParen}{p} +\newcommand{\PolyGamma}[2]% +{\psi^{\inp{#1}}\!\COOL@decide@paren{PolyGamma}{#2}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\HarmNum} +% Harmonic Number +% +% \begin{tabular}{lll} +% Harmonic Number & |\HarmNum{x}| & $\HarmNum{x}$ \\ +% General Harmonic Number & |\HarmNum{x,r}| & $\HarmNum{x,r}$ \\ +% \end{tabular} +% \begin{macrocode} +\newcommand{\HarmNum}[1]{% +\listval{#1}{0}% +\ifthenelse{\value{COOL@listpointer}=1}% + {% + H_{#1} + }% +% Else If +{ \ifthenelse{\value{COOL@listpointer}=2}% + {% + \liststore{#1}{COOL@list@temp@}% + H^{\inp{\COOL@list@temp@ii}}_{\COOL@list@temp@i}% + }% +% Else +{% + \PackageError{cool}{Invalid Argument}% + {`Harm Num' can only accept a comma separated list of length 1 or 2}% +}}% +} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Beta Functions} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\Beta} +% \begin{tabular}{lll} +% Beta Function & |\Beta{a,b}| & $\Beta{a,b}$ \\ +% Incomplete Beta Function & |\Beta{z,a,b}| & $\Beta{z,a,b}$ \\ +% Generalized Incomplete Beta Function & |\Beta{z_1,z_2,a,b}| & $\Beta{z_1,z_2,a,b}$ +% \end{tabular} +% \begin{macrocode} + \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}% + }% +% ElseIf +{ \ifthenelse{\value{COOL@listpointer} = 3}% + {% + B_{\COOL@Beta@arg@i}\!% + \COOL@decide@paren{Beta}{\COOL@Beta@arg@ii, \COOL@Beta@arg@iii}% + }% +% ElseIf +{ \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}% + }% +% Else + {% + \PackageError{cool}{Invalid Argument}% + {`Beta' can only accept a comma separated list of length 2 to 4}% + }% +}}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\IncBeta} +% Incomplete Beta Function +% +% \begin{tabular}{ll} +% |\IncBeta{z}{a}{b}| & $\IncBeta{z}{a}{b}$ \\ +% |\Beta{z,a,b}| & $\Beta{z,a,b}$ +% \end{tabular} +% \begin{macrocode} +\newcommand{\IncBeta}[3]{\Beta{#1,#2, #3}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\GenIncBeta} +% Generalized Incomplete Beta Function +% +% \begin{tabular}{ll} +% |\GenIncBeta{x}{y}{a}{b}| & $\GenIncBeta{x}{y}{a}{b}$ \\ +% |\Beta{x,y,a,b}| & $\Beta{x,y,a,b}$ +% \end{tabular} +% \begin{macrocode} +\newcommand{\GenIncBeta}[4]{\Beta{#1,#2,#3,#4}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\BetaRegularized} +% \begin{macro}{\BetaReg} +% \begin{macro}{\RegIncBeta} +% Regularized Incomplete Beta Function +% +% \begin{tabular}{ll} +% |\BetaRegularized{z,a,b}| & $\BetaRegularized{z,a,b}$ \\ +% |\BetaReg{z,a,b}| & $\BetaReg{z,a,b}$ \\ +% |\RegIncBeta{z}{a}{b}| & $\RegIncBeta{z}{a}{b}$ +% \end{tabular} +% \begin{macrocode} + \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}% + }% +% ElseIf +{ \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}% + }% +% Else + {% + \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}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\InverseBetaRegularized} +% \begin{macro}{\BetaRegInv} +% \begin{macro}{\RegIncBetaInv} +% Inverse of Regularized Incomplete Beta Function +% +% \begin{tabular}{ll} +% |\InverseBetaRegularized{z,a,b}| & $\InverseBetaRegularized{z,a,b}$ \\ +% |\BetaRegInv{z,a,b}| & $\BetaRegInv{z,a,b}$ \\ +% |\RegIncBetaInv{z}{a}{b}| & $\RegIncBetaInv{z}{a}{b}$ +% \end{tabular} +% \begin{macrocode} + \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}% + }% +% ElseIf +{ \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}% + }% +% Else + {% + \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}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GenRegIncBeta} +% Generalized Regularized Incomplete Beta Func +% +% \begin{tabular}{ll} +% |\GenRegIncBeta{x}{y}{a}{b}| & $\GenRegIncBeta{x}{y}{a}{b}$ \\ +% |\Beta{x,y,a,b}| & $\Beta{x,y,a,b}$ +% \end{tabular} +% \begin{macrocode} +\newcommand{\GenRegIncBeta}[4]{\Beta{#1,#2,#3,#4}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\GenRegIncBetaInv} +% Inverse of Generalized Regularized Incomplete Beta Function +% +% \begin{tabular}{ll} +% |\GenRegIncBetaInv{x}{y}{z}{b}| & $\GenRegIncBetaInv{x}{y}{z}{b}$ \\ +% |\InverseBetaRegularized{x,y,z,b}| & $\InverseBetaRegularized{x,y,z,b}$ +% \end{tabular} +% \begin{macrocode} +\newcommand{\GenRegIncBetaInv}[4]{\InverseBetaRegularized{#1,#2,#3,#4}} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Error Functions} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\Erf} +% \begin{tabular}{lll} +% Error Function & |\Erf{x}| & $\Erf{x}$ \\ +% Generalized Error Function & |\Erf{x,y}| & $\Erf{x,y}$ +% \end{tabular} +% \begin{macrocode} + \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} + }% +% ElseIf +{ \ifthenelse{\value{COOL@listpointer} = 2}% + {% + \ErfSymb\!\COOL@decide@paren{Erf}{#1} + }% +% Else + {% + \PackageError{cool}{Invalid Argument}% + {`Erf' can only accept a comma separated list of length 1 or 2}% + }% +}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ErfInv} +% Inverse of Error Function +% +% \begin{tabular}{ll} +% |\ErfInv{x}| & $\ErfInv{x}$ \\ +% |\ErfInv{x,y}| & $\ErfInv{x,y}$ +% \end{tabular} +% \begin{macrocode} + \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} + }% +% ElseIf +{ \ifthenelse{\value{COOL@listpointer} = 2}% + {% + \ErfSymb^{-1}\!\COOL@decide@paren{ErfInv}{#1} + }% +% Else + {% + \PackageError{cool}{Invalid Argument}% + {`Erf' can only accept a comma separated list of length 1 or 2}% + }% +}% +} +% \end{macrocode} +% \end{macro} + +% +% \begin{macro}{\GenErf} +% \begin{macro}{\GenErfInv} +% Generalized Error Function and its inverse +% +% \begin{tabular}{ll} +% |\GenErf{z_1}{z_2}| & $\GenErf{z_1}{z_2}$ \\ +% |\GenErfInv{z_1}{z_2}| & $\GenErfInv{z_1}{z_2}$ +% \end{tabular} +% \begin{macrocode} +\newcommand{\GenErf}[2]{\Erf{#1,#2}} +\newcommand{\GenErfInv}[2]{\ErfInv{#1, #2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\Erfc} +% Complimentary Error Function and its inverse +% +% \begin{tabular}{ll} +% |\Erfc{z}| & $\Erfc{z}$ \\ +% |\ErfcInv{z}| & $\ErfcInv{z}$ +% \end{tabular} +% \begin{macrocode} + \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}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Erfi} +% Imaginary Error Function, |\Erfi{z}|, $\Erfi{z}$ +% \begin{macrocode} + \newcommand{\COOL@notation@ErfiParen}{p} + \DeclareMathOperator{\ErfiSymb}{erfi} +\newcommand{\Erfi}[1]{\ErfiSymb\!\COOL@decide@paren{Erfi}{#1}} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Fresnel Integrals} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\FresnelS} +% Fresnel Integral, |\FresnelS{z}|, $\FresnelS{z}$ +% \begin{macrocode} + \newcommand{\COOL@notation@FresnelSParen}{p} +\newcommand{\FresnelS}[1]{S\!\COOL@decide@paren{FresnelS}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\FresnelC} +% Fresnel Integral, |\FresnelC{z}|, $\FresnelC{z}$ +% \begin{macrocode} + \newcommand{\COOL@notation@FresnelCParen}{p} +\newcommand{\FresnelC}[1]{C\!\COOL@decide@paren{FresnelC}{#1}} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Exponential Integrals} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\ExpIntE} +% Exponential Integral, |\ExpIntE{\nu}{x}|, $\ExpIntE{\nu}{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@ExpIntEParen}{p} +\newcommand{\ExpIntE}[2]{E_{#1}\!\COOL@decide@paren{ExpIntE}{#2}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ExpIntEi} +% Exponential Integral, |\ExpIntEi{x}|, $\ExpIntEi{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@ExpIntEiParen}{p} + \DeclareMathOperator{\ExpIntEiSymb}{Ei} +\newcommand{\ExpIntEi}[1]% +{\ExpIntEiSymb\!\COOL@decide@paren{ExpIntEi}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\LogInt} +% Logarithmic Integral, |\LogInt{x}|, $\LogInt{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@LogIntParen}{p} + \DeclareMathOperator{\LogIntSymb}{li} +\newcommand{\LogInt}[1]{\LogIntSymb\!\COOL@decide@paren{LogInt}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\SinInt} +% Sine Integral, |\SinInt{x}|, $\SinInt{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@SinIntParen}{p} + \DeclareMathOperator{\SinIntSymb}{Si} +\newcommand{\SinInt}[1]{\SinIntSymb\!\COOL@decide@paren{SinInt}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\CosInt} +% Cosine Integral, |\CosInt{x}|, $\CosInt{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@CosIntParen}{p} + \DeclareMathOperator{\CosIntSymb}{Ci} +\newcommand{\CosInt}[1]{\CosIntSymb\!\COOL@decide@paren{CosInt}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\SinhInt} +% Hyberbolic Sine Integral, |\SinhInt{x}|, $\SinhInt{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@SinhIntParen}{p} + \DeclareMathOperator{\SinhIntSymb}{Shi} +\newcommand{\SinhInt}[1]{\SinhIntSymb\!\COOL@decide@paren{SinhInt}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\CoshInt} +% Hyberbolic Cosine Integral, |\CoshInt{x}|, $\CoshInt{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@CoshIntParen}{p} + \DeclareMathOperator{\CoshIntSymb}{Chi} +\newcommand{\CoshInt}[1]{\CoshIntSymb\!\COOL@decide@paren{CoshInt}{#1}} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Hypergeometric Functions} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\COOL@Hypergeometric@pq@ab@value} +% This macro is a decision maker that decides what to return for the Hypergeometric function since +% its results vary based on the nature of the input. This macro is called as +% +% |\COOL@Hypergeometric@pq@ab@value| +% \DeleteShortVerb{\|}% +% \verb|{|`p'\texttt{|}`q'\verb|}|% +% \marg{p\_input\textnormal{\texttt{|}}q\_input}% +% \verb|{|`a'\texttt{|}`b'\verb|}|% +% \marg{a\_input\textnormal{\texttt{|}}b\_input}% +% \MakeShortVerb{\|} +% \begin{macrocode} +\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}% + }% + % Else + {% + \ifthenelse{ #2 = 1 }% + {% + \PackageError{cool}{`Hypergeometric' `#1'-arg mismatch with `#3'-arg}{}% + }% + % Else + {% + #4% + }% + }% + }% +% Else + {}% +\ifthenelse{ \boolean{COOL@#1@isint} \AND + \NOT \boolean{COOL@#3@islist} }% + {% + \ifthenelse{ #2 = 0 }% + {% + % return nothing + }% + % Else + {% + \ifthenelse{ #2 = 1 }% + {% + % return + #4% + }% + % Else + {% + \forLoop{1}{#2}{COOL@ct} + {% + \ifthenelse{ \value{COOL@ct} = 1 }{}{,}% + #4_{\arabic{COOL@ct}}% + }% end for loop + }% + }% + }% +% else + {}% +\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} + }% +% else + {}% +\ifthenelse{ \NOT \boolean{COOL@#1@isint} \AND + \NOT \boolean{COOL@#3@islist} }% + {% + %return + #4_1,\ldots,#4_{#2}% + }% +% else + {}% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Hypergeometric} +% Generalized Hypergeometric function. $\Hypergeometric{p}{q}{a}{b}{x}$ +% +% \begin{tabular}{lr} +% |\Hypergeometric{0}{0}{}{}{x}| & $\Hypergeometric{0}{0}{}{}{x}$ \\ +% |\Hypergeometric{0}{1}{}{b}{x}| & $\Hypergeometric{0}{1}{}{b}{x}$ \\ +% |\Hypergeometric{1}{1}{a}{b}{x}| & $\Hypergeometric{1}{1}{a}{b}{x}$ \\ +% |\Hypergeometric{1}{1}{1}{1}{x}| & $\Hypergeometric{1}{1}{1}{1}{x}$ \\ +% |\Hypergeometric{3}{5}{a}{b}{x}| \\ +% \multicolumn{2}{r}{$\Hypergeometric{3}{5}{a}{b}{x}$} +% \\ +% |\Hypergeometric{3}{5}{1,2,3}{1,2,3,4,5}{x}| +% \\ +% \multicolumn{2}{r}{$\Hypergeometric{3}{5}{1,2,3}{1,2,3,4,5}{x}$} +% \\ +% |\Hypergeometric{p}{5}{a}{b}{x}| \\ +% \multicolumn{2}{r}{$\Hypergeometric{p}{5}{a}{b}{x}$} +% \\ +% |\Hypergeometric{p}{3}{a}{1,2,3}{x}| \\ +% \multicolumn{2}{r}{$\Hypergeometric{p}{3}{a}{1,2,3}{x}$ } +% \\ +% |\Hypergeometric{p}{q}{a}{b}{x}| \\ +% \multicolumn{2}{r}{$\Hypergeometric{p}{q}{a}{b}{x}$} +% \end{tabular} +% \begin{macrocode} + \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}}% +% Else + {\setboolean{COOL@p@isint}{false}}% +\isint{#3}% +\ifthenelse{\boolean{COOL@isint}}% + {\setboolean{COOL@q@isint}{true}}% +% Else + {\setboolean{COOL@q@isint}{false}}% +\listval{#4}{0}% +\ifthenelse{\value{COOL@listpointer}>1}% + {\setboolean{COOL@a@islist}{true}}% +% Else + {\setboolean{COOL@a@islist}{false}}% +% \end{macrocode} +% ensure that the submitted list is the same length as p +% \begin{macrocode} +\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}{}% + }% +% else + {}% +\listval{#5}{0}% +\ifthenelse{\value{COOL@listpointer}>1}% + {\setboolean{COOL@b@islist}{true}}% +% Else + {\setboolean{COOL@b@islist}{false}}% +% \end{macrocode} +% ensure that the submitted `b' list is the same length as q +% \begin{macrocode} +\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'}% + }% +% else + {}% +% troubleshoot +\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}% + }% +% else + {}% +\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}% + }% +% else + {}% +% \end{macrocode} +% First print the ${}_p F_q$ +% \begin{macrocode} +{}_{#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% + }% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\RegHypergeometric} +% Regularized hypergeometric function $\RegHypergeometric{p}{q}{a}{b}{x}$ +% \begin{macrocode} + \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}}% +% Else + {\setboolean{COOL@p@isint}{false}}% +\isint{#3}% +\ifthenelse{\boolean{COOL@isint}}% + {\setboolean{COOL@q@isint}{true}}% +% Else + {\setboolean{COOL@q@isint}{false}}% +\listval{#4}{0}% +\ifthenelse{\value{COOL@listpointer}>1}% + {\setboolean{COOL@a@islist}{true}}% +% Else + {\setboolean{COOL@a@islist}{false}}% +% \end{macrocode} +% ensure that the submitted list is the same length as p +% \begin{macrocode} +\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}{}% + }% +% else + {}% +\listval{#5}{0}% +\ifthenelse{\value{COOL@listpointer}>1}% + {\setboolean{COOL@b@islist}{true}}% +% Else + {\setboolean{COOL@b@islist}{false}}% +% \end{macrocode} +% ensure that the submitted `b' list is the same length as q +% \begin{macrocode} +\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'}% + }% +% else + {}% +% troubleshoot +\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}% + }% +% else + {}% +\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}% + }% +% else + {}% +% \end{macrocode} +% First print the ${}_p F_q$ +% \begin{macrocode} +{}_{#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% + }% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\AppellFOne} +% Appell Hypergeometric Function +% +% \begin{tabular}{ll} +% |\AppellFOne{a}{b_1,b_2}{c}{z_1,z_2}| & $\AppellFOne{a}{b_1,b_2}{c}{z_1,z_2}$ \\ +% \end{tabular} +% \begin{macrocode} + \newcommand{\COOL@notation@AppellFOneParen}{p} +\newcommand{\AppellFOne}[4]% + {F_{1}\!\COOL@decide@paren{AppellFOne}{#1; #2; #3; #4}} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\HypergeometricU} +% Tricomi confluent hypergeometric function +% +% \begin{tabular}{ll} +% |\HypergeometricU{a}{b}{z}| & $\HypergeometricU{a}{b}{z}$ \\ +% \end{tabular} +% \begin{macrocode} + \newcommand{\COOL@notation@HypergeometricUSymb}{U} +\newcommand{\HypergeometricU}[3]% +{\COOL@notation@HypergeometricUSymb\!\inp{#1, #2, #3}} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\COOL@MeijerG@anp@value} +% This macro is a decision maker for the |\MeijerG| macro. Despite the name it is used for both $p$ and $q$. +% It is called as +% +% |\COOL@MeijerG@anp@value| +% \DeleteShortVerb{\|} +% \marg{a\textnormal{\texttt{|}}b} +% \marg{n\textnormal{\texttt{|}}m} +% \marg{p\textnormal{\texttt{|}}q} +% \MakeShortVerb{\|} +% \begin{macrocode} +\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}}% + }% + }% + % else + {% + #1_1,\ldots,#1_{#2},#1_{#2+1},\dots,#1_{#3}% + }% + }% +% else + {% + \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}% + }% + % else + {% + #1_1,\ldots,#1_{#2},#1_{#2+1},\dots,#1_{#3}% + }% + }% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\MeijerG} +% |\MeijerG{|$a_1, \ldots, a_n$|}{|$a_{n+1}, \ldots, a_p$|}{|$b_1, \ldots, b_m$|}{|$b_{m+1}, \ldots, b_q$|}|\marg{x} +% +% \noindent |\MeijerG[|\meta{a list symbol},\meta{b list symbol}|]|\marg{n}\marg{p}\marg{m}\marg{q}\marg{x} +% +% \noindent |\MeijerG[|\meta{a list symbol}|]|\marg{n}\marg{p}|{|$b_1, \ldots, b_m$|}{|$b_{m+1}, \ldots, b_q$|}|\marg{x} +% +% \noindent |\MeijerG[,|\meta{b list symbol}|]{|$a_1, \ldots, a_n$|}{|$a_{n+1}, \ldots, a_p$|}|\marg{m}\marg{q}\marg{x} +% +% \hspace{0.25cm} +% +% \begin{tabular}{c} +% Meijer $G$-Function +% \\ +% \begin{tabular}{ll} +% |\MeijerG[a,b]{n}{p}{m}{q}{z}| & $\MeijerG[a,b]{n}{p}{m}{q}{z}$ \\ +% \end{tabular} +% \\ +% Meijer $G$-Function +% \\ +% \begin{tabular}{ll} +% |\MeijerG{1,2}{3}{a,b}{c,d}{z}| & $\MeijerG{1,2}{3}{a,b}{c,d}{z}$ \\ +% \end{tabular} +% \\ +% Generalized Meijer $G$-Function +% \\ +% \begin{tabular}{ll} +% |\MeijerG[a,b]{n}{p}{m}{q}{z,r}| & $\MeijerG[a,b]{n}{p}{m}{q}{z,r}$ \\ +% \end{tabular} +% \\ +% Generalized Meijer $G$-Function +% \\ +% \begin{tabular}{ll} +% |\MeijerG{1,2}{3}{a,b}{c,d}{z,r}| & $\MeijerG{1,2}{3}{a,b}{c,d}{z,r}$ +% \end{tabular} +% \end{tabular} +% \begin{macrocode} + \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}% + }% +% else + {% + }% +\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.% + }% +% else + {% + \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}% + }% + % else + {% + \setboolean{COOL@MeijerG@opt@one@blank}{false}% + }% + }% + \expandafter\COOL@MeijerG@sniffer#1\COOL@MeijerG@sniffer@end\relax% + \ifthenelse{\boolean{COOL@MeijerG@opt@one@blank}}% + {% +% \end{macrocode} +% this is |\MeijerG[,b]{a_1,...,a_n}{a_{n++},...,a_p}{m}{q}{x}| +% \begin{macrocode} + \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.% + }% + % else + {% + ^{#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.% + }% + }% + % else + {% +% \end{macrocode} +% this is| \MeijerG[a]{n}{p}{b_1,...,b_m}{b_{m++},...,a_p}{x}| +% \begin{macrocode} + \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.% + }% + }% +}% +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Angular Momentum Functions} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\ClebschGordon} +% Clebsch-Gordon Coefficients +% +% \begin{tabular}{ll} +% |\ClebschGordon{j_1,m_1}{j_2,m_2}{j,m}| & $\ClebschGordon{j_1,m_1}{j_2,m_2}{j,m}$ \\ +% \end{tabular} +% +% \noindent \url{http://functions.wolfram.com/HypergeometricFunctions/ClebschGordan/} +% \begin{macrocode} +\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}% + }% +% else + {}% +\listval{#2}{0}% +\ifthenelse{\NOT \value{COOL@listpointer}=2}% + {% + \PackageError{cool}{`ClebschGordon' Invalid Argument}% + {Must have a comma separated list of length two}% + }% +% else + {}% +\listval{#3}{0}% +\ifthenelse{\NOT \value{COOL@listpointer}=2}% + {% + \PackageError{cool}{`ClebschGordon' Invalid Argument}% + {Must have a comma separated list of length two}% + }% +% else + {}% +\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.% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\ThreeJSymbol} +% Wigner 3-j Symbol +% +% \begin{tabular}{ll} +% |\ThreeJSymbol{j_1,m_1}{j_2,m_2}{j_3,m_3}| & $\ThreeJSymbol{j_1,m_1}{j_2,m_2}{j_3,m_3}$ \\ +% \end{tabular} +% +% \noindent \url{http://functions.wolfram.com/HypergeometricFunctions/ThreeJSymbol/} +% \begin{macrocode} +\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}% + }% +% else + {}% +\listval{#2}{0}% +\ifthenelse{\NOT \value{COOL@listpointer}=2}% + {% + \PackageError{cool}{`ThreeJSymbol' Invalid Argument}% + {Must have comma separated list of length 2}% + }% +% else + {}% +\listval{#3}{0}% +\ifthenelse{\NOT \value{COOL@listpointer}=2}% + {% + \PackageError{cool}{`ThreeJSymbol' Invalid Argument}% + {Must have comma separated list of length 2}% + }% +% else + {}% +\mathchoice{% +% displaystyle +\inp{\!% + \begin{array}{ccc}% + \listval{#1}{1} & \listval{#2}{1} & \listval{#3}{1} \\% + \listval{#1}{2} & \listval{#2}{2} & \listval{#3}{2} + \end{array}% + \!}% + }% + {% +% inline +\inp{\!% + {\listval{#1}{1} \@@atop \listval{#1}{2}}% + {\listval{#2}{1} \@@atop \listval{#2}{2}}% + {\listval{#3}{1} \@@atop \listval{#3}{2}}% + \!}% + }% + {% +% subscript +\inp{\!% + {\listval{#1}{1} \@@atop \listval{#1}{2}}% + {\listval{#2}{1} \@@atop \listval{#2}{2}}% + {\listval{#3}{1} \@@atop \listval{#3}{2}}% + \!}% + }% + {% +% subsubscript +\inp{\!% + {\listval{#1}{1} \@@atop \listval{#1}{2}}% + {\listval{#2}{1} \@@atop \listval{#2}{2}}% + {\listval{#3}{1} \@@atop \listval{#3}{2}}% + \!}% + }% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\SixJSymbol} +% Racah 6-j Symbol +% +% \begin{tabular}{ll} +% |\SixJSymbol{j_1,j_2,j_3}{j_4,j_5,j_6}| & $\SixJSymbol{j_1,j_2,j_3}{j_4,j_5,j_6}$ \\ +% \end{tabular} +% +% \url{http://functions.wolfram.com/HypergeometricFunctions/SixJSymbol/} +% \begin{macrocode} +\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}% + }% +%else + {}% +\listval{#2}{0}% +\ifthenelse{\NOT \value{COOL@listpointer}=3}% + {% + \PackageError{cool}{`SixJSymbol' Invalid Argument}% + {Must have a comma separated list of length 3}% + }% +%else + {}% +\mathchoice{% +% displaystyle +\inbr{\!% +\begin{array}{ccc}% +\listval{#1}{1} & \listval{#1}{2} & \listval{#1}{3} \\% +\listval{#2}{1} & \listval{#2}{2} & \listval{#2}{3}% +\end{array}% + \!}% + }% + {% +% inline +\inbr{\!% + {\listval{#1}{1} \@@atop \listval{#2}{1}}% + {\listval{#1}{2} \@@atop \listval{#2}{2}}% + {\listval{#1}{3} \@@atop \listval{#2}{3}}% + \!}% + }% + {% +% superscript +\inbr{\!% + {\listval{#1}{1} \@@atop \listval{#2}{1}}% + {\listval{#1}{2} \@@atop \listval{#2}{2}}% + {\listval{#1}{3} \@@atop \listval{#2}{3}}% + \!}% + }% + {% +% supersuperscript +\inbr{\!% + {\listval{#1}{1} \@@atop \listval{#2}{1}}% + {\listval{#1}{2} \@@atop \listval{#2}{2}}% + {\listval{#1}{3} \@@atop \listval{#2}{3}}% + \!}% + }% +} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Complete Elliptic Integrals} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\EllipticK} +% Complete Elliptic Integral of the First Kind +% +% \begin{tabular}{ll} +% |\EllipticK{x}| & $\EllipticK{x}$ \\ +% \end{tabular} +% \begin{macrocode} + \newcommand{\COOL@notation@EllipticKParen}{p} + \newcommand{\COOL@notation@EllipticKSymb}{K} +\newcommand{\EllipticK}[1]% + {\COOL@notation@EllipticKSymb\!\COOL@decide@paren{EllipticK}{#1}}% +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\EllipticE} +% Complete Elliptic Integral of the Second Kind +% +% \begin{tabular}{ll} +% |\EllipticE{x}| & $\EllipticE{x}$ \\ +% \end{tabular} +% \begin{macrocode} + \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}% + }% +% ElseIf +{ \ifthenelse{\value{COOL@listpointer} = 2}% + {% + \COOL@notation@EllipticESymb\!% + \COOL@decide@paren{EllipticE}% + {\COOL@EllipticE@arg@i \left| \, \COOL@EllipticE@arg@ii \!\!\right.}% + }% +% Else + {% + \PackageError{Invalid Argument}% + {`EllipticE' can only accept a comma separated list of length 1 or 2}% + }% +}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\EllipticPi} +% Complete Elliptic Integral of the Third Kind +% +% \begin{tabular}{ll} +% |\EllipticPi{n,m}| & $\EllipticPi{n,m}$ \\ +% \end{tabular} +% \begin{macrocode} + \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.}% + }% +% ElseIf +{ \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.% + }% + }% +% Else + {% + \PackageError{cool}{Invalid Argument}% + {`EllipticPi' can only accept a comma separated list of length 2 or 3}% + }% +}% +} +% \end{macrocode} +% \end{macro} +% +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Incomplete Elliptic Integrals} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\EllipticF} +% \begin{macro}{\IncEllipticF} +% Incomplete Elliptic Integral of the First Kind +% +% \begin{tabular}{ll} +% |\EllipticF{z,m}| & $\EllipticF{z,m}$ \\ +% |\IncEllipticF{z}{m}| & $\IncEllipticF{z}{m}$ \\ +% \end{tabular} +% \begin{macrocode} + \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.}% + }% +% Else + {% + \PackageError{cool}{Invalid Argument}% + {`EllipticF' can only accept a comma separated list of length 2}% + }% +} +\newcommand{\IncEllipticF}[2]{\EllipticF{#1,#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% \begin{macro}{\IncEllipticE} +% Incomplete Elliptic Integral of the Second Kind +% +% \begin{tabular}{ll} +% |\IncEllipticE{z}{m}| & $\IncEllipticE{z}{m}$ \\ +% |\EllipticE{z,m}| & $\EllipticE{z,m}$ +% \end{tabular} +% \begin{macrocode} +\newcommand{\IncEllipticE}[2]{\EllipticE{#1,#2}} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\IncEllipticPi} +% \begin{macro}{\EllipticPi} +% Incomplete Elliptic Integral of the Third Kind +% +% \begin{tabular}{ll} +% |\IncEllipticPi{n}{z}{m}| & $\IncEllipticPi{n}{z}{m}$ \\ +% |\EllipticPi{n,z,m}| & $\EllipticPi{n,z,m}$ +% \end{tabular} +% \begin{macrocode} +\newcommand{\IncEllipticPi}[3]{\EllipticPi{#1,#2,#3}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% \begin{macro}{\JacobiZeta} +% Jacobi Zeta Function +% +% \begin{tabular}{ll} +% |\JacobiZeta{z}{m}| & $\JacobiZeta{z}{m}$ \\ +% \end{tabular} +% \begin{macrocode} + \newcommand{\COOL@notation@JacobiZetaParen}{p} + \newcommand{\COOL@notation@JacobiZetaSymb}{Z} +\newcommand{\JacobiZeta}[2]{% +\COOL@notation@JacobiZetaSymb +\!\COOL@decide@paren{JacobiZeta}{#1 \left| \, #2 \right.\!\!}% +} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Jacobi Theta Functions} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\EllipticTheta} +% \begin{macro}{\JacobiTheta} +% Jacobi Theta Functions +% +% \begin{tabular}{ll} +% |\JacobiTheta{1}{z}{q}| & $\JacobiTheta{1}{z}{q}$ \\ +% |\JacobiTheta{2}{z}{q}| & $\JacobiTheta{2}{z}{q}$ \\ +% |\JacobiTheta{3}{z}{q}| & $\JacobiTheta{3}{z}{q}$ \\ +% |\JacobiTheta{4}{z}{q}| & $\JacobiTheta{4}{z}{q}$ \\ +% \end{tabular} +% \begin{macrocode} + \newcommand{\COOL@notation@EllipticThetaParen}{p} +\newcommand{\EllipticTheta}[3]% + {\vartheta_{#1}\!\COOL@decide@paren{EllipticTheta}{#2, #3}} +\newcommand{\JacobiTheta}[3]{\EllipticTheta{#1}{#2}{#3}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Neville Theta Functions} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\NevilleThetaC} +% Neville Theta Function, |\NevilleThetaC{z}{m}|, $\NevilleThetaC{z}{m}$ +% \begin{macrocode} + \newcommand{\COOL@notation@NevilleThetaCParen}{p} +\newcommand{\NevilleThetaC}[2]{% + \vartheta_{c}\!\COOL@decide@paren{NevilleThetaC}% + {#1 \left| \, #2 \right.\!\!}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\NevilleThetaD} +% Neville Theta Function, |\NevilleThetaD{z}{m}|, $\NevilleThetaD{z}{m}$ +% \begin{macrocode} + \newcommand{\COOL@notation@NevilleThetaDParen}{p} +\newcommand{\NevilleThetaD}[2]{% + \vartheta_{d}\!\COOL@decide@paren{NevilleThetaD}% + {#1 \left| \, #2 \right.\!\!}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\NevilleThetaN} +% Neville Theta Function, |\NevilleThetaN{z}{m}|, $\NevilleThetaN{z}{m}$ +% \begin{macrocode} + \newcommand{\COOL@notation@NevilleThetaNParen}{p} +\newcommand{\NevilleThetaN}[2]{% + \vartheta_{n}\!\COOL@decide@paren{NevilleThetaN}% + {#1 \left| \, #2 \right.\!\!}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\NevilleThetaS} +% Neville Theta Function, |\NevilleThetaS{z}{m}|, $\NevilleThetaS{z}{m}$ +% \begin{macrocode} + \newcommand{\COOL@notation@NevilleThetaSParen}{p} +\newcommand{\NevilleThetaS}[2]{% + \vartheta_{s}\!\COOL@decide@paren{NevilleThetaS}% + {#1 \left| \, #2 \right.\!\!}% +} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Weierstrass Functions} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\WeierstrassP} +% \begin{macro}{\WeiP} +% Weierstrass Elliptic Function +% +% \begin{tabular}{ll} +% |\WeierstrassP{z}{g_2,g_3}| & $\WeierstrassP{z}{g_2,g_3}$ \\ +% |\WeiP{z}{g_2,g_3}| & $\WeiP{z}{g_2,g_3}$ \\ +% \end{tabular} +% \begin{macrocode} + \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}% + } +% Else + {% + \wp\!\COOL@decide@paren{WeierstrassP}{#1; #2} + }% +} +\newcommand{\WeiP}[2]{\WeierstrassP{#1}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\WeierstrassPInv} +% \begin{macro}{\WeiPInv} +% Inverse of Weierstrass Elliptic Function +% +% \begin{tabular}{lll} +% Inverse & |\WeiPInv{z}{g_2,g_3}| & $\WeiPInv{z}{g_2,g_3}$ +% \\ +% Generalized Inverse & |\WeiPInv{z_1,z_2}{g_2,g_3}| & $\WeiPInv{z_1,z_2}{g_2,g_3}$ +% \\ +% \end{tabular} +% \begin{macrocode} + \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}% + } +% Else + { + \listval{#1}{0}% + \ifthenelse{\value{COOL@listpointer} = 1}% + {% + \wp^{-1}\!\COOL@decide@paren{WeierstrassPInv}{#1; #2}% + }% + % ElseIf + { \ifthenelse{\value{COOL@listpointer} = 2}% + {% + \wp^{-1}\!\COOL@decide@paren{WeierstrassPInv}{#1; #2}% + }% + % Else + {% + \PackageError{cool}{Invalid Argument}% + {`WeierstrassPInv' first argument must be% + a comma separate list of length 1 or 2}% + }}% + }% +} +\newcommand{\WeiPInv}[2]{\WeierstrassPInv{#1}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\WeierstrassPGenInv} +% Generalized Inverse of Weierstrass Elliptic Function +% +% |\WierstrassPGenInv{z_1}{z_2}{g_1}{g_2}| +% \begin{macrocode} +\newcommand{\WeierstrassPGenInv}[4]{\WeierstrassPInv{#1,#2}{#3,#4}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\WeierstrassSigma} +% \begin{macro}{\WeiSigma} +% Wierstrass Sigma Function +% +% \begin{tabular}{lll} +% Sigma & |\WeierstrassSigma{z}{g_2,g_3}| & $\WeierstrassSigma{z}{g_2,g_3}$ \\ +% & |\WeiSigma{z}{g_2,g_3}| & $\WeiSigma{z}{g_2,g_3}$ \\ +% Associated Sigma & |\WeierstrassSigma{n,z}{g_2,g_3}| & $\WeierstrassSigma{n,z}{g_2,g_3}$ \\ +% & |\WeiSigma{n,z}{g_2,g_3}| & $\WeiSigma{n,z}{g_2,g_3}$ \\ +% \end{tabular} +% \begin{macrocode} +\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}% + }% +% Else + {% + \listval{#1}{0}% + \ifthenelse{\value{COOL@listpointer} = 1}% + {% + \sigma\!\inp{#1; #2}% + }% + % ElseIf + { \ifthenelse{\value{COOL@listpointer} = 2}% + {% + \sigma_{\COOL@WeiSigma@arg@z@i}\!\inp{\COOL@WeiSigma@arg@z@ii; #2}% + }% + % Else + {% + \PackageError{cool}{Invalid Argument}% + {`WeierstrassSigma' first argument must be% + a comma separated list of length 1 or 2}% + }}% + }% +} +\newcommand{\WeiSigma}[2]{\WeierstrassSigma{#1}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\AssocWeierstrassSigma} +% Associated Weierstrass Sigma Function +% +% \begin{tabular}{ll} +% |\AssocWeierstrassSigma{n}{z}{g_2}{g_3}| & $\AssocWeierstrassSigma{n}{z}{g_2}{g_3}$ \\ +% |\WeiSigma{n,z}{g_2,g_3}| & $\WeiSigma{n,z}{g_2,g_3}$ +% \end{tabular} +% \begin{macrocode} +\newcommand{\AssocWeierstrassSigma}[4]{\WeierstrassSigma{#1,#2}{#3,#4}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\WeierstrassZeta} +% \begin{macro}{\WeiZeta} +% Weierstrass Zeta Function +% +% \begin{tabular}{ll} +% |\WeierstrassZeta{z}{g_2,g_3}| & $\WeierstrassZeta{z}{g_2,g_3}$ \\ +% |\WeiZeta{z}{g_2,g_3}| & $\WeiZeta{z}{g_2,g_3}$ \\ +% \end{tabular} +% \begin{macrocode} + \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}% + }% +% Else + {% + \zeta\!\COOL@decide@paren{WeierstrassZeta}{#1; #2}% + }% +} +\newcommand{\WeiZeta}[2]{\WeierstrassZeta{#1}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\WeierstrassHalfPeriods} +% \begin{macro}{\WeiHalfPeriods} +% Weierstrass half-periods +% +% \begin{tabular}{ll} +% |\WeierstrassHalfPeriods{g_2,g_3}| & $\WeierstrassHalfPeriods{g_2,g_3}$ \\ +% |\WeiHalfPeriods{g_2,g_3}| & $\WeiHalfPeriods{g_2,g_3}$ \\ +% \end{tabular} +% \begin{macrocode} +\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}% + }% +% Else + {% + \{ \omega_1\!\inp{#1}, \omega_3\!\inp{#1} \}% + }% +} +\newcommand{\WeiHalfPeriods}[1]{\WeierstrassHalfPeriods{#1}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\WeierstrassInvariants} +% Weierstrass Invariants +% +% \noindent +% \begin{tabular}{ll} +% |\WeierstrassInvariants{\omega_1,\omega_3}| & $\WeierstrassInvariants{\omega_1,\omega_3}$ \\ +% |\WeiInvars{\omega_1,\omega_3}| & $\WeiInvars{\omega_1,\omega_3}$ \\ +% \end{tabular} +% \begin{macrocode} +\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}% + }% +% Else + {% + \{ g_2\!\inp{#1}, g_3\!\inp{#1} \}% + }% +} +\newcommand{\WeiInvars}[1]{\WeierstrassInvariants{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\COOL@hideOnSF} +% Used to hide inputs or other when style is |sf| +% +% \begin{tabular}{ll} +% |sf| & short form \\ +% |ff| & full form +% \end{tabular} +% \begin{macrocode} + \newcommand{\COOL@hideOnSF}[2] + {% + \ifthenelse{ \equal{\csname COOL@notation@#1\endcsname}{sf} }% + {}% + % Else + {#2}% + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\WeierstrassPHalfPeriodValues} +% \begin{macro}{\WeiPHalfPeriodVal} +% Weierstrass elliptic function values at half-periods +% +% \begin{tabular}{c} +% |\Style{WeierstrassPHalfPeriodValuesDisplay=sf}| (Default) \\ +% |\WeierstrassPHalfPeriodValues{g_2,g_3}| \\ +% |\WeiPHalfPeriodVal{g_2,g_3}| \\ +% $\WeiPHalfPeriodVal{g_2,g_3}$ \\ +% \\ +% |\Style{WeierstrassPHalfPeriodValuesDisplay=ff}| +% \Style{WeierstrassPHalfPeriodValuesDisplay=ff}% \\ +% |\WeierstrassPHalfPeriodValues{g_2,g_3}| \\ +% |\WeiPHalfPeriodVal{g_2,g_3}| \\ +% $\WeiPHalfPeriodVal{g_2,g_3}$ +% \end{tabular} +% \begin{macrocode} + \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}% + }% +% Else + {% + \{ 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}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\WeierstrassZetaHalfPeriodValues} +% \begin{macro}{\WeiZetaHalfPeriodVal} +% Weierstrass zeta function values at half-periods +% +% \begin{tabular}{c} +% |\Style{WeierstrassZetaHalfPeriodValuesDisplay=sf}| (Default) \\ +% |\WeierstrassZetaHalfPeriodValues{g_2,g_3}| \\ +% |\WeiZetaHalfPeriodVal{g_2,g_3}| \\ +% $\WeiZetaHalfPeriodVal{g_2,g_3}$ \\ +% \\ +% |\Style{WeierstrassZetaHalfPeriodValuesDisplay=ff}| +% \Style{WeierstrassZetaHalfPeriodValuesDisplay=ff}% \\ +% |\WeierstrassZetaHalfPeriodValues{g_2,g_3}| \\ +% |\WeiZetaHalfPeriodVal{g_2,g_3}| \\ +% $\WeiZetaHalfPeriodVal{g_2,g_3}$ +% \end{tabular} +% \begin{macrocode} + \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}% + }% +% Else + {% + \{% + \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}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Jacobi Functions} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\JacobiAmplitude} +% Amplitude, |\JacobiAmplitude{z}{m}|, $\JacobiAmplitude{z}{m}$ +% \begin{macrocode} + \newcommand{\COOL@notation@JacobiAmplitudeParen}{p} + \DeclareMathOperator{\JacobiAmplitudeSymb}{am} +\newcommand{\JacobiAmplitude}[2]{% +\JacobiAmplitudeSymb\!\COOL@decide@paren% + {JacobiAmplitude}{#1 \left| \, #2 \right.\!\!}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\JacobiCD} +% \begin{macro}{\JacobiCDInv} +% Jacobi elliptic function and its inverse +% +% \begin{tabular}{ll} +% |\JacobiCD{z}{m}| & $\JacobiCD{z}{m}$ \\ +% |\JacobiCDInv{z}{m}| & $\JacobiCDInv{z}{m}$ \\ +% \end{tabular} +% \begin{macrocode} + \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.\!\!}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\JacobiCN} +% \begin{macro}{\JacobiCNInv} +% Jacobi elliptic function and its inverse +% +% \begin{tabular}{ll} +% |\JacobiCN{z}{m}| & $\JacobiCN{z}{m}$ \\ +% |\JacobiCNInv{z}{m}| & $\JacobiCNInv{z}{m}$ \\ +% \end{tabular} +% \begin{macrocode} + \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.\!\!}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\JacobiCS} +% \begin{macro}{\JacobiCSInv} +% Jacobi elliptic function and its inverse +% +% \begin{tabular}{ll} +% |\JacobiCS{z}{m}| & $\JacobiCS{z}{m}$ \\ +% |\JacobiCSInv{z}{m}| & $\JacobiCSInv{z}{m}$ \\ +% \end{tabular} +% \begin{macrocode} + \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.\!\!}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\JacobiDC} +% \begin{macro}{\JacobiDCInv} +% Jacobi elliptic function and its inverse +% +% \begin{tabular}{ll} +% |\JacobiDC{z}{m}| & $\JacobiDC{z}{m}$ \\ +% |\JacobiDCInv{z}{m}| & $\JacobiDCInv{z}{m}$ \\ +% \end{tabular} +% \begin{macrocode} + \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.\!\!}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\JacobiDN} +% \begin{macro}{\JacobiDNInv} +% Jacobi elliptic function and its inverse +% +% \begin{tabular}{ll} +% |\JacobiDN{z}{m}| & $\JacobiDN{z}{m}$ \\ +% |\JacobiDNInv{z}{m}| & $\JacobiDNInv{z}{m}$ \\ +% \end{tabular} +% \begin{macrocode} + \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.\!\!}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\JacobiDS} +% \begin{macro}{\JacobiDSInv} +% Jacobi elliptic function and its inverse +% +% \begin{tabular}{ll} +% |\JacobiDS{z}{m}| & $\JacobiDS{z}{m}$ \\ +% |\JacobiDSInv{z}{m}| & $\JacobiDSInv{z}{m}$ \\ +% \end{tabular} +% \begin{macrocode} + \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.\!\!}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\JacobiNC} +% \begin{macro}{\JacobiNCInv} +% Jacobi elliptic function and its inverse +% +% \begin{tabular}{ll} +% |\JacobiNC{z}{m}| & $\JacobiNC{z}{m}$ \\ +% |\JacobiNCInv{z}{m}| & $\JacobiNCInv{z}{m}$ \\ +% \end{tabular} +% \begin{macrocode} + \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.\!\!}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\JacobiND} +% \begin{macro}{\JacobiNDinv} +% Jacobi elliptic function and its inverse +% +% \begin{tabular}{ll} +% |\JacobiND{z}{m}| & $\JacobiND{z}{m}$ \\ +% |\JacobiNDInv{z}{m}| & $\JacobiNDInv{z}{m}$ \\ +% \end{tabular} +% \begin{macrocode} + \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.\!\!}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\JacobiNS} +% \begin{macro}{\JacobiNSInv} +% Jacobi elliptic function and its inverse +% +% \begin{tabular}{ll} +% |\JacobiNS{z}{m}| & $\JacobiNS{z}{m}$ \\ +% |\JacobiNSInv{z}{m}| & $\JacobiNSInv{z}{m}$ \\ +% \end{tabular} +% \begin{macrocode} + \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.\!\!}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\JacobiSC} +% \begin{macro}{\JacobiSCInv} +% Jacobi elliptic function and its inverse +% +% \begin{tabular}{ll} +% |\JacobiSC{z}{m}| & $\JacobiSC{z}{m}$ \\ +% |\JacobiSCInv{z}{m}| & $\JacobiSCInv{z}{m}$ \\ +% \end{tabular} +% \begin{macrocode} + \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.\!\!}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\JacobiSD} +% \begin{macro}{\JacobiSDInv} +% Jacobi elliptic function and its inverse +% +% \begin{tabular}{ll} +% |\JacobiSD{z}{m}| & $\JacobiSD{z}{m}$ \\ +% |\JacobiSDInv{z}{m}| & $\JacobiSDInv{z}{m}$ \\ +% \end{tabular} +% \begin{macrocode} + \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.\!\!}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\JacobiSN} +% \begin{macro}{\JacobiSNInv} +% Jacobi elliptic function and its inverse +% +% \begin{tabular}{ll} +% |\JacobiSN{z}{m}| & $\JacobiSN{z}{m}$ \\ +% |\JacobiSNInv{z}{m}| & $\JacobiSNInv{z}{m}$ \\ +% \end{tabular} +% \begin{macrocode} + \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.\!\!}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Modular Functions} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\DedekindEta} +% Dedekind eta modular function, |\DedekindEta{z}|, $\DedekindEta{z}$ +% \begin{macrocode} + \newcommand{\COOL@notation@DedekindEtaParen}{p} +\newcommand{\DedekindEta}[1]{\eta\!\COOL@decide@paren{DedekindEta}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\KleinInvariantJ} +% Klein invariant modular function, |\KleinInvariantJ{z}|, $\KleinInvariantJ{z}$ +% \begin{macrocode} + \newcommand{\COOL@notation@KleinInvariantJParen}{p} +\newcommand{\KleinInvariantJ}[1]% + {J\!\COOL@decide@paren{KleinInvariantJ}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ModularLambda} +% Modular lambda function, |\ModularLambda{z}|, $\ModularLambda{z}$ +% \begin{macrocode} + \newcommand{\COOL@notation@ModularLambdaParen}{p} +\newcommand{\ModularLambda}[1]% + {\lambda\!\COOL@decide@paren{ModularLambda}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\EllipticNomeQ} +% \begin{macro}{\EllipticNomeQInv} +% Nome and its inverse +% +% \begin{tabular}{ll} +% |\EllipticNomeQ{m}| & $\EllipticNomeQ{m}$ \\ +% |\EllipticNomeQInv{m}| & $\EllipticNomeQInv{m}$ \\ +% \end{tabular} +% \begin{macrocode} + \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}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Arithmetic Geometric Mean} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\ArithGeoMean} +% \begin{macro}{\AGM} +% Arithmetic Geometric Mean +% +% \begin{tabular}{ll} +% |\ArithGeoMean{a}{b}| & $\ArithGeoMean{a}{b}$ \\ +% |\AGM{a}{b}| & $\AGM{a}{b}$ \\ +% \end{tabular} +% \begin{macrocode} + \newcommand{\COOL@notation@ArithGeoMeanParen}{p} + \DeclareMathOperator{\ArithGeoMeanSymb}{agm} +\newcommand{\ArithGeoMean}[2]% + {\ArithGeoMeanSymb\!\COOL@decide@paren{ArithGeoMean}{#1, #2}} +\newcommand{\AGM}[2]{\ArithGeoMean{#1}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Elliptic Exp and Log} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\EllipticExp} +% \begin{macro}{\EExp} +% Elliptic exponential +% +% \begin{tabular}{ll} +% |\EllipticExp{z}{a,b}| & $\EllipticExp{z}{a,b}$ \\ +% |\EExp{z}{a,b}| & $\EExp{z}{a,b}$ \\ +% \end{tabular} +% \begin{macrocode} + \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}% + }% +% Else + {% + \EllipticExpSymb\!\COOL@decide@paren{EllipticExp}{#1; #2}% + }% +} +\newcommand{\EExp}[2]{\EllipticExp{#1}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\EllipticLog} +% \begin{macro}{\ELog} +% Elliptic logarithm +% +% \begin{tabular}{ll} +% |\EllipticLog{z_1,z_2}{a,b}| & $\EllipticLog{z_1,z_2}{a,b}$ \\ +% |\ELog{z_1,z_2}{a,b}| & $\ELog{z_1,z_2}{a,b}$ \\ +% \end{tabular} +% \begin{macrocode} + \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}% + }% +% Else + {% + \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}% + }% + % Else + {% + \EllipticLogSymb\!\COOL@decide@paren{EllipticLog}{#1; #2}% + }% + }% +} +\newcommand{\ELog}[2]{\EllipticLog{#1}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Zeta Functions} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\RiemannZeta} +% Riemann Zeta Function +% +% \begin{tabular}{ll} +% |\RiemannZeta{s}| & $\RiemannZeta{s}$ \\ +% |\Zeta{s}| & $\Zeta{s}$ +% \end{tabular} +% \begin{macrocode} +\newcommand{\RiemannZeta}[1]{\Zeta{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\HurwitzZeta} +% Hurwitz Zeta Function +% +% \begin{tabular}{ll} +% |\HurwitzZeta{s}{a}| & $\HurwitzZeta{s}{a}$ \\ +% |\Zeta{s,a}| & $\Zeta{s,a}$ +% \end{tabular} +% \begin{macrocode} +\newcommand{\HurwitzZeta}[2]{\Zeta{#1,#2}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Zeta} +% Riemann and Hurwitz Zeta +% +% \begin{tabular}{lll} +% Riemann Zeta & |\Zeta{s}| & $\Zeta{s}$ \\ +% Hurwitz Zeta & |\Zeta{s,a}| & $\Zeta{s,a}$ +% \end{tabular} +% \begin{macrocode} + \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}% + }% +% else + {% + \ifthenelse{\value{COOL@listpointer} = 1}% + {% + \zeta\!\COOL@decide@paren{Zeta}{#1}% + }% + % else + {% + \PackageError{cool}{`Zeta' Invalid Argument}% + {the Zeta function can only accept% + a comma deliminated list of length 1 or 2} + }% + }% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\RiemannSiegelTheta} +% Riemann-Siegel Theta Function, |\RiemannSiegelTheta{z}|, $\RiemannSiegelTheta{z}$ +% \begin{macrocode} + \newcommand{\COOL@notation@RiemannSiegelThetaParen}{p} +\newcommand{\RiemannSiegelTheta}[1]% + {\vartheta\!\COOL@decide@paren{RiemannSiegelTheta}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\RiemannSiegelZ} +% Riemann-Siegel Z Function, |\RiemannSiegelZ{z}|, $\RiemannSiegelZ{z}$ +% \begin{macrocode} + \newcommand{\COOL@notation@RiemannSiegelZParen}{p} +\newcommand{\RiemannSiegelZ}[1]% + {Z\!\COOL@decide@paren{RiemannSiegelZ}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\StieltjesGamma} +% Stieltjes Constant, |\StieltjesGamma{n}|, $\StieltjesGamma{n}$ +% \begin{macrocode} +\newcommand{\StieltjesGamma}[1]{\gamma_{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\LerchPhi} +% Lerch transcendent, |\LerchPhi{z}{s}{a}|, $\LerchPhi{z}{s}{a}$ +% \begin{macrocode} + \newcommand{\COOL@notation@LerchPhiParen}{p} +\newcommand{\LerchPhi}[3]{\Phi\!\COOL@decide@paren{LerchPhi}{#1,#2,#3}} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Polylogarithms} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\NielsenPolyLog} +% Nielsen Polylogarithm, |\NielsenPolyLog{\nu}{p}{z}|, $\NielsenPolyLog{\nu}{p}{z}$ +% \begin{macrocode} + \newcommand{\COOL@notation@NielsenPolyLogParen}{p} +\newcommand{% +\NielsenPolyLog}[3]{S_{#1}^{#2}\!% + \COOL@decide@paren{NielsenPolyLog}{#3}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\PolyLog} +% Polylogarithm +% +% \begin{tabular}{lll} +% Nielsen PolyLog & |\PolyLog{\nu,p,z}| & $\PolyLog{\nu,p,z}$ \\ +% PolyLog & |\PolyLog{\nu,z}| & $\PolyLog{\nu,z}$ \\ +% \end{tabular} +% \begin{macrocode} + \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}% + }% +% else + {% + \ifthenelse{ \value{COOL@listpointer} = 2 }% + {% + \PolyLogSymb_{\COOL@PolyLog@arg@i}\!% + \COOL@decide@paren{PolyLog}{\COOL@PolyLog@arg@ii}% + }% + % else + {% + \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)}% + }% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\DiLog} +% Dilogarithm (alias for |\PolyLog{2,x}|); |\DiLog{x}|, $\DiLog{x}$ +% \begin{macrocode} +\newcommand{\DiLog}[1]{\PolyLog{2,#1}} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Mathieu Functions} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\MathieuC} +% Even Mathieu Function, |\MathieuC{a}{q}{z}|, $\MathieuC{a}{q}{z}$ +% \begin{macrocode} + \newcommand{\COOL@notation@MathieuCParen}{p} + \DeclareMathOperator{\MathieuCSymb}{Ce} +\newcommand{\MathieuC}[3]% + {\MathieuCSymb\!\COOL@decide@paren{MathieuC}{#1,#2,#3}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\MathieuS} +% Odd Mathieu Function, |\MathieuS{a}{q}{z}|, $\MathieuS{a}{q}{z}$ +% \begin{macrocode} + \newcommand{\COOL@notation@MathieuSParen}{p} + \DeclareMathOperator{\MathieuSSymb}{Se} +\newcommand{\MathieuS}[3]% + {\mathord{\MathieuSSymb}\!\COOL@decide@paren{MathieuS}{#1,#2,#3}} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Mathieu Characteristics} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\MathieuCharacteristicA} +% \begin{macro}{\MathieuCharisticA} +% Characteristic Value of Even Mathieu Function +% +% \begin{tabular}{ll} +% |\MathieuCharacteristicA{r}{q}| & $\MathieuCharacteristicA{r}{q}$ \\ +% |\MathieuCharisticA{r}{q}| & $\MathieuCharisticA{r}{q}$ \\ +% \end{tabular} +% \begin{macrocode} + \newcommand{\COOL@notation@MathieuCharacteristicAParen}{p} +\newcommand{\MathieuCharacteristicA}[2]% + {a_{#1}\!\COOL@decide@paren{MathieuCharacteristicA}{#2}} +\newcommand{\MathieuCharisticA}[2]{\MathieuCharacteristicA{#1}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\MathieuCharacteristicB} +% \begin{macro}{\MathieuCharisticB} +% Characteristic Value of Even Mathieu Fucntion +% +% \begin{tabular}{ll} +% |\MathieuCharacteristicB{r}{q}| & $\MathieuCharacteristicB{r}{q}$ \\ +% |\MathieuCharisticB{r}{q}| & $\MathieuCharisticB{r}{q}$ \\ +% \end{tabular} +% \begin{macrocode} + \newcommand{\COOL@notation@MathieuCharacteristicBParen}{p} +\newcommand{\MathieuCharacteristicB}[2]% + {b_{#1}\!\COOL@decide@paren{MathieuCharacteristicB}{#2}} +\newcommand{\MathieuCharisticB}[2]{\MathieuCharacteristicB{#1}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\MathieuCharacteristicExponent} +% \begin{macro}{\MathieuCharisticExp} +% Characteristic Exponent of a Mathieu Fucntion +% +% \begin{tabular}{ll} +% |\MathieuCharateristicExponent{a}{q}| & $\MathieuCharacteristicExponent{a}{q}$ \\ +% |\MathieuCharisticExp{a}{q}| & $\MathieuCharisticExp{a}{q}$ \\ +% \end{tabular} +% \begin{macrocode} + \newcommand{\COOL@notation@MathieuCharacteristicExponentParen}{p} +\newcommand{\MathieuCharacteristicExponent}[2]% + {r\!\COOL@decide@paren{MathieuCharacteristicExponent}{#1,#2}} +\newcommand{\MathieuCharisticExp}[2]% + {\MathieuCharacteristicExponent{#1}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Complex variables} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\Abs} +% Absolute value, |\Abs{z}|, $\Abs{z}$ +% \begin{macrocode} +\newcommand{\Abs}[1]{ \left|#1\right| } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Arg} +% Argument, |\Arg{z}|, $\Arg{z}$ +% \begin{macrocode} +\newcommand{\Arg}[1]{ \arg\!\inp{#1} } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Conjugate} +% \begin{macro}{\Conj} +% Complex Conjugate +% +% \begin{tabular}{ll} +% |\Conj{z}| & $\Conj{z}$ \\ +% |\Conjugate{z}| & $\Conjugate{z}$ \\ +% \end{tabular} +% \begin{macrocode} + \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}% + }% +% ElseIf +{ \ifthenelse{\equal{\COOL@notation@Conjugate}{overline}}% + {% + \overline{#1}% + }% +% ElseIf +{ \ifthenelse{\equal{\COOL@notation@Conjugate}{star}}% + {% + \COOL@decide@paren{Conjugate}{#1}^*% + }% +% Else + {% + \PackageError{cool}{Invalid Option Sent}% + {`Conjugate' can only be set at `star', `bar', or `overline'}% + }% +}}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\Real} +% Real Part, |\Real{z}|, $\Real{z}$ +% \begin{macrocode} + \newcommand{\COOL@notation@RealParen}{none} + \DeclareMathOperator{\RealSymb}{Re} +\newcommand{\Real}[1]{% +% \end{macrocode} +% we put a space if there is no parentheses, or leave it out if there are +% \begin{macrocode} +\ifthenelse{\equal{\COOL@notation@ImagParen}{none}}% + {% + \RealSymb{#1}% + }% +% Else + {% + \RealSymb\!\COOL@decide@paren{Imag}{#1}% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Imag} +% Imaginary Part, |\Imag{z}|, $\Imag{z}$ +% \begin{macrocode} + \newcommand{\COOL@notation@ImagParen}{none} + \DeclareMathOperator{\ImagSymb}{Im} +\newcommand{\Imag}[1]{% +% \end{macrocode} +% we put a space if there is no parentheses, or leave it out if there are +% \begin{macrocode} +\ifthenelse{\equal{\COOL@notation@ImagParen}{none}}% + {% + \ImagSymb{#1}% + }% +% Else + {% + \ImagSymb\!\COOL@decide@paren{Imag}{#1}% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Sign} +% Sign function, |\Sign{x}|, $\Sign{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@SignParen}{p} +\newcommand{\Sign}[1]{\operatorname{sgn}\!\COOL@decide@paren{Sign}{#1}} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Number Theory Functions} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\FactorInteger} +% \begin{macro}{\Factors} +% Prime decomposition, |\Factors{n}|, $\Factors{n}$ +% \begin{macrocode} + \newcommand{\COOL@notation@FactorIntegerParen}{p} + \DeclareMathOperator{\FactorIntegerSymb}{factors} +\newcommand{\FactorInteger}[1]% + {\FactorIntegerSymb\!\COOL@decide@paren{FactorInteger}{#1}} +\newcommand{\Factors}[1]{\FactorInteger{#1}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\Divisors} +% Divisors, |\Divisors{n}|, $\Divisors{n}$ +% \begin{macrocode} + \newcommand{\COOL@notation@DivisorsParen}{p} + \DeclareMathOperator{\DivisorsSymb}{divisors} +\newcommand{\Divisors}[1]% + {\mathord{\DivisorsSymb}\!\COOL@decide@paren{Divisors}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Prime} +% The $n$th Prime, |\Prime{n}|, $\Prime{n}$ +% \begin{macrocode} + \newcommand{\COOL@notation@PrimeParen}{p} + \DeclareMathOperator{\PrimeSymb}{prime} +\newcommand{\Prime}[1]% + {\mathord{\PrimeSymb}\!\COOL@decide@paren{Prime}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\PrimePi} +% Prime counting function, |\PrimePi{x}|, $\PrimePi{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@PrimePiParen}{p} +\newcommand{\PrimePi}[1]{\pi\!\COOL@decide@paren{PrimePi}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\DivisorSigma} +% Sum of divisor powers, |\DivisorSigma{k}{n}|, $\DivisorSigma{k}{n}$ +% \begin{macrocode} + \newcommand{\COOL@notation@DivisorSigmaParen}{p} +\newcommand{\DivisorSigma}[2]% + {\sigma_{#1}\!\COOL@decide@paren{DivisorSigma}{#2}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\EulerPhi} +% Euler Totient Function, |\EulerPhi{x}|, $\EulerPhi{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@EulerPhiParen}{p} +\newcommand{\EulerPhi}[1]{\varphi\!\COOL@decide@paren{EulerPhi}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\MoebiusMu} +% Moebius Function, |\MoebiusMu{x}|, $\MoebiusMu{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@MoebiusMuParen}{p} +\newcommand{\MoebiusMu}[1]{\mu\!\COOL@decide@paren{MoebiusMu}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\JacobiSymbol} +% Jacobi Symbol, |\JacobiSymbol{n}{m}|, $\JacobiSymbol{n}{m}$ +% \begin{macrocode} +\newcommand{\JacobiSymbol}[2]{\inp{\frac{#1}{#2}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\CarmichaelLambda} +% Carmichael Lambda Function, |\CarmichaelLambda{x}|, $\CarmichaelLambda{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@CarmichaelLambdaParen}{p} +\newcommand{\CarmichaelLambda}[1]% + {\lambda\!\COOL@decide@paren{CarmichaelLambda}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\DigitCount} +% Count the digits of an integer n for a given base b +% +% \begin{tabular}{c} +% |\DigitCount{n}{b}| \\ +% $\DigitCount{n}{b}$ \\ +% \end{tabular} +% \begin{macrocode} +\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}% + \}% + }% +% else + {% + \{% + 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}% + \}% + }% +} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Generalized Functions} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\DiracDelta} +% Dirac Delta Function, |\DiracDelta{x}|, $\DiracDelta{x}$ +% \begin{macrocode} + \newcommand{\COOL@notation@DiracDeltaParen}{p} +\newcommand{\DiracDelta}[1]{\delta\!\COOL@decide@paren{DiracDelta}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\HeavisideStep} +% \begin{macro}{\UnitStep} +% Heaviside Step Function +% +% \begin{tabular}{ll} +% |\HeavisideStep{x}| & $\HeavisideStep{x}$ \\ +% |\UnitStep{x}| & $\UnitStep{x}$ \\ +% \end{tabular} +% \begin{macrocode} + \newcommand{\COOL@notation@HeavisideStepParen}{p} +\newcommand{\HeavisideStep}[1]% + {\theta\!\COOL@decide@paren{HeavisideStep}{#1}} +\newcommand{\UnitStep}[1]{\HeavisideStep{#1}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Calculus} +% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\COOL@notation@DDisplayFunc} +% \begin{macro}{\COOL@notation@DShorten} +% Both |\D| and |\pderiv| are controlled by these keys. +% +% |DDisplayFunc| controls how the function is displayed, it can take the values: +% +% \begin{tabular}{ll} +% inset & Display as $\frac{d f}{d x}$ \\ +% outset & Display as $\frac{d}{d x} f$ +% \end{tabular} +% +% |DShorten| is for multiple derivatives. it can take the values +% +% \begin{tabular}{ll} +% true & force derivatives to be consolidated, as in $\frac{d^2}{dx dy} f$ \\ +% false & expand derivatives as in $\frac{d}{dx} \frac{d}{dx} f$ +% \end{tabular} +% +% \begin{macrocode} + \newcounter{COOL@multideriv} + \newcommand{\COOL@notation@DDisplayFunc}{inset} + \newcommand{\COOL@notation@DShorten}{true} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\COOL@derivative} +% Both |\D| and |pderiv| have the same basic operation, so a macro is defined that does the internals +% +% |\COOL@derivative{|\meta{derivative power(s)}|}{|\meta{function}|}{|\meta{wrt}|}{|\meta{symbol}|}| +% +% \meta{wrt} is a comma separated list of length $\ge$ 1. +% +% \meta{symbol} is passed by |\D| or |\pderiv| and is `d' or `$\partial$' respectively +% +% \begin{tabular}{ll} +% |\COOL@derivative{2,3}{f}{x,y,z}{d}| & \makeatletter +% $\COOL@derivative{2,3}{f}{x,y,z}{d}$ +% \makeatother +% \vspace{.15cm} +% \\ +% |\COOL@derivative{2,3,4,5}{f}{x,y,z}{d}| & \makeatletter +% $\COOL@derivative{2,3,4,5}{f}{x,y,z}{d}$ +% \makeatother +% \vspace{.15cm} +% \\ +% |\COOL@derivative{2,n,1}{f}{x,y,z}{d}| & \makeatletter +% $\COOL@derivative{2,n,1}{f}{x,y,z}{d}$ +% \makeatother +% \vspace{.15cm} +% \\ +% |\COOL@derivative{2,n}{f}{x,y,z}{d}| & \makeatletter +% $\COOL@derivative{2,n}{f}{x,y,z}{d}$ +% \makeatother +% \\ +% \\ +% |\Style{DDisplayFunc=outset}| \Style{DDisplayFunc=outset} +% \\ +% |\COOL@derivative{2,n}{f}{x,y,z}{d}| & \makeatletter +% $\COOL@derivative{2,n}{f}{x,y,z}{d}$ +% \makeatother +% \\ +% \\ +% |\Style{DShorten=false,DDisplayFunc=inset}| \Style{DShorten=false}\Style{DDisplayFunc=inset} +% \\ +% |\COOL@derivative{2,n}{f}{x,y,z}{d}| & \makeatletter +% $\COOL@derivative{2,n}{f}{x,y,z}{d}$ +% \makeatother +% \vspace{.15cm} +% \\ +% |\COOL@derivative{2,3,4,5}{f}{x,y,z}{d}| & \makeatletter +% $\COOL@derivative{2,3,4,5}{f}{x,y,z}{d}$ +% \makeatother +% \\ +% \\ +% |\Style{DShorten=false,DDisplayFunc=outset}| \Style{DShorten=false}\Style{DDisplayFunc=outset} +% \\ +% |\COOL@derivative{2,n}{f}{x,y,z}{d}| & \makeatletter +% $\COOL@derivative{2,n}{f}{x,y,z}{d}$ +% \makeatother +% \end{tabular} +% \begin{macrocode} +\newcommand{\COOL@derivative}[4]{% +% \end{macrocode} +% Get the length of \meta{wrt} argument. +% |\listval{#3}{0}| gives the length of the list since lists begin indexing at 1. +% \begin{macrocode} +\listval{#3}{0}% +\setcounter{COOL@listlen}{\value{COOL@listpointer}}% +% \end{macrocode} +% Store the \meta{wrt} list and get the length of \meta{derivative power(s)}. +% \begin{macrocode} +\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@}% +% \end{macrocode} +% Check to see if all of the powers are integers---if they are, then we may sum them in the usual sense +% \begin{macrocode} +\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}% + }% +% \end{macrocode} +% If the length of \meta{derivative power(s)} is less than the length of \meta{wrt}, then we assume that +% the last value applies to \emph{all} the remaining derivatives. +% +%^^A ================================================================================================================== +%^^A ============================================ BEGIN SHORTEN AND INSET ============================================= +%^^A ================================================================================================================== +% \begin{macrocode} +\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}% + }% + % Else + {% + \edef\COOL@temp@D@bot% + {\COOL@temp@D@bot #4 \COOL@wrt@temp^\COOL@power@temp}% + }% + }% +% \end{macrocode} +% we're done with the length of the \meta{derivative power(s)} argument, and we want to start at it $+ \; 1$ +% to add the remainders +% \begin{macrocode} + \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}% + }% + % Else + {% + \edef\COOL@temp@D@bot% + {\COOL@temp@D@bot #4 \COOL@wrt@temp^\COOL@power@temp}% + }% + }% + }% + % Else + {}% + \ifthenelse{\value{COOL@ct@}=1}% + {% + \frac{#4 #2}{\COOL@temp@D@bot}% + }% + % Else + {% + \frac{#4^{\arabic{COOL@ct@}} #2}{\COOL@temp@D@bot}% + }% + }% + % Else + {% +% \end{macrocode} +% Powers are not all Integers +% \begin{macrocode} + \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}% + }% + % Else + {% + \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}% + }% + % Else + {% + \edef\COOL@temp@D@bot% + {\COOL@temp@D@bot #4 \COOL@wrt@temp^\COOL@power@temp}% + }% + }% +% \end{macrocode} +% we're done with the length of the \meta{derivative power(s)} argument, and we want to start at it $+ \; 1$ +% to add the remainders +% \begin{macrocode} + \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}% + }% + % Else + {% + \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}% + }% + % Else + {% + \edef\COOL@temp@D@bot% + {\COOL@temp@D@bot #4 \COOL@wrt@temp^\COOL@power@temp}% + }% + }% + }% + % Else + {}% + \frac{#4^{\COOL@temp@D@top@power} #2}{\COOL@temp@D@bot}% + }% + }% +% \end{macrocode} +%^^A ================================================================================================================== +%^^A ============================================= END SHORTEN AND INSET ============================================== +%^^A ================================================================================================================== +% +%^^A ================================================================================================================== +%^^A ============================================ BEGIN SHORTEN AND OUTSET ============================================ +%^^A ================================================================================================================== +% \begin{macrocode} +% Else If +{ \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}% + }% + % Else + {% + \edef\COOL@temp@D@bot% + {\COOL@temp@D@bot #4 \COOL@wrt@temp^\COOL@power@temp}% + }% + }% +% \end{macrocode} +% we're done with the length of the \meta{derivative power(s)} argument, and we want to start at it $+ \; 1$ +% to add the remainders +% \begin{macrocode} + \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}% + }% + % Else + {% + \edef\COOL@temp@D@bot% + {\COOL@temp@D@bot #4 \COOL@wrt@temp^\COOL@power@temp}% + }% + }% + }% + % Else + {}% + \ifthenelse{\value{COOL@ct@}=1}% + {% + \frac{#4}{\COOL@temp@D@bot} #2% + }% + % Else + {% + \frac{#4^{\arabic{COOL@ct@}}}{\COOL@temp@D@bot} #2% + }% + }% + % Else + {% +% \end{macrocode} +% Powers are not all Integers +% \begin{macrocode} + \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}% + }% + % Else + {% + \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}% + }% + % Else + {% + \edef\COOL@temp@D@bot% + {\COOL@temp@D@bot #4 \COOL@wrt@temp^\COOL@power@temp}% + }% + }% +% \end{macrocode} +% we're done with the length of the \meta{derivative power(s)} argument, and we want to start at it $+ \; 1$ +% to add the remainders +% \begin{macrocode} + \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}% + }% + % Else + {% + \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}% + }% + % Else + {% + \edef\COOL@temp@D@bot% + {\COOL@temp@D@bot #4 \COOL@wrt@temp^\COOL@power@temp}% + }% + }% + }% + % Else + {}% + \frac{#4^{\COOL@temp@D@top@power} }{\COOL@temp@D@bot} #2% + }% + }% +% \end{macrocode} +%^^A ================================================================================================================== +%^^A ============================================= END SHORTEN AND OUTSET ============================================= +%^^A ================================================================================================================== +% +%^^A ================================================================================================================== +%^^A =========================================== BEGIN NO SHORTEN AND INSET =========================================== +%^^A ================================================================================================================== +% \begin{macrocode} +% Else If +{ \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}% + }% + % Else + {% + \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}}% + }% +% \end{macrocode} +% we're done with the length of the \meta{derivative power(s)} argument, and we want to start at it $+ \; 1$ +% to add the remainders +% \begin{macrocode} + \ifthenelse{\value{COOL@ct}<\value{COOL@listlen}}% + {% +% \end{macrocode} +% Must pick up the one for |\value{COOL@ct}| +% \begin{macrocode} + \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}% + }% + % Else + {% + \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}}% +% \end{macrocode} +% Now add the ones beyond +% \begin{macrocode} + \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}% + }% + % Else + {% + \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}}% + }% +% \end{macrocode} +% Must pick up the one for |\value{COOL@listlen}| +% \begin{macrocode} + \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}% + }% + % Else + {% + \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}}% + }% + % Else + {% +% \end{macrocode} +% Must pick up the one for |\value{COOL@ct}| +% \begin{macrocode} + \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}% + }% + % Else + {% + \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% + }% +% \end{macrocode} +%^^A ================================================================================================================== +%^^A ============================================ END NO SHORTEN AND INSET ============================================ +%^^A ================================================================================================================== +% +%^^A ================================================================================================================== +%^^A =========================================== BEGIN NO SHORTEN AND OUTSET ========================================== +%^^A ================================================================================================================== +% \begin{macrocode} +% Else If +{ \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}% + }% + % Else + {% + \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}}% + }% +% \end{macrocode} +% we're done with the length of the \meta{derivative power(s)} argument, and we want to start at it $+ \; 1$ +% to add the remainders +% \begin{macrocode} + \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}% + }% + % Else + {% + \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}}% + }% + }% + % Else + {% + }% + \COOL@temp@D@result #2 + }% +% \end{macrocode} +%^^A ================================================================================================================== +%^^A ============================================ END NO SHORTEN AND OUTSET =========================================== +%^^A ================================================================================================================== +% \begin{macrocode} +% Else + {% + \PackageError{cool}{Invalid Option Sent}% + {DShorten can only be `true' or `false';% + DDisplayFunc can only be `inset' or `outset'}% + }% +}}}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\D} +% \begin{macro}{\pderiv} +% Derivatives +% +% \begin{tabular}{ll} +% |\D{f}{x}| & \vspace{0.15cm}$\D{f}{x}$ \\ +% |\D[n]{f}{x}| & \vspace{0.15cm}$\D[n]{f}{x}$ \\ +% |\D{f}{x,y,z}| & \vspace{0.15cm}$\D{f}{x,y,z}$ \\ +% |\D[1,2,1]{f}{x,y,z}| & \vspace{0.15cm}$\D[1,2,1]{f}{x,y,z}$ \\ +% |\pderiv{f}{x}| & \vspace{0.15cm}$\pderiv{f}{x}$ \\ +% |\pderiv[n]{f}{x}| & \vspace{0.15cm}$\pderiv[n]{f}{x}$ \\ +% |\pderiv{f}{x,y,z}| & \vspace{0.15cm}$\pderiv{f}{x,y,z}$ \\ +% |\pderiv[1,2,1]{f}{x,y,z}| & \vspace{0.15cm}$\pderiv[1,2,1]{f}{x,y,z}$ \\ +% \end{tabular} +% \begin{macrocode} +\newcommand{\D}[3][1]{\COOL@derivative{#1}{#2}{#3}{d}} +\newcommand{\pderiv}[3][1]{\COOL@derivative{#1}{#2}{#3}{\partial}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% +% \begin{macro}{\Integrate} +% \begin{macro}{\Int} +% Integrate +% +% This has the option |IntegrateDisplayFunc| which can be |inset| or |outset|: +% +% \begin{tabular}{c} +% |\Style{IntegrateDisplayFunc=inset}| (Default)% +% \Style{IntegrateDisplayFunc=inset} +% \\ +% \begin{tabular}{ll} +% |\Integrate{f}{x}| & \vspace{0.15cm}$\Integrate{f}{x}$ \\ +% |\Int{f}{x}| & \vspace{0.15cm}$\Int{f}{x}$ \\ +% |\Integrate{f}{x,A}| & \vspace{0.15cm}$\Integrate{f}{x,A}$ \\ +% |\Int{f}{x,A}| & \vspace{0.15cm}$\Int{f}{x,A}$ \\ +% |\Integrate{f}{x,a,b}| & \vspace{0.15cm}$\Integrate{f}{x,a,b}$ \\ +% |\Int{f}{x,a,b}| & \vspace{0.15cm}$\Int{f}{x,a,b}$ \\ +% \end{tabular} +% \\ +% \\ +% |\Style{IntegrateDisplayFunc=outset}|% +% \Style{IntegrateDisplayFunc=outset} +% \\ +% \begin{tabular}{ll} +% |\Integrate{f}{x}| & \vspace{0.15cm}$\Integrate{f}{x}$ \\ +% |\Int{f}{x}| & \vspace{0.15cm}$\Int{f}{x}$ \\ +% |\Integrate{f}{x,A}| & \vspace{0.15cm}$\Integrate{f}{x,A}$ \\ +% |\Int{f}{x,A}| & \vspace{0.15cm}$\Int{f}{x,A}$ \\ +% |\Integrate{f}{x,a,b}| & \vspace{0.15cm}$\Integrate{f}{x,a,b}$ \\ +% |\Int{f}{x,a,b}| & \vspace{0.15cm}$\Int{f}{x,a,b}$ \\ +% \end{tabular} +% \Style{IntegrateDisplayFunc=inset} +% \\ +% \end{tabular} +% \begin{macrocode} + \newcommand{\COOL@notation@IntegrateDisplayFunc}{inset} +\newcommand{\Integrate}[2]{% +\listval{#2}{0}% +% \end{macrocode} +% record the length of the list +% \begin{macrocode} +\setcounter{COOL@listlen}{\value{COOL@listpointer}}% +\ifthenelse{ \value{COOL@listlen} = 1 }% + {% + \ifthenelse{\equal{\COOL@notation@IntegrateDisplayFunc}{outset}}% + {% + \int \! d#2 \, #1% + }% + % ElseIf + { \ifthenelse{\equal{\COOL@notation@IntegrateDisplayFunc}{inset}}% + {% + \int #1 \, d#2% + }% + % Else + {% + \PackageError{cool}{Invalid Option Sent}% + {`DisplayFunc' can only be `inset' or `outset'}% + }}% + }% +% ElseIf +{ \ifthenelse{ \value{COOL@listlen} = 2 }% + {% + \ifthenelse{\equal{\COOL@notation@IntegrateDisplayFunc}{outset}}% + {% + \int_{\listval{#2}{2}} \! d{\listval{#2}{1}} \, #1% + }% + % ElseIf + { \ifthenelse{\equal{\COOL@notation@IntegrateDisplayFunc}{inset}}% + {% + \int_{\listval{#2}{2}} #1 \, d{\listval{#2}{1}}% + }% + % Else + {% + \PackageError{cool}{Invalid Option Sent}% + {`DisplayFunc' can only be `inset' or `outset'}% + }}% + }% +% ElseIf +{ \ifthenelse{ \value{COOL@listlen} = 3 }% + {% + \ifthenelse{\equal{\COOL@notation@IntegrateDisplayFunc}{outset}}% + {% + \int_{\listval{#2}{2}}^{\listval{#2}{3}} \! d{\listval{#2}{1}} \, #1% + }% + % ElseIf + { \ifthenelse{\equal{\COOL@notation@IntegrateDisplayFunc}{inset}}% + {% + \int_{\listval{#2}{2}}^{\listval{#2}{3}} #1 \, d{\listval{#2}{1}}% + }% + % Else + {% + \PackageError{cool}{Invalid Option Sent}% + {`DisplayFunc' can only be `inset' or `outset'}% + }}% + }% +% Else + {% + \PackageError{cool}{`Integrate' has invalid parameter list}% + {this happens when the second argument has more than two commas}% + }}}% +}% +\newcommand{\Int}[2]{\Integrate{#1}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% +% \begin{macro}{\Sum} +% Sum +% +% \begin{tabular}{ll} +% |\Sum{a_n}{n}| & \vspace{0.1cm}$\Sum{a_n}{n}$ \\ +% |\Sum{a_n}{n,1,N}| & \vspace{0.1cm}$\Sum{a_n}{n,1,N}$ \\ +% \end{tabular} +% \begin{macrocode} +\newcommand{\Sum}[2]{% +\listval{#2}{0}% +% \end{macrocode} +% record the length of the list +% \begin{macrocode} +\setcounter{COOL@listlen}{\value{COOL@listpointer}} +\ifthenelse{ \value{COOL@listlen} = 1 }% + {% + \sum_{#2} #1% + }% +% else + {% + \ifthenelse{ \value{COOL@listlen} = 3 }% + {% + \sum_{ \listval{#2}{1} = \listval{#2}{2} }^{ \listval{#2}{3} } #1 + }% + % else + {% + \PackageError{cool}{Invalid list length for `Sum'}% + {can only have none or two commas for second argument}% + }% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Prod} +% Product +% +% \begin{tabular}{ll} +% |\Prod{a_n}{n}| & \vspace{0.1cm}$\Prod{a_n}{n}$ \\ +% |\Prod{a_n}{n,1,N}| & \vspace{0.1cm}$\Prod{a_n}{n,1,N}$ \\ +% \end{tabular} +% \begin{macrocode} +\newcommand{\Prod}[2]{% +\listval{#2}{0}% +% \end{macrocode} +% record the length of the list +% \begin{macrocode} +\setcounter{COOL@listlen}{\value{COOL@listpointer}} +\ifthenelse{ \value{COOL@listlen} = 1 }% + {% + \prod_{#2} #1% + }% +% else + {% + \ifthenelse{ \value{COOL@listlen} = 3 }% + {% + \prod_{ \listval{#2}{1} = \listval{#2}{2} }^{ \listval{#2}{3} } #1 + }% + % else + {% + \PackageError{cool}{Invalid list length for `Prod'}% + {can only have none or two commas for second argument}% + }% + }% +} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Vector Operators} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\DotProduct} +% The dot product, |\DotProduct{\vec{A}}{\vec{B}}|, $\DotProduct{\vec{A}}{\vec{B}}$ +% \begin{macrocode} +\newcommand{\DotProduct}[2]{#1 \cdot #2} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Cross} +% The cross product, |\Cross{\vec{A}}{\vec{B}}|, $\Cross{\vec{A}}{\vec{B}}$ +% \begin{macrocode} +\newcommand{\Cross}[2]{#1 \times #2} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Div} +% the divergence, |\Div{\vec{A}}|, $\Div{\vec{A}}$ +% \begin{macrocode} +\newcommand{\Div}[1]{\nabla \cdot #1} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Grad} +% The gradient, |\Grad{f}|, $\Grad{f}$ +% \begin{macrocode} +\newcommand{\Grad}[1]{\nabla #1} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Curl} +% The curl, |\Curl{\vec{A}}|, $\Curl{\vec{A}}$ +% \begin{macrocode} +\newcommand{\Curl}[1]{\nabla \times #1} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Laplacian} +% The laplacian, |\Laplacian{f}|, $\Laplacian{f}$ +% \begin{macrocode} +\newcommand{\Laplacian}[1]{\nabla^2 #1} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Matrix Operations} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\Transpose} +% Transpose of a matrix, |\Transpose{A}|, $\Transpose{A}$ +% \begin{macrocode} + \newcommand{\COOL@notation@TransposeParen}{inv} +\newcommand{\Transpose}[1]{ \COOL@decide@paren{Transpose}{#1}^T } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Dagger} +% Conjugate Transpose of a matrix, |\Dagger{A}|, $\Dagger{A}$ +% \begin{macrocode} + \newcommand{\COOL@notation@DaggerParen}{inv} +\newcommand{\Dagger}[1]{ \COOL@decide@paren{Dagger}{#1}^\dagger } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Det} +% determinant of a matrix +% +% \begin{tabular}{ll} +% |\Style{DetDisplay=det}|% +% \Style{DetDisplay=det} (Default) \\ +% |\Det{A}| & $\Det{A}$ \\ +% |\Style{DetDisplay=barenc}|% +% \Style{DetDisplay=barenc} \\ +% |\Det{A}| & $\Det{A}$ \\ +% \end{tabular} +% \begin{macrocode} + \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}% + }% +% ElseIf +{ \ifthenelse{\equal{\COOL@notation@DetDisplay}{barenc}}% + {% + \left|#1\right|% + }% +% Else + {% + \PackageError{cool}{Invalid Option Sent}% + {`DetDisplay' can only be `det' or `barenc'}% + }}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Tr} +% Trace of a Matrix, |\Tr{A}|, $\Tr{A}$ +% \begin{macrocode} + \newcommand{\COOL@notation@TrParen}{none} +\newcommand{\Tr}[2][]{% +\ifthenelse{\equal{#1}{}} + {% + \operatorname{Tr}\COOL@decide@paren{Tr}{#2}% + }% +% Else + {% + \operatorname{Tr}_{#1}\COOL@decide@paren{Tr}{#2}% + }% +} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% \subsubsection{Matricies} +% % %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \begin{macro}{\IdentityMatrix} +% The Identity Matrix +% +% \begin{tabular}{cc} +% |\IdentityMatrix| & $\IdentityMatrix$ \\ +% |\IdentityMatrix[2]| & $\IdentityMatrix[2]$ \\ +% \end{tabular} +% \begin{macrocode} + \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}% + }% + % Else + {% + \setcounter{COOL@ct}{\value{MaxMatrixCols}}% + \setcounter{MaxMatrixCols}{#1}% + \ifthenelse{\equal{\COOL@notation@IdentityMatrixParen}{p}}% + {% + \begin{pmatrix}% + }% + % ElseIf + { \ifthenelse{\equal{\COOL@notation@IdentityMatrixParen}{b}}% + {% + \begin{bmatrix}% + }% + % ElseIf + { \ifthenelse{\equal{\COOL@notation@IdentityMatrixParen}{br}}% + {% + \begin{Bmatrix}% + }% + % Else + {% + \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}% + }% + % ElseIf + { \ifthenelse{\equal{\COOL@notation@IdentityMatrixParen}{b}}% + {% + \end{bmatrix}% + }% + % ElseIf + { \ifthenelse{\equal{\COOL@notation@IdentityMatrixParen}{br}}% + {% + \end{Bmatrix}% + }% + % Else + {% + \end{matrix}% + }}}% + \setcounter{MaxMatrixCols}{\value{COOL@ct}}% + }% + }% +% Else + {% + \mathbb{I}% + }% +}% +% \end{macrocode} +% \end{macro} +% +% +% +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/cool/cool.ins b/Master/texmf-dist/source/latex/cool/cool.ins new file mode 100644 index 00000000000..0f41b595606 --- /dev/null +++ b/Master/texmf-dist/source/latex/cool/cool.ins @@ -0,0 +1,40 @@ +%%
+%% Copyright (C) 2005 by nsetzer
+%%
+%% This file may be distributed and/or modified under the
+%% conditions of the Lesser General Product License
+%%
+
+\input docstrip.tex
+
+\keepsilent
+
+\usedir{texmf/tex/latex/cool}
+
+\preamble
+
+This is a generated file
+
+This file may be distributed and/or modified under the
+conditions of the Limited General Product License
+
+\endpreamble
+
+
+\generate{\file{cool.sty}{\from{cool.dtx}{package}}}
+
+\obeyspaces
+\Msg{****************************************************}
+\Msg{* *}
+\Msg{* To finish the installation you have to move the *}
+\Msg{* following file into a directory searched by TeX: *}
+\Msg{* *}
+\Msg{* cool.sty *}
+\Msg{* *}
+\Msg{* To produce the documentation run the file *}
+\Msg{* cool.dtx through LaTeX. *}
+\Msg{* *}
+\Msg{* *}
+\Msg{****************************************************}
+
+\endbatchfile
\ No newline at end of file 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'. diff --git a/Master/texmf-dist/tpm/cool.tpm b/Master/texmf-dist/tpm/cool.tpm new file mode 100644 index 00000000000..f96a4770407 --- /dev/null +++ b/Master/texmf-dist/tpm/cool.tpm @@ -0,0 +1,31 @@ +<!DOCTYPE rdf:RDF SYSTEM "../../support/tpm.dtd"> +<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:TPM="http://texlive.dante.de/"> + <rdf:Description about="http://texlive.dante.de/texlive/Package/cool.zip"> + <TPM:Name>cool</TPM:Name> + <TPM:Type>Package</TPM:Type> + <TPM:Date>2006/09/25 13:02:00</TPM:Date> + <TPM:Version></TPM:Version> + <TPM:Creator>karl</TPM:Creator> + <TPM:Title>The cool package.</TPM:Title> + <TPM:Description></TPM:Description> + <TPM:Author></TPM:Author> + <TPM:Size>824577</TPM:Size> + <TPM:Build/> + <TPM:RunFiles size="76264"> +texmf-dist/tex/latex/cool/cool.sty +texmf-dist/tpm/cool.tpm + </TPM:RunFiles> + <TPM:DocFiles size="566260"> +texmf-dist/doc/latex/cool/Content_LaTeX_Package_Demo.pdf +texmf-dist/doc/latex/cool/Content_LaTeX_Package_Demo.tex +texmf-dist/doc/latex/cool/README +texmf-dist/doc/latex/cool/cool.pdf + </TPM:DocFiles> + <TPM:SourceFiles size="183150"> +texmf-dist/source/latex/cool/cool.dtx +texmf-dist/source/latex/cool/cool.ins + </TPM:SourceFiles> + <TPM:Provides>Package/cool</TPM:Provides> + </rdf:Description> +</rdf:RDF> + diff --git a/Master/texmf/lists/cool b/Master/texmf/lists/cool new file mode 100644 index 00000000000..bad5e184b34 --- /dev/null +++ b/Master/texmf/lists/cool @@ -0,0 +1,10 @@ +texmf-dist/doc/latex/cool/Content_LaTeX_Package_Demo.pdf +texmf-dist/doc/latex/cool/Content_LaTeX_Package_Demo.tex +texmf-dist/doc/latex/cool/README +texmf-dist/doc/latex/cool/cool.pdf +texmf-dist/source/latex/cool/cool.dtx +texmf-dist/source/latex/cool/cool.ins +texmf-dist/tex/latex/cool/cool.sty +texmf-dist/tpm/cool.tpm + +texmf/lists/cool diff --git a/Master/texmf/tpm/collection-latexextra.tpm b/Master/texmf/tpm/collection-latexextra.tpm index 5fb092abd6a..464d7a19e84 100644 --- a/Master/texmf/tpm/collection-latexextra.tpm +++ b/Master/texmf/tpm/collection-latexextra.tpm @@ -76,6 +76,7 @@ A large collection of add-on packages for LaTeX. <TPM:Package name="concprog"/> <TPM:Package name="contour"/> <TPM:Package name="cooking"/> + <TPM:Package name="cool"/> <TPM:Package name="coollist"/> <TPM:Package name="coolstr"/> <TPM:Package name="cooltooltips"/> |