Introduction
Introduction Statistics Contact Development Disclaimer Help
add bclib from plan 9 sources - 9base - revived minimalist port of Plan 9 userl…
git clone git://git.suckless.org/9base
Log
Files
Refs
README
LICENSE
---
commit 5673fdd72fae4823ba67e2c216bbfd724bc9e01c
parent c074f6d0c7ad9ee13cfa65900e1789cfe4eb693c
Author: Evan Gates <[email protected]>
Date: Wed, 17 Aug 2016 11:45:57 -0700
add bclib from plan 9 sources
add post-install and pre-uninstall targets to tools using yacc.mk
mirroring those in std.mk in order to install and uninstall bclib
Diffstat:
M awk/Makefile | 4 ++++
M bc/Makefile | 7 +++++++
A bc/bclib | 246 +++++++++++++++++++++++++++++…
M grep/Makefile | 4 ++++
M hoc/Makefile | 4 ++++
M yacc.mk | 6 ++++--
6 files changed, 269 insertions(+), 2 deletions(-)
---
diff --git a/awk/Makefile b/awk/Makefile
@@ -7,3 +7,7 @@ YFILES = awkgram.y
MANFILES = awk.1
include ../yacc.mk
+
+pre-uninstall:
+
+post-install:
diff --git a/bc/Makefile b/bc/Makefile
@@ -10,3 +10,10 @@ include ../yacc.mk
# Solaris
#LDFLAGS += -dy -lxnet
+
+pre-uninstall:
+ rm -f ${DESTDIR}${PREFIX}/lib/bclib
+
+post-install:
+ @mkdir -p ${DESTDIR}${PREFIX}/lib
+ @cp bclib ${DESTDIR}${PREFIX}/lib/
diff --git a/bc/bclib b/bc/bclib
@@ -0,0 +1,246 @@
+scale = 50
+define e(x) {
+ auto a, b, c, d, e, g, w, y, t, r
+
+ r = ibase
+ ibase = A
+
+ t = scale
+ scale = t + .434*x + 1
+
+ w = 0
+ if(x<0) {
+ x = -x
+ w = 1
+ }
+ y = 0
+ while(x>2) {
+ x /= 2
+ y++
+ }
+
+ a = 1
+ b = 1
+ c = b
+ d = 1
+ e = 1
+ for(a=1; 1; a++) {
+ b *= x
+ c = c*a+b
+ d *= a
+ g = c/d
+ if(g == e) {
+ g = g/1
+ while(y--) {
+ g *= g
+ }
+ scale = t
+ if(w==1) {
+ ibase = r
+ return 1/g
+ }
+ ibase = r
+ return g/1
+ }
+ e = g
+ }
+}
+
+define l(x) {
+ auto a, b, c, d, e, f, g, u, s, t, r, z
+
+ r = ibase
+ ibase = A
+ if(x <= 0) {
+ z = 1-10^scale
+ ibase = r
+ return z
+ }
+ t = scale
+
+ f = 1
+ scale += scale(x) - length(x) + 1
+ s = scale
+ while(x > 2) {
+ s += (length(x)-scale(x))/2 + 1
+ if(s>0) {
+ scale = s
+ }
+ x = sqrt(x)
+ f *= 2
+ }
+ while(x < .5) {
+ s += (length(x)-scale(x))/2 + 1
+ if(s>0) {
+ scale = s
+ }
+ x = sqrt(x)
+ f *= 2
+ }
+
+ scale = t + length(f) - scale(f) + 1
+ u = (x-1)/(x+1)
+
+ scale += 1.1*length(t) - 1.1*scale(t)
+ s = u*u
+ b = 2*f
+ c = b
+ d = 1
+ e = 1
+ for(a=3; 1; a=a+2){
+ b *= s
+ c = c*a + d*b
+ d *= a
+ g = c/d
+ if(g==e) {
+ scale = t
+ ibase = r
+ return u*c/d
+ }
+ e = g
+ }
+}
+
+define s(x) {
+ auto a, b, c, s, t, y, p, n, i, r
+
+ r = ibase
+ ibase = A
+ t = scale
+ y = x/.7853
+ s = t + length(y) - scale(y)
+ if(s<t) {
+ s = t
+ }
+ scale = s
+ p = a(1)
+
+ scale = 0
+ if(x>=0) {
+ n = (x/(2*p)+1)/2
+ }
+ if(x<0) {
+ n = (x/(2*p)-1)/2
+ }
+ x -= 4*n*p
+ if(n%2 != 0) {
+ x = -x
+ }
+
+ scale = t + length(1.2*t) - scale(1.2*t)
+ y = -x*x
+ a = x
+ b = 1
+ s = x
+ for(i=3; 1; i+=2) {
+ a *= y
+ b *= i*(i-1)
+ c = a/b
+ if(c==0){
+ scale = t
+ ibase = r
+ return s/1
+ }
+ s += c
+ }
+}
+
+define c(x) {
+ auto t, r
+
+ r = ibase
+ ibase = A
+ t = scale
+ scale = scale+1
+ x = s(x + 2*a(1))
+ scale = t
+ ibase = r
+ return x/1
+}
+
+define a(x) {
+ auto a, b, c, d, e, f, g, s, t, r, z
+
+ r = ibase
+ ibase = A
+ if(x==0) {
+ return 0
+ }
+ if(x==1) {
+ z = .7853981633974483096156608458198757210492923498437764/1
+ ibase = r
+ if(scale<52) {
+ return z
+ }
+ }
+ t = scale
+ f = 1
+ while(x > .5) {
+ scale++
+ x = -(1 - sqrt(1.+x*x))/x
+ f *= 2
+ }
+ while(x < -.5) {
+ scale++
+ x = -(1 - sqrt(1.+x*x))/x
+ f *= 2
+ }
+ s = -x*x
+ b = f
+ c = f
+ d = 1
+ e = 1
+ for(a=3; 1; a+=2) {
+ b *= s
+ c = c*a + d*b
+ d *= a
+ g = c/d
+ if(g==e) {
+ scale = t
+ ibase = r
+ return x*c/d
+ }
+ e = g
+ }
+}
+
+define j(n,x) {
+ auto a,b,c,d,e,g,i,s,k,t,r
+
+ r = ibase
+ ibase = A
+
+ t = scale
+ k = 1.36*x + 1.16*t - n
+ k = length(k) - scale(k)
+ if(k>0) {
+ scale += k
+ }
+
+ s = -x*x/4
+ if(n<0) {
+ n = -n
+ x = -x
+ }
+ a = 1
+ c = 1
+ for(i=1; i<=n; i++) {
+ a *= x
+ c *= 2*i
+ }
+ b = a
+ d = 1
+ e = 1
+ for(i=1; 1; i++) {
+ a *= s
+ b = b*i*(n+i) + a
+ c *= i*(n+i)
+ g = b/c
+ if(g==e) {
+ scale = t
+ ibase = r
+ return g/1
+ }
+ e = g
+ }
+}
diff --git a/grep/Makefile b/grep/Makefile
@@ -7,3 +7,7 @@ YFILES = grep.y
MANFILES = grep.1
include ../yacc.mk
+
+pre-uninstall:
+
+post-install:
diff --git a/hoc/Makefile b/hoc/Makefile
@@ -7,3 +7,7 @@ YFILES = hoc.y
MANFILES = hoc.1
include ../yacc.mk
+
+pre-uninstall:
+
+post-install:
diff --git a/yacc.mk b/yacc.mk
@@ -14,7 +14,9 @@ depend:
@echo YACC ${YFILES}
@${YACC} -d ${YFILES}
-install: ${TARG}
+install: install-default post-install
+
+install-default: ${TARG}
@mkdir -p ${DESTDIR}${PREFIX}/bin
@cp -f ${TARG} ${DESTDIR}${PREFIX}/bin/
@chmod 755 ${DESTDIR}${PREFIX}/bin/${TARG}
@@ -22,7 +24,7 @@ install: ${TARG}
@cp -f ${MANFILES} ${DESTDIR}${MANPREFIX}/man1
@chmod 444 ${DESTDIR}${MANPREFIX}/man1/${MANFILES}
-uninstall:
+uninstall: pre-uninstall
rm -f ${DESTDIR}${PREFIX}/bin/${TARG}
rm -f ${DESTDIR}${MANPREFIX}/man1/${MANFILES}
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.