Build the Basic run-time library (after some modernisation).
--HG-- branch : dtrg-buildsystem
This commit is contained in:
parent
a68b117e96
commit
d5f0107746
24 changed files with 89 additions and 381 deletions
1
Makefile
1
Makefile
|
@ -54,6 +54,7 @@ include util/led/build.mk
|
||||||
include util/topgen/build.mk
|
include util/topgen/build.mk
|
||||||
|
|
||||||
include lang/cem/build.mk
|
include lang/cem/build.mk
|
||||||
|
include lang/basic/build.mk
|
||||||
|
|
||||||
include mach/proto/as/build.mk
|
include mach/proto/as/build.mk
|
||||||
include mach/proto/ncg/build.mk
|
include mach/proto/ncg/build.mk
|
||||||
|
|
|
@ -33,7 +33,7 @@ define ackfile-rule
|
||||||
$o: $s $(ACK) \
|
$o: $s $(ACK) \
|
||||||
$(CCOMPILER) \
|
$(CCOMPILER) \
|
||||||
$(PLATFORM_$(PLATFORM)) \
|
$(PLATFORM_$(PLATFORM)) \
|
||||||
$(EM_ENCODE)
|
$(ACK_CORE_TOOLS)
|
||||||
@echo ACK $o
|
@echo ACK $o
|
||||||
@mkdir -p $(dir $o)
|
@mkdir -p $(dir $o)
|
||||||
$(hide) ACKDIR=$(INSDIR) $(ACK) $(ACKFLAGS) $(ackflags) -m$(PLATFORM) -c -o $o $s
|
$(hide) ACKDIR=$(INSDIR) $(ACK) $(ACKFLAGS) $(ackflags) -m$(PLATFORM) -c -o $o $s
|
||||||
|
|
4
lang/basic/build.mk
Normal file
4
lang/basic/build.mk
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
include lang/basic/lib/build.mk
|
||||||
|
#include lang/cem/cemcom.ansi/build.mk
|
||||||
|
#include lang/cem/libcc.ansi/build.mk
|
||||||
|
|
|
@ -7,62 +7,7 @@
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
#define __NO_DEFS
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
double
|
double _atn(double x) { return atan(x); }
|
||||||
_atn(x)
|
|
||||||
double x;
|
|
||||||
{
|
|
||||||
/* Algorithm and coefficients from:
|
|
||||||
"Software manual for the elementary functions"
|
|
||||||
by W.J. Cody and W. Waite, Prentice-Hall, 1980
|
|
||||||
*/
|
|
||||||
|
|
||||||
static double p[] = {
|
|
||||||
-0.13688768894191926929e+2,
|
|
||||||
-0.20505855195861651981e+2,
|
|
||||||
-0.84946240351320683534e+1,
|
|
||||||
-0.83758299368150059274e+0
|
|
||||||
};
|
|
||||||
static double q[] = {
|
|
||||||
0.41066306682575781263e+2,
|
|
||||||
0.86157349597130242515e+2,
|
|
||||||
0.59578436142597344465e+2,
|
|
||||||
0.15024001160028576121e+2,
|
|
||||||
1.0
|
|
||||||
};
|
|
||||||
static double a[] = {
|
|
||||||
0.0,
|
|
||||||
0.52359877559829887307710723554658381, /* pi/6 */
|
|
||||||
M_PI_2,
|
|
||||||
1.04719755119659774615421446109316763 /* pi/3 */
|
|
||||||
};
|
|
||||||
|
|
||||||
int neg = x < 0;
|
|
||||||
int n;
|
|
||||||
double g;
|
|
||||||
|
|
||||||
if (neg) {
|
|
||||||
x = -x;
|
|
||||||
}
|
|
||||||
if (x > 1.0) {
|
|
||||||
x = 1.0/x;
|
|
||||||
n = 2;
|
|
||||||
}
|
|
||||||
else n = 0;
|
|
||||||
|
|
||||||
if (x > 0.26794919243112270647) { /* 2-sqtr(3) */
|
|
||||||
n = n + 1;
|
|
||||||
x = (((0.73205080756887729353*x-0.5)-0.5)+x)/
|
|
||||||
(1.73205080756887729353+x);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ??? avoid underflow ??? */
|
|
||||||
|
|
||||||
g = x * x;
|
|
||||||
x += x * g * POLYNOM3(g, p) / POLYNOM4(g, q);
|
|
||||||
if (n > 1) x = -x;
|
|
||||||
x += a[n];
|
|
||||||
return neg ? -x : x;
|
|
||||||
}
|
|
||||||
|
|
48
lang/basic/lib/build.mk
Normal file
48
lang/basic/lib/build.mk
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
define build-runtime-libbasic-impl
|
||||||
|
|
||||||
|
$(call reset)
|
||||||
|
$(eval objdir := $(PLATFORM))
|
||||||
|
|
||||||
|
$(call ackfile, lang/basic/lib/fif.e)
|
||||||
|
$(call ackfile, lang/basic/lib/fef.e)
|
||||||
|
$(call ackfile, lang/basic/lib/setline.e)
|
||||||
|
$(call ackfile, lang/basic/lib/abs.c)
|
||||||
|
$(call ackfile, lang/basic/lib/asc.c)
|
||||||
|
$(call ackfile, lang/basic/lib/asrt.c)
|
||||||
|
$(call ackfile, lang/basic/lib/atn.c)
|
||||||
|
$(call ackfile, lang/basic/lib/chr.c)
|
||||||
|
$(call ackfile, lang/basic/lib/conversion.c)
|
||||||
|
$(call ackfile, lang/basic/lib/error.c)
|
||||||
|
$(call ackfile, lang/basic/lib/exp.c)
|
||||||
|
$(call ackfile, lang/basic/lib/file.c)
|
||||||
|
$(call ackfile, lang/basic/lib/hlt.c)
|
||||||
|
$(call ackfile, lang/basic/lib/io.c)
|
||||||
|
$(call ackfile, lang/basic/lib/log.c)
|
||||||
|
$(call ackfile, lang/basic/lib/mki.c)
|
||||||
|
$(call ackfile, lang/basic/lib/oct.c)
|
||||||
|
$(call ackfile, lang/basic/lib/peek.c)
|
||||||
|
$(call ackfile, lang/basic/lib/power.c)
|
||||||
|
$(call ackfile, lang/basic/lib/print.c)
|
||||||
|
$(call ackfile, lang/basic/lib/random.c)
|
||||||
|
$(call ackfile, lang/basic/lib/read.c)
|
||||||
|
$(call ackfile, lang/basic/lib/return.c)
|
||||||
|
$(call ackfile, lang/basic/lib/salloc.c)
|
||||||
|
$(call ackfile, lang/basic/lib/sgn.c)
|
||||||
|
$(call ackfile, lang/basic/lib/sin.c)
|
||||||
|
$(call ackfile, lang/basic/lib/sqt.c)
|
||||||
|
$(call ackfile, lang/basic/lib/stop.c)
|
||||||
|
$(call ackfile, lang/basic/lib/string.c)
|
||||||
|
$(call ackfile, lang/basic/lib/swap.c)
|
||||||
|
$(call ackfile, lang/basic/lib/trace.c)
|
||||||
|
$(call ackfile, lang/basic/lib/trap.c)
|
||||||
|
$(call ackfile, lang/basic/lib/write.c)
|
||||||
|
|
||||||
|
$(call acklibrary, $(LIBDIR)/$(PLATFORM)/libbasic.a)
|
||||||
|
$(call installto, $(PLATIND)/$(PLATFORM)/libbasic.a)
|
||||||
|
|
||||||
|
endef
|
||||||
|
|
||||||
|
build-runtime-libbasic = $(eval $(build-runtime-libbasic-impl))
|
||||||
|
|
||||||
|
$(eval RUNTIMES += libbasic)
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
/* $Id$ */
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
/* error takes an error value in the range of 0-255 */
|
/* error takes an error value in the range of 0-255 */
|
||||||
/* and generates a trap */
|
/* and generates a trap */
|
||||||
|
|
|
@ -10,88 +10,7 @@
|
||||||
#define __NO_DEFS
|
#define __NO_DEFS
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
static double
|
double _exp(double x)
|
||||||
ldexp(fl,exp)
|
|
||||||
double fl;
|
|
||||||
int exp;
|
|
||||||
{
|
{
|
||||||
extern double _fef();
|
return exp(x);
|
||||||
int sign = 1;
|
|
||||||
int currexp;
|
|
||||||
|
|
||||||
if (fl<0) {
|
|
||||||
fl = -fl;
|
|
||||||
sign = -1;
|
|
||||||
}
|
|
||||||
fl = _fef(fl,&currexp);
|
|
||||||
exp += currexp;
|
|
||||||
if (exp > 0) {
|
|
||||||
while (exp>30) {
|
|
||||||
fl *= (double) (1L << 30);
|
|
||||||
exp -= 30;
|
|
||||||
}
|
|
||||||
fl *= (double) (1L << exp);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
while (exp<-30) {
|
|
||||||
fl /= (double) (1L << 30);
|
|
||||||
exp += 30;
|
|
||||||
}
|
|
||||||
fl /= (double) (1L << -exp);
|
|
||||||
}
|
|
||||||
return sign * fl;
|
|
||||||
}
|
|
||||||
|
|
||||||
double
|
|
||||||
_exp(x)
|
|
||||||
double x;
|
|
||||||
{
|
|
||||||
/* Algorithm and coefficients from:
|
|
||||||
"Software manual for the elementary functions"
|
|
||||||
by W.J. Cody and W. Waite, Prentice-Hall, 1980
|
|
||||||
*/
|
|
||||||
|
|
||||||
static double p[] = {
|
|
||||||
0.25000000000000000000e+0,
|
|
||||||
0.75753180159422776666e-2,
|
|
||||||
0.31555192765684646356e-4
|
|
||||||
};
|
|
||||||
|
|
||||||
static double q[] = {
|
|
||||||
0.50000000000000000000e+0,
|
|
||||||
0.56817302698551221787e-1,
|
|
||||||
0.63121894374398503557e-3,
|
|
||||||
0.75104028399870046114e-6
|
|
||||||
};
|
|
||||||
double xn, g;
|
|
||||||
int n;
|
|
||||||
int negative = x < 0;
|
|
||||||
|
|
||||||
if (x <= M_LN_MIN_D) {
|
|
||||||
return M_MIN_D;
|
|
||||||
}
|
|
||||||
if (x >= M_LN_MAX_D) {
|
|
||||||
if (x > M_LN_MAX_D) error(3);
|
|
||||||
return M_MAX_D;
|
|
||||||
}
|
|
||||||
if (negative) x = -x;
|
|
||||||
|
|
||||||
/* ??? avoid underflow ??? */
|
|
||||||
|
|
||||||
n = x * M_LOG2E + 0.5; /* 1/ln(2) = log2(e), 0.5 added for rounding */
|
|
||||||
xn = n;
|
|
||||||
{
|
|
||||||
double x1 = (long) x;
|
|
||||||
double x2 = x - x1;
|
|
||||||
|
|
||||||
g = ((x1-xn*0.693359375)+x2) - xn*(-2.1219444005469058277e-4);
|
|
||||||
}
|
|
||||||
if (negative) {
|
|
||||||
g = -g;
|
|
||||||
n = -n;
|
|
||||||
}
|
|
||||||
xn = g * g;
|
|
||||||
x = g * POLYNOM2(xn, p);
|
|
||||||
n += 1;
|
|
||||||
return (ldexp(0.5 + x/(POLYNOM3(xn, q) - x), n));
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id$ */
|
#include <stdlib.h>
|
||||||
|
|
||||||
_hlt(nr)
|
_hlt(nr)
|
||||||
int nr;
|
int nr;
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
#include "bc_io.h"
|
#include "bc_io.h"
|
||||||
#include <sgtty.h>
|
|
||||||
|
|
||||||
/* $Id$ */
|
/* dtrg --- this originally used sgtty.h to do clever tty manipulation.
|
||||||
|
* Strictly this should be converted to use termios, but for simplicity
|
||||||
struct sgttyb _ttydef;
|
* we're going to stick with plain stdio for now. */
|
||||||
|
|
||||||
/* BASIC has some nasty io characteristics */
|
/* BASIC has some nasty io characteristics */
|
||||||
|
|
||||||
|
@ -65,9 +64,6 @@ char *buf;
|
||||||
if( _chann == -1)
|
if( _chann == -1)
|
||||||
{
|
{
|
||||||
pos= _pos;
|
pos= _pos;
|
||||||
gtty(0,_ttydef);
|
|
||||||
_ttydef.sg_flags &= ~ECHO;
|
|
||||||
stty(0,_ttydef);
|
|
||||||
}else pos= _fdtable[_chann].pos;
|
}else pos= _fdtable[_chann].pos;
|
||||||
c= buf;
|
c= buf;
|
||||||
while( (holder = fgetc(_chanrd)) != EOF && holder != '\n'){
|
while( (holder = fgetc(_chanrd)) != EOF && holder != '\n'){
|
||||||
|
@ -79,8 +75,6 @@ char *buf;
|
||||||
if( _chann== -1)
|
if( _chann== -1)
|
||||||
{
|
{
|
||||||
_pos=pos;
|
_pos=pos;
|
||||||
_ttydef.sg_flags |= ECHO;
|
|
||||||
stty(0,_ttydef);
|
|
||||||
} else _fdtable[_chann].pos= pos;
|
} else _fdtable[_chann].pos= pos;
|
||||||
}
|
}
|
||||||
_tab(x)
|
_tab(x)
|
||||||
|
|
|
@ -10,48 +10,7 @@
|
||||||
#define __NO_DEFS
|
#define __NO_DEFS
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
double
|
double _log(double x)
|
||||||
_log(x)
|
|
||||||
double x;
|
|
||||||
{
|
{
|
||||||
/* Algorithm and coefficients from:
|
return log(x);
|
||||||
"Software manual for the elementary functions"
|
|
||||||
by W.J. Cody and W. Waite, Prentice-Hall, 1980
|
|
||||||
*/
|
|
||||||
static double a[] = {
|
|
||||||
-0.64124943423745581147e2,
|
|
||||||
0.16383943563021534222e2,
|
|
||||||
-0.78956112887491257267e0
|
|
||||||
};
|
|
||||||
static double b[] = {
|
|
||||||
-0.76949932108494879777e3,
|
|
||||||
0.31203222091924532844e3,
|
|
||||||
-0.35667977739034646171e2,
|
|
||||||
1.0
|
|
||||||
};
|
|
||||||
|
|
||||||
extern double _fef();
|
|
||||||
double znum, zden, z, w;
|
|
||||||
int exponent;
|
|
||||||
|
|
||||||
if (x <= 0) {
|
|
||||||
error(3);
|
|
||||||
return -HUGE;
|
|
||||||
}
|
|
||||||
|
|
||||||
x = _fef(x, &exponent);
|
|
||||||
if (x > M_1_SQRT2) {
|
|
||||||
znum = (x - 0.5) - 0.5;
|
|
||||||
zden = x * 0.5 + 0.5;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
znum = x - 0.5;
|
|
||||||
zden = znum * 0.5 + 0.5;
|
|
||||||
exponent--;
|
|
||||||
}
|
|
||||||
z = znum/zden; w = z * z;
|
|
||||||
x = z + z * w * (POLYNOM2(w,a)/POLYNOM3(w,b));
|
|
||||||
z = exponent;
|
|
||||||
x += z * (-2.121944400546905827679e-4);
|
|
||||||
return x + z * 0.693359375;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
#include "bc_string.h"
|
#include "bc_string.h"
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
|
@ -1,32 +1,4 @@
|
||||||
/* $Id$ */
|
#include <math.h>
|
||||||
|
|
||||||
/*
|
double _power(double x, double y) { return pow(x, y); }
|
||||||
computes a^b.
|
|
||||||
uses log and exp
|
|
||||||
*/
|
|
||||||
|
|
||||||
double _log(), _exp();
|
|
||||||
|
|
||||||
double
|
|
||||||
_power(base,pownr)
|
|
||||||
double pownr, base;
|
|
||||||
{
|
|
||||||
double temp;
|
|
||||||
long l;
|
|
||||||
|
|
||||||
if(pownr <= 0.0) {
|
|
||||||
if(pownr == 0.0) {
|
|
||||||
if(base <= 0.0)
|
|
||||||
error(3);
|
|
||||||
return(0.0);
|
|
||||||
}
|
|
||||||
l = base;
|
|
||||||
if(l != base)
|
|
||||||
error(3);
|
|
||||||
temp = _exp(base * _log(-pownr));
|
|
||||||
if(l & 1)
|
|
||||||
temp = -temp;
|
|
||||||
return(temp);
|
|
||||||
}
|
|
||||||
return(_exp(base * _log(pownr)));
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
#include "bc_string.h"
|
#include "bc_string.h"
|
||||||
#include "bc_io.h"
|
#include "bc_io.h"
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
/* $Id$ */
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
#if !defined(EM_WSIZE)
|
#if !defined(EM_WSIZE)
|
||||||
#define EM_WSIZE _EM_WSIZE
|
#define EM_WSIZE _EM_WSIZE
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
/* $Id$ */
|
#include <stdlib.h>
|
||||||
|
|
||||||
extern char *malloc() ;
|
|
||||||
|
|
||||||
char * salloc(length)
|
char * salloc(length)
|
||||||
unsigned length;
|
unsigned length;
|
||||||
|
|
|
@ -10,96 +10,7 @@
|
||||||
#define __NO_DEFS
|
#define __NO_DEFS
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
static double
|
double _sin(double x) { return sin(x); }
|
||||||
sinus(x, cos_flag)
|
double _cos(double x) { return cos(x); }
|
||||||
double x;
|
double _tan(double x) { return tan(x); }
|
||||||
{
|
|
||||||
/* Algorithm and coefficients from:
|
|
||||||
"Software manual for the elementary functions"
|
|
||||||
by W.J. Cody and W. Waite, Prentice-Hall, 1980
|
|
||||||
*/
|
|
||||||
|
|
||||||
static double r[] = {
|
|
||||||
-0.16666666666666665052e+0,
|
|
||||||
0.83333333333331650314e-2,
|
|
||||||
-0.19841269841201840457e-3,
|
|
||||||
0.27557319210152756119e-5,
|
|
||||||
-0.25052106798274584544e-7,
|
|
||||||
0.16058936490371589114e-9,
|
|
||||||
-0.76429178068910467734e-12,
|
|
||||||
0.27204790957888846175e-14
|
|
||||||
};
|
|
||||||
|
|
||||||
double xsqr;
|
|
||||||
double y;
|
|
||||||
int neg = 0;
|
|
||||||
|
|
||||||
if (x < 0) {
|
|
||||||
x = -x;
|
|
||||||
neg = 1;
|
|
||||||
}
|
|
||||||
if (cos_flag) {
|
|
||||||
neg = 0;
|
|
||||||
y = M_PI_2 + x;
|
|
||||||
}
|
|
||||||
else y = x;
|
|
||||||
|
|
||||||
/* ??? avoid loss of significance, if y is too large, error ??? */
|
|
||||||
|
|
||||||
y = y * M_1_PI + 0.5;
|
|
||||||
|
|
||||||
/* Use extended precision to calculate reduced argument.
|
|
||||||
Here we used 12 bits of the mantissa for a1.
|
|
||||||
Also split x in integer part x1 and fraction part x2.
|
|
||||||
*/
|
|
||||||
#define A1 3.1416015625
|
|
||||||
#define A2 -8.908910206761537356617e-6
|
|
||||||
{
|
|
||||||
double x1, x2;
|
|
||||||
extern double _fif();
|
|
||||||
|
|
||||||
_fif(y, 1.0, &y);
|
|
||||||
if (_fif(y, 0.5, &x1)) neg = !neg;
|
|
||||||
if (cos_flag) y -= 0.5;
|
|
||||||
x2 = _fif(x, 1.0, &x1);
|
|
||||||
x = x1 - y * A1;
|
|
||||||
x += x2;
|
|
||||||
x -= y * A2;
|
|
||||||
#undef A1
|
|
||||||
#undef A2
|
|
||||||
}
|
|
||||||
|
|
||||||
if (x < 0) {
|
|
||||||
neg = !neg;
|
|
||||||
x = -x;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ??? avoid underflow ??? */
|
|
||||||
|
|
||||||
y = x * x;
|
|
||||||
x += x * y * POLYNOM7(y, r);
|
|
||||||
return neg ? -x : x;
|
|
||||||
}
|
|
||||||
|
|
||||||
double
|
|
||||||
_sin(x)
|
|
||||||
double x;
|
|
||||||
{
|
|
||||||
return sinus(x, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
double
|
|
||||||
_cos(x)
|
|
||||||
double x;
|
|
||||||
{
|
|
||||||
if (x < 0) x = -x;
|
|
||||||
return sinus(x, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* EXTENSION */
|
|
||||||
double
|
|
||||||
_tan(x)
|
|
||||||
double x;
|
|
||||||
{
|
|
||||||
return _sin(x)/_cos(x);
|
|
||||||
}
|
|
||||||
|
|
|
@ -10,62 +10,5 @@
|
||||||
#define __NO_DEFS
|
#define __NO_DEFS
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
#define NITER 5
|
double _sqt(double x) { return sqrt(x); }
|
||||||
|
|
||||||
static double
|
|
||||||
ldexp(fl,exp)
|
|
||||||
double fl;
|
|
||||||
int exp;
|
|
||||||
{
|
|
||||||
extern double _fef();
|
|
||||||
int sign = 1;
|
|
||||||
int currexp;
|
|
||||||
|
|
||||||
if (fl<0) {
|
|
||||||
fl = -fl;
|
|
||||||
sign = -1;
|
|
||||||
}
|
|
||||||
fl = _fef(fl,&currexp);
|
|
||||||
exp += currexp;
|
|
||||||
if (exp > 0) {
|
|
||||||
while (exp>30) {
|
|
||||||
fl *= (double) (1L << 30);
|
|
||||||
exp -= 30;
|
|
||||||
}
|
|
||||||
fl *= (double) (1L << exp);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
while (exp<-30) {
|
|
||||||
fl /= (double) (1L << 30);
|
|
||||||
exp += 30;
|
|
||||||
}
|
|
||||||
fl /= (double) (1L << -exp);
|
|
||||||
}
|
|
||||||
return sign * fl;
|
|
||||||
}
|
|
||||||
|
|
||||||
double
|
|
||||||
_sqt(x)
|
|
||||||
double x;
|
|
||||||
{
|
|
||||||
extern double _fef();
|
|
||||||
int exponent;
|
|
||||||
double val;
|
|
||||||
|
|
||||||
if (x <= 0) {
|
|
||||||
if (x < 0) error(3);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
val = _fef(x, &exponent);
|
|
||||||
if (exponent & 1) {
|
|
||||||
exponent--;
|
|
||||||
val *= 2;
|
|
||||||
}
|
|
||||||
val = ldexp(val + 1.0, exponent/2 - 1);
|
|
||||||
/* was: val = (val + 1.0)/2.0; val = ldexp(val, exponent/2); */
|
|
||||||
for (exponent = NITER - 1; exponent >= 0; exponent--) {
|
|
||||||
val = (val + x / val) / 2.0;
|
|
||||||
}
|
|
||||||
return val;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
/* $Id$ */
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
_stop()
|
_stop()
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
#include "bc_string.h"
|
#include "bc_string.h"
|
||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <setjmp.h>
|
#include <setjmp.h>
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,8 @@ define build-platform-impl
|
||||||
$(eval q := $D/descr)
|
$(eval q := $D/descr)
|
||||||
$(call installto, $(PLATIND)/descr/$(PLATFORM))
|
$(call installto, $(PLATIND)/descr/$(PLATFORM))
|
||||||
|
|
||||||
|
$(foreach f, $(platform-headers), $(call build-platform-headers, $f))
|
||||||
|
|
||||||
$(eval PLATFORM_$(PLATFORM) := \
|
$(eval PLATFORM_$(PLATFORM) := \
|
||||||
$(PLATIND)/descr/$(PLATFORM) \
|
$(PLATIND)/descr/$(PLATFORM) \
|
||||||
$(PLATFORM_HEADERS_$(PLATFORM)) \
|
$(PLATFORM_HEADERS_$(PLATFORM)) \
|
||||||
|
@ -18,8 +20,6 @@ define build-platform-impl
|
||||||
$(PLATDEP)/$(PLATFORM)/ncg \
|
$(PLATDEP)/$(PLATFORM)/ncg \
|
||||||
$(ARCHITECTURE_$(ARCH)))
|
$(ARCHITECTURE_$(ARCH)))
|
||||||
|
|
||||||
$(foreach f, $(platform-headers), $(call build-platform-headers, $f))
|
|
||||||
|
|
||||||
# libsys
|
# libsys
|
||||||
|
|
||||||
$(call reset)
|
$(call reset)
|
||||||
|
|
|
@ -14,6 +14,7 @@ define build-aal-impl
|
||||||
$(call cprogram, $(BINDIR)/aal)
|
$(call cprogram, $(BINDIR)/aal)
|
||||||
$(call installto, $(INSDIR)/bin/aal)
|
$(call installto, $(INSDIR)/bin/aal)
|
||||||
$(eval AAL := $o)
|
$(eval AAL := $o)
|
||||||
|
$(eval ACK_CORE_TOOLS += $o)
|
||||||
|
|
||||||
$(call reset)
|
$(call reset)
|
||||||
$(eval q := $D/aal.1)
|
$(eval q := $D/aal.1)
|
||||||
|
|
|
@ -24,6 +24,7 @@ define build-misc-impl
|
||||||
$(call cprogram, $(BINDIR)/em_encode)
|
$(call cprogram, $(BINDIR)/em_encode)
|
||||||
$(call installto, $(PLATDEP)/em_encode)
|
$(call installto, $(PLATDEP)/em_encode)
|
||||||
$(eval EM_ENCODE := $o)
|
$(eval EM_ENCODE := $o)
|
||||||
|
$(eval ACK_CORE_TOOLS += $o)
|
||||||
|
|
||||||
$(call reset)
|
$(call reset)
|
||||||
$(eval objdir := decode)
|
$(eval objdir := decode)
|
||||||
|
|
|
@ -67,6 +67,7 @@ $(eval $q: $(INCDIR)/em_spec.h)
|
||||||
$(call cprogram, $(BINDIR)/em_opt)
|
$(call cprogram, $(BINDIR)/em_opt)
|
||||||
$(call installto, $(PLATDEP)/em_opt)
|
$(call installto, $(PLATDEP)/em_opt)
|
||||||
$(eval EM_OPT := $o)
|
$(eval EM_OPT := $o)
|
||||||
|
$(eval ACK_CORE_TOOLS += $o)
|
||||||
|
|
||||||
$(call reset)
|
$(call reset)
|
||||||
$(eval q := $D/em_opt.6)
|
$(eval q := $D/em_opt.6)
|
||||||
|
|
Loading…
Reference in a new issue