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

📄 value.h

📁 Calc Software Package for Number Calc
💻 H
📖 第 1 页 / 共 2 页
字号:
#define matsize(n) (sizeof(MATRIX) - sizeof(VALUE) + ((n) * sizeof(VALUE)))extern DLL MATRIX *matadd(MATRIX *m1, MATRIX *m2);extern DLL MATRIX *matsub(MATRIX *m1, MATRIX *m2);extern DLL MATRIX *matmul(MATRIX *m1, MATRIX *m2);extern DLL MATRIX *matneg(MATRIX *m);extern DLL MATRIX *matalloc(long size);extern DLL MATRIX *matcopy(MATRIX *m);extern DLL MATRIX *matinit(MATRIX *m, VALUE *v1, VALUE *v2);extern DLL MATRIX *matsquare(MATRIX *m);extern DLL MATRIX *matinv(MATRIX *m);extern DLL MATRIX *matscale(MATRIX *m, long n);extern DLL MATRIX *matshift(MATRIX *m, long n);extern DLL MATRIX *matmulval(MATRIX *m, VALUE *vp);extern DLL MATRIX *matpowi(MATRIX *m, NUMBER *q);extern DLL MATRIX *matconj(MATRIX *m);extern DLL MATRIX *matquoval(MATRIX *m, VALUE *vp, VALUE *v3);extern DLL MATRIX *matmodval(MATRIX *m, VALUE *vp, VALUE *v3);extern DLL MATRIX *matint(MATRIX *m);extern DLL MATRIX *matfrac(MATRIX *m);extern DLL MATRIX *matappr(MATRIX *m, VALUE *v2, VALUE *v3);extern DLL VALUE mattrace(MATRIX *m);extern DLL MATRIX *mattrans(MATRIX *m);extern DLL MATRIX *matcross(MATRIX *m1, MATRIX *m2);extern DLL BOOL mattest(MATRIX *m);extern DLL void matsum(MATRIX *m, VALUE *vres);extern DLL BOOL matcmp(MATRIX *m1, MATRIX *m2);extern DLL int matsearch(MATRIX *m, VALUE *vp, long start, long end, ZVALUE *index);extern DLL int matrsearch(MATRIX *m, VALUE *vp, long start, long end, ZVALUE *index);extern DLL VALUE matdet(MATRIX *m);extern DLL VALUE matdot(MATRIX *m1, MATRIX *m2);extern DLL void matfill(MATRIX *m, VALUE *v1, VALUE *v2);extern DLL void matfree(MATRIX *m);extern DLL void matprint(MATRIX *m, long max_print);extern DLL VALUE *matindex(MATRIX *mp, BOOL create, long dim, VALUE *indices);extern DLL void matreverse(MATRIX *m);extern DLL void matsort(MATRIX *m);extern DLL BOOL matisident(MATRIX *m);extern DLL MATRIX *matround(MATRIX *m, VALUE *v2, VALUE *v3);extern DLL MATRIX *matbround(MATRIX *m, VALUE *v2, VALUE *v3);/* * List definitions. * An individual list element. */typedef struct listelem LISTELEM;struct listelem {	LISTELEM *e_next;	/* next element in list (or NULL) */	LISTELEM *e_prev;	/* previous element in list (or NULL) */	VALUE e_value;		/* value of this element */};/* * Structure for a list of elements. */struct list {	LISTELEM *l_first;	/* first list element (or NULL) */	LISTELEM *l_last;	/* last list element (or NULL) */	LISTELEM *l_cache;	/* cached list element (or NULL) */	long l_cacheindex;	/* index of cached element (or undefined) */	long l_count;		/* total number of elements in the list */};extern DLL void insertlistfirst(LIST *lp, VALUE *vp);extern DLL void insertlistlast(LIST *lp, VALUE *vp);extern DLL void insertlistmiddle(LIST *lp, long index, VALUE *vp);extern DLL void removelistfirst(LIST *lp, VALUE *vp);extern DLL void removelistlast(LIST *lp, VALUE *vp);extern DLL void removelistmiddle(LIST *lp, long index, VALUE *vp);extern DLL void listfree(LIST *lp);extern DLL void listprint(LIST *lp, long max_print);extern DLL int listsearch(LIST *lp, VALUE *vp, long start, long end, ZVALUE *index);extern DLL int listrsearch(LIST *lp, VALUE *vp, long start, long end, ZVALUE *index);extern DLL BOOL listcmp(LIST *lp1, LIST *lp2);extern DLL VALUE *listfindex(LIST *lp, long index);extern DLL LIST *listalloc(void);extern DLL LIST *listcopy(LIST *lp);extern DLL void listreverse(LIST *lp);extern DLL void listsort(LIST *lp);extern DLL LIST *listappr(LIST *lp, VALUE *v2, VALUE *v3);extern DLL LIST *listround(LIST *m, VALUE *v2, VALUE *v3);extern DLL LIST *listbround(LIST *m, VALUE *v2, VALUE *v3);extern DLL LIST *listquo(LIST *lp, VALUE *v2, VALUE *v3);extern DLL LIST *listmod(LIST *lp, VALUE *v2, VALUE *v3);extern DLL BOOL evp(LISTELEM *cp, LISTELEM *x, VALUE *vres);extern DLL BOOL evalpoly(LIST *clist, LISTELEM *x, VALUE *vres);extern DLL void insertitems(LIST *lp1, LIST *lp2);extern DLL LISTELEM *listelement(LIST *, long);extern DLL LIST *listsegment(LIST *, long, long);/* * Structures for associations. * Associations are "indexed" by one or more arbitrary values, and are * stored in a hash table with their hash values for quick indexing. */typedef struct assocelem ASSOCELEM;struct assocelem {	ASSOCELEM *e_next;	/* next element in list (or NULL) */	long e_dim;		/* dimension of indexing for this element */	QCKHASH e_hash;		/* hash value for this element */	VALUE e_value;		/* value of association */	VALUE e_indices[1];	/* index values (variable length) */};struct assoc {	long a_count;		/* number of elements in the association */	long a_size;		/* current size of association hash table */	ASSOCELEM **a_table;	/* current hash table for elements */};extern DLL ASSOC *assocalloc(long initsize);extern DLL ASSOC *assoccopy(ASSOC *ap);extern DLL void assocfree(ASSOC *ap);extern DLL void assocprint(ASSOC *ap, long max_print);extern DLL int assocsearch(ASSOC *ap, VALUE *vp, long start, long end, ZVALUE *index);extern DLL int assocrsearch(ASSOC *ap, VALUE *vp, long start, long end, ZVALUE *index);extern DLL BOOL assoccmp(ASSOC *ap1, ASSOC *ap2);extern DLL VALUE *assocfindex(ASSOC *ap, long index);extern DLL VALUE *associndex(ASSOC *ap, BOOL create, long dim, VALUE *indices);/* * Object actions. */#define OBJ_PRINT	0	/* print the value */#define OBJ_ONE		1	/* create the multiplicative identity */#define OBJ_TEST	2	/* test a value for "zero" */#define OBJ_ADD		3	/* add two values */#define OBJ_SUB		4	/* subtrace one value from another */#define OBJ_NEG		5	/* negate a value */#define OBJ_MUL		6	/* multiply two values */#define OBJ_DIV		7	/* divide one value by another */#define OBJ_INV		8	/* invert a value */#define OBJ_ABS		9	/* take absolute value of value */#define OBJ_NORM	10	/* take the norm of a value */#define OBJ_CONJ	11	/* take the conjugate of a value */#define OBJ_POW		12	/* take the power function */#define OBJ_SGN		13	/* return the sign of a value */#define OBJ_CMP		14	/* compare two values for equality */#define OBJ_REL		15	/* compare two values for inequality */#define OBJ_QUO		16	/* integer quotient of values */#define OBJ_MOD		17	/* remainder of division of values */#define OBJ_INT		18	/* integer part of */#define OBJ_FRAC	19	/* fractional part of */#define OBJ_INC		20	/* increment by one */#define OBJ_DEC		21	/* decrement by one */#define OBJ_SQUARE	22	/* square value */#define OBJ_SCALE	23	/* scale by power of two */#define OBJ_SHIFT	24	/* shift left (or right) by number of bits */#define OBJ_ROUND	25	/* round to specified decimal places */#define OBJ_BROUND	26	/* round to specified binary places */#define OBJ_ROOT	27	/* take nth root of value */#define OBJ_SQRT	28	/* take square root of value */#define OBJ_OR		29	/* take bitwise or of values */#define OBJ_AND		30	/* take bitwise and of values */#define OBJ_NOT		31	/* take logical not of value */#define OBJ_FACT	32	/* factorial or postfix ! */#define OBJ_MIN		33	/* minimum value */#define OBJ_MAX		34	/* maximum value */#define OBJ_SUM		35	/* sum value */#define OBJ_ASSIGN	36	/* assign value */#define OBJ_XOR		37	/* ~ difference of values */#define OBJ_COMP	38	/* ~ complement of value */#define OBJ_CONTENT	39	/* unary hash op */#define OBJ_HASHOP	40	/* binary hash op */#define OBJ_BACKSLASH	41	/* unary backslash op */#define OBJ_SETMINUS	42	/* binary backslash op */#define OBJ_PLUS	43	/* unary + op */#define OBJ_MAXFUNC	43	/* highest function *//* * Definition of an object type. * This is actually a varying sized structure. */typedef struct {	int oa_index;			/* index of object type */	int oa_count;			/* number of elements defined */	long oa_indices[OBJ_MAXFUNC+1]; /* function indices for actions */	int oa_elements[1];		/* element indices (MUST BE LAST) */} OBJECTACTIONS;#define objectactionsize(elements) \	(sizeof(OBJECTACTIONS) + ((elements) - 1) * sizeof(int))/* * Structure of an object. * This is actually a varying sized structure. * However, there are always at least USUAL_ELEMENTS values in the object. */struct object {	OBJECTACTIONS *o_actions;	/* action table for this object */	VALUE o_table[USUAL_ELEMENTS];	/* object values (MUST BE LAST) */};#define objectsize(elements) \	(sizeof(OBJECT) + ((elements) - USUAL_ELEMENTS) * sizeof(VALUE))extern DLL OBJECT *objcopy(OBJECT *op);extern DLL OBJECT *objalloc(long index);extern DLL VALUE objcall(int action, VALUE *v1, VALUE *v2, VALUE *v3);extern DLL void objfree(OBJECT *op);extern DLL int addelement(char *name);extern DLL int defineobject(char *name, int indices[], int count);extern DLL int checkobject(char *name);extern DLL void showobjfuncs(void);extern DLL void showobjtypes(void);extern DLL int findelement(char *name);extern DLL char *objtypename(unsigned long index);extern DLL int objoffset(OBJECT *op, long index);/* * Configuration parameter name and type. */extern NAMETYPE configs[];extern DLL void config_value(CONFIG *cfg, int type, VALUE *ret);extern DLL void setconfig(int type, VALUE *vp);extern DLL void config_print(CONFIG *cfg);	/* the CONFIG to print *//* * size, memsize and sizeof support */extern DLL long elm_count(VALUE *vp);extern DLL size_t lsizeof(VALUE *vp);extern DLL size_t memsize(VALUE *vp);/* * String functions */extern DLL STRING *stringadd(STRING *, STRING *);extern DLL STRING *stringcopy(STRING *);extern DLL STRING *stringsub(STRING *, STRING *);extern DLL STRING *stringmul(NUMBER *, STRING *);extern DLL STRING *stringand(STRING *, STRING *);extern DLL STRING *stringor(STRING *, STRING *);extern DLL STRING *stringxor(STRING *, STRING *);extern DLL STRING *stringdiff(STRING *, STRING *);extern DLL STRING *stringsegment(STRING *, long, long);extern DLL STRING *stringshift(STRING *, long);extern DLL STRING *stringcomp(STRING *);extern DLL STRING *stringneg(STRING *);extern DLL STRING *stringcpy(STRING *, STRING *);extern DLL STRING *stringncpy(STRING *, STRING *, size_t);extern DLL long stringcontent(STRING *s);extern DLL long stringlowbit(STRING *s);extern DLL long stringhighbit(STRING *s);extern DLL BOOL stringcmp(STRING *, STRING *);extern DLL BOOL stringrel(STRING *, STRING *);extern DLL int stringbit(STRING *, long);extern DLL BOOL stringtest(STRING *);extern DLL int stringsetbit(STRING *, long, BOOL);extern DLL int stringsearch(STRING *, STRING *, long, long, ZVALUE *);extern DLL int stringrsearch(STRING *, STRING *, long, long, ZVALUE *);#endif /* !__VALUE_H__ */

⌨️ 快捷键说明

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