version 1.2, 2000/02/08 04:47:10 |
version 1.7, 2000/12/05 01:24:53 |
|
|
/* $OpenXM: OpenXM_contrib2/asir2000/include/ca.h,v 1.1.1.1 1999/12/03 07:39:11 noro Exp $ */ |
/* |
|
* Copyright (c) 1994-2000 FUJITSU LABORATORIES LIMITED |
|
* All rights reserved. |
|
* |
|
* FUJITSU LABORATORIES LIMITED ("FLL") hereby grants you a limited, |
|
* non-exclusive and royalty-free license to use, copy, modify and |
|
* redistribute, solely for non-commercial and non-profit purposes, the |
|
* computer program, "Risa/Asir" ("SOFTWARE"), subject to the terms and |
|
* conditions of this Agreement. For the avoidance of doubt, you acquire |
|
* only a limited right to use the SOFTWARE hereunder, and FLL or any |
|
* third party developer retains all rights, including but not limited to |
|
* copyrights, in and to the SOFTWARE. |
|
* |
|
* (1) FLL does not grant you a license in any way for commercial |
|
* purposes. You may use the SOFTWARE only for non-commercial and |
|
* non-profit purposes only, such as academic, research and internal |
|
* business use. |
|
* (2) The SOFTWARE is protected by the Copyright Law of Japan and |
|
* international copyright treaties. If you make copies of the SOFTWARE, |
|
* with or without modification, as permitted hereunder, you shall affix |
|
* to all such copies of the SOFTWARE the above copyright notice. |
|
* (3) An explicit reference to this SOFTWARE and its copyright owner |
|
* shall be made on your publication or presentation in any form of the |
|
* results obtained by use of the SOFTWARE. |
|
* (4) In the event that you modify the SOFTWARE, you shall notify FLL by |
|
* e-mail at risa-admin@sec.flab.fujitsu.co.jp of the detailed specification |
|
* for such modification or the source code of the modified part of the |
|
* SOFTWARE. |
|
* |
|
* THE SOFTWARE IS PROVIDED AS IS WITHOUT ANY WARRANTY OF ANY KIND. FLL |
|
* MAKES ABSOLUTELY NO WARRANTIES, EXPRESSED, IMPLIED OR STATUTORY, AND |
|
* EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS |
|
* FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT OF THIRD PARTIES' |
|
* RIGHTS. NO FLL DEALER, AGENT, EMPLOYEES IS AUTHORIZED TO MAKE ANY |
|
* MODIFICATIONS, EXTENSIONS, OR ADDITIONS TO THIS WARRANTY. |
|
* UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, TORT, CONTRACT, |
|
* OR OTHERWISE, SHALL FLL BE LIABLE TO YOU OR ANY OTHER PERSON FOR ANY |
|
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL |
|
* DAMAGES OF ANY CHARACTER, INCLUDING, WITHOUT LIMITATION, DAMAGES |
|
* ARISING OUT OF OR RELATING TO THE SOFTWARE OR THIS AGREEMENT, DAMAGES |
|
* FOR LOSS OF GOODWILL, WORK STOPPAGE, OR LOSS OF DATA, OR FOR ANY |
|
* DAMAGES, EVEN IF FLL SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF |
|
* SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY. EVEN IF A PART |
|
* OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY |
|
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
|
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
|
* |
|
* $OpenXM: OpenXM_contrib2/asir2000/include/ca.h,v 1.6 2000/11/08 08:02:50 noro Exp $ |
|
*/ |
#include <stdio.h> |
#include <stdio.h> |
|
|
#if defined(hpux) |
#if defined(hpux) |
|
|
#include <stdlib.h> |
#include <stdlib.h> |
#endif |
#endif |
|
|
#if defined(__MWERKS__) |
|
#define THINK_C |
|
#endif |
|
|
|
#if defined(linux) || (defined(sun) && !defined(SYSV)) || defined(news5000) || (defined(mips) && defined(ultrix)) |
#if defined(linux) || (defined(sun) && !defined(SYSV)) || defined(news5000) || (defined(mips) && defined(ultrix)) |
#include <alloca.h> |
#include <alloca.h> |
#endif |
#endif |
Line 63 typedef void * pointer; |
|
Line 107 typedef void * pointer; |
|
#define O_MATHCAP 13 |
#define O_MATHCAP 13 |
#define O_F 14 |
#define O_F 14 |
#define O_GFMMAT 15 |
#define O_GFMMAT 15 |
|
#define O_BYTEARRAY 16 |
#define O_VOID -1 |
#define O_VOID -1 |
|
|
#define N_Q 0 |
#define N_Q 0 |
Line 270 typedef struct oMATHCAP { |
|
Line 315 typedef struct oMATHCAP { |
|
struct oLIST *body; |
struct oLIST *body; |
} *MATHCAP; |
} *MATHCAP; |
|
|
|
typedef struct oBYTEARRAY { |
|
short id; |
|
short pad; |
|
int len; |
|
unsigned char *body; |
|
} *BYTEARRAY; |
|
|
typedef struct oObj { |
typedef struct oObj { |
short id; |
short id; |
short pad; |
short pad; |
Line 479 bzero((char *)(q)->b,(w)*sizeof(unsigned int))) |
|
Line 531 bzero((char *)(q)->b,(w)*sizeof(unsigned int))) |
|
#define NEWUSINT(u) ((u)=(USINT)MALLOC_ATOMIC(sizeof(struct oUSINT)),OID(u)=O_USINT) |
#define NEWUSINT(u) ((u)=(USINT)MALLOC_ATOMIC(sizeof(struct oUSINT)),OID(u)=O_USINT) |
#define NEWERR(e) ((e)=(ERR)MALLOC(sizeof(struct oERR)),OID(e)=O_ERR) |
#define NEWERR(e) ((e)=(ERR)MALLOC(sizeof(struct oERR)),OID(e)=O_ERR) |
#define NEWMATHCAP(e) ((e)=(MATHCAP)MALLOC(sizeof(struct oMATHCAP)),OID(e)=O_MATHCAP) |
#define NEWMATHCAP(e) ((e)=(MATHCAP)MALLOC(sizeof(struct oMATHCAP)),OID(e)=O_MATHCAP) |
|
#define NEWBYTEARRAY(e) ((e)=(BYTEARRAY)MALLOC(sizeof(struct oBYTEARRAY)),OID(e)=O_BYTEARRAY) |
|
|
#define NEWNODE(a) ((a)=(NODE)MALLOC(sizeof(struct oNODE))) |
#define NEWNODE(a) ((a)=(NODE)MALLOC(sizeof(struct oNODE))) |
#define NEWDC(dc) ((dc)=(DCP)MALLOC(sizeof(struct oDCP))) |
#define NEWDC(dc) ((dc)=(DCP)MALLOC(sizeof(struct oDCP))) |
Line 526 DEG(DC(p))=ONE,COEF(DC(p))=(P)ONEM,NEXT(DC(p))=0) |
|
Line 579 DEG(DC(p))=ONE,COEF(DC(p))=(P)ONEM,NEXT(DC(p))=0) |
|
#define MKUSINT(u,b) (NEWUSINT(u),(u)->body=(unsigned)(b)) |
#define MKUSINT(u,b) (NEWUSINT(u),(u)->body=(unsigned)(b)) |
#define MKERR(e,b) (NEWERR(e),(e)->body=(Obj)(b)) |
#define MKERR(e,b) (NEWERR(e),(e)->body=(Obj)(b)) |
#define MKMATHCAP(e,b) (NEWMATHCAP(e),(e)->body=(LIST)(b)) |
#define MKMATHCAP(e,b) (NEWMATHCAP(e),(e)->body=(LIST)(b)) |
|
#define MKBYTEARRAY(m,l) \ |
|
(NEWBYTEARRAY(m),(m)->len=(l),(m)->body=(char *)MALLOC_ATOMIC((l)),bzero((m)->body,(l))) |
|
|
#define NEXTDC(r,c) \ |
#define NEXTDC(r,c) \ |
if(!(r)){NEWDC(r);(c)=(r);}else{NEWDC(NEXT(c));(c)=NEXT(c);} |
if(!(r)){NEWDC(r);(c)=(r);}else{NEWDC(NEXT(c));(c)=NEXT(c);} |
Line 565 PL(NM(q))=1,BD(NM(q))[0]=(unsigned int)(n),DN(q)=0,(q) |
|
Line 620 PL(NM(q))=1,BD(NM(q))[0]=(unsigned int)(n),DN(q)=0,(q) |
|
#define MKAlg(b,r) \ |
#define MKAlg(b,r) \ |
(!(b)?((r)=0):NUM(b)?((r)=(Alg)(b)):(NEWAlg(r),BDY(r)=(Obj)(b),(r))) |
(!(b)?((r)=0):NUM(b)?((r)=(Alg)(b)):(NEWAlg(r),BDY(r)=(Obj)(b),(r))) |
|
|
#define ToReal(a) (!(a)?(double)0.0:REAL(a)?BDY((Real)a):RATN(a)?RatnToReal((Q)a):0) |
#if PARI |
|
#define ToReal(a) (!(a)?(double)0.0:REAL(a)?BDY((Real)a):RATN(a)?RatnToReal((Q)a):BIGFLOAT(a)?rtodbl(BDY((BF)a)):0) |
|
#else |
|
#define ToReal(a) (!(a)?(double)0.0:REAL(a)?BDY((Real)a):RATN(a)?RatnToReal((Q)a):0.0) |
|
#endif |
|
|
/* predicates */ |
/* predicates */ |
#define NUM(p) (OID(p)==O_N) |
#define NUM(p) (OID(p)==O_N) |
Line 573 PL(NM(q))=1,BD(NM(q))[0]=(unsigned int)(n),DN(q)=0,(q) |
|
Line 632 PL(NM(q))=1,BD(NM(q))[0]=(unsigned int)(n),DN(q)=0,(q) |
|
#define INT(q) (!DN((Q)q)) |
#define INT(q) (!DN((Q)q)) |
#define RATN(a) (NID(a)==N_Q) |
#define RATN(a) (NID(a)==N_Q) |
#define REAL(a) (NID(a)==N_R) |
#define REAL(a) (NID(a)==N_R) |
|
#define BIGFLOAT(a) (NID(a)==N_B) |
#define SFF(a) (NID(a)==N_M) |
#define SFF(a) (NID(a)==N_M) |
#define UNIQ(q) ((q)&&NUM(q)&&RATN(q)&&(SGN((Q)q)==1)&&UNIN(NM((Q)q))&&(!DN((Q)q))) |
#define UNIQ(q) ((q)&&NUM(q)&&RATN(q)&&(SGN((Q)q)==1)&&UNIN(NM((Q)q))&&(!DN((Q)q))) |
#define UNIMQ(q) ((q)&&NUM(q)&&SFF(q)&&(CONT((MQ)q)==1)) |
#define UNIMQ(q) ((q)&&NUM(q)&&SFF(q)&&(CONT((MQ)q)==1)) |
|
|
extern UP2 ONEUP2; |
extern UP2 ONEUP2; |
|
|
extern FILE *asir_out; |
extern FILE *asir_out; |
#if defined(__GNUC__) || defined(THINK_C) |
#if defined(__GNUC__) |
extern const int sprime[]; |
extern const int sprime[]; |
extern const int lprime[]; |
extern const int lprime[]; |
#else |
#else |
Line 625 extern void (*chsgnnumt[])(); |
|
Line 685 extern void (*chsgnnumt[])(); |
|
|
|
/* prototypes */ |
/* prototypes */ |
int compui(VL,USINT,USINT); |
int compui(VL,USINT,USINT); |
|
int compbytearray(VL,BYTEARRAY,BYTEARRAY); |
|
|
void powermodup(UP,UP *); |
void powermodup(UP,UP *); |
void hybrid_powermodup(UP,UP *); |
void hybrid_powermodup(UP,UP *); |
Line 974 void *GC_realloc(void *,size_t); |
|
Line 1035 void *GC_realloc(void *,size_t); |
|
double NatToReal(N,int *); |
double NatToReal(N,int *); |
double RatnToReal(Q); |
double RatnToReal(Q); |
double pwrreal0(double,int); |
double pwrreal0(double,int); |
|
double rtodbl(); /* XXX */ |
int **almat(int,int); |
int **almat(int,int); |
pointer **almat_pointer(int,int); |
pointer **almat_pointer(int,int); |
int berlecnt(register int,UM); |
int berlecnt(register int,UM); |