Sindbad~EG File Manager
/* M. Beeson, for Mathpert infinite series support */
/* 3.24.00
Last modified 6.17.00
3.17.06 gave series_adjust_model and series_redirect_optable a void prefix
*/
#define SERIES_DLL
#include "globals.h"
#include "series.h"
#include "trig.h" /* renameindexvariable */
#include "optable.h" /* access_optable */
#include "seropdef.h"
#include "operator.h"
#include "tdefn.h"
#define NSERIESMENUS 14
static actualop series_optable[NSERIESMENUS][16] =
{
{ /* series_geom1 */
oneminusxseries, /* $$1/(1-x) = sum(x^n,n,0,infinity)$$ */
oneminusxseries2, /* $1/(1-x) = 1+x+x^2+...$ */
oneminusxseries3, /* $1/(1-x) = 1+x+x^2+...x^n...$ */
oneplusxseries, /* $$1/(1+x) = sum((-1)^n x^n,n,0,infinity)$$ */
oneplusxseries2, /* $1/(1+x) = 1-x+x^2+...$ */
oneplusxseries3, /* $1/(1+x) = 1-x+x^2+...(-1)^nx^n...$ */
oneminusxseriesrev,
oneminusxseries2rev,
oneminusxseries3rev,
oneplusxseriesrev,
oneplusxseries2rev,
oneplusxseries3rev
},
{ /* series_geom2 */
xoveroneminusxseries,
xoveroneminusxseries2,
xoveroneminusxseries3,
xoveroneplusxseries,
xoveroneplusxseries2,
xoveroneplusxseries3,
xoveroneminusxseriesrev,
xoveroneminusxseries2rev,
xoveroneminusxseries3rev,
xoveroneplusxseriesrev,
xoveroneplusxseries2rev,
xoveroneplusxseries3rev
},
{ /* series_geom3 */
oneoveroneminusxkseries,
oneoveroneminusxkseries2,
oneoveroneminusxkseries3,
xmoveroneminusxkseries,
xmoveroneminusxkseries2,
xmoveroneminusxkseries3,
oneoveroneminusxkseriesrev,
oneoveroneminusxkseries2rev,
oneoveroneminusxkseries3rev,
xmoveroneminusxkseriesrev,
xmoveroneminusxkseries2rev,
xmoveroneminusxkseries3rev
},
{ /* series_geom4 */
oneoveroneplusxkseries,
oneoveroneplusxkseries2,
oneoveroneplusxkseries3,
xmoveroneplusxkseries,
xmoveroneplusxkseries2,
xmoveroneplusxkseries3,
oneoveroneplusxkseriesrev,
oneoveroneplusxkseries2rev,
oneoveroneplusxkseries3rev,
xmoveroneplusxkseriesrev,
xmoveroneplusxkseries2rev,
xmoveroneplusxkseries3rev
},
{ /* series_geom5 */
geometricseriesfromk,
geometricseriesfromk2,
geometricseriesfromk3,
geometricseriesminusfromk,
geometricseriesminusfromk2,
geometricseriesminusfromk3,
geometricseriesfromkrev,
geometricseriesfromk2rev,
geometricseriesfromk3rev,
geometricseriesminusfromkrev,
geometricseriesminusfromk2rev,
geometricseriesminusfromk3rev
},
{ /* series_ln */
lnseries,
lnseries2,
lnseries3,
lnseriesminus,
lnseriesminus2,
lnseriesminus3,
lnseriesrev,
lnseries2rev,
lnseries3rev,
lnseriesminusrev,
lnseriesminus2rev,
lnseriesminus3
},
{ /* series_trig */
sinseries,
sinseries2,
sinseries3,
cosseries,
cosseries2,
cosseries3,
sinseriesrev,
sinseries2rev,
sinseries3rev,
cosseriesrev,
cosseries2rev,
cosseries3rev
},
{ /* series_exp */
expseries,
expseries2,
expseries3,
expseriesrev,
expseries2rev,
expseries3rev,
negexpseries,
negexpseries2,
negexpseries3,
negexpseriesrev,
negexpseries2rev,
negexpseries3rev
},
{ /* series_atan */
atanseries,
atanseries2,
atanseries3,
atanseriesrev,
atanseries2rev,
atanseries3rev,
binomialseries,
binomialseries2,
binomialseries3,
binomialseriesrev,
binomialseries2rev,
binomialseries3rev
},
{ /* series_appearance */
ldots0, /* express series as $a_0 + a_1 + ...$ */
ldots1, /* express series as $a_0 + a_1 + a_2 + ... $ */
ldots2, /* express series using ... and general term */
ldotstosigma, /* express series using sigma notation */
showanotherterm,/* show another term before ... */
showmoreterms, /* show ? more terms before ... */
showevaluatedterms, /* show terms with factorials evaluated */
showfactorialsinterms, /* do not evaluate factorials in terms */
showdevaluatedterms, /* show the coefficients in decimal form */
showundevaluatedterms /* do not use decimal form for coefficients */
},
{ /* series_algebra */
telescopingseries,
multiplyseries,
multiplypowerseries,
divideseriesbypoly, /* divide power series by polynomial */
dividepolybyseries, /* divide polynomial by power seres */
dividepowerseries,
squareseries,
squarepowerseries,
powerofseries,
addseries,
subseries
},
{ /* series_manipulations */
/* if the position of intseries changes,
you must modify integrationop in
execute.c */
seriesfirstterms, /* split off first few terms */
seriesmoreterms, /* decrease lower limit by subtracting terms */
seriesaddindex, /* add ? to index variable */
seriessubindex, /* subtract ? from index variable */
renameindexvariable,
seriessum, /* �(u+v) = �u + �v */
difseries, /* d/dx �u = � du/dx */
reversedifseries, /* � du/dx = d/dx �u */
intseries, /* � �u dx = � �u dx */
reverseintseries, /* � �u dx = � �u dx */
evalfirstterms, /* calculate sum of first few terms */
seriesintdif, /* $$u = integral(diff(u,x),x)$$ */
seriesintdifdef, /* $$u = integral(diff(u,t),t,0,x) + u(0)$$ */
seriesdifint, /* $$u = diff(integral(u,x),x)$$ */
eliminatecofi, /* solve for constant of integration */
seriesevenandodd, /* separate terms with even and odd indices */
},
{ /* series_convergence_tests */
divergencetest, /* If these change then change the top of series.h too */
integraltest,
ratiotest,
roottest,
comparisontest1,
comparisontest2,
limitcomparisontest,
condensationtest,
finishdivergencetest, /* must change in_loop if these choice numbers change */
finishintegraltest,
finishratiotest,
finishroottest,
finishcomparisontest1,
finishcomparisontest2,
finishlimitcomparisontest,
finishcondensationtest
},
{ statefinalbound1, /* series_convergence2 */
statefinalbound2,
harmonicseries,
zeta2
}
};
/*___________________________________________________________________*/
MEXPORT_SERIES void series_redirect_optable(void)
/* adjust the function pointers in optable to point to functions
exported by this dll */
{ int i,j;
for(i= series_geom1; i < complex_functions; i++)
{ for(j=0;j<16;j++)
access_optable(i)[j] = series_optable[i- series_geom1][j];
}
}
/*____________________________________________________________________*/
MEXPORT_SERIES void series_adjust_model(int currenttopic)
/* called from adjust_model in adjmod.c to finish the
work of that function on series topics. */
{ switch(currenttopic)
{ case _sum_series:
break;
case _integral_test:
break;
case _comparison_test:
break;
case _root_ratio_tests:
break;
case _power_series1:
set_status(seriesintdif,KNOWN);
set_status(seriesintdifdef,KNOWN);
set_status(seriesdifint,KNOWN);
set_status(oneplusxseries,KNOWN);
set_status(oneminusxseries,KNOWN);
set_status(lnseries,LEARNING);
set_status(lnseriesminus,LEARNING);
set_status(sinseries,LEARNING);
set_status(cosseries,LEARNING);
set_status(atanseries,LEARNING);
break;
case _power_series2:
set_status(seriesintdif,KNOWN);
set_status(seriesintdifdef,KNOWN);
set_status(seriesdifint,KNOWN);
set_status(oneplusxseries,KNOWN);
set_status(oneminusxseries,KNOWN);
set_status(lnseries,KNOWN);
set_status(lnseriesminus,KNOWN);
set_status(sinseries,KNOWN);
set_status(cosseries,KNOWN);
set_status(atanseries,KNOWN);
break;
}
}
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists