|
|
1.1 root 1: #include "global.h"
2:
3: lispval
4: subbig(pos,neg)
5: lispval pos, neg;
6: {
7: register lispval work;
8: int *sp(); lispval adbig();
9: register int *mysp = sp() - 2;
10: register int *ersatz = mysp;
11:
12: for(work = neg; work!=0; work = work->CDR) {
13: stack(-work->i, (mysp -= 2));
14: }
15: mysp[3] = 0;
16: return(adbig(pos,ersatz));
17: }
18: /*
19: * subbig -- subtract one bignum from another.
20: *
21: * What this does is it negates each coefficient of a copy of the bignum
22: * which is just pushed on the stack for convenience. This may give rise
23: * to a bignum which is not in canonical form, but is nonetheless a repre
24: * sentation of a bignum. Addbig then adds it to a bignum, and produces
25: * a result in canonical form.
26: */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.