mirror of
https://github.com/lcn2/calc.git
synced 2025-08-16 01:03:29 +03:00
Release calc version 2.11.5t0
This commit is contained in:
240
zmath.h
240
zmath.h
@@ -17,8 +17,8 @@
|
||||
* received a copy with calc; if not, write to Free Software Foundation, Inc.
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* @(#) $Revision: 29.3 $
|
||||
* @(#) $Id: zmath.h,v 29.3 2000/07/17 15:35:49 chongo Exp $
|
||||
* @(#) $Revision: 29.4 $
|
||||
* @(#) $Id: zmath.h,v 29.4 2001/02/25 22:07:36 chongo Exp $
|
||||
* @(#) $Source: /usr/local/src/cmd/calc/RCS/zmath.h,v $
|
||||
*
|
||||
* Under source code control: 1993/07/30 19:42:48
|
||||
@@ -38,6 +38,20 @@
|
||||
#define __ZMATH_H__
|
||||
|
||||
|
||||
#if defined (_WIN32)
|
||||
#ifdef _EXPORTING
|
||||
#define DLL __declspec(dllexport)
|
||||
#else
|
||||
#define DLL __declspec(dllimport)
|
||||
#endif
|
||||
|
||||
#else /* Windoz free systems */
|
||||
|
||||
#define DLL
|
||||
|
||||
#endif /* Windoz free systems */
|
||||
|
||||
|
||||
#include "alloc.h"
|
||||
#include "endian_calc.h"
|
||||
#include "longbits.h"
|
||||
@@ -267,126 +281,126 @@ typedef struct {
|
||||
/*
|
||||
* Function prototypes for integer math routines.
|
||||
*/
|
||||
extern HALF * alloc(LEN len);
|
||||
DLL extern HALF * alloc(LEN len);
|
||||
#ifdef ALLOCTEST
|
||||
extern void freeh(HALF *);
|
||||
DLL extern void freeh(HALF *);
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Input, output, and conversion routines.
|
||||
*/
|
||||
extern void zcopy(ZVALUE z, ZVALUE *res);
|
||||
extern void itoz(long i, ZVALUE *res);
|
||||
extern void utoz(FULL i, ZVALUE *res);
|
||||
extern void str2z(char *s, ZVALUE *res);
|
||||
extern long ztoi(ZVALUE z);
|
||||
extern FULL ztou(ZVALUE z);
|
||||
extern void zprintval(ZVALUE z, long decimals, long width);
|
||||
extern void zprintx(ZVALUE z, long width);
|
||||
extern void zprintb(ZVALUE z, long width);
|
||||
extern void zprinto(ZVALUE z, long width);
|
||||
extern void fitzprint(ZVALUE, long, long);
|
||||
DLL extern void zcopy(ZVALUE z, ZVALUE *res);
|
||||
DLL extern void itoz(long i, ZVALUE *res);
|
||||
DLL extern void utoz(FULL i, ZVALUE *res);
|
||||
DLL extern void str2z(char *s, ZVALUE *res);
|
||||
DLL extern long ztoi(ZVALUE z);
|
||||
DLL extern FULL ztou(ZVALUE z);
|
||||
DLL extern void zprintval(ZVALUE z, long decimals, long width);
|
||||
DLL extern void zprintx(ZVALUE z, long width);
|
||||
DLL extern void zprintb(ZVALUE z, long width);
|
||||
DLL extern void zprinto(ZVALUE z, long width);
|
||||
DLL extern void fitzprint(ZVALUE, long, long);
|
||||
|
||||
|
||||
/*
|
||||
* Basic numeric routines.
|
||||
*/
|
||||
extern void zmuli(ZVALUE z, long n, ZVALUE *res);
|
||||
extern long zdivi(ZVALUE z, long n, ZVALUE *res);
|
||||
extern long zmodi(ZVALUE z, long n);
|
||||
extern void zadd(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
extern void zsub(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
extern void zmul(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
extern long zdiv(ZVALUE z1, ZVALUE z2, ZVALUE *res, ZVALUE *rem, long R);
|
||||
extern long zquo(ZVALUE z1, ZVALUE z2, ZVALUE *res, long R);
|
||||
extern long zmod(ZVALUE z1, ZVALUE z2, ZVALUE *rem, long R);
|
||||
extern void zequo(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
extern BOOL zdivides(ZVALUE z1, ZVALUE z2);
|
||||
extern void zor(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
extern void zand(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
extern void zxor(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
extern void zandnot(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
extern long zpopcnt(ZVALUE z, int bitval);
|
||||
extern void zshift(ZVALUE z, long n, ZVALUE *res);
|
||||
extern void zsquare(ZVALUE z, ZVALUE *res);
|
||||
extern long zlowbit(ZVALUE z);
|
||||
extern LEN zhighbit(ZVALUE z);
|
||||
extern void zbitvalue(long n, ZVALUE *res);
|
||||
extern BOOL zisset(ZVALUE z, long n);
|
||||
extern BOOL zisonebit(ZVALUE z);
|
||||
extern BOOL zisallbits(ZVALUE z);
|
||||
extern FLAG ztest(ZVALUE z);
|
||||
extern FLAG zrel(ZVALUE z1, ZVALUE z2);
|
||||
extern FLAG zabsrel(ZVALUE z1, ZVALUE z2);
|
||||
extern BOOL zcmp(ZVALUE z1, ZVALUE z2);
|
||||
DLL extern void zmuli(ZVALUE z, long n, ZVALUE *res);
|
||||
DLL extern long zdivi(ZVALUE z, long n, ZVALUE *res);
|
||||
DLL extern long zmodi(ZVALUE z, long n);
|
||||
DLL extern void zadd(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
DLL extern void zsub(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
DLL extern void zmul(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
DLL extern long zdiv(ZVALUE z1, ZVALUE z2, ZVALUE *res, ZVALUE *rem, long R);
|
||||
DLL extern long zquo(ZVALUE z1, ZVALUE z2, ZVALUE *res, long R);
|
||||
DLL extern long zmod(ZVALUE z1, ZVALUE z2, ZVALUE *rem, long R);
|
||||
DLL extern void zequo(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
DLL extern BOOL zdivides(ZVALUE z1, ZVALUE z2);
|
||||
DLL extern void zor(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
DLL extern void zand(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
DLL extern void zxor(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
DLL extern void zandnot(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
DLL extern long zpopcnt(ZVALUE z, int bitval);
|
||||
DLL extern void zshift(ZVALUE z, long n, ZVALUE *res);
|
||||
DLL extern void zsquare(ZVALUE z, ZVALUE *res);
|
||||
DLL extern long zlowbit(ZVALUE z);
|
||||
DLL extern LEN zhighbit(ZVALUE z);
|
||||
DLL extern void zbitvalue(long n, ZVALUE *res);
|
||||
DLL extern BOOL zisset(ZVALUE z, long n);
|
||||
DLL extern BOOL zisonebit(ZVALUE z);
|
||||
DLL extern BOOL zisallbits(ZVALUE z);
|
||||
DLL extern FLAG ztest(ZVALUE z);
|
||||
DLL extern FLAG zrel(ZVALUE z1, ZVALUE z2);
|
||||
DLL extern FLAG zabsrel(ZVALUE z1, ZVALUE z2);
|
||||
DLL extern BOOL zcmp(ZVALUE z1, ZVALUE z2);
|
||||
|
||||
|
||||
/*
|
||||
* More complicated numeric functions.
|
||||
*/
|
||||
extern FULL uugcd(FULL i1, FULL i2);
|
||||
extern long iigcd(long i1, long i2);
|
||||
extern void zgcd(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
extern void zlcm(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
extern void zreduce(ZVALUE z1, ZVALUE z2, ZVALUE *z1res, ZVALUE *z2res);
|
||||
extern void zfact(ZVALUE z, ZVALUE *dest);
|
||||
extern void zperm(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
extern int zcomb(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
extern FLAG zjacobi(ZVALUE z1, ZVALUE z2);
|
||||
extern void zfib(ZVALUE z, ZVALUE *res);
|
||||
extern void zpowi(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
extern void ztenpow(long power, ZVALUE *res);
|
||||
extern void zpowermod(ZVALUE z1, ZVALUE z2, ZVALUE z3, ZVALUE *res);
|
||||
extern BOOL zmodinv(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
extern BOOL zrelprime(ZVALUE z1, ZVALUE z2);
|
||||
extern long zlog(ZVALUE z1, ZVALUE z2);
|
||||
extern long zlog10(ZVALUE z);
|
||||
extern long zdivcount(ZVALUE z1, ZVALUE z2);
|
||||
extern long zfacrem(ZVALUE z1, ZVALUE z2, ZVALUE *rem);
|
||||
extern long zgcdrem(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
extern long zdigits(ZVALUE z1);
|
||||
extern long zdigit(ZVALUE z1, long n);
|
||||
extern FLAG zsqrt(ZVALUE z1, ZVALUE *dest, long R);
|
||||
extern void zroot(ZVALUE z1, ZVALUE z2, ZVALUE *dest);
|
||||
extern BOOL zissquare(ZVALUE z);
|
||||
extern void zhnrmod(ZVALUE v, ZVALUE h, ZVALUE zn, ZVALUE zr, ZVALUE *res);
|
||||
DLL extern FULL uugcd(FULL i1, FULL i2);
|
||||
DLL extern long iigcd(long i1, long i2);
|
||||
DLL extern void zgcd(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
DLL extern void zlcm(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
DLL extern void zreduce(ZVALUE z1, ZVALUE z2, ZVALUE *z1res, ZVALUE *z2res);
|
||||
DLL extern void zfact(ZVALUE z, ZVALUE *dest);
|
||||
DLL extern void zperm(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
DLL extern int zcomb(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
DLL extern FLAG zjacobi(ZVALUE z1, ZVALUE z2);
|
||||
DLL extern void zfib(ZVALUE z, ZVALUE *res);
|
||||
DLL extern void zpowi(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
DLL extern void ztenpow(long power, ZVALUE *res);
|
||||
DLL extern void zpowermod(ZVALUE z1, ZVALUE z2, ZVALUE z3, ZVALUE *res);
|
||||
DLL extern BOOL zmodinv(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
DLL extern BOOL zrelprime(ZVALUE z1, ZVALUE z2);
|
||||
DLL extern long zlog(ZVALUE z1, ZVALUE z2);
|
||||
DLL extern long zlog10(ZVALUE z);
|
||||
DLL extern long zdivcount(ZVALUE z1, ZVALUE z2);
|
||||
DLL extern long zfacrem(ZVALUE z1, ZVALUE z2, ZVALUE *rem);
|
||||
DLL extern long zgcdrem(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
DLL extern long zdigits(ZVALUE z1);
|
||||
DLL extern long zdigit(ZVALUE z1, long n);
|
||||
DLL extern FLAG zsqrt(ZVALUE z1, ZVALUE *dest, long R);
|
||||
DLL extern void zroot(ZVALUE z1, ZVALUE z2, ZVALUE *dest);
|
||||
DLL extern BOOL zissquare(ZVALUE z);
|
||||
DLL extern void zhnrmod(ZVALUE v, ZVALUE h, ZVALUE zn, ZVALUE zr, ZVALUE *res);
|
||||
|
||||
|
||||
/*
|
||||
* Prime related functions.
|
||||
*/
|
||||
extern FLAG zisprime(ZVALUE z);
|
||||
extern FULL znprime(ZVALUE z);
|
||||
extern FULL next_prime(FULL v);
|
||||
extern FULL zpprime(ZVALUE z);
|
||||
extern void zpfact(ZVALUE z, ZVALUE *dest);
|
||||
extern BOOL zprimetest(ZVALUE z, long count, ZVALUE skip);
|
||||
extern BOOL zredcprimetest(ZVALUE z, long count, ZVALUE skip);
|
||||
extern BOOL znextcand(ZVALUE z1, long count, ZVALUE skip, ZVALUE res, ZVALUE mod, ZVALUE *cand);
|
||||
extern BOOL zprevcand(ZVALUE z1, long count, ZVALUE skip, ZVALUE res, ZVALUE mod, ZVALUE *cand);
|
||||
extern FULL zlowfactor(ZVALUE z, long count);
|
||||
extern FLAG zfactor(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
extern long zpix(ZVALUE z1);
|
||||
extern void zlcmfact(ZVALUE z, ZVALUE *dest);
|
||||
DLL extern FLAG zisprime(ZVALUE z);
|
||||
DLL extern FULL znprime(ZVALUE z);
|
||||
DLL extern FULL next_prime(FULL v);
|
||||
DLL extern FULL zpprime(ZVALUE z);
|
||||
DLL extern void zpfact(ZVALUE z, ZVALUE *dest);
|
||||
DLL extern BOOL zprimetest(ZVALUE z, long count, ZVALUE skip);
|
||||
DLL extern BOOL zredcprimetest(ZVALUE z, long count, ZVALUE skip);
|
||||
DLL extern BOOL znextcand(ZVALUE z1, long count, ZVALUE skip, ZVALUE res, ZVALUE mod, ZVALUE *cand);
|
||||
DLL extern BOOL zprevcand(ZVALUE z1, long count, ZVALUE skip, ZVALUE res, ZVALUE mod, ZVALUE *cand);
|
||||
DLL extern FULL zlowfactor(ZVALUE z, long count);
|
||||
DLL extern FLAG zfactor(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
DLL extern long zpix(ZVALUE z1);
|
||||
DLL extern void zlcmfact(ZVALUE z, ZVALUE *dest);
|
||||
|
||||
|
||||
/*
|
||||
* Misc misc functions. :-)
|
||||
*/
|
||||
extern void zsquaremod(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
extern void zminmod(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
extern BOOL zcmpmod(ZVALUE z1, ZVALUE z2, ZVALUE z3);
|
||||
extern void zio_init(void);
|
||||
DLL extern void zsquaremod(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
DLL extern void zminmod(ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
DLL extern BOOL zcmpmod(ZVALUE z1, ZVALUE z2, ZVALUE z3);
|
||||
DLL extern void zio_init(void);
|
||||
|
||||
|
||||
/*
|
||||
* These functions are for internal use only.
|
||||
*/
|
||||
extern void ztrim(ZVALUE *z);
|
||||
extern void zshiftr(ZVALUE z, long n);
|
||||
extern void zshiftl(ZVALUE z, long n);
|
||||
extern HALF *zalloctemp(LEN len);
|
||||
DLL extern void ztrim(ZVALUE *z);
|
||||
DLL extern void zshiftr(ZVALUE z, long n);
|
||||
DLL extern void zshiftl(ZVALUE z, long n);
|
||||
DLL extern HALF *zalloctemp(LEN len);
|
||||
|
||||
|
||||
/*
|
||||
@@ -403,13 +417,13 @@ typedef struct {
|
||||
ZVALUE one; /* REDC format for the number 1 */
|
||||
} REDC;
|
||||
|
||||
extern REDC *zredcalloc(ZVALUE z1);
|
||||
extern void zredcfree(REDC *rp);
|
||||
extern void zredcencode(REDC *rp, ZVALUE z1, ZVALUE *res);
|
||||
extern void zredcdecode(REDC *rp, ZVALUE z1, ZVALUE *res);
|
||||
extern void zredcmul(REDC *rp, ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
extern void zredcsquare(REDC *rp, ZVALUE z1, ZVALUE *res);
|
||||
extern void zredcpower(REDC *rp, ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
DLL extern REDC *zredcalloc(ZVALUE z1);
|
||||
DLL extern void zredcfree(REDC *rp);
|
||||
DLL extern void zredcencode(REDC *rp, ZVALUE z1, ZVALUE *res);
|
||||
DLL extern void zredcdecode(REDC *rp, ZVALUE z1, ZVALUE *res);
|
||||
DLL extern void zredcmul(REDC *rp, ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
DLL extern void zredcsquare(REDC *rp, ZVALUE z1, ZVALUE *res);
|
||||
DLL extern void zredcpower(REDC *rp, ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
|
||||
|
||||
/*
|
||||
@@ -550,32 +564,32 @@ extern void zredcpower(REDC *rp, ZVALUE z1, ZVALUE z2, ZVALUE *res);
|
||||
/*
|
||||
* Output routines for either FILE handles or strings.
|
||||
*/
|
||||
extern void math_chr(int ch);
|
||||
extern void math_str(char *str);
|
||||
extern void math_fill(char *str, long width);
|
||||
extern void math_flush(void);
|
||||
extern void math_divertio(void);
|
||||
extern void math_cleardiversions(void);
|
||||
extern char *math_getdivertedio(void);
|
||||
extern int math_setmode(int mode);
|
||||
extern LEN math_setdigits(LEN digits);
|
||||
extern void math_fmt(char *, ...);
|
||||
DLL extern void math_chr(int ch);
|
||||
DLL extern void math_str(char *str);
|
||||
DLL extern void math_fill(char *str, long width);
|
||||
DLL extern void math_flush(void);
|
||||
DLL extern void math_divertio(void);
|
||||
DLL extern void math_cleardiversions(void);
|
||||
DLL extern char *math_getdivertedio(void);
|
||||
DLL extern int math_setmode(int mode);
|
||||
DLL extern LEN math_setdigits(LEN digits);
|
||||
DLL extern void math_fmt(char *, ...);
|
||||
|
||||
|
||||
/*
|
||||
* The error routine.
|
||||
*/
|
||||
extern void math_error(char *, ...);
|
||||
DLL extern void math_error(char *, ...);
|
||||
|
||||
|
||||
/*
|
||||
* external swap functions
|
||||
*/
|
||||
extern HALF *swap_b8_in_HALFs(HALF *dest, HALF *src, LEN len);
|
||||
extern ZVALUE *swap_b8_in_ZVALUE(ZVALUE *dest, ZVALUE *src, BOOL all);
|
||||
extern HALF *swap_b16_in_HALFs(HALF *dest, HALF *src, LEN len);
|
||||
extern ZVALUE *swap_b16_in_ZVALUE(ZVALUE *dest, ZVALUE *src, BOOL all);
|
||||
extern ZVALUE *swap_HALF_in_ZVALUE(ZVALUE *dest, ZVALUE *src, BOOL all);
|
||||
DLL extern HALF *swap_b8_in_HALFs(HALF *dest, HALF *src, LEN len);
|
||||
DLL extern ZVALUE *swap_b8_in_ZVALUE(ZVALUE *dest, ZVALUE *src, BOOL all);
|
||||
DLL extern HALF *swap_b16_in_HALFs(HALF *dest, HALF *src, LEN len);
|
||||
DLL extern ZVALUE *swap_b16_in_ZVALUE(ZVALUE *dest, ZVALUE *src, BOOL all);
|
||||
DLL extern ZVALUE *swap_HALF_in_ZVALUE(ZVALUE *dest, ZVALUE *src, BOOL all);
|
||||
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user