Exemplo n.º 1
0
int f_regsetq(int arglist){
    int arg1,arg2;
    
    checkarg(LEN2_TEST, "regsetq", arglist);
    checkarg(SYMBOL_TEST, "regsetq", car(arglist));
    arg1 = car(arglist);
    arg2 = cadr(arglist);
    if(HAS_NAME(arg1,"H"))
    	H = GET_NUMBER(arg2);
    else 
    if(HAS_NAME(arg1,"E"))
    	E = GET_NUMBER(arg2);
    else
    if(HAS_NAME(arg1,"F"))
    	F = GET_NUMBER(arg2);
    else
    if(HAS_NAME(arg1,"S"))
        S = GET_NUMBER(arg2);
    else
    if(HAS_NAME(arg1,"C"))
        C = GET_NUMBER(arg2);
    else
    if(HAS_NAME(arg1,"A"))
        A = GET_NUMBER(arg2);
    else
    if(HAS_NAME(arg1,"P"))
        P = GET_NUMBER(arg2);
    
    return(makeT());
}
Exemplo n.º 2
0
int f_argstkdump(int arglist){
	int arg1;
    
    checkarg(LEN1_TEST, "hdmp", arglist);
    arg1 = GET_NUMBER(car(arglist));
	argstkdump(arg1,arg1+10);
    return(makeT());
}
Exemplo n.º 3
0
int f_reset(int arglist){
	E = stack[0];
    S = 0;
    C = 0;
    A = 0;
    P = 0;
    return(makeT());
}
Exemplo n.º 4
0
//-----------------------------
void initcell(void){
	int addr,addr1;
    
    for(addr=0; addr <= HEAPSIZE; addr++){
    	heap[addr].flag = FRE;
        heap[addr].cdr = addr+1;
    }
    H = 0;
    F = HEAPSIZE;
    
    //0番地はnil、環境レジスタを設定する。初期環境
    E = makeNIL();
    assocsym(makeNIL(),makeNIL());
    assocsym(makeT(),makeT());
    
    S = 0;
    A = 0;
}
Exemplo n.º 5
0
//--FSUBR-----------
int f_setq(int arglist){
	int arg1,arg2;
 	
    checkarg(LEN2_TEST, "setq", arglist);
    checkarg(SYMBOL_TEST, "setq", car(arglist));
    arg1 = car(arglist);
    arg2 = eval(cadr(arglist));
    bindsym(arg1,arg2);
    return(makeT());   
}
Exemplo n.º 6
0
int f_register(int arglist){
	checkarg(LEN0_TEST, "reg", arglist);
	printf("H(heap)         = %d\n", H);
    printf("F(free)         = %d\n", F);
    printf("E(environment)  = %d\n", E);
    printf("S(stack)        = %d\n", S);
    printf("C(consume of S) = %d\n", C);
    printf("A(arg-stack)    = %d\n", A);
    printf("P(on ctrl+c)    = %d\n", P);
    return(makeT());
}
Exemplo n.º 7
0
int f_defun(int arglist){
	int arg1,arg2;
    
    checkarg(LEN3_TEST, "defun", arglist);
    checkarg(SYMBOL_TEST, "defun", car(arglist));
    checkarg(LIST_TEST, "defun", cadr(arglist));
    checkarg(LIST_TEST, "defun" ,caddr(arglist));
    arg1 = car(arglist);
    arg2 = cdr(arglist);
    bindfunc(GET_NAME(arg1),LAMBDA,arg2);
    return(makeT());
}
Exemplo n.º 8
0
int f_eqgreater(int arglist){
	int num1,num2;
    
    checkarg(LEN2_TEST, ">=", arglist);
    checkarg(NUMLIST_TEST, ">=", arglist);
    num1 = GET_NUMBER(car(arglist));
    num2 = GET_NUMBER(cadr(arglist));
    
    if(num1 >= num2)
    	return(makeT());
    else
    	return(makeNIL());
}    
Exemplo n.º 9
0
int f_smaller(int arglist){
	int num1,num2;
    
    checkarg(LEN2_TEST, "<", arglist);
    checkarg(NUMLIST_TEST, "<", arglist);
    num1 = GET_NUMBER(car(arglist));
    num2 = GET_NUMBER(cadr(arglist));
    
    if(num1 < num2)
    	return(makeT());
    else
    	return(makeNIL());
}
Exemplo n.º 10
0
	Tseries *
mk_cheby(projUV a, projUV b, double res, projUV *resid, projUV (*func)(projUV), 
	int nu, int nv, int power) {
	int j, i, nru, nrv, *ncu, *ncv;
	Tseries *Ts = 0;
	projUV **w;
	double cutres;

	if (!(w = (projUV **)vector2(nu, nv, sizeof(projUV))) ||
		!(ncu = (int *)vector1(nu + nv, sizeof(int))))
		return 0;
	ncv = ncu + nu;
	if (!bchgen(a, b, nu, nv, w, func)) {
		projUV *s;
		double *p;

		/* analyse coefficients and adjust until residual OK */
		cutres = res;
		for (i = 4; i ; --i) {
			eval(w, nu, nv, cutres, resid);
			if (resid->u < res && resid->v < res)
				break;
			cutres *= 0.5;
		}
		if (i <= 0) /* warn of too many tries */
			resid->u = - resid->u;
		/* apply cut resolution and set pointers */
		nru = nrv = 0;
		for (j = 0; j < nu; ++j) {
			ncu[j] = ncv[j] = 0; /* clear column maxes */
			for (s = w[j], i = 0; i < nv; ++i, ++s) {
				if (fabs(s->u) < cutres) /* < resolution ? */
					s->u = 0.;		/* clear coefficient */
				else
					ncu[j] = i + 1;	/* update column max */
				if (fabs(s->v) < cutres) /* same for v coef's */
					s->v = 0.;
				else
					ncv[j] = i + 1;
			}
			if (ncu[j]) nru = j + 1;	/* update row max */
			if (ncv[j]) nrv = j + 1;
		}
		if (power) { /* convert to bivariate power series */
			if (!bch2bps(a, b, w, nu, nv))
				goto error;
			/* possible change in some row counts, so readjust */
			nru = nrv = 0;
			for (j = 0; j < nu; ++j) {
				ncu[j] = ncv[j] = 0; /* clear column maxes */
				for (s = w[j], i = 0; i < nv; ++i, ++s) {
					if (s->u)
						ncu[j] = i + 1;	/* update column max */
					if (s->v)
						ncv[j] = i + 1;
				}
				if (ncu[j]) nru = j + 1;	/* update row max */
				if (ncv[j]) nrv = j + 1;
			}
			Ts = makeT(nru, nrv);
			if (Ts) {
				Ts->a = a;
				Ts->b = b;
				Ts->mu = nru - 1;
				Ts->mv = nrv - 1;
				Ts->power = 1;
				for (i = 0; i < nru; ++i) /* store coefficient rows for u */
					Ts->cu[i].m = ncu[i];
          if (Ts->cu[i].m) {
						if ((p = Ts->cu[i].c =
                 (double *)pj_malloc(sizeof(double) * ncu[i]))) {
              for (j = 0; j < ncu[i]; ++j) {
                *p++ = (w[i] + j)->u;
              }
            } else {
							goto error;
            }
          }
				for (i = 0; i < nrv; ++i) /* same for v */
					Ts->cv[i].m = ncv[i];
          if (Ts->cv[i].m) {
						if ((p = Ts->cv[i].c =
                 (double *)pj_malloc(sizeof(double) * ncv[i]))) {
              for (j = 0; j < ncv[i]; ++j) {
								*p++ = (w[i] + j)->v;
              }
            } else {
							goto error;
            }
          }
			}
		} else if ((Ts = makeT(nru, nrv))) {
			/* else make returned Chebyshev coefficient structure */
			Ts->mu = nru - 1; /* save row degree */
			Ts->mv = nrv - 1;
			Ts->a.u = a.u + b.u; /* set argument scaling */
			Ts->a.v = a.v + b.v;
			Ts->b.u = 1. / (b.u - a.u);
			Ts->b.v = 1. / (b.v - a.v);
			Ts->power = 0;
			for (i = 0; i < nru; ++i) /* store coefficient rows for u */
				Ts->cu[i].m = ncu[i];
        if (Ts->cu[i].m) {
					if ((p = Ts->cu[i].c =
               (double *)pj_malloc(sizeof(double) * ncu[i]))) {
						for (j = 0; j < ncu[i]; ++j)
							*p++ = (w[i] + j)->u;
          } else {
						goto error;
          }
        }
			for (i = 0; i < nrv; ++i) /* same for v */
				Ts->cv[i].m = ncv[i];
        if (Ts->cv[i].m) {
					if ((p = Ts->cv[i].c =
               (double *)pj_malloc(sizeof(double) * ncv[i]))) {
						for (j = 0; j < ncv[i]; ++j)
							*p++ = (w[i] + j)->v;
          } else {
						goto error;
          }
        }
		} else
			goto error;
	}
	goto gohome;
error:
	if (Ts) { /* pj_dalloc up possible allocations */
		for (i = 0; i <= Ts->mu; ++i)
			if (Ts->cu[i].c)
				pj_dalloc(Ts->cu[i].c);
		for (i = 0; i <= Ts->mv; ++i)
			if (Ts->cv[i].c)
				pj_dalloc(Ts->cv[i].c);
		pj_dalloc(Ts);
	}
	Ts = 0;
gohome:
	freev2((void **) w, nu);
	pj_dalloc(ncu);
	return Ts;
}
Exemplo n.º 11
0
int f_princ(int arglist){
	checkarg(LEN1_TEST, "princ", arglist);
	print(car(arglist));
    return(makeT());
}
Exemplo n.º 12
0
int f_gbc(int arglist){
	gbc();
    return(makeT());
}
Exemplo n.º 13
0
int f_listp(int arglist){
	if(listp(car(arglist)))
    	return(makeT());
    else
    	return(makeNIL());
}
Exemplo n.º 14
0
int f_numberp(int arglist){
	if(numberp(car(arglist)))
    	return(makeT());
    else
    	return(makeNIL());
}
Exemplo n.º 15
0
int f_symbolp(int arglist){
	if(symbolp(car(arglist)))
    	return(makeT());
    else
    	return(makeNIL());
}