⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wrappers.c

📁 calc大数库
💻 C
📖 第 1 页 / 共 2 页
字号:
  return Result;
}

/* MPI *CORNACCHIAX(MPI *A, MPI *B, MPI *M) */
void CORNACCHIA_W(Stack S)
{
	MPI *A = stackPop(S);
	MPI *B = stackPop(S);
	MPI *M = stackPop(S);
	
	MPI *Result = CORNACCHIAX(A, B, M);
	if (Result  == NULL)
	    rettype = FUNC_FAIL;
	FREEMPI(Result);
	FREEMPI(A);
	FREEMPI(B);
	FREEMPI(M);
	return;
}

MPI *SQROOT_W(Stack S)
{
	MPI *Tmp;
	USI ll;

	MPI *A = stackPop(S);
	MPI *N = stackPop(S);
	MPIA *Y = stackPop(S);
	MPI **M = stackPop(S);
	MPI **L = stackPop(S);
	MPI *R = SQROOTX(A, N, Y, M, &ll);
	FREEMPI(A);
	FREEMPI(N);
	if (R == NULL)
            rettype = FUNC_FAIL;
	else{
		*L = CHANGE((USL)ll);
		if(EQMINUSONEI(R)){
			Tmp = R;
			R = ZEROI();
			FREEMPI(Tmp);
		}
	}
	return (R);
}

MPI *QUADRATIC_W(Stack S)
{
	MPI *A, *B, *C, *N, *R;
	MPIA *Y;

	A = stackPop(S);
	B = stackPop(S);
	C = stackPop(S);
	N = stackPop(S);
	Y = stackPop(S);
	R = QUADRATICX(A, B, C, N, Y);
	FREEMPI(A);
	FREEMPI(B);
	FREEMPI(C);
	FREEMPI(N);
	if (R == NULL){
	    R = ZEROI();
            rettype = FUNC_FAIL;
	}
	return (R);
}
/*
void BINARYFORM_W(Stack S)
{
	MPI *A, *B, *C, *N;

	A = stackPop(S);
	B = stackPop(S);
	C = stackPop(S);
	N = stackPop(S);
	BINARYFORM(A, B, C, N);
	FREEMPI(A);
	FREEMPI(B);
	FREEMPI(C);
	FREEMPI(N);
	return;
}
*/
void GAUSS_W(Stack S)
{
	MPI *A, *B, *C, *N, **alpha, **gamma, **M;
	A = stackPop(S);
        B = stackPop(S);
        C = stackPop(S);
        N = stackPop(S);
        alpha = stackPop(S);
        gamma = stackPop(S);
	
        M = stackPop(S);
	GAUSS(A, B, C, N, alpha, gamma, M);
	FREEMPI(A);
	FREEMPI(B);
	FREEMPI(C);
	FREEMPI(N);
	return;
}

void BINFORM_W(Stack S)
{
	MPI *A, *B, *C, *N, *V;

	A = stackPop(S);
	B = stackPop(S);
	C = stackPop(S);
	N = stackPop(S);
	V = stackPop(S);
	BINARYFORM1(A, B, C, N, V);
	FREEMPI(A);
	FREEMPI(B);
	FREEMPI(C);
	FREEMPI(N);
	FREEMPI(V);
	return;
}

MPI *HALFMOD_W(Stack S)
{
	MPI *A, *B, *R;

	A = stackPop(S);
	B = stackPop(S);
	R = HALFMODX(A, B);
	FREEMPI(A);
	FREEMPI(B);
	if (R == NULL){
            rettype = FUNC_FAIL;
	}
	return (R);
}

/* MPI *LOGX(MPI *A, MPI *B, MPI *D, MPI *R, MPIA *M, MPI **L) */
void LOG_W(Stack s)
{
	MPI *A = stackPop(s);
	MPI *B = stackPop(s);
	MPI *D = stackPop(s);
	MPI *R = stackPop(s);
	MPIA *M = stackPop(s);
	MPI **L = stackPop(s);
	MPI *Z;

	Z = LOGX(A, B, D, R, M, L);
	if (Z == NULL)
            rettype = FUNC_FAIL;
	else
		FREEMPI(Z);
	FREEMPI(A);
	FREEMPI(B);
	FREEMPI(D);
	FREEMPI(R);
}

/* MPI *CEILINGIX(MPI *A, MPI *B) */
MPI *CEILINGI_W(Stack s)
{
	MPI *A = stackPop(s);
	MPI *B = stackPop(s);

	MPI *Z = CEILINGIX(A,B);
	if (Z == NULL)
            rettype = FUNC_FAIL;
	FREEMPI(A);
	FREEMPI(B);
	return(Z);
}

/*void TESTLOG1(MPI *A, MPI *B, MPI *D, MPI *R)*/
void TESTLOG1_W(Stack s)
{
	MPI *A = stackPop(s);
	MPI *B = stackPop(s);
	MPI *D = stackPop(s);
	MPI *R = stackPop(s);

	TESTLOG1(A, B, D, R);
	FREEMPI(A);
	FREEMPI(B);
	FREEMPI(D);
	FREEMPI(R);
}

/*void TESTLOGX(MPI *A, MPI *B, MPI *D, MPI *M, MPI *N)*/
void TESTLOG_W(Stack s)
{
	MPI *A = stackPop(s);
	MPI *B = stackPop(s);
	MPI *D = stackPop(s);
	MPI *M = stackPop(s);
	MPI *N = stackPop(s);
	MPI *Z;

	Z = TESTLOGX(A, B, D, M, N);
	if (Z == NULL)
            rettype = FUNC_FAIL;
	else
		FREEMPI(Z);

	FREEMPI(A);
	FREEMPI(B);
	FREEMPI(D);
	FREEMPI(M);
	FREEMPI(N);
}

/* MPI *SUBRESULTANT(POLYI P, POLY Q) */
MPI *SUBRESULTANT_W(Stack s)
{ 
	  MPI *Result;
          POLYI P = stackPop(s);
	  POLYI Q = stackPop(s);
          if(DEGREEPI(P)<=0){
	      printf("First argument is a constant\n");
              rettype = FUNC_FAIL;
	  }
          if(DEGREEPI(Q)<=0){
	      printf("Second argument is a constant\n");
              rettype = FUNC_FAIL;
	  }
	  Result=SUBRESULTANT(P, Q);
	  DELETEPI(P);
	  DELETEPI(Q);
	  return Result;
} 


/* MPI *DISCRIMINANTPI(POLYI Pptr)*/
MPI *DISCRIMINANTPI_W(Stack s){
	  MPI *Result;
          POLYI P = stackPop(s);
          if(DEGREEPI(P)<=1){
	      printf("argument has form aX+b\n");
              rettype = FUNC_FAIL;
	  }
          Result=DISCRIMINANTPI(P);
          DELETEPI(P);
          return Result;
}

/* POLYI DERIVPI(POLYI Pptr) */
POLYI DERIVPI_W(Stack s){
	POLYI Result;
        POLYI P = stackPop(s);
	Result = DERIVPI(P);
        DELETEPI(P);
        return Result;
}

/* MPI *PRIME_GENERATORX(MPI *M, MPI *N) */
MPI *PRIME_GENERATOR_W(Stack s){
	MPI *Result;

	MPI *M = stackPop(s);
	MPI *N = stackPop(s);
	Result = PRIME_GENERATORX(M, N);
	if (Result == NULL){
		FREEMPI(M);
		FREEMPI(N);
                rettype = FUNC_FAIL;
	}
	FREEMPI(M);
	FREEMPI(N);
	return(Result);
}

/* POLYI GCDPI(POLYI Pptr, POLYI Qptr) */
POLYI GCDPI_W(Stack s){
	POLYI Result;
        POLYI P = stackPop(s);
        POLYI Q = stackPop(s);
	Result = GCDPI(P, Q);
        DELETEPI(P);
        DELETEPI(Q);
        return Result;
}


/* MPI *STURM_SEQUENCE(POLYI P, MPI *B, MPI *E)*/
MPI *STURM_SEQUENCE_W(Stack s){
	MPI *Result, *TEMP;
	POLYI R, Q;
	int d;
	POLYI P = stackPop(s);
	MPI *B = stackPop(s);
	MPI *E = stackPop(s);

	Q = DERIVPI(P); 
	R = GCDPI(P,Q);
	d = DEGREEPI(R);
	DELETEPI(Q);
	DELETEPI(R);
	if(d){
		printf("P has a multiple root\n");
                rettype = FUNC_FAIL;
		DELETEPI(P);
		FREEMPI(B);
		FREEMPI(E);
		return NULL;
	}else if(DEGREEPI(P) <2){
		printf("P is linear\n");
                rettype = FUNC_FAIL;
		DELETEPI(P);
		FREEMPI(B);
		FREEMPI(E);
		return NULL;
	}else{
		TEMP=VALPI(P, B);
		d = TEMP->S;
		FREEMPI(TEMP);
		if(d==0){
			printf("P(b)=0\n");
			rettype = FUNC_FAIL;
			DELETEPI(P);
			FREEMPI(B);
			FREEMPI(E);
			return NULL;
		}else{
			Result = STURM_SEQUENCE(P, B, E);
			DELETEPI(P);
			FREEMPI(B);
			FREEMPI(E);
			return Result;
		}
	}
}

POLYI CYCLOTOMIC_W(Stack s){
	POLYI P;
	MPI *N = stackPop(s);
	P = CYCLOTOMIC(N);
	if(P==NULL){
		rettype=FUNC_FAIL;
	}
	FREEMPI(N);
	return(P);
}

MPI *POS_W(Stack s){
	MPI *P;
	MPI *D = stackPop(s);
	P = POSX(D);
	if(P==NULL)
		rettype=FUNC_FAIL;
	FREEMPI(D);
	return(P);
}

MPI *NEG_W(Stack s){
	MPI *H;
	MPI *D = stackPop(s);
	MPI *FLAG = stackPop(s);
	H = NEGX(D, FLAG);
	if(H==NULL)
		rettype=FUNC_FAIL;
	FREEMPI(D);
	FREEMPI(FLAG);
	return(H);
}

MPI *NEARINT_W(Stack s){
	MPI *A, *B, *R;

	A = stackPop(s);
	B = stackPop(s);
	R = NEARINTX(A, B);
	FREEMPI(A);
	FREEMPI(B);
	if (R == NULL){
            rettype = FUNC_FAIL;
	}
	return (R);
}

MPI *REDUCE_NEG_W(Stack s){
	MPI *A, *B, *C, *I;
	A = stackPop(s);
	B = stackPop(s);
	C = stackPop(s);
	I = REDUCE_NEGX(A, B, C);
	FREEMPI(A);
	FREEMPI(B);
	FREEMPI(C);
	if (I == NULL){
            rettype = FUNC_FAIL;
	}
	return(I);
}

MPI *REDUCE_POS_W(Stack s){
	MPI *I;
        MPI *A = stackPop(s);
        MPI *B = stackPop(s);
        MPI *C = stackPop(s);
        I = REDUCE_POSX(A, B, C);
        FREEMPI(A);
        FREEMPI(B);
        FREEMPI(C);
        if (I == NULL){
            rettype = FUNC_FAIL;
        }
        return(I);
}

MPI *POS0_W(Stack s){
	MPI *P;
	MPI *D = stackPop(s);
	P = POS0X(D);
	if(P==NULL)
		rettype=FUNC_FAIL;
	FREEMPI(D);
	return(P);
}

MPI *TABLENEG_W(Stack s){
	MPI *P;
	MPI *M = stackPop(s);
	MPI *N = stackPop(s);
	P = TABLENEGX(M, N);
	if (P == NULL)
		rettype=FUNC_FAIL;
	FREEMPI(M);
	FREEMPI(N);
	return(P);
}

MPI *TABLEPOS_W(Stack s){
	MPI *P;
	MPI *M = stackPop(s);
	MPI *N = stackPop(s);
	P = TABLEPOSX(M, N);
	if (P == NULL)
		rettype=FUNC_FAIL;
	FREEMPI(M);
	FREEMPI(N);
	return(P);
}

MPI *DAVISON_W(Stack s){
	MPI *T;
	MPI *L = stackPop(s);
	MPI *M = stackPop(s);
	MPI *N = stackPop(s);
	T = DAVISONX(L, M, N);
	if (T == NULL)
		rettype=FUNC_FAIL;
	FREEMPI(L);
	FREEMPI(M);
	FREEMPI(N);
	return(T);
}

MPI *RANEY1_W(Stack s){
	MPI *T;
	MPI *P = stackPop(s);
	MPI *Q = stackPop(s);
	MPI *R = stackPop(s);
	MPI *S = stackPop(s);
	T = RANEY1X(P, Q, R, S);
	if (T == NULL)
		rettype=FUNC_FAIL;
	FREEMPI(P);
	FREEMPI(Q);
	FREEMPI(R);
	FREEMPI(S);
	return(T);
}

MPI *UNIMODULAR_W(Stack s){
	MPI *T;
	MPI *P = stackPop(s);
	MPI *Q = stackPop(s);
	MPI *R = stackPop(s);
	MPI *S = stackPop(s);
	T = UNIMODULARX(P, Q, R, S);
	if (T == NULL)
		rettype=FUNC_FAIL;
	FREEMPI(P);
	FREEMPI(Q);
	FREEMPI(R);
	FREEMPI(S);
	return(T);
}

void TWOADICSQRT_W(Stack s){
	MPI *T;
	MPI *A = stackPop(s);
	MPI *N = stackPop(s);
	MPIA *DIGITS = stackPop(s);
	T = TWOADICSQRTX(A, N, DIGITS);
	if (T == NULL)
		rettype=FUNC_FAIL;
	FREEMPI(A);
	FREEMPI(N);
	FREEMPI(T);
}

void PADICSQRT_W(Stack s){
	MPI *T;
	MPI *A = stackPop(s);
	MPI *N = stackPop(s);
	MPI *P = stackPop(s);
	MPIA *DIGITS = stackPop(s);
	T = PADICSQRTX(A, N, P, DIGITS);
	if (T == NULL)
		rettype=FUNC_FAIL;
	FREEMPI(A);
	FREEMPI(N);
	FREEMPI(P);
	FREEMPI(T);
}
 
MPI *SIGMAK_W(Stack s){
	MPI *T;
	MPI *K = stackPop(s);
	MPI *N = stackPop(s);
	T = SIGMAKX(K, N);	
	if (T == NULL)
		rettype=FUNC_FAIL;
	FREEMPI(K);
	FREEMPI(N);
	return(T);
}

MPI *TAU_W(Stack s){
	MPI *T;
	MPI *N = stackPop(s);
	T = TAUX(N);	
	if (T == NULL)
		rettype=FUNC_FAIL;
	FREEMPI(N);
	return(T);
}

MPI *TAU_PRIMEPOWER_W(Stack s){
	MPI *T;
	MPI *N = stackPop(s);
	MPI *P = stackPop(s);
	T = TAU_PRIMEPOWERX(N, P);	
	if (T == NULL)
		rettype=FUNC_FAIL;
	FREEMPI(N);
	FREEMPI(P);
	return(T);
}

MPI *TAU_COMPOSITE_W(Stack s){
	MPI *T;
	MPI *N = stackPop(s);
	T = TAU_COMPOSITEX(N);	
	if (T == NULL)
		rettype=FUNC_FAIL;
	FREEMPI(N);
	return(T);
}

MPI *REP_DEFINITE_W(Stack s){
	MPI *A, *B, *C, *M, *PRINT_FLAG, *I;
	A = stackPop(s);
	B = stackPop(s);
	C = stackPop(s);
	M = stackPop(s);
	PRINT_FLAG = stackPop(s);
	I = REP_DEFINITEX(A, B, C, M, PRINT_FLAG);
	FREEMPI(A);
	FREEMPI(B);
	FREEMPI(C);
	FREEMPI(M);
	FREEMPI(PRINT_FLAG);
	if (I == NULL){
            rettype = FUNC_FAIL;
	}
	return(I);
}

void POWERD_W(Stack s)
{
  MPI *A=stackPop(s);
  MPI *B=stackPop(s);
  MPI *D=stackPop(s);
  MPI *N=stackPop(s);
  MPI **AA=stackPop(s);
  MPI **BB=stackPop(s);
  POWERD(A, B, D, N, AA, BB);
  FREEMPI(A);
  FREEMPI(B);
  FREEMPI(D);
  FREEMPI(N);
}

MPI *EUCLIDI1_W(Stack s)
{
  MPI *Aptr = stackPop(s);
  MPI *Bptr = stackPop(s);
  MPI *Result;
  if(Aptr->S <= 0){
      Result = ZEROI();
      printf("A <= 0\n");
  }else if(Bptr->S <= 0){
      Result = ZEROI();
      printf("B <= 0\n");
  }else{
      Result = EUCLIDI1(Aptr, Bptr);
  }
  FREEMPI(Aptr);
  FREEMPI(Bptr);
  return Result;
}

MPI *CFRACN_W(Stack s)
{
  MPI *TEMP1, *TEMP2;
  MPI *N=stackPop(s);
  if(N->S<0){
    printf("n < 0\n");
    FREEMPI(N);
    return(ZEROI());
  }else{
     MPI *M = CFRACN(N);
     printf ("the  continued fraction expansion of sqrt(2^");
     TEMP1 = MULT_I(N, 2);
     TEMP2 = ADD0_I(TEMP1, 1);
     PRINTI(TEMP2);
     FREEMPI(TEMP1);
     FREEMPI(TEMP2);
     printf(") has period-length ");
     PRINTI(M);
     FREEMPI(N);
     printf("\n");
     return(M);
  }
}

MPI *CFRAC_PERIOD_W(Stack s)
{
  USI t;
  MPI *P, *X, *Y;
  MPI *D=stackPop(s);
  X= BIG_MTHROOT(D, 2);
  Y = MULTI(X, X);
  t = EQUALI(D, Y);
  FREEMPI(X);
  FREEMPI(Y);
  if(t){
     printf("D is a square\n");
     FREEMPI(D);
     return(ZEROI());
  }
  P = CFRAC_PERIOD(D);
  FREEMPI(D);
  return(P);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -