[BACK]Return to ecart.sm1 CVS log [TXT][DIR] Up to [local] / OpenXM / src / kan96xx / Doc

Diff for /OpenXM/src/kan96xx/Doc/ecart.sm1 between version 1.26 and 1.35

version 1.26, 2004/05/14 02:35:03 version 1.35, 2004/09/14 03:12:17
Line 1 
Line 1 
 % $OpenXM: OpenXM/src/kan96xx/Doc/ecart.sm1,v 1.25 2004/05/13 05:52:53 takayama Exp $  % $OpenXM: OpenXM/src/kan96xx/Doc/ecart.sm1,v 1.34 2004/09/13 11:24:10 takayama Exp $
 %[(parse) (hol.sm1) pushfile] extension  (hol_loaded) boundp { }
   { [(parse) (hol.sm1) pushfile] extension } ifelse
 %[(parse) (appell.sm1) pushfile] extension  %[(parse) (appell.sm1) pushfile] extension
   
 (ecart.sm1 : ecart division for D, 2003/07/25 ) message-quiet  (ecart.sm1 : ecart division for D, 2003/07/25, 2004/09/14 ) message-quiet
 /ecart.begin { beginEcart } def  /ecart.begin { beginEcart } def
 /ecart.end   { endEcart } def  /ecart.end   { endEcart } def
 /ecart.autoHomogenize 1 def  /ecart.autoHomogenize 1 def
 /ecart.needSyz 0 def  /ecart.needSyz 0 def
 /ecartd.gb.oxRingStructure [ ] def  /ecartd.gb.oxRingStructure [[ ] [ ] ] def
   /ecart.partialEcartGlobalVarX [ ] def
   
 /ecartd.begin {  /ecartd.begin {
   ecart.begin    ecart.begin
Line 25 
Line 27 
 /ecart.messagen {  /ecart.messagen {
   ecart.message.quiet { pop } { messagen } ifelse    ecart.message.quiet { pop } { messagen } ifelse
 } def  } def
   /ecart.setOpt.init {
   % Initialize
       /ecart.partialEcartGlobalVarX [ ] def
   } def
 /ecart.setOpt {  /ecart.setOpt {
   /arg1 set    /arg1 set
   [/in-ecart.setOpt /opt /i /n /ans] pushVariables    [/in-ecart.setOpt /opt /i /n /ans] pushVariables
Line 32 
Line 38 
     /opt arg1 def      /opt arg1 def
     /ans [ ] def      /ans [ ] def
     /n opt length def      /n opt length def
   
       ecart.setOpt.init
   
     0 2 n 1 sub {      0 2 n 1 sub {
       /i set        /i set
       opt i get tag StringP eq not {        opt i get tag StringP eq not {
Line 59 
Line 68 
         exit          exit
       } {  } ifelse        } {  } ifelse
   
       ans [opt i get opt i 1 add get ]  append /ans set  % Global:  ecart.partialEcartGlobalVarX
         opt i get (partialEcartGlobalVarX) eq {
           /ecart.partialEcartGlobalVarX opt , i 1 add , get def
           % do not exit.
         } {  } ifelse
   
         ans [opt i get opt i 1 add get ]  join /ans set
       exit        exit
      } loop       } loop
     } for      } for
Line 89 
Line 104 
      ll (0). eq {       ll (0). eq {
      } {       } {
        ll getRing /rr set         ll getRing /rr set
        ll [ [ @@@.Hsymbol rr ,, (1) rr ,, ]         ll [ [ @@@.Hsymbol rr __ (1) rr __ ]
             [ (h) rr ,, (1) rr ,, ]] replace              [ (h) rr __ (1) rr __ ]] replace
        /ll set         /ll set
      } ifelse       } ifelse
    } ifelse     } ifelse
Line 115 
Line 130 
      ll (0). eq {       ll (0). eq {
      } {       } {
        ll getRing /rr set         ll getRing /rr set
        ll [ [ @@@.Hsymbol rr ,, (1) rr ,, ] ] replace         ll [ [ @@@.Hsymbol rr __ (1) rr __ ] ] replace
        /ll set         /ll set
      } ifelse       } ifelse
    } ifelse     } ifelse
Line 268 
Line 283 
   $             [ [(Dx) 1 (Dy) 1] [(x) -1 (y) -1 (Dx) 1 (Dy) 1] ]  $    $             [ [(Dx) 1 (Dy) 1] [(x) -1 (y) -1 (Dx) 1 (Dy) 1] ]  $
   $             [(degreeShift) [[0 1] [-3 1]]] ] ecart.gb pmat ; $    $             [(degreeShift) [[0 1] [-3 1]]] ] ecart.gb pmat ; $
   (  )    (  )
     $Example 6:  [ [(1-z) (-x+1-y-z)] (x,y,z)  $
     $              [[(y) -1 (z) -1 (Dy) 1 (Dz) 1] [(x) 1 (Dx) 1]] $
     $              [(partialEcartGlobalVarX) [(x)]] ] /std set $
     $             std ecart.gb pmat ; $
     $             std ecart.gb getRing :: $
     (  )
   (cf. gb, groebner, ecarth.gb, ecartd.gb, ecart.syz, ecart.begin, ecart.end, ecart.homogenize01, )    (cf. gb, groebner, ecarth.gb, ecartd.gb, ecart.syz, ecart.begin, ecart.end, ecart.homogenize01, )
   (    ecart.dehomogenize, ecart.dehomogenizeH)    (    ecart.dehomogenize, ecart.dehomogenizeH)
   ( [(weightedHomogenization) 1 (degreeShift) [[1 2 1]]] : options for )    ( [(weightedHomogenization) 1 (degreeShift) [[1 2 1]]] : options for )
Line 296 
Line 317 
     /hdShift 0 def      /hdShift 0 def
     /opt [(weightedHomogenization) 1] def      /opt [(weightedHomogenization) 1] def
     /ecart.useSugar 0 def      /ecart.useSugar 0 def
       ecart.setOpt.init
     aa { tag } map /typev set      aa { tag } map /typev set
     typev [ ArrayP ] eq      typev [ ArrayP ] eq
     {  /f aa 0 get def      {  /f aa 0 get def
Line 418 
Line 440 
     } { } ifelse      } { } ifelse
   
     %%BUG: case of v is integer      %%BUG: case of v is integer
     v ecart.checkOrder      [v ecart.partialEcartGlobalVarX] ecart.checkOrder
   
     ecart.begin      ecart.begin
   
Line 598 
Line 620 
     /wv 0 def      /wv 0 def
     /degreeShift 0 def      /degreeShift 0 def
     /opt [(weightedHomogenization) 1] def      /opt [(weightedHomogenization) 1] def
       ecart.setOpt.init
     aa { tag } map /typev set      aa { tag } map /typev set
     typev [ ArrayP ] eq      typev [ ArrayP ] eq
     {  /f aa 0 get def      {  /f aa 0 get def
Line 717 
Line 740 
     } { } ifelse      } { } ifelse
   
     %%BUG: case of v is integer      %%BUG: case of v is integer
     v ecart.checkOrder      [v ecart.partialEcartGlobalVarX] ecart.checkOrder
   
     ecartn.begin      ecartn.begin
   
Line 795 
Line 818 
     /hdShift 0 def      /hdShift 0 def
     /ecart.useSugar 0 def      /ecart.useSugar 0 def
     /opt [(weightedHomogenization) 1] def      /opt [(weightedHomogenization) 1] def
       ecart.setOpt.init
     aa { tag } map /typev set      aa { tag } map /typev set
     typev [ ArrayP ] eq      typev [ ArrayP ] eq
     {  /f aa 0 get def      {  /f aa 0 get def
Line 907 
Line 931 
     } { } ifelse      } { } ifelse
   
     %%BUG: case of v is integer      %%BUG: case of v is integer
     v ecart.checkOrder      [v ecart.partialEcartGlobalVarX] ecart.checkOrder
   
   
     ecartd.begin      ecartd.begin
   
     ecart.gb.verbose { (gb.options = ) ecart.messagen gb.options ecart.message } { } ifelse      ecart.gb.verbose { (gb.options = ) ecart.messagen gb.options ecart.message } { } ifelse
Line 988 
Line 1013 
   
 /ecart.checkOrder {  /ecart.checkOrder {
   /arg1 set    /arg1 set
   [/in-ecart.checkOrder /vv /tt /dd /n /i] pushVariables    [/vv] pushVariables
   [    [
     /vv arg1 def      /vv arg1 def
       vv length 1 eq {
         vv 0 get ecart.checkOrder.noGlobal /arg1 set
       }{
         vv ecart.checkOrder.global /arg1 set
       } ifelse
     ] pop
     popVariables
     /arg1
   } def
   /ecart.checkOrder.noglobal {
     /arg1 set
     [/vv /tt /dd /n /i] pushVariables
     [
       /vv arg1 def
     vv isArray      vv isArray
     { } { [vv to_records pop] /vv set } ifelse      { } { [vv to_records pop] /vv set } ifelse
     vv {toString} map /vv set      vv {toString} map /vv set
Line 1014 
Line 1053 
   popVariables    popVariables
   arg1    arg1
 } def  } def
   
   /ecart.checkOrder.global {
     /arg1 set
     [/vv /vvGlobal /tt /dd /n /i] pushVariables
     [
       /vv arg1 def
       /vvGlobal vv 1 get def
       vv 0 get /vv set
       vv isArray
       { } { [vv to_records pop] /vv set } ifelse
       vv {toString} map /vv set
       vvGlobal isArray
       { } { [vvGlobal to_records pop] /vvGlobal set } ifelse
       vvGlobal {toString} map /vv set
   
       vv vvGlobal setMinus /vv set
       vv { /tt set [@@@.Dsymbol tt] cat } map /dd set
       % Starting the checks.  Check for local variables.
       0 1 vv length 1 sub {
          /i set
          vv i get . dd i get . mul /tt set
          tt @@@.hsymbol . add init tt eq { }
          { [@@@.hsymbol ( is larger than ) vv i get ( ) dd i get] cat error} ifelse
       } for
   
       0 1 vv length 1 sub {
          /i set
          vv i get . /tt set
          tt (1). add init (1). eq { }
          { [vv i get ( is larger than 1 ) ] cat error} ifelse
       } for
   
       % check for global variables.
       0 1 vvGlobal length 1 sub {
          /i set
          vvGlobal i get . /tt set
          tt (1). add init (1). eq { [vvGlobal i get ( is smaller than 1 ) ] cat error }
          { } ifelse
       } for
   
   
       /arg1 1 def
     ] pop
     popVariables
     arg1
   } def
 [(ecart.checkOrder)  [(ecart.checkOrder)
  [(v ecart.checkOrder bool checks if the given order is relevant)   [([v vGlobal] ecart.checkOrder bool checks if the given order is relevant)
   (for the ecart division.)    (for the ecart division.)
   (cf. ecartd.gb, ecart.gb, ecartn.gb)    (cf. ecartd.gb, ecart.gb, ecartn.gb)
  ]   ]
Line 1556 
Line 1641 
     /univ vars 0 get reverse      /univ vars 0 get reverse
           vars 1 get reverse join            vars 1 get reverse join
     def      def
       w-vectors to_int32 /w-vectors set
     [      [
     0 1 << w-vectors length 1 sub >>      0 1 << w-vectors length 1 sub >>
     {      {
Line 1591 
Line 1677 
        /gbasis2 gbasis 0 get def         /gbasis2 gbasis 0 get def
      } {       } {
        [ [(1)] ] gbasis rest join ecartd.gb 0 get getRing ring_def         [ [(1)] ] gbasis rest join ecartd.gb 0 get getRing ring_def
        /gbasis2 gbasis 0 get ,,, def         /gbasis2 gbasis 0 get ___ def
      } ifelse       } ifelse
      ecartd.begin       ecartd.begin
   
      flist ,,, /flist set       flist ___ /flist set
      flist tag 6 eq {       flist tag 6 eq {
        flist { gbasis2 reduction } map /ans set         flist { gbasis2 reduction } map /ans set
      }{       }{
Line 1628 
Line 1714 
       (x,y) [[(Dx) 1 (Dy) 1] [(x) -1 (y) -1 (Dx) 1 (Dy) 1]]] /ggg set        (x,y) [[(Dx) 1 (Dy) 1] [(x) -1 (y) -1 (Dx) 1 (Dy) 1]]] /ggg set
    (Dx) ggg ecartd.reduction /gg4 set     (Dx) ggg ecartd.reduction /gg4 set
    gg4 message     gg4 message
   [gg2  gg3 gg4]  
     (----------- reduction by h=1 ---------------) message
       [[( 2*(1-x-y) Dx + 1 ) ( 2*(1-x-y) Dy + 1 )]
         (x,y) [[(Dx) 1 (Dy) 1] [(x) -1 (y) -1 (Dx) 1 (Dy) 1]]] /ggg set
      [(Homogenize) 0]  system_variable
      (Dx) ggg ecartd.reduction /gg5 set
      [(Homogenize) 1]  system_variable
      gg5 message
   
     [gg2  gg3 gg4 gg5]
 } def  } def
   
 /ecarth.reduction {  /ecarth.reduction {
Line 1648 
Line 1743 
        /gbasis2 gbasis 0 get def         /gbasis2 gbasis 0 get def
      } {       } {
        [ [(1)] ] gbasis rest join ecarth.gb 0 get getRing ring_def         [ [(1)] ] gbasis rest join ecarth.gb 0 get getRing ring_def
        /gbasis2 gbasis 0 get ,,, def         /gbasis2 gbasis 0 get ___ def
      } ifelse       } ifelse
      ecarth.begin       ecarth.begin
   
      flist ,,, /flist set       flist ___ /flist set
      flist tag 6 eq {       flist tag 6 eq {
        flist { gbasis2 reduction } map /ans set         flist { gbasis2 reduction } map /ans set
      }{       }{
Line 1682 
Line 1777 
   $ (Dx+Dy) ggg ecartd.reduction :: $    $ (Dx+Dy) ggg ecartd.reduction :: $
 ]] putUsages  ]] putUsages
   
   /ecartd.reduction_noh {
     /arg2 set
     /arg1 set
     [/in-ecarth.reduction_noh /gbasis /flist] pushVariables
     [(Homogenize)] pushEnv
     [
        /gbasis arg2  def
        /flist  arg1  def
        [(Homogenize) 0] system_variable
        flist gbasis ecartd.reduction /arg1 set
     ] pop
     popEnv
     popVariables
     arg1
   } def
   
   [(ecartd.reduction_noh)
   [ (f basis ecartd.reduction_noh r)
     (f is reduced by basis by the tangent cone algorithm.)
     (The first element of basis <g_1,...,g_m> must be a standard basis.)
     (r is the return value format of reduction.)
     (r=[h,c0,syz,input], h = c0 f + \sum syz_i g_i)
     (basis is given in the argument format of ecartd.gb and)
     (it should not contain the variable h.  cf. dehomogenize)
     $h[0,1](D)-homogenization is NOT used.$
     (cf. reduction, ecartd.gb, ecartd.reduction )
     $Example:$
     $ [[( 2*(1-x-y) Dx + 1 ) ( 2*(1-x-y) Dy + 1 )] $
     $   (x,y) [[(Dx) 1 (Dy) 1] [(x) -1 (y) -1 (Dx) 1 (Dy) 1]]] /ggg set $
     $ (Dx+Dy) ggg ecartd.reduction_noh :: $
   ]] putUsages
   
 /ecart.stdOrder {  /ecart.stdOrder {
   /arg1 set    /arg1 set
   [/in-ecart.stdOrder /vv /tt /dvv /wv1 /wv2    [/in-ecart.stdOrder /vv /tt /dvv /wv1 /wv2
Line 1806 
Line 1933 
    vv isArray { vv from_records /vv set } {  } ifelse     vv isArray { vv from_records /vv set } {  } ifelse
    vv ecart.01Order /wv set     vv ecart.01Order /wv set
    [vv ring_of_differential_operators 0] define_ring     [vv ring_of_differential_operators 0] define_ring
    ll ,,, /ll set ll dehomogenize /ll set     ll ___ /ll set ll dehomogenize /ll set
    [ll vv wv] gb 0 get /ll set     [ll vv wv] gb 0 get /ll set
   
    ecart.begin     ecart.begin
    [vv ring_of_differential_operators     [vv ring_of_differential_operators
     vv ecart.stdOrder weight_vector 0      vv ecart.stdOrder weight_vector 0
     [(weightedHomogenization) 1]] define_ring      [(weightedHomogenization) 1]] define_ring
    ll ,,, {ecart.homogenize01 ecart.dehomogenizeH} map /ans set     ll ___ {ecart.homogenize01 ecart.dehomogenizeH} map /ans set
    ecart.end     ecart.end
    /arg1 ans def     /arg1 ans def
  ] pop   ] pop
Line 1831 
Line 1958 
   
 ( ) message-quiet  ( ) message-quiet
   
   /ecart_loaded 1 def
   

Legend:
Removed from v.1.26  
changed lines
  Added in v.1.35

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>