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

Diff for /OpenXM/src/kan96xx/Kan/dr.sm1 between version 1.14 and 1.29

version 1.14, 2003/07/14 12:49:51 version 1.29, 2004/08/22 12:52:34
Line 1 
Line 1 
 % $OpenXM: OpenXM/src/kan96xx/Kan/dr.sm1,v 1.13 2003/05/16 08:58:52 takayama Exp $  % $OpenXM: OpenXM/src/kan96xx/Kan/dr.sm1,v 1.28 2004/05/13 05:33:10 takayama Exp $
 %% dr.sm1 (Define Ring) 1994/9/25, 26  %% dr.sm1 (Define Ring) 1994/9/25, 26
 %% This file is error clean.  %% This file is error clean.
   
Line 50 
Line 50 
           } for            } for
      ] /dList set       ] /dList set
   
      [(H)] xList join [@@@.esymbol] join /xList set       [@@@.Hsymbol] xList join [@@@.esymbol] join /xList set
      [(h)] dList join [@@@.Esymbol] join /dList set       [(h)] dList join [@@@.Esymbol] join /dList set
      [0 %% dummy characteristic       [0 %% dummy characteristic
       << xList length >> << xList length >> << xList length >>        << xList length >> << xList length >> << xList length >>
Line 167 
Line 167 
      vars reverse /xList set         %[z y x]       vars reverse /xList set         %[z y x]
      vars {@@@.Dsymbol 2 1 roll 2 cat_n} map       vars {@@@.Dsymbol 2 1 roll 2 cat_n} map
      reverse /dList set              %[Dz Dy Dx]       reverse /dList set              %[Dz Dy Dx]
      [(H)] xList join [@@@.esymbol] join /xList set       [@@@.Hsymbol] xList join [@@@.esymbol] join /xList set
      [(h)] dList join [@@@.Esymbol] join /dList set       [(h)] dList join [@@@.Esymbol] join /dList set
      [0 1 1 1 << xList length >>       [0 1 1 1 << xList length >>
         1 1 1 << xList length 1 sub >> ] /param set          1 1 1 << xList length 1 sub >> ] /param set
Line 269 
Line 269 
      vars reverse /xList set         %[z y x]       vars reverse /xList set         %[z y x]
      vars {@@@.diffEsymbol 2 1 roll 2 cat_n} map       vars {@@@.diffEsymbol 2 1 roll 2 cat_n} map
      reverse /dList set              %[Dz Dy Dx]       reverse /dList set              %[Dz Dy Dx]
      [(H)] xList join [@@@.esymbol] join /xList set       [@@@.Hsymbol] xList join [@@@.esymbol] join /xList set
      [(h)] dList join [@@@.Esymbol] join /dList set       [(h)] dList join [@@@.Esymbol] join /dList set
      [0 1 1 << xList length >> << xList length >>       [0 1 1 << xList length >> << xList length >>
         1 1 << xList length 1 sub >> << xList length >> ] /param set          1 1 << xList length 1 sub >> << xList length >> ] /param set
Line 308 
Line 308 
      vars2 reverse       vars2 reverse
      vars {@@@.Dsymbol 2 1 roll 2 cat_n} map       vars {@@@.Dsymbol 2 1 roll 2 cat_n} map
      reverse join /dList set              %[s2 s1 Dz Dy Dx]       reverse join /dList set              %[s2 s1 Dz Dy Dx]
      [(H)] xList join [@@@.esymbol] join /xList set       [@@@.Hsymbol] xList join [@@@.esymbol] join /xList set
      [(h)] dList join [@@@.Esymbol] join /dList set       [(h)] dList join [@@@.Esymbol] join /dList set
      [0 1 1 << vars2 length 1 add >>  << xList length >>       [0 1 1 << vars2 length 1 add >>  << xList length >>
         1 1 << vars2 length 1 add >> << xList length 1 sub >> ] /param set          1 1 << vars2 length 1 add >> << xList length 1 sub >> ] /param set
Line 1766 
Line 1766 
   /arg1 set    /arg1 set
   [/f /k /i /ans] pushVariables    [/f /k /i /ans] pushVariables
   [    [
      /ans (1).. def     /ans (1).. def
      [(QuoteMode)] system_variable {
        /f arg1 def   /k arg2 def
        [(ooPower) f k] extension /ans set
      } {
      /f arg1 def   /k arg2 ..int def       /f arg1 def   /k arg2 ..int def
      k 0 lt {       k 0 lt {
        1 1 << 0 k sub >> {         1 1 << 0 k sub >> {
Line 1779 
Line 1783 
          /ans f ans {mul} sendmsg2 def           /ans f ans {mul} sendmsg2 def
        } for         } for
      } ifelse       } ifelse
      /arg1 ans def     } ifelse
      /arg1 ans def
   ] pop    ] pop
   popVariables    popVariables
   arg1    arg1
Line 2762  newline
Line 2767  newline
   [/in-ngcd /nlist /g.ngcd /ans] pushVariables    [/in-ngcd /nlist /g.ngcd /ans] pushVariables
   [    [
      /nlist arg1 def       /nlist arg1 def
        nlist to_univNum /nlist set
      nlist length 2 lt       nlist length 2 lt
      { /ans nlist 0 get def /L.ngcd goto }       { /ans nlist 0 get def /L.ngcd goto }
      {       {
Line 3322  newline
Line 3328  newline
 ]] putUsages  ]] putUsages
   
 /cancelCoeff {  /cancelCoeff {
     /arg1 set
     [(reduceContent) arg1] gbext 0 get
   } def
   /cancelCoeff_org {
  /arg1 set   /arg1 set
  [/in-cancelCoeff /ff /gg /dd /dd2] pushVariables   [/in-cancelCoeff /ff /gg /dd /dd2] pushVariables
  [  /ff arg1 def   [  /ff arg1 def
Line 3741  $ [ff ff] fromVectors :: $ 
Line 3751  $ [ff ff] fromVectors :: $ 
   /execve.arg set    /execve.arg set
   [(forkExec) execve.arg [ ] 1] extension    [(forkExec) execve.arg [ ] 1] extension
 } def  } def
   
   [(beginEcart)
    [
      (beginEcart)
      (Set the environments for the ecart division algorithm.)
    ]
   ] putUsages
   
   /ecart.debug_reduction1 0 def
   /beginEcart {
     (red@) (ecart) switch_function
     [(Ecart) 1] system_variable
     [(CheckHomogenization) 0] system_variable
     [(ReduceLowerTerms) 0] system_variable
     [(AutoReduce) 0] system_variable
     [(EcartAutomaticHomogenization) 0] system_variable
     ecart.debug_reduction1 {
       (red@) (debug) switch_function
     } {  } ifelse
   } def
   
   [(endEcart)
    [
      (endEcart)
      (End of using the ecart division algorithm.)
    ]
   ] putUsages
   
   /endEcart {
     (red@) (standard) switch_function
     [(Ecart) 0] system_variable
     [(degreeShift) (reset)] homogenize pop
   } def
   
   /ord_ws_all {
     /arg2 set /arg1 set
     [(ord_ws_all) arg1 arg2] gbext
   } def
   [(ord_ws_all)
    [
      (fv wv ord_ws_all degree)
      (  ord_ws_all returns the ord with respect to the weight vector wv.)
      $Example: [(x,y) ring_of_differential_operators 0] define_ring  $
      $        (Dx^2+x*Dx*Dy+2). [(Dx) 1 (Dy) 1] weightv ord_ws_all ::  $
      (  )
      (fv [wv shiftv] ord_ws_all degree)
      (  ord_ws_all returns the ord with respect to the weight vector wv and)
      (  the shift vector shiftv.)
      $Example: [(x,y) ring_of_differential_operators 0] define_ring  $
      $        [(Dx^2+x*Dx*Dy+2). (Dx).] [[(Dx) 1 (Dy) 1] weightv [0 2]] ord_ws_all ::$
      (  )
      (cf: init, gbext.   Obsolete: ord_w, ord_w_all)
    ]
   ] putUsages
   
   [(newVector)
    [( n newVector vec)
   ]] putUsages
   /newVector {
     /arg1 set
     [/in-newVector /n] pushVariables
     [
       /n arg1 def
       [(newVector) n] extension /arg1 set
     ] pop
     popVariables
     arg1
   } def
   
   [(newMatrix)
    [( [m n] newMatrix mat)
   ]] putUsages
   /newMatrix {
     /arg1 set
     [/in-newMatrix /n] pushVariables
     [
       /n arg1 def
       [(newMatrix) n 0 get n 1 get] extension /arg1 set
     ] pop
     popVariables
     arg1
   } def
   
   /addStdoutStderr {
     [(>) (stringOut://@@@stdout) (2>) (stringOut://@@@stderr)] join
   } def
   
   [(,,,)
   [(reparse a polynomial or polynomials)]
   ] putUsages
   /,,, {
     /arg1 set
     [/in-reparse /ff] pushVariables
     [
       /ff arg1 def
       ff tag 6 eq {
         ff { ,,, } map /arg1 set
       } {
         ff toString . /arg1 set
       } ifelse
     ] pop
     popVariables
     arg1
   } def
   
   /to_univNum {
     /arg1 set
     [/rr  ] pushVariables
     [
       /rr arg1 def
       rr isArray {
         rr { to_univNum } map /rr set
       } {
       } ifelse
       rr isInteger {
         rr (universalNumber) dc /rr set
       } {
       } ifelse
       /arg1 rr def
     ] pop
     popVariables
     arg1
   } def
   [(to_univNum)
   [(obj to_univNum obj2)
    (Example. [ 2 (3).. ] to_univNum)
    (cf. to_int)
   ]] putUsages
   
   [(lcm)
    [ ([a b c ...] lcm r)
      (cf. polylcm, mpzext)
    ]
   ] putUsages
   /lcm {
     /arg1 set
     [/aa /bb /rr /pp /i] pushVariables
     [
       /aa arg1 def
       /rr (1).. def
       /pp 0 def % isPolynomial array?
       0 1 aa length 1 sub {
         /i set
         aa i get  isPolynomial {
           /pp 1 def
           exit
         } {  } ifelse
       } for
   
       0 1 aa length 1 sub {
         /i set
         pp {
           [rr aa i get] polylcm /rr set
         } {
           [(lcm) rr aa i get ] mpzext /rr set
         } ifelse
       } for
   
       /arg1 rr def
     ] pop
     popVariables
     arg1
   } def
   [(gcd)
    [ ([a b c ...] gcd r)
      (cf. polygcd, mpzext)
    ]
   ] putUsages
   /gcd {
     /arg1 set
     [/aa /bb /rr /pp /i] pushVariables
     [
       /aa arg1 def
       /rr (1).. def
       /pp 0 def % isPolynomial array?
       0 1 aa length 1 sub {
         /i set
         aa i get  isPolynomial {
           /pp 1 def
           /rr aa i get def
           exit
         } {  } ifelse
       } for
   
       pp {
        0 1 aa length 1 sub {
          /i set
          [rr aa i get] polygcd /rr set
        } for
       } {
         aa ngcd /rr set
       } ifelse
   
       /arg1 rr def
     ] pop
     popVariables
     arg1
   } def
   
   [(denominator)
    [ ([a b c ...] denominator r)
      ( a denominator r )
      (cf. dc, numerator)
    ]
   ] putUsages
   % test data.
   %  [(1).. (2).. div (1).. (3).. div ] denominator
   %  [(2).. (3).. (4).. ] denominator
   /denominator {
     /arg1 set
     [/pp /dd /ii /rr] pushVariables
     [
       /pp arg1 def
       {
         pp isArray {
           pp { denominator } map /dd set
           /rr dd lcm def % rr = lcm(dd[0], dd[1], ... )
           rr /dd set
           exit
         } {  } ifelse
   
         pp (denominator) dc /dd set
         exit
   
       } loop
       /arg1 dd def
     ] pop
     popVariables
     arg1
   } def
   
   [(numerator)
    [ ([a b c ...] numerator r)
      ( a numerator r )
      (cf. dc, denominator)
    ]
   ] putUsages
   % test data.
   /numerator {
     /arg1 set
     [/pp /dd /ii /rr] pushVariables
     [
       /pp arg1 def
       {
         pp isArray {
           pp denominator /dd set
           pp dd mul /rr set
           rr reduce /rr set
           exit
         } {  } ifelse
   
         pp (numerator) dc /rr set
         exit
   
       } loop
       /arg1 rr def
     ] pop
     popVariables
     arg1
   } def
   
   /reduce.Q {
     /arg1 set
     [/aa /rr /nn /dd /gg]  pushVariables
     [
       /aa arg1 def
       {
         aa isRational {
            [(cancel) aa] mpzext /rr set
            rr (denominator) dc (1).. eq {
               /rr rr (numerator) dc def
               exit
            } { } ifelse
            rr (denominator) dc (-1).. eq {
               /rr rr (numerator) dc (-1).. mul def
            } { } ifelse
            exit
         } { } ifelse
   
         /rr aa def
         exit
       } loop
       /arg1 rr def
     ] pop
     popVariables
     arg1
   } def
   
   /reduce.one {
     /arg1 set
     [/aa /rr /nn /dd /gg]  pushVariables
     [
       /aa arg1 def
       {
         aa isRational {
           aa (numerator) dc /nn set
           aa (denominator) dc /dd set
           nn isUniversalNumber dd isUniversalNumber and {
             /rr aa reduce.Q def
             exit
           } { (reduce: not implemented) error } ifelse
         } { } ifelse
   
         /rr aa def
         exit
       } loop
       /arg1 rr def
     ] pop
     popVariables
     arg1
   } def
   
   [(reduce)
    [ (obj reduce r)
      (Cancel numerators and denominators)
      (The implementation has not yet been completed. It works only for Q.)
   ]] putUsages
   /reduce {
     /arg1 set
     [/aa /rr] pushVariables
     [
       /aa arg1 def
       aa isArray {
         aa {reduce} map /rr set
       } {
         aa reduce.one /rr set
       } ifelse
       /arg1 rr def
     ] pop
     popVariables
     arg1
   } def
   
   /usages {
     /arg1 set
     [/name /flag /n /k /slist /m /i /sss] pushVariables
     [
       /name arg1 def
       /flag true def
   
    %BUG: should use regular expression in a future.
    name tag 1 eq {
      @.usages { 0 get } map shell { (, ) nl } map /sss set
    } {
   
       /sss [ ] def
      @.usages length /n set
      0 1 << n 1 sub >>
      {
         /k set
         name << @.usages k get 0 get >> eq
         {
           /slist @.usages k get 1 get def
           /m slist length def
           0 1 << m 1 sub >> {
             /i set
             sss slist i get append nl append /sss set
           } for
           /flag false def
         }
         { }
         ifelse
      } for
   
      %BUG:  cannot get usages of primitives.
      flag
      {name Usage  /sss [(Usage of ) name ( could not obtained.) nl ] def}
      { }
      ifelse
    } ifelse
      /arg1 sss cat def
      ] pop
      popVariables
      arg1
   } def
   [(usages)
    [(key usages usages-as-a-string)
     (num usages list-of-key-words)
   ]] putUsages
   
 ;  ;
   

Legend:
Removed from v.1.14  
changed lines
  Added in v.1.29

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