1 |
|
2 |
|
3 | Eval_numerator = ->
|
4 | push(cadr(p1))
|
5 | Eval()
|
6 | numerator()
|
7 |
|
8 | numerator = ->
|
9 | h = 0
|
10 |
|
11 | save()
|
12 |
|
13 | p1 = pop()
|
14 |
|
15 | if (car(p1) == symbol(ADD))
|
16 | push(p1)
|
17 | rationalize()
|
18 | p1 = pop()
|
19 |
|
20 | if (car(p1) == symbol(MULTIPLY))
|
21 | h = tos
|
22 | p1 = cdr(p1)
|
23 | while (iscons(p1))
|
24 | push(car(p1))
|
25 | numerator()
|
26 | p1 = cdr(p1)
|
27 | multiply_all(tos - h)
|
28 | else if (isrational(p1))
|
29 | push(p1)
|
30 | mp_numerator()
|
31 | else if (car(p1) == symbol(POWER) && isnegativeterm(caddr(p1)))
|
32 | push(one)
|
33 | else
|
34 | push(p1)
|
35 |
|
36 | restore()
|
37 |
|