Sindbad~EG File Manager

Current Path : /home/beeson/Otter-Lambda/yyy/series/
Upload File :
Current File : //home/beeson/Otter-Lambda/yyy/series/seropdef.c

/* 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