version 1.32, 2004/02/24 00:45:33 |
version 1.41, 2004/08/28 05:23:55 |
|
|
%%%%%%%%%%% $OpenXM: OpenXM/src/kan96xx/Doc/ox.sm1,v 1.31 2004/02/05 03:04:40 takayama Exp $ |
%%%%%%%%%%% $OpenXM: OpenXM/src/kan96xx/Doc/ox.sm1,v 1.40 2004/08/22 02:00:24 takayama Exp $ |
|
|
/ox.sm1.myname (ox-new.sm1) def |
/ox.sm1.myname (ox-new.sm1) def |
|
|
|
|
[(getenv) (OXSTART100)] extension tag 0 eq not { |
[(getenv) (OXSTART100)] extension tag 0 eq not { |
/oxstart100 [(getenv) (OXSTART100)] extension def |
/oxstart100 [(getenv) (OXSTART100)] extension def |
} { } ifelse |
} { } ifelse |
oxstart100 message |
oxstart100 message-quiet |
|
|
/ox.sm1.loaded 1 def |
/ox.sm1.loaded 1 def |
/oxasir.sm1.loaded 1 def |
/oxasir.sm1.loaded 1 def |
Line 76 ox.version [(Version)] system_variable gt |
|
Line 76 ox.version [(Version)] system_variable gt |
|
/SM_getsp 275 def |
/SM_getsp 275 def |
/SM_dupErrors 276 def |
/SM_dupErrors 276 def |
|
|
|
/SM_pushCMOtag 277 def |
|
/SM_executeFunctionWithOptionalArgument 282 def |
|
|
/SM_control_kill 1024 def |
/SM_control_kill 1024 def |
/SM_control_reset_connection 1030 def |
/SM_control_reset_connection 1030 def |
/SM_control_spawn_server 1027 def |
/SM_control_spawn_server 1027 def |
Line 88 ox.version [(Version)] system_variable gt |
|
Line 91 ox.version [(Version)] system_variable gt |
|
(Example: oxsm1.ccc [1 2 3] oxpushcmo oxsm1.ccc oxpopcmo /ff set ff :: ) |
(Example: oxsm1.ccc [1 2 3] oxpushcmo oxsm1.ccc oxpopcmo /ff set ff :: ) |
( ) |
( ) |
(client ss oxexecutestring(oxsubmit) <<executeString>>, client ss oxexec <<executeFunction>>) |
(client ss oxexecutestring(oxsubmit) <<executeString>>, client ss oxexec <<executeFunction>>) |
|
(client ss oxexecWithOpt ) |
|
|
(Example: oxsm1.ccc (0 1 10 { pop $Hello$ message } for) oxexecutestring ) |
(Example: oxsm1.ccc (0 1 10 { pop $Hello$ message } for) oxexecutestring ) |
(Example: oxsm1.ccc (2).. oxpushcmo oxsm1.ccc (10).. oxpushcmo ) |
(Example: oxsm1.ccc (2).. oxpushcmo oxsm1.ccc (10).. oxpushcmo ) |
Line 96 ox.version [(Version)] system_variable gt |
|
Line 100 ox.version [(Version)] system_variable gt |
|
(client str oxevalname, client str oxsetname, client num oxpops, client oxget) |
(client str oxevalname, client str oxsetname, client num oxpops, client oxget) |
( ) |
( ) |
(client oxmathcap, client oxsetmathcap, oxgenportfile, oxremoveportfile) |
(client oxmathcap, client oxsetmathcap, oxgenportfile, oxremoveportfile) |
|
(client oxpushcmotag) |
( ) |
( ) |
(client oxgetsp --- get stack pointer, client oxgeterrors --- get all errors) |
(client oxgetsp --- get stack pointer, client oxgeterrors --- get all errors) |
(cleint oxisData, client oxreset, client oxshutdown) |
(cleint oxisData, client oxreset, client oxshutdown) |
Line 146 ox.verbose { oxhelp } { } ifelse |
|
Line 151 ox.verbose { oxhelp } { } ifelse |
|
[(oxReq) arg2 SM_DUMMY_sendcmo arg1] extension pop |
[(oxReq) arg2 SM_DUMMY_sendcmo arg1] extension pop |
} def |
} def |
|
|
|
/oxpushcmotag { |
|
/arg2 set |
|
[(oxReq) arg2 SM_pushCMOtag ] extension pop |
|
} def |
|
|
/oxpopcmo { |
/oxpopcmo { |
/arg1 set |
/arg1 set |
[(oxReq) arg1 SM_popCMO ] extension pop |
[(oxReq) arg1 SM_popCMO ] extension pop |
Line 251 ox.verbose { oxhelp } { } ifelse |
|
Line 261 ox.verbose { oxhelp } { } ifelse |
|
} { } ifelse |
} { } ifelse |
[(oxReq) arg2 SM_executeFunction arg1] extension pop |
[(oxReq) arg2 SM_executeFunction arg1] extension pop |
} def |
} 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 { |
/oxsubmit2 { |
oxexec |
oxexec |
} def |
} def |
Line 487 ox.verbose { oxhelp } { } ifelse |
|
Line 514 ox.verbose { oxhelp } { } ifelse |
|
[(oxCreateControl_RFC_101) peer 0 pass] extension /oxsm1.ccc set |
[(oxCreateControl_RFC_101) peer 0 pass] extension /oxsm1.ccc set |
%% 0 means connect from only localhost. |
%% 0 means connect from only localhost. |
/ox.ccc oxsm1.ccc def |
/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 |
oxsm1.ccc |
] pop |
] pop |
popVariables |
popVariables |
Line 505 ox.verbose { oxhelp } { } ifelse |
|
Line 532 ox.verbose { oxhelp } { } ifelse |
|
oxsm1.ccc oxpopcmo /engineID set |
oxsm1.ccc oxpopcmo /engineID set |
[(oxCreateEngine_RFC_101) peer 0 (Empty) engineID] extension |
[(oxCreateEngine_RFC_101) peer 0 (Empty) engineID] extension |
/ox.ddd set |
/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 |
] pop |
popVariables |
popVariables |
arg1 |
arg1 |
Line 639 ox.verbose { oxhelp } { } ifelse |
|
Line 666 ox.verbose { oxhelp } { } ifelse |
|
/peer [(oxGetPort) (localhost)] extension def |
/peer [(oxGetPort) (localhost)] extension def |
/data peer 1 get toString def |
/data peer 1 get toString def |
/control peer 3 get toString def |
/control peer 3 get toString def |
peer message |
peer message-quiet |
[ |
[ |
oxstart100 |
oxstart100 |
|
@@@.quiet { ( -quiet ) } { } ifelse |
Xm_noX { ( -nox ) } { } ifelse |
Xm_noX { ( -nox ) } { } ifelse |
( -oxserver bin/ox_sm1 -e ) ( -reverse ) |
( -oxserver bin/ox_sm1 -e ) ( -reverse ) |
( -data ) data ( -control ) control ( -pass ) pass |
( -data ) data ( -control ) control ( -pass ) pass |
( )] cat execve |
( )] cat execve |
[(oxCreateClient2) peer 0 pass] extension /oxsm1.ccc set |
[(oxCreateClient2) peer 0 pass] extension /oxsm1.ccc set |
%% 0 means connect from only localhost. |
%% 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 |
/ox.ccc oxsm1.ccc def |
oxsm1.ccc.init |
oxsm1.ccc.init |
oxsm1.ccc |
oxsm1.ccc |
Line 679 ox.verbose { oxhelp } { } ifelse |
|
Line 707 ox.verbose { oxhelp } { } ifelse |
|
/peer [(oxGetPort) myhostname-ssh] extension def |
/peer [(oxGetPort) myhostname-ssh] extension def |
/data peer 1 get toString def |
/data peer 1 get toString def |
/control peer 3 get toString def |
/control peer 3 get toString def |
peer message |
peer message-quiet |
[(ssh -f ) machine ( -l ) name ( ") |
[(ssh -f ) machine ( -l ) name ( ") |
oxpath.oxlog.xterm-ssh oxpath.ox-ssh ( -reverse -ox ) oxpath.oxsm1-ssh |
oxpath.oxlog.xterm-ssh oxpath.ox-ssh ( -reverse -ox ) oxpath.oxsm1-ssh |
( -host ) myhostname-ssh |
( -host ) myhostname-ssh |
Line 733 ox.verbose { oxhelp } { } ifelse |
|
Line 761 ox.verbose { oxhelp } { } ifelse |
|
/peer [(oxGetPort) (localhost)] extension def |
/peer [(oxGetPort) (localhost)] extension def |
/data peer 1 get toString def |
/data peer 1 get toString def |
/control peer 3 get toString def |
/control peer 3 get toString def |
peer message |
peer message-quiet |
[ |
[ |
oxstart100 |
oxstart100 |
Xm_noX { ( -nox ) } { } ifelse |
Xm_noX { ( -nox ) } { } ifelse |
Line 742 ox.verbose { oxhelp } { } ifelse |
|
Line 770 ox.verbose { oxhelp } { } ifelse |
|
( )] cat execve |
( )] cat execve |
[(oxCreateClient2) peer 0 pass] extension /oxntl.ccc set |
[(oxCreateClient2) peer 0 pass] extension /oxntl.ccc set |
%% 0 means connect from only localhost. |
%% 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.init |
oxntl.ccc |
oxntl.ccc |
] pop |
] pop |
Line 841 oxasir.verbose { |
|
Line 869 oxasir.verbose { |
|
(If you interrupted the computation by typing ctrl-C, type in ) |
(If you interrupted the computation by typing ctrl-C, type in ) |
( oxasir.ccc oxreset ; ) |
( oxasir.ccc oxreset ; ) |
(to interrupt the ox_asir server.) |
(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 ) |
(Example: oxasir.ccc [(fctr) (x^10-1).] asir ) |
( ) |
( ) |
(This function requires plugins cmo, socket and ox_asir server. cf. oxasir) |
(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 |
] putUsages |
|
|
Line 893 oxasir.verbose { |
|
Line 922 oxasir.verbose { |
|
%%% Mathematical functions for asir |
%%% Mathematical functions for asir |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
/oxasir.changeRing { |
/oxasir.changeRing { |
|
/oxasir.changeRing.rr.prev 0 def |
|
oxasir.changeRing2 |
|
} def |
|
/oxasir.changeRing2 { |
/arg1 set |
/arg1 set |
[/in-oxasir.changeRing /f /rr] pushVariables |
[/in-oxasir.changeRing2 /f /rr ] pushVariables |
[ |
[ |
/f arg1 def |
/f arg1 def |
f isArray { |
f isArray { |
f {oxasir.changeRing} map |
f {oxasir.changeRing2} map |
}{ |
}{ |
f isPolynomial { |
f isPolynomial { |
f (0). eq { } |
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 |
} ifelse |
} ifelse |
] pop |
] pop |
Line 1055 oxasir.verbose { |
|
Line 1095 oxasir.verbose { |
|
arg1 |
arg1 |
} def |
} 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 |
|
|
|
/asir_red { |
|
/arg1 set |
|
[/pp /f /g /rr /vv] pushVariables |
|
[(CurrentRingp)] pushEnv |
|
[ |
|
/pp arg1 def |
|
oxasir.ccc [ ] eq { |
|
(Starting ox_asir server.) message |
|
ox_asirConnectMethod |
|
} { } ifelse |
|
{ |
|
pp isRational { |
|
/f pp numerator def |
|
/g pp denominator def |
|
[[f g]] reduceByAsir /rr set |
|
}{ } ifelse |
|
exit |
|
|
|
pp isArray { |
|
/vv pp 2 get def |
|
/f pp 0 get 0 get def |
|
/g pp 0 get 1 get def |
|
[[f toString g toString] vv] reduceByAsir /rr set |
|
} { } ifelse |
|
exit |
|
|
|
(asir_red: not implemented) error exit |
|
} loop |
|
|
|
rr 1 get isPolynomial { |
|
rr 0 get rr 1 get div /rr set |
|
}{ |
|
rr 1 get (1).. eq { |
|
rr 0 get /rr set |
|
}{ |
|
rr 0 get rr 1 get div /rr set |
|
} ifelse |
|
} ifelse |
|
|
|
/arg1 rr def |
|
] pop |
|
popEnv |
|
popVariables |
|
arg1 |
|
} def |
|
[(asir_red) |
|
[(Calling the function red of asir. It simplifies a rational function.) |
|
(cf. cancel) |
|
(Example: (x^2). (x). div asir_red ) |
|
]] putUsages |
|
|
|
/asir_fctr { fctr } def |
|
[(asir_fctr) |
|
[(Calling the factorizer of asir.) |
|
]] putUsages |
|
|
|
/asir_primadec { primadec } def |
|
[(asir_primadec) |
|
[(Calling the primadec of asir.) |
|
]] putUsages |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
[(chattr) 0 /findIntegralRoots] extension pop |
[(chattr) 0 /findIntegralRoots] extension pop |
/findIntegralRoots { |
/findIntegralRoots { |
Line 1407 oxasir.verbose { |
|
Line 1578 oxasir.verbose { |
|
f { toString . } map /f set |
f { toString . } map /f set |
vvv { . } map /vvv set |
vvv { . } map /vvv set |
ddd { . } map /ddd set |
ddd { . } map /ddd set |
/wt wt generic_bfct.aux1 def |
/wt [vvv ddd wt] generic_bfct.aux1 def |
} ifelse |
} ifelse |
[f vvv ddd wt] message |
[f vvv ddd wt] message |
|
|
Line 1428 oxasir.verbose { |
|
Line 1599 oxasir.verbose { |
|
|
|
/generic_bfct.aux1 { |
/generic_bfct.aux1 { |
/arg1 set |
/arg1 set |
[/in-generic_bfct.aux1 /wt /wtx /wtd /n] pushVariables |
[/in-generic_bfct.aux1 /ii /jj /wt /wtx /wtd /vv /dd /n] pushVariables |
[ |
[ |
arg1 /wt set |
arg1 2 get /wt set |
/n [(N)] system_variable def |
arg1 0 get /vv set |
wt { dup tag PolyP eq { toString } { } ifelse } map /wt set |
arg1 1 get /dd set |
wt weightv /wt set |
/wtx [ 0 1 vv length 1 sub { pop (0).. } for ] def |
/wtx wt n carN rest reverse rest reverse def |
/n wt length def |
/wtd wt reverse n carN reverse |
0 2 n 1 sub { |
rest reverse rest reverse def |
/ii set |
wtx wtd join /wt set |
0 1 vv length 1 sub { |
|
/jj set |
|
wt ii get toString dd jj get toString eq { |
|
wtx jj << wt ii 1 add get >> put |
|
} { } ifelse |
|
} for |
|
} for |
|
|
|
wtx /wt set |
wt { dup tag IntegerP eq { (universalNumber) dc } { } ifelse } map /wt set |
wt { dup tag IntegerP eq { (universalNumber) dc } { } ifelse } map /wt set |
wt /arg1 set |
wt /arg1 set |
] pop |
] pop |
Line 1480 oxasir.verbose { |
|
Line 1659 oxasir.verbose { |
|
[wvec] weight_vector |
[wvec] weight_vector |
0] define_ring |
0] define_ring |
|
|
ff { . dehomogenize homogenize } map /ff set |
ff { toString . dehomogenize homogenize } map /ff set |
vvx { . } map /vvx set %%ex [x,y] |
vvx { . } map /vvx set %%ex [x,y] |
vvd { . } map /vvd set %%ex [Dx,Dy] |
vvd { . } map /vvd set %%ex [Dx,Dy] |
vvx vvd join [(h).] join /avv set |
vvx vvd join [(h).] join /avv set |
Line 1531 oxasir.verbose { |
|
Line 1710 oxasir.verbose { |
|
/peer [(oxGetPort) (localhost)] extension def |
/peer [(oxGetPort) (localhost)] extension def |
/data peer 1 get toString def |
/data peer 1 get toString def |
/control peer 3 get toString def |
/control peer 3 get toString def |
peer message |
peer message-quiet |
[ |
[ |
oxstart100 |
oxstart100 |
|
@@@.quiet { ( -quiet ) } { } ifelse |
Xm_noX { ( -nox ) } { } ifelse |
Xm_noX { ( -nox ) } { } ifelse |
( -oxserver bin/ox_asir -e ) ( -reverse ) |
( -oxserver bin/ox_asir -e ) ( -reverse ) |
( -data ) data ( -control ) control ( -pass ) pass |
( -data ) data ( -control ) control ( -pass ) pass |
Line 1577 oxasir.verbose { |
|
Line 1757 oxasir.verbose { |
|
/peer [(oxGetPort) (localhost)] extension def |
/peer [(oxGetPort) (localhost)] extension def |
/data peer 1 get toString def |
/data peer 1 get toString def |
/control peer 3 get toString def |
/control peer 3 get toString def |
peer message |
peer message-quiet |
[ |
[ |
oxstart100 |
oxstart100 |
Xm_noX { ( -nox ) } { } ifelse |
Xm_noX { ( -nox ) } { } ifelse |
Line 1586 oxasir.verbose { |
|
Line 1766 oxasir.verbose { |
|
( )] cat execve |
( )] cat execve |
[(oxCreateClient2) peer 0 pass] extension /oxk0.ccc set |
[(oxCreateClient2) peer 0 pass] extension /oxk0.ccc set |
%% 0 means connect from only localhost. |
%% 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 |
ox.k0.init |
/arg1 oxk0.ccc def |
/arg1 oxk0.ccc def |
] pop |
] pop |
Line 1595 oxasir.verbose { |
|
Line 1775 oxasir.verbose { |
|
} def |
} def |
/@@@polymake.k0.ccc [ ] def |
/@@@polymake.k0.ccc [ ] def |
|
|
|
/ox_server_mode { |
|
/:: { } def % do nothing |
|
|
|
} def |
|
|