BSD 4_3_Tahoe development
authorCSRG <csrg@ucbvax.Berkeley.EDU>
Thu, 14 Jul 1988 15:31:53 +0000 (07:31 -0800)
committerCSRG <csrg@ucbvax.Berkeley.EDU>
Thu, 14 Jul 1988 15:31:53 +0000 (07:31 -0800)
Work on file usr/lib/lib.b
Work on file usr/man/cat.old/compact.0
Work on file usr/man/cat.old/ccat.0
Work on file usr/man/cat.old/uncompact.0

Synthesized-from: CSRG/cd2/4.3tahoe

usr/lib/lib.b [new file with mode: 0755]
usr/man/cat.old/ccat.0 [new file with mode: 0755]
usr/man/cat.old/compact.0 [new file with mode: 0755]
usr/man/cat.old/uncompact.0 [new file with mode: 0755]

diff --git a/usr/lib/lib.b b/usr/lib/lib.b
new file mode 100755 (executable)
index 0000000..b09d381
--- /dev/null
@@ -0,0 +1,196 @@
+/*     lib.b   4.3     87/09/14        */
+
+scale = 20
+define e(x){
+       auto a, b, c, d, e, g, t, w, y
+
+       t = scale
+       scale = t + .434*x + 1
+
+       w = 0
+       if(x<0){
+               x = -x
+               w = 1
+       }
+       y = 0
+       while(x>2){
+               x = x/2
+               y = y + 1
+       }
+
+       a=1
+       b=1
+       c=b
+       d=1
+       e=1
+       for(a=1;1==1;a++){
+               b=b*x
+               c=c*a+b
+               d=d*a
+               g = c/d
+               if(g == e){
+                       g = g/1
+                       while(y--){
+                               g = g*g
+                       }
+                       scale = t
+                       if(w==1) return(1/g)
+                       return(g/1)
+               }
+               e=g
+       }
+}
+
+define l(x){
+       auto a, b, c, d, e, f, g, u, s, t
+       if(x <=0) return(1-10^scale)
+       t = scale
+
+       f=1
+       scale = scale + scale(x) - length(x) + 1
+       s=scale
+       while(x > 2){
+               s = s + (length(x)-scale(x))/2 + 1
+               if(s>0) scale = s
+               x = sqrt(x)
+               f=f*2
+       }
+       while(x < .5){
+               s = s + (length(x)-scale(x))/2 + 1
+               if(s>0) scale = s
+               x = sqrt(x)
+               f=f*2
+       }
+
+       scale = t + length(f) - scale(f) + 1
+       u = (x-1)/(x+1)
+
+       scale = 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==1;a=a+2){
+               b=b*s
+               c=c*a+d*b
+               d=d*a
+               g=c/d
+               if(g==e){
+                       scale = t
+                       return(u*c/d)
+               }
+               e=g
+       }
+}
+
+define s(x){
+       auto a, b, c, s, t, y, p, n, i
+       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 = 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==1; i=i+2){
+               a = a*y
+               b = b*i*(i-1)
+               c = a/b
+               if(c==0){scale=t; return(s/1)}
+               s = s+c
+       }
+}
+
+define c(x){
+       auto t
+       t = scale
+       scale = scale+1
+       x = s(x+2*a(1))
+       scale = t
+       return(x/1)
+}
+
+define a(x){
+       auto a, b, c, d, e, f, g, s, t
+       if(x==0) return(0)
+       if(x==1) {
+               if(scale<52) {
+return(.7853981633974483096156608458198757210492923498437764/1)
+               }
+       }
+       t = scale
+       f=1
+       while(x > .5){
+               scale = scale + 1
+               x= -(1-sqrt(1.+x*x))/x
+               f=f*2
+       }
+       while(x < -.5){
+               scale = scale + 1
+               x = -(1-sqrt(1.+x*x))/x
+               f=f*2
+       }
+       s = -x*x
+       b = f
+       c = f
+       d = 1
+       e = 1
+       for(a=3;1==1;a=a+2){
+               b=b*s
+               c=c*a+d*b
+               d=d*a
+               g=c/d
+               if(g==e){
+                       scale = t
+                       return(x*c/d)
+               }
+               e=g
+       }
+}
+
+define j(n,x){
+auto a,b,c,d,e,g,i,s,k,t
+
+       t = scale
+       k = 1.36*x + 1.16*t - n
+       k = length(k) - scale(k)
+       if(k>0) scale = scale + k
+
+s= -x*x/4
+if(n<0){
+       n= -n
+       x= -x
+       }
+a=1
+c=1
+for(i=1;i<=n;i++){
+       a=a*x
+       c = c*2*i
+       }
+b=a
+d=1
+e=1
+for(i=1;1;i++){
+       a=a*s
+       b=b*i*(n+i) + a
+       c=c*i*(n+i)
+       g=b/c
+       if(g==e){
+               scale = t
+               return(g/1)
+               }
+       e=g
+       }
+}
diff --git a/usr/man/cat.old/ccat.0 b/usr/man/cat.old/ccat.0
new file mode 100755 (executable)
index 0000000..22ce39d
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+COMPACT(1)         UNIX Programmer's Manual           COMPACT(1)
+
+
+
+NAME
+     compact, uncompact, ccat - compress and uncompress files,
+     and cat them
+
+SYNOPSIS
+     compact [ -v ] [ name ... ]
+     uncompact [ -v ] [ name ...  ]
+     ccat [ -v ] [ file ... ]
+
+DESCRIPTION
+     _\bC_\bo_\bm_\bp_\ba_\bc_\bt compresses the named files using an adaptive Huffman
+     code.  If no file names are given, the standard input is
+     compacted to the standard output. _\bC_\bo_\bm_\bp_\ba_\bc_\bt operates as an
+     on-line algorithm.  Each time a byte is read, it is encoded
+     immediately according to the current prefix code. This code
+     is an optimal Huffman code for the set of frequencies seen
+     so far.  It is unnecessary to prepend a decoding tree to the
+     compressed file since the encoder and the decoder start in
+     the same state and stay synchronized.  Furthermore, _\bc_\bo_\bm_\bp_\ba_\bc_\bt
+     and _\bu_\bn_\bc_\bo_\bm_\bp_\ba_\bc_\bt can operate as filters.  In particular,
+
+         ... | compact | uncompact | ...
+
+     operates as a (very slow) no-op.
+
+     When an argument _\bf_\bi_\bl_\be is given, it is compacted and the
+     resulting file is placed in _\bf_\bi_\bl_\be._\bC; _\bf_\bi_\bl_\be is unlinked.  The
+     first two bytes of the compacted file code the fact that the
+     file is compacted.  This code is used to prohibit recompac-
+     tion.
+
+     The amount of compression to be expected depends on the type
+     of file being compressed. Typical values of compression
+     are: Text (38%), Pascal Source (43%), C Source (36%) and
+     Binary (19%).  These values are the percentages of file
+     bytes reduced.
+
+     _\bU_\bn_\bc_\bo_\bm_\bp_\ba_\bc_\bt restores the original file from a file compressed
+     by _\bc_\bo_\bm_\bp_\ba_\bc_\bt. If no file names are given, the standard input
+     is uncompacted to the standard output.
+
+     _\bC_\bc_\ba_\bt cats the original file from a file compressed by _\bc_\bo_\bm_\b-
+     _\bp_\ba_\bc_\bt, without uncompressing the file (it is just a shell
+     script which directs the uncompacted output to the standard
+     output).
+
+     _\bC_\bo_\bm_\bp_\ba_\bc_\bt, _\bu_\bn_\bc_\bo_\bm_\bp_\ba_\bc_\bt, and _\bc_\bc_\ba_\bt normally do their work
+     silently. If a -v flag is supplied, _\bc_\bo_\bm_\bp_\ba_\bc_\bt will report the
+     compression percentage for each compacted file while _\bu_\bn_\bc_\bo_\bm_\b-
+     _\bp_\ba_\bc_\bt and _\bc_\bc_\ba_\bt will print out the name of each file as
+     they're uncompacted.
+
+
+
+
+Printed 12/6/87          April 29, 1985                         1
+
+
+
+
+
+
+COMPACT(1)         UNIX Programmer's Manual           COMPACT(1)
+
+
+
+RESTRICTION
+     The last segment of the filename must be short enough to
+     allow space for the appended '.C'.
+
+FILES
+     *.C       compacted file created by compact, removed by
+     uncompact
+
+SEE ALSO
+     Gallager, Robert G., `Variations on a Theme of Huffman',
+     _\bI._\bE._\bE._\bE.  _\bT_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\bs _\bo_\bn _\bI_\bn_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn _\bT_\bh_\be_\bo_\br_\by, vol. IT-24,
+     no. 6, November 1978, pp. 668 - 674.
+
+AUTHOR
+     Colin L. Mc Master
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Printed 12/6/87          April 29, 1985                         2
+
+
+
diff --git a/usr/man/cat.old/compact.0 b/usr/man/cat.old/compact.0
new file mode 100755 (executable)
index 0000000..22ce39d
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+COMPACT(1)         UNIX Programmer's Manual           COMPACT(1)
+
+
+
+NAME
+     compact, uncompact, ccat - compress and uncompress files,
+     and cat them
+
+SYNOPSIS
+     compact [ -v ] [ name ... ]
+     uncompact [ -v ] [ name ...  ]
+     ccat [ -v ] [ file ... ]
+
+DESCRIPTION
+     _\bC_\bo_\bm_\bp_\ba_\bc_\bt compresses the named files using an adaptive Huffman
+     code.  If no file names are given, the standard input is
+     compacted to the standard output. _\bC_\bo_\bm_\bp_\ba_\bc_\bt operates as an
+     on-line algorithm.  Each time a byte is read, it is encoded
+     immediately according to the current prefix code. This code
+     is an optimal Huffman code for the set of frequencies seen
+     so far.  It is unnecessary to prepend a decoding tree to the
+     compressed file since the encoder and the decoder start in
+     the same state and stay synchronized.  Furthermore, _\bc_\bo_\bm_\bp_\ba_\bc_\bt
+     and _\bu_\bn_\bc_\bo_\bm_\bp_\ba_\bc_\bt can operate as filters.  In particular,
+
+         ... | compact | uncompact | ...
+
+     operates as a (very slow) no-op.
+
+     When an argument _\bf_\bi_\bl_\be is given, it is compacted and the
+     resulting file is placed in _\bf_\bi_\bl_\be._\bC; _\bf_\bi_\bl_\be is unlinked.  The
+     first two bytes of the compacted file code the fact that the
+     file is compacted.  This code is used to prohibit recompac-
+     tion.
+
+     The amount of compression to be expected depends on the type
+     of file being compressed. Typical values of compression
+     are: Text (38%), Pascal Source (43%), C Source (36%) and
+     Binary (19%).  These values are the percentages of file
+     bytes reduced.
+
+     _\bU_\bn_\bc_\bo_\bm_\bp_\ba_\bc_\bt restores the original file from a file compressed
+     by _\bc_\bo_\bm_\bp_\ba_\bc_\bt. If no file names are given, the standard input
+     is uncompacted to the standard output.
+
+     _\bC_\bc_\ba_\bt cats the original file from a file compressed by _\bc_\bo_\bm_\b-
+     _\bp_\ba_\bc_\bt, without uncompressing the file (it is just a shell
+     script which directs the uncompacted output to the standard
+     output).
+
+     _\bC_\bo_\bm_\bp_\ba_\bc_\bt, _\bu_\bn_\bc_\bo_\bm_\bp_\ba_\bc_\bt, and _\bc_\bc_\ba_\bt normally do their work
+     silently. If a -v flag is supplied, _\bc_\bo_\bm_\bp_\ba_\bc_\bt will report the
+     compression percentage for each compacted file while _\bu_\bn_\bc_\bo_\bm_\b-
+     _\bp_\ba_\bc_\bt and _\bc_\bc_\ba_\bt will print out the name of each file as
+     they're uncompacted.
+
+
+
+
+Printed 12/6/87          April 29, 1985                         1
+
+
+
+
+
+
+COMPACT(1)         UNIX Programmer's Manual           COMPACT(1)
+
+
+
+RESTRICTION
+     The last segment of the filename must be short enough to
+     allow space for the appended '.C'.
+
+FILES
+     *.C       compacted file created by compact, removed by
+     uncompact
+
+SEE ALSO
+     Gallager, Robert G., `Variations on a Theme of Huffman',
+     _\bI._\bE._\bE._\bE.  _\bT_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\bs _\bo_\bn _\bI_\bn_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn _\bT_\bh_\be_\bo_\br_\by, vol. IT-24,
+     no. 6, November 1978, pp. 668 - 674.
+
+AUTHOR
+     Colin L. Mc Master
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Printed 12/6/87          April 29, 1985                         2
+
+
+
diff --git a/usr/man/cat.old/uncompact.0 b/usr/man/cat.old/uncompact.0
new file mode 100755 (executable)
index 0000000..22ce39d
--- /dev/null
@@ -0,0 +1,132 @@
+
+
+
+COMPACT(1)         UNIX Programmer's Manual           COMPACT(1)
+
+
+
+NAME
+     compact, uncompact, ccat - compress and uncompress files,
+     and cat them
+
+SYNOPSIS
+     compact [ -v ] [ name ... ]
+     uncompact [ -v ] [ name ...  ]
+     ccat [ -v ] [ file ... ]
+
+DESCRIPTION
+     _\bC_\bo_\bm_\bp_\ba_\bc_\bt compresses the named files using an adaptive Huffman
+     code.  If no file names are given, the standard input is
+     compacted to the standard output. _\bC_\bo_\bm_\bp_\ba_\bc_\bt operates as an
+     on-line algorithm.  Each time a byte is read, it is encoded
+     immediately according to the current prefix code. This code
+     is an optimal Huffman code for the set of frequencies seen
+     so far.  It is unnecessary to prepend a decoding tree to the
+     compressed file since the encoder and the decoder start in
+     the same state and stay synchronized.  Furthermore, _\bc_\bo_\bm_\bp_\ba_\bc_\bt
+     and _\bu_\bn_\bc_\bo_\bm_\bp_\ba_\bc_\bt can operate as filters.  In particular,
+
+         ... | compact | uncompact | ...
+
+     operates as a (very slow) no-op.
+
+     When an argument _\bf_\bi_\bl_\be is given, it is compacted and the
+     resulting file is placed in _\bf_\bi_\bl_\be._\bC; _\bf_\bi_\bl_\be is unlinked.  The
+     first two bytes of the compacted file code the fact that the
+     file is compacted.  This code is used to prohibit recompac-
+     tion.
+
+     The amount of compression to be expected depends on the type
+     of file being compressed. Typical values of compression
+     are: Text (38%), Pascal Source (43%), C Source (36%) and
+     Binary (19%).  These values are the percentages of file
+     bytes reduced.
+
+     _\bU_\bn_\bc_\bo_\bm_\bp_\ba_\bc_\bt restores the original file from a file compressed
+     by _\bc_\bo_\bm_\bp_\ba_\bc_\bt. If no file names are given, the standard input
+     is uncompacted to the standard output.
+
+     _\bC_\bc_\ba_\bt cats the original file from a file compressed by _\bc_\bo_\bm_\b-
+     _\bp_\ba_\bc_\bt, without uncompressing the file (it is just a shell
+     script which directs the uncompacted output to the standard
+     output).
+
+     _\bC_\bo_\bm_\bp_\ba_\bc_\bt, _\bu_\bn_\bc_\bo_\bm_\bp_\ba_\bc_\bt, and _\bc_\bc_\ba_\bt normally do their work
+     silently. If a -v flag is supplied, _\bc_\bo_\bm_\bp_\ba_\bc_\bt will report the
+     compression percentage for each compacted file while _\bu_\bn_\bc_\bo_\bm_\b-
+     _\bp_\ba_\bc_\bt and _\bc_\bc_\ba_\bt will print out the name of each file as
+     they're uncompacted.
+
+
+
+
+Printed 12/6/87          April 29, 1985                         1
+
+
+
+
+
+
+COMPACT(1)         UNIX Programmer's Manual           COMPACT(1)
+
+
+
+RESTRICTION
+     The last segment of the filename must be short enough to
+     allow space for the appended '.C'.
+
+FILES
+     *.C       compacted file created by compact, removed by
+     uncompact
+
+SEE ALSO
+     Gallager, Robert G., `Variations on a Theme of Huffman',
+     _\bI._\bE._\bE._\bE.  _\bT_\br_\ba_\bn_\bs_\ba_\bc_\bt_\bi_\bo_\bn_\bs _\bo_\bn _\bI_\bn_\bf_\bo_\br_\bm_\ba_\bt_\bi_\bo_\bn _\bT_\bh_\be_\bo_\br_\by, vol. IT-24,
+     no. 6, November 1978, pp. 668 - 674.
+
+AUTHOR
+     Colin L. Mc Master
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Printed 12/6/87          April 29, 1985                         2
+
+
+