ref: 689ec946d8650d617f72359e2c997ce2dfa61d3f
parent: bcd381bf900bf7fd5e834a2df777e8e24597d743
author: Jeff Bezanson <bezanson@post.harvard.edu>
date: Fri Feb 17 14:08:50 EST 2012
removing some unused stuff
--- a/llt/Makefile
+++ b/llt/Makefile
@@ -2,7 +2,7 @@
SRCS = bitvector.c hashing.c socket.c timefuncs.c dblprint.c ptrhash.c \
utf8.c ios.c operators.c cplxprint.c dirpath.c htable.c \
- bitvector-ops.c fp.c int2str.c dump.c random.c bswap.c memalign.c \
+ bitvector-ops.c int2str.c dump.c random.c bswap.c memalign.c \
swapreverse.c lltinit.c arraylist.c
OBJS = $(SRCS:%.c=%.o)
DOBJS = $(SRCS:%.c=%.do)
--- a/llt/fp.c
+++ /dev/null
@@ -1,91 +1,0 @@
-#include <math.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-#include "ieee754.h"
-#include "dtypes.h"
-#include "hashing.h"
-
-static uint64_t max_ulps;
-static uint32_t flt_max_ulps;
-
-static uint64_t nexti64pow2(uint64_t i)
-{
- if (i==0) return 1;
- if ((i&(i-1))==0) return i;
- if (i&BIT63) return BIT63;
- // repeatedly clear bottom bit
- while (i&(i-1))
- i = i&(i-1);
- return i<<1;
-}
-
-static uint32_t nexti32pow2(uint32_t i)
-{
- if (i==0) return 1;
- if ((i&(i-1))==0) return i;
- if (i&BIT31) return BIT31;
- // repeatedly clear bottom bit
- while (i&(i-1))
- i = i&(i-1);
- return i<<1;
-}
-
-void dbl_tolerance(double tol)
-{
- max_ulps = nexti64pow2((uint64_t)(tol/DBL_EPSILON));
-}
-
-void flt_tolerance(float tol)
-{
- flt_max_ulps = nexti32pow2((uint32_t)(tol/FLT_EPSILON));
-}
-
-#ifdef __INTEL_COMPILER
-static inline int64_t llabs(int64_t j)
-{
- return NBABS(j, 64);
-}
-#else
-#endif
-
-int dbl_equals(double a, double b)
-{
- union { double d; int64_t i; } ua;
- union { double d; int64_t i; } ub;
- int64_t aint, bint;
-
- if (a == b)
- return 1;
- ua.d = a; aint = ua.i;
- ub.d = b; bint = ub.i;
- if (aint < 0)
- aint = BIT63 - aint;
- if (bint < 0)
- bint = BIT63 - bint;
- /* you'd think it makes no difference whether the result of llabs is
- signed or unsigned, but if it's signed then the case of
- 0x8000000000000000 blows up, making 4 == -1 :) */
- if ((uint64_t)llabs(aint-bint) <= max_ulps)
- return 1;
- return 0;
-}
-
-int flt_equals(float a, float b)
-{
- union { float f; int32_t i; } ua;
- union { float f; int32_t i; } ub;
- int32_t aint, bint;
-
- if (a == b)
- return 1;
- ua.f = a; aint = ua.i;
- ub.f = b; bint = ub.i;
- if (aint < 0)
- aint = BIT31 - aint;
- if (bint < 0)
- bint = BIT31 - bint;
- if ((uint32_t)abs(aint-bint) <= flt_max_ulps)
- return 1;
- return 0;
-}
--- a/llt/notes
+++ /dev/null
@@ -1,44 +1,0 @@
-my c library (jlibc)
-------------
-
-* bytevector utilities: memswap, memreverse, swap_el, etc.
-* hashing, random#s: int32hash, int64hash, int64to32hash, lookup3, ptrhash
-* utf8
-* bitvector
-- iostream, socket, asynch io
-- cross-platform pathnames, cwd, exename, date/time, etc.
-* floating point number utils: comparison, print_real, print_cplx
-- strtab (with prefix searching)
-
-(- pool allocator with hooks for gc (sweep function))
-(- list (dequeue))
-(- sort: msort list, qsort numbers) not too important since stdlib has qsort
-
-- use non-allocating APIs. this means the interface never allocates or
- frees memory for you. you have to manage space for objects yourself.
-
-- separate math library. includes numal, cephes, my complex number routines,
- more special functions
-
-
-stream redesign:
-
-memstream, single-descriptor-backed, pipe (read/write on separate descriptors)
-
-do our own buffering, so we can implement getline without seek/skip
-
-all provided functions must be in terms of read,write,poll,flush only
-seek/skip will be available, but only works on files and strings
-change semantics of bit i/o so it doesn't require skip(-1)
-
-compare our implementation to somebody else's fread,fwrite,etc.
-
-
-cool trick for faking string streams with stdio:
-
- char buf[256];
- v = list2(number(6), number(4));
- FILE *f = fopen("/dev/null", "a");
- setbuffer(f, buf, sizeof(buf));
- print(f, v, 0);
- printf("got '%s'\n", buf);
--- a/llt/pshash.c
+++ /dev/null
@@ -1,58 +1,0 @@
-// by Paul Hsieh
-//#include "pstdint.h" /* Replace with <stdint.h> if appropriate */
-#include <stdint.h>
-#undef get16bits
-#if (defined(__GNUC__) && defined(__i386__)) || defined(__WATCOMC__) \
- || defined(_MSC_VER) || defined (__BORLANDC__) || defined (__TURBOC__)
-#define get16bits(d) (*((const uint16_t *) (d)))
-#endif
-
-#if !defined (get16bits)
-#define get16bits(d) ((((uint32_t)(((const uint8_t *)(d))[1])) << 8)\
- +(uint32_t)(((const uint8_t *)(d))[0]) )
-#endif
-
-uint32_t SuperFastHash (const char * data, int len) {
-uint32_t hash = len, tmp;
-int rem;
-
- if (len <= 0 || data == NULL) return 0;
-
- rem = len & 3;
- len >>= 2;
-
- /* Main loop */
- for (;len > 0; len--) {
- hash += get16bits (data);
- tmp = (get16bits (data+2) << 11) ^ hash;
- hash = (hash << 16) ^ tmp;
- data += 2*sizeof (uint16_t);
- hash += hash >> 11;
- }
-
- /* Handle end cases */
- switch (rem) {
- case 3: hash += get16bits (data);
- hash ^= hash << 16;
- hash ^= data[sizeof (uint16_t)] << 18;
- hash += hash >> 11;
- break;
- case 2: hash += get16bits (data);
- hash ^= hash << 11;
- hash += hash >> 17;
- break;
- case 1: hash += *data;
- hash ^= hash << 10;
- hash += hash >> 1;
- }
-
- /* Force "avalanching" of final 127 bits */
- hash ^= hash << 3;
- hash += hash >> 5;
- hash ^= hash << 4;
- hash += hash >> 17;
- hash ^= hash << 25;
- hash += hash >> 6;
-
- return hash;
-}
--- a/llt/unittest.c
+++ b/llt/unittest.c
@@ -68,8 +68,6 @@
{
char str[64];
- dbl_tolerance(1e-12);
-
prettycplx(0,0);
prettycplx(1,0);
prettycplx(0,1);
--- a/llt/utils.h
+++ b/llt/utils.h
@@ -21,10 +21,6 @@
void *realloc_aligned(void *ptr, size_t size, size_t align_size);
/* ------------------------------------------------------------- */
-int dbl_equals(double a, double b);
-int flt_equals(float a, float b);
-void dbl_tolerance(double tol);
-void flt_tolerance(float tol);
int double_exponent(double d);
double double_mantissa(double d);
int float_exponent(float f);