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

Annotation of OpenXM/src/kan96xx/Doc/factor-a.sm1, Revision 1.1.1.1

1.1       maekawa     1: %% This package requires kan/sm1 version 2.981101 or later.
                      2:
                      3: /factor-a.version (2.981101) def
                      4: (factor-a.sm1 : kan/sm1 package to factor polynomials by calling risa/asir.)
                      5: message
                      6: (             : kan/sm1 package to simplify rationals by calling risa/asir.)
                      7: message
                      8: (               Version : ) messagen  factor-a.version message
                      9:
                     10: factor-a.version [(Version)] system_variable gt
                     11: { (This package requires the latest version of kan/sm1) message
                     12:   (Please get it from http://www.math.kobe-u.ac.jp/KAN) message
                     13:   error
                     14: } { } ifelse
                     15:
                     16:
                     17: [(factor)
                     18:  [(polynomial factor list_of_strings)
                     19:   (Example: (x^2-1). factor :: ---> [[$1$ $1$] [$x-1$ $1$] [$x+1$ $1$]])
                     20:   (cf.:     data_conversion, map, get, pushfile)
                     21:   (Note:    The function call creates work files asir-tmp.t, asir-tmp.tt,)
                     22:   (          asir-tmp-out.t, asri-tmp-log.t and asir-tmp-out.tt )
                     23:   (          in the current directory.)
                     24:  ]
                     25: ] putUsages
                     26:
                     27: %% /f (Dx^10*d*a-d*a) def
                     28:
                     29: /factor-asir-1 {
                     30:  /arg1 set
                     31:  [/f /fd /fnewline] pushVariables
                     32:  [
                     33:   arg1 /f set
                     34:   %% (factor-asir-1 is tested with Asir version 950831 on Linux.) message
                     35:   (asir-tmp.t) (w) file /fd set
                     36:   /fnewline { fd 10 (string) data_conversion writestring } def
                     37:   fd $output("asir-tmp-out.t");$ writestring fnewline
                     38:   fd $fctr($ writestring
                     39:   fd  f writestring
                     40:   fd $); output(); quit(); $ writestring fnewline
                     41:   fd closefile
                     42:   (/bin/rm -f asir-tmp.tt) system
                     43:   (sed "s/D/kanD/g" asir-tmp.t | sed "s/E/kanE/g" | sed "s/Q/kanQ/g" >asir-tmp.tt) system
                     44:   (/bin/rm -f asir-tmp-out.t asir-tmp-out.tt asir-tmp-log.t) system
                     45:   (asir <asir-tmp.tt >asir-tmp-log.t) system
                     46:   (sed "s/\[1\]/ /g" asir-tmp-out.t | sed "s/\[2\]/ /g" | sed "1s/1/ /g"| sed "s/\[/{/g" | sed "s/\]/}/g" | sed "s/kanD/D/g" | sed "s/kanE/E/g" | sed "s/kanQ/Q/g" >asir-tmp-out.tt) system
                     47:  ] pop
                     48:  popVariables
                     49: } def
                     50:
                     51: /clean-workfiles {
                     52:  (/bin/rm -f asir-tmp-out.t asir-tmp-out.tt asir-tmp.t asir-tmp.tt sm0-tmp.t sm0-tmp-out.t asir-tmp-log.t) system
                     53: } def
                     54:
                     55:
                     56: %% comment: there is not data conversion function from string --> array
                     57: %%                           e.g. (abc) ---> [0x61, 0x62, 0x63]
                     58: %%          We can do (abc) 1 10 put, but "get" does not work for strings.
                     59:
                     60: %% f factor-asir-1
                     61:
                     62: %%/aaa
                     63: %% ({{1,1},{x-1,1},{x+1,1},{x^4+x^3+x^2+x+1,1},{x^4-x^3+x^2-x+1,1}})
                     64: %%def
                     65:
                     66: /asir-list-to-kan {
                     67:   /arg1 set
                     68:   [/aaa /ftmp /ftmp2] pushVariables
                     69:   [
                     70:     /aaa arg1 def
                     71:     [ aaa to_records pop ] /ftmp set
                     72:     ftmp { to_records pop [ 3 1 roll ] } map /ftmp2 set
                     73:     /arg1 ftmp2 def
                     74:   ] pop
                     75:   popVariables
                     76:   arg1
                     77: } def
                     78:
                     79: /foo {
                     80:   (input string is in f) message
                     81:   f ::
                     82:   f factor-asir-1
                     83:   %% (asir-tmp-out.tt) run
                     84:   %% (answer in @asir.out) message
                     85:   %% bug of run.
                     86:   (asir-tmp-out.tt) pushfile /@asir.out set
                     87:   @asir.out asir-list-to-kan /ff2 set
                     88:   (answer in ff2) message
                     89: } def
                     90:
                     91: /factor {
                     92:   (string) data_conversion
                     93:   factor-asir-1
                     94:   (asir-tmp-out.tt) pushfile asir-list-to-kan
                     95: } def
                     96:
                     97: %%%%%%%%%%%%%%%%% macros for simplification (reduction, cancel)
                     98: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
                     99: [(cancel)
                    100:  [(polynomial cancel list_of_strings)
                    101:   (This function simplifies rationals.)
                    102:   (Example: $x^2-1$. $x+1$. div cancel :: ---> [[$x-1$ , $1$]])
                    103:   (Note:    The function call creates work files asir-tmp.t, asir-tmp.tt,)
                    104:   (          asir-tmp-out.t, asri-tmp-log.t and asir-tmp-out.tt )
                    105:   (          in the current directory.)
                    106:  ]
                    107: ] putUsages
                    108:
                    109: /reduce-asir-1 {
                    110:  /arg1 set
                    111:  [/f /fd /fnewline] pushVariables
                    112:  [
                    113:   arg1 /f set
                    114:   %% (reduce-asir-1 is tested with Asir version 950831 on Linux.) message
                    115:   (asir-tmp.t) (w) file /fd set
                    116:   /fnewline { fd 10 (string) data_conversion writestring } def
                    117:   fd $output("asir-tmp-out.t");$ writestring fnewline
                    118:   fd $AsirTmp012=red($ writestring
                    119:   fd  f writestring
                    120:   fd $)$ writestring
                    121:   fd ($ )  writestring fnewline
                    122:   fd $AsirTmp013=ptozp(nm(AsirTmp012))$ writestring
                    123:   fd ($ )  writestring fnewline
                    124:   fd $AsirTmp014=red(nm(AsirTmp012)/AsirTmp013)$ writestring
                    125:   fd ($ )  writestring fnewline
                    126:   fd $[[nm(AsirTmp014)*AsirTmp013,dn(AsirTmp014)*dn(AsirTmp012)]];output();quit(); $ writestring fnewline
                    127:   fd closefile
                    128:   (/bin/rm -f asir-tmp.tt) system
                    129:   (sed "s/D/kanD/g" asir-tmp.t | sed "s/E/kanE/g" | sed "s/Q/kanQ/g" >asir-tmp.tt) system
                    130:   (/bin/rm -f asir-tmp-out.t asir-tmp-out.tt asir-tmp-log.t) system
                    131:   (asir <asir-tmp.tt >asir-tmp-log.t) system
                    132:   (sed "s/\[1\]/ /g" asir-tmp-out.t | sed "s/\[2\]/ /g" |sed "s/\[3\]/ /g" |sed "s/\[4\]/ /g" |sed "s/\[5\]/ /g" | sed "1s/1/ /g"| sed "s/\[/{/g" | sed "s/\]/}/g" | sed "s/kanD/D/g" | sed "s/kanE/E/g" | sed "s/kanQ/Q/g" | sed "s/kanLeftBrace/\[/g" | sed "s/kanRightBrace/\]/g" | sed "s/kanComma/\,/g" >asir-tmp-out.tt) system
                    133:
                    134:
                    135:  ] pop
                    136:  popVariables
                    137: } def
                    138:
                    139: /cancel {
                    140:   (string) data_conversion
                    141:   reduce-asir-1
                    142:   (asir-tmp-out.tt) pushfile asir-list-to-kan
                    143: } def
                    144:
                    145:
                    146: (Loaded macros "factor", "cancel") message
                    147:
                    148:
                    149:
                    150:
                    151:

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