% engine=luatex
%D \module
%D [ file=m-calcmath,
%D version=2006.04.24, % 1999.11.06,
%D title=\CONTEXT\ Modules,
%D subtitle=Calculator Math,
%D author=Hans Hagen,
%D date=\currentdate,
%D copyright=PRAGMA]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
%D Lua code.
\ctxloadluafile{x-calcmath}{}
%D Interface:
\unprotect
\def\inlinecalcmath #1{\mathematics{\ctxlua{calcmath.tex("#1",1)}}}
\def\displaycalcmath#1{\startformula\ctxlua{calcmath.tex("#1",2)}\stopformula}
\let\calcmath\inlinecalcmath
\let\icm\inlinecalcmath
\let\dcm\displaycalcmath
\startxmlsetups xml:cam:define
\xmlsetsetup {\xmldocument} {cam:*} {*}
\xmlsetsetup {\xmldocument} {(icm|dcm)} {cam:*}
\stopxmlsetups
\xmlregisterns{cam}{calcmath}
\xmlregistersetup{xml:cam:define}
% tex -> lua -> tex -> lua -> tex
% \mathematics{\ctxlua{calcmath.xml(\!!bs\xmlflush{#1}\!!es,1)}}
% tex -> lua -> tex
% \mathematics{\ctxlua{calcmath.xml("#1",1)}}%
\startxmlsetups cam:i
\mathematics{\ctxlua{calcmath.xml("#1",1)}}%
\stopxmlsetups
\startxmlsetups cam:d
\startformula\ctxlua{calcmath.xml("#1",2)}\stopformula
\stopxmlsetups
\startxmlsetups cam:icm
\mathematics{\ctxlua{calcmath.xml("#1",1)}}
\stopxmlsetups
\startxmlsetups cam:dcm
\startformula\ctxlua{calcmath.xml("#1",2)}\stopformula
\stopxmlsetups
\protect \endinput
\starttext
% \calcmath{sin(x) + x^2 + x^(1+x) + 1/x^2 + mean(x+mean(y))}
% \calcmath{int(a,b,c)}
% \calcmath{(1+x)/(1+x) + (1+x)/(1+(1+x)/(1+x))}
% \calcmath{10E-2}
% \calcmath{(1+x)/x}
% \calcmath{(1+x)/12}
% \calcmath{(1+x)/-12}
% \calcmath{1/-12}
% \calcmath{12x/(1+x)}
% \calcmath{exp(x+exp(x+1))}
% \calcmath{abs(x+abs(x+1)) + pi + inf}
% \calcmath{Dx Dy}
% \calcmath{D(x+D(y))}
% \calcmath{Df(x)}
% \calcmath{g(x)}
\calcmath{sqrt(sin^2(x)+cos^2(x))}
\startXMLdata
test sqrt(sin^2(x)+cos^2(x)) test
test sqrt(sin^2(x)+cos^2(x)) test
\stopXMLdata
\stoptext