Simple Vector Library 1.5 http://www.cs.cmu.edu/~ajw/doc/svl.html

Committer:
BartJanssens
Date:
Tue Jan 05 13:37:50 2016 +0000
Revision:
1:e25ff4b06ed2
Parent:
0:785cff1e5a7c
fixed va_list bug

Who changed what in which revision?

UserRevisionLine numberNew contents of line
BartJanssens 0:785cff1e5a7c 1 /*
BartJanssens 0:785cff1e5a7c 2 File: Utils.h
BartJanssens 0:785cff1e5a7c 3
BartJanssens 0:785cff1e5a7c 4 Function: Various math definitions for VL
BartJanssens 0:785cff1e5a7c 5
BartJanssens 0:785cff1e5a7c 6 Author(s): Andrew Willmott
BartJanssens 0:785cff1e5a7c 7
BartJanssens 0:785cff1e5a7c 8 Copyright: (c) 1995-2001, Andrew Willmott
BartJanssens 0:785cff1e5a7c 9 */
BartJanssens 0:785cff1e5a7c 10
BartJanssens 0:785cff1e5a7c 11 #ifndef __VL_MATH__
BartJanssens 0:785cff1e5a7c 12 #define __VL_MATH__
BartJanssens 0:785cff1e5a7c 13
BartJanssens 0:785cff1e5a7c 14 //#include <cstdlib>
BartJanssens 0:785cff1e5a7c 15
BartJanssens 0:785cff1e5a7c 16 // --- Inlines ----------------------------------------------------------------
BartJanssens 0:785cff1e5a7c 17
BartJanssens 0:785cff1e5a7c 18 // additions to arithmetic functions
BartJanssens 0:785cff1e5a7c 19
BartJanssens 0:785cff1e5a7c 20 #ifdef VL_HAS_IEEEFP
BartJanssens 0:785cff1e5a7c 21 #include <ieeefp.h>
BartJanssens 0:785cff1e5a7c 22 #define vl_is_finite(X) finite(X)
BartJanssens 0:785cff1e5a7c 23 #elif defined (__GNUC__) && defined(__USE_MISC)
BartJanssens 0:785cff1e5a7c 24 #define vl_is_finite(X) finite(X)
BartJanssens 0:785cff1e5a7c 25 #else
BartJanssens 0:785cff1e5a7c 26 #define vl_is_finite(X) (1)
BartJanssens 0:785cff1e5a7c 27 #endif
BartJanssens 0:785cff1e5a7c 28
BartJanssens 0:785cff1e5a7c 29 #ifdef VL_HAS_DRAND
BartJanssens 0:785cff1e5a7c 30 inline Double vl_rand()
BartJanssens 0:785cff1e5a7c 31 { return(drand48()); }
BartJanssens 0:785cff1e5a7c 32 #else
BartJanssens 0:785cff1e5a7c 33 #ifndef RAND_MAX
BartJanssens 0:785cff1e5a7c 34 // we're on something totally sucky, like SunOS
BartJanssens 0:785cff1e5a7c 35 #define RAND_MAX (Double(1 << 30) * 4.0 - 1.0)
BartJanssens 0:785cff1e5a7c 36 #endif
BartJanssens 0:785cff1e5a7c 37 inline Double vl_rand()
BartJanssens 0:785cff1e5a7c 38 { return(rand() / (RAND_MAX + 1.0)); }
BartJanssens 0:785cff1e5a7c 39 #endif
BartJanssens 0:785cff1e5a7c 40
BartJanssens 0:785cff1e5a7c 41 #ifndef __CMATH__
BartJanssens 0:785cff1e5a7c 42 // GNU's complex.h defines its own abs(double)
BartJanssens 0:785cff1e5a7c 43 #ifdef VL_HAS_ABSF
BartJanssens 0:785cff1e5a7c 44 inline Float abs(Float x)
BartJanssens 0:785cff1e5a7c 45 { return (fabsf(x)); }
BartJanssens 0:785cff1e5a7c 46 #endif
BartJanssens 0:785cff1e5a7c 47 // jmc ......... 7/19
BartJanssens 0:785cff1e5a7c 48 //inline Double abs(Double x)
BartJanssens 0:785cff1e5a7c 49 //{ return (fabs(x)); }
BartJanssens 0:785cff1e5a7c 50 #endif
BartJanssens 0:785cff1e5a7c 51 #ifdef VL_HAS_ABSF
BartJanssens 0:785cff1e5a7c 52 inline Float len(Float x)
BartJanssens 0:785cff1e5a7c 53 { return (fabsf(x)); }
BartJanssens 0:785cff1e5a7c 54 #endif
BartJanssens 0:785cff1e5a7c 55 inline Double len(Double x)
BartJanssens 0:785cff1e5a7c 56 { return (fabs(x)); }
BartJanssens 0:785cff1e5a7c 57
BartJanssens 0:785cff1e5a7c 58 inline Float sqrlen(Float r)
BartJanssens 0:785cff1e5a7c 59 { return(sqr(r)); }
BartJanssens 0:785cff1e5a7c 60 inline Double sqrlen(Double r)
BartJanssens 0:785cff1e5a7c 61 { return(sqr(r)); }
BartJanssens 0:785cff1e5a7c 62
BartJanssens 0:785cff1e5a7c 63 inline Float mix(Float a, Float b, Float s)
BartJanssens 0:785cff1e5a7c 64 { return((1.0f - s) * a + s * b); }
BartJanssens 0:785cff1e5a7c 65 inline Double mix(Double a, Double b, Double s)
BartJanssens 0:785cff1e5a7c 66 { return((1.0 - s) * a + s * b); }
BartJanssens 0:785cff1e5a7c 67
BartJanssens 0:785cff1e5a7c 68 inline Double sign(Double d)
BartJanssens 0:785cff1e5a7c 69 {
BartJanssens 0:785cff1e5a7c 70 if (d < 0)
BartJanssens 0:785cff1e5a7c 71 return(-1.0);
BartJanssens 0:785cff1e5a7c 72 else
BartJanssens 0:785cff1e5a7c 73 return(1.0);
BartJanssens 0:785cff1e5a7c 74 }
BartJanssens 0:785cff1e5a7c 75
BartJanssens 0:785cff1e5a7c 76 // useful routines
BartJanssens 0:785cff1e5a7c 77
BartJanssens 0:785cff1e5a7c 78 inline Bool IsPowerOfTwo(Int a)
BartJanssens 0:785cff1e5a7c 79 { return((a & -a) == a); };
BartJanssens 0:785cff1e5a7c 80
BartJanssens 0:785cff1e5a7c 81 inline Void SetReal(Float &a, Double b)
BartJanssens 0:785cff1e5a7c 82 { a = Float(b); }
BartJanssens 0:785cff1e5a7c 83 inline Void SetReal(Double &a, Double b)
BartJanssens 0:785cff1e5a7c 84 { a = b; }
BartJanssens 0:785cff1e5a7c 85
BartJanssens 0:785cff1e5a7c 86 #endif