1 |
|
2 |
|
3 |
|
4 |
|
5 | Find = (p, q) ->
|
6 |
|
7 | i = 0
|
8 | if (equal(p, q))
|
9 | return 1
|
10 |
|
11 | if (istensor(p))
|
12 | for i in [0...p.tensor.nelem]
|
13 | if (Find(p.tensor.elem[i], q))
|
14 | return 1
|
15 | return 0
|
16 |
|
17 | while (iscons(p))
|
18 | if (Find(car(p), q))
|
19 | return 1
|
20 | p = cdr(p)
|
21 |
|
22 | return 0
|
23 |
|
24 |
|
25 |
|
26 | findPossibleClockForm = (p) ->
|
27 |
|
28 | i = 0
|
29 |
|
30 | if isimaginaryunit(p)
|
31 | return 0
|
32 |
|
33 | if (car(p) == symbol(POWER) and !isinteger(caddr(p1)))
|
34 | if Find(cadr(p), imaginaryunit)
|
35 |
|
36 | return 1
|
37 |
|
38 | if (car(p) == symbol(POWER) && equaln(cadr(p), -1) && !isinteger(caddr(p1)))
|
39 |
|
40 | return 1
|
41 |
|
42 | if (istensor(p))
|
43 | for i in [0...p.tensor.nelem]
|
44 | if (findPossibleClockForm(p.tensor.elem[i]))
|
45 | return 1
|
46 | return 0
|
47 |
|
48 | while (iscons(p))
|
49 | if (findPossibleClockForm(car(p)))
|
50 | return 1
|
51 | p = cdr(p)
|
52 |
|
53 | return 0
|
54 |
|
55 |
|
56 | findPossibleExponentialForm = (p) ->
|
57 |
|
58 | i = 0
|
59 |
|
60 | if car(p) == symbol(POWER) && cadr(p)== symbol(E)
|
61 | return Find(caddr(p),imaginaryunit)
|
62 |
|
63 | if (istensor(p))
|
64 | for i in [0...p.tensor.nelem]
|
65 | if (findPossibleExponentialForm(p.tensor.elem[i]))
|
66 | return 1
|
67 | return 0
|
68 |
|
69 | while (iscons(p))
|
70 | if (findPossibleExponentialForm(car(p)))
|
71 | return 1
|
72 | p = cdr(p)
|
73 |
|
74 | return 0
|
75 |
|
76 | $.Find = Find |
\ | No newline at end of file |