=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/Doc/ox.sm1,v retrieving revision 1.33 retrieving revision 1.40 diff -u -p -r1.33 -r1.40 --- OpenXM/src/kan96xx/Doc/ox.sm1 2004/02/24 01:36:14 1.33 +++ OpenXM/src/kan96xx/Doc/ox.sm1 2004/08/22 02:00:24 1.40 @@ -1,4 +1,4 @@ -%%%%%%%%%%% $OpenXM: OpenXM/src/kan96xx/Doc/ox.sm1,v 1.32 2004/02/24 00:45:33 takayama Exp $ +%%%%%%%%%%% $OpenXM: OpenXM/src/kan96xx/Doc/ox.sm1,v 1.39 2004/03/08 08:24:42 takayama Exp $ /ox.sm1.myname (ox-new.sm1) def @@ -15,7 +15,7 @@ [(getenv) (OXSTART100)] extension tag 0 eq not { /oxstart100 [(getenv) (OXSTART100)] extension def } { } ifelse -oxstart100 message +oxstart100 message-quiet /ox.sm1.loaded 1 def /oxasir.sm1.loaded 1 def @@ -76,6 +76,9 @@ ox.version [(Version)] system_variable gt /SM_getsp 275 def /SM_dupErrors 276 def +/SM_pushCMOtag 277 def +/SM_executeFunctionWithOptionalArgument 282 def + /SM_control_kill 1024 def /SM_control_reset_connection 1030 def /SM_control_spawn_server 1027 def @@ -88,6 +91,7 @@ ox.version [(Version)] system_variable gt (Example: oxsm1.ccc [1 2 3] oxpushcmo oxsm1.ccc oxpopcmo /ff set ff :: ) ( ) (client ss oxexecutestring(oxsubmit) <>, client ss oxexec <>) + (client ss oxexecWithOpt ) (Example: oxsm1.ccc (0 1 10 { pop $Hello$ message } for) oxexecutestring ) (Example: oxsm1.ccc (2).. oxpushcmo oxsm1.ccc (10).. oxpushcmo ) @@ -96,6 +100,7 @@ ox.version [(Version)] system_variable gt (client str oxevalname, client str oxsetname, client num oxpops, client oxget) ( ) (client oxmathcap, client oxsetmathcap, oxgenportfile, oxremoveportfile) + (client oxpushcmotag) ( ) (client oxgetsp --- get stack pointer, client oxgeterrors --- get all errors) (cleint oxisData, client oxreset, client oxshutdown) @@ -146,6 +151,11 @@ ox.verbose { oxhelp } { } ifelse [(oxReq) arg2 SM_DUMMY_sendcmo arg1] extension pop } def +/oxpushcmotag { + /arg2 set + [(oxReq) arg2 SM_pushCMOtag ] extension pop +} def + /oxpopcmo { /arg1 set [(oxReq) arg1 SM_popCMO ] extension pop @@ -251,6 +261,23 @@ ox.verbose { oxhelp } { } ifelse } { } ifelse [(oxReq) arg2 SM_executeFunction arg1] extension pop } def +/oxexecWithOpt { + /arg1 set + /arg2 set + ox.takelog { ox.log [(oxSerial)] extension ox.mod arg1 put + ox.log [(oxSerial)] extension 1 add ox.mod + (executeFunctionWithOptionalArgument) put + } { } ifelse + [(oxReq) arg2 SM_executeFunctionWithOptionalArgument arg1] extension pop +} def +[(oxexecWithOpt) + [ + $Example: $ + $oxsm1.ccc (/foo { message message message } def) oxsubmit ;$ + $oxsm1.ccc (hello) oxpushcmo oxsm1.ccc 1 oxpushcmo oxsm1.ccc [[(opt) 0]] oxpushcmo ;$ + $oxsm1.ccc (foo) oxexecWithOpt $ + ] +] putUsages /oxsubmit2 { oxexec } def @@ -487,7 +514,7 @@ ox.verbose { oxhelp } { } ifelse [(oxCreateControl_RFC_101) peer 0 pass] extension /oxsm1.ccc set %% 0 means connect from only localhost. /ox.ccc oxsm1.ccc def - (The server is binded to the variable oxsm1.ccc) message + (The server is binded to the variable oxsm1.ccc) message-quiet oxsm1.ccc ] pop popVariables @@ -505,7 +532,7 @@ ox.verbose { oxhelp } { } ifelse oxsm1.ccc oxpopcmo /engineID set [(oxCreateEngine_RFC_101) peer 0 (Empty) engineID] extension /ox.ddd set - (The engine is binded to the variables ox.ddd) message + (The engine is binded to the variables ox.ddd) message-quiet ] pop popVariables arg1 @@ -639,16 +666,17 @@ ox.verbose { oxhelp } { } ifelse /peer [(oxGetPort) (localhost)] extension def /data peer 1 get toString def /control peer 3 get toString def - peer message + peer message-quiet [ oxstart100 + @@@.quiet { ( -quiet ) } { } ifelse Xm_noX { ( -nox ) } { } ifelse ( -oxserver bin/ox_sm1 -e ) ( -reverse ) ( -data ) data ( -control ) control ( -pass ) pass ( )] cat execve [(oxCreateClient2) peer 0 pass] extension /oxsm1.ccc set %% 0 means connect from only localhost. - (The server is binded to the variable oxsm1.ccc) message + (The server is binded to the variable oxsm1.ccc) message-quiet /ox.ccc oxsm1.ccc def oxsm1.ccc.init oxsm1.ccc @@ -679,7 +707,7 @@ ox.verbose { oxhelp } { } ifelse /peer [(oxGetPort) myhostname-ssh] extension def /data peer 1 get toString def /control peer 3 get toString def - peer message + peer message-quiet [(ssh -f ) machine ( -l ) name ( ") oxpath.oxlog.xterm-ssh oxpath.ox-ssh ( -reverse -ox ) oxpath.oxsm1-ssh ( -host ) myhostname-ssh @@ -733,7 +761,7 @@ ox.verbose { oxhelp } { } ifelse /peer [(oxGetPort) (localhost)] extension def /data peer 1 get toString def /control peer 3 get toString def - peer message + peer message-quiet [ oxstart100 Xm_noX { ( -nox ) } { } ifelse @@ -742,7 +770,7 @@ ox.verbose { oxhelp } { } ifelse ( )] cat execve [(oxCreateClient2) peer 0 pass] extension /oxntl.ccc set %% 0 means connect from only localhost. - (The server is binded to the variable oxntl.ccc) message + (The server is binded to the variable oxntl.ccc) message-quiet % oxntl.ccc.init oxntl.ccc ] pop @@ -841,10 +869,11 @@ oxasir.verbose { (If you interrupted the computation by typing ctrl-C, type in ) ( oxasir.ccc oxreset ; ) (to interrupt the ox_asir server.) + (NOTE: all asir-args must belong to the same ring. cf.oxasir.changeRing. ) (Example: oxasir.ccc [(fctr) (x^10-1).] asir ) ( ) (This function requires plugins cmo, socket and ox_asir server. cf. oxasir) - (See, ftp://endeavor.fujitsu.co.jp/pub/isis/asir on asir) + (See, http://www.math.kobe-u.ac.jp/Asir on asir) ] ] putUsages @@ -893,16 +922,27 @@ oxasir.verbose { %%% Mathematical functions for asir %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /oxasir.changeRing { + /oxasir.changeRing.rr.prev 0 def + oxasir.changeRing2 +} def +/oxasir.changeRing2 { /arg1 set - [/in-oxasir.changeRing /f /rr] pushVariables + [/in-oxasir.changeRing2 /f /rr ] pushVariables [ /f arg1 def f isArray { - f {oxasir.changeRing} map + f {oxasir.changeRing2} map }{ f isPolynomial { f (0). eq { } - { f (ring) dc /rr set [(CurrentRingp) rr] system_variable } ifelse + { f (ring) dc /rr set [(CurrentRingp) rr] system_variable + oxasir.changeRing.rr.prev tag 1 eq { } + { + oxasir.changeRing.rr.prev rr eq { } + { (asir : arguments must belong to the same ring.) error } ifelse + } ifelse + /oxasir.changeRing.rr.prev rr def + } ifelse } { } ifelse } ifelse ] pop @@ -1055,6 +1095,75 @@ oxasir.verbose { arg1 } def +/polygcd { + /arg1 set + [/pp /f /g /comm /vv] pushVariables + [(CurrentRingp)] pushEnv + [ + /pp arg1 def + oxasir.ccc [ ] eq { + (Starting ox_asir server.) message + ox_asirConnectMethod + } { } ifelse + + pp isArray { + /f pp 0 get def + /g pp 1 get def + pp length 3 eq { + /vv pp 2 get def + vv isArray { /vv vv from_records def } { } ifelse + [vv ring_of_polynomials 0] define_ring + f . /f set + g . /g set + } { } ifelse + }{ (usage: [f g] polygcd) error } ifelse + oxasir.ccc [(gcd) f g] asir /arg1 set + ] pop + popEnv + popVariables + arg1 +} def +[(polygcd) + [( [f g] polygcd r ) + ( [f g v] polygcd r) + (Example: [(x^2-1) (x-1) [(x)]] polygcd ) + ] +] putUsages +/polylcm { + /arg1 set + [/pp /f /g /comm /vv] pushVariables + [(CurrentRingp)] pushEnv + [ + /pp arg1 def + oxasir.ccc [ ] eq { + (Starting ox_asir server.) message + ox_asirConnectMethod + } { } ifelse + + pp isArray { + /f pp 0 get def + /g pp 1 get def + pp length 3 eq { + /vv pp 2 get def + vv isArray { /vv vv from_records def } { } ifelse + [vv ring_of_polynomials 0] define_ring + f . /f set + g . /g set + } { } ifelse + }{ (usage: [f g] polylcm) error } ifelse + oxasir.ccc [(lcm) f g] asir /arg1 set + ] pop + popEnv + popVariables + arg1 +} def +[(polylcm) + [( [f g] polylcm r ) + ( [f g v] polylcm r) + (Example: [(x^2-1) (x-1) [(x)]] polylcm ) + ] +] putUsages + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% [(chattr) 0 /findIntegralRoots] extension pop /findIntegralRoots { @@ -1488,7 +1597,7 @@ oxasir.verbose { [wvec] weight_vector 0] define_ring - ff { . dehomogenize homogenize } map /ff set + ff { toString . dehomogenize homogenize } map /ff set vvx { . } map /vvx set %%ex [x,y] vvd { . } map /vvd set %%ex [Dx,Dy] vvx vvd join [(h).] join /avv set @@ -1539,9 +1648,10 @@ oxasir.verbose { /peer [(oxGetPort) (localhost)] extension def /data peer 1 get toString def /control peer 3 get toString def - peer message + peer message-quiet [ oxstart100 + @@@.quiet { ( -quiet ) } { } ifelse Xm_noX { ( -nox ) } { } ifelse ( -oxserver bin/ox_asir -e ) ( -reverse ) ( -data ) data ( -control ) control ( -pass ) pass @@ -1585,7 +1695,7 @@ oxasir.verbose { /peer [(oxGetPort) (localhost)] extension def /data peer 1 get toString def /control peer 3 get toString def - peer message + peer message-quiet [ oxstart100 Xm_noX { ( -nox ) } { } ifelse @@ -1594,7 +1704,7 @@ oxasir.verbose { ( )] cat execve [(oxCreateClient2) peer 0 pass] extension /oxk0.ccc set %% 0 means connect from only localhost. - (The server is binded to the variable oxk0.ccc) message + (The server is binded to the variable oxk0.ccc) message-quiet ox.k0.init /arg1 oxk0.ccc def ] pop @@ -1603,3 +1713,7 @@ oxasir.verbose { } def /@@@polymake.k0.ccc [ ] def +/ox_server_mode { + /:: { } def % do nothing + +} def \ No newline at end of file