Annotation of OpenXM/src/kan96xx/Doc/callsm1.sm1, Revision 1.1.1.1
1.1 maekawa 1: %% Library for ox_sm1 to be called from asir cf. xm (callsm1.asir)
2: %% This file is automatically loaded when ox_sm1 is called
3: %% with the name ox_sm1_forAsir. See kxx/oxserver00.c.
4: /whoami { ( SSkan/lib/callsm1.sm1, 1999/6/23. ) message } def
5:
6: /@@@.Dsymbol (d) def
7: /@@@.esymbol (e0) def
8:
9: /toAsirVar {
10: /arg1 set
11: [/in-toAsirVar /s /i /ans] pushVariables
12: [
13: /s arg1 def
14: s isArray { s {toAsirVar} map /ans set}
15: {
16: s (array) dc /s set
17: s { /i set
18: i 64 gt i 91 lt and %% 64 = @, 90 = Z, 96=`,
19: {
20: i 68 eq { %% 68 = D, 32 = space.
21: i 32 add
22: }
23: { i 32 add i } ifelse
24: }
25: { i } ifelse
26: } map {(string) dc} map cat /ans set
27: } ifelse
28: /arg1 ans def
29: ] pop
30: popVariables
31: arg1
32: } def
33:
34: %%[[(x) (Dx) (E) (T) (Dx0)] toAsirVar ] ::
35: %%(_xy) toAsirVar ::
36:
37: /toAsirForm {
38: /arg1 set
39: [/in-toAsirForm /aa /ans] pushVariables
40: [
41: /aa arg1 def
42: %% (toAsirForm : ) messagen aa message
43: aa isArray {
44: aa {toAsirForm} map /ans set
45: /toAsirForm.LLL goto
46: } { } ifelse
47: aa isPolynomial {
48: aa (0). eq {
49: /ans (0). def
50: } {
51: /ans [(sm1_dp) aa getvNamesCR toAsirVar aa] def
52: } ifelse
53: /toAsirForm.LLL goto
54: } { } ifelse
55: aa isInteger {
56: aa 0 eq {
57: /ans null def %% You cannot send universalNumber 0 to the current
58: %% asir 1999, 6/10. Try sm1(" 0 "); sm1_pop();
59: } {
60: /ans aa (universalNumber) dc def
61: } ifelse
62: /toAsirForm.LLL goto
63: } { } ifelse
64: aa isUniversalNumber {
65: aa (0).. eq {
66: /ans null def %% You cannot send universalNumber 0 to the current
67: %% asir
68: } {
69: /ans aa def
70: } ifelse
71: /toAsirForm.LLL goto
72: } { } ifelse
73:
74:
75: /ans aa def
76:
77: /toAsirForm.LLL
78: /arg1 ans def
79: ] pop
80: popVariables
81: arg1
82: } def
83:
84: /foo {[(x) ring_of_polynomials 0] define_ring
85: (x^2-1). /ff set
86: [(x) ring_of_differential_operators 0] define_ring
87: (x^2-1). /gg set
88: [ff gg 0 1 (123).. [(Hello)]] toAsirForm ::
89: } def
90:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>