This is the Tiny Vector Matrix Expression Templates library found at http://tvmet.sourceforge.net. It is the fastest and most compact matrix lib out there (for < 10x10 matricies). I have done some minor tweaks to make it compile for mbed. For examples and hints on how to use, see: http://tvmet.sourceforge.net/usage.html

Dependents:   Eurobot_2012_Secondary

Committer:
madcowswe
Date:
Wed Mar 28 15:53:45 2012 +0000
Revision:
0:feb4117d16d8

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
madcowswe 0:feb4117d16d8 1 /*
madcowswe 0:feb4117d16d8 2 * Tiny Vector Matrix Library
madcowswe 0:feb4117d16d8 3 * Dense Vector Matrix Libary of Tiny size using Expression Templates
madcowswe 0:feb4117d16d8 4 *
madcowswe 0:feb4117d16d8 5 * Copyright (C) 2001 - 2003 Olaf Petzold <opetzold@users.sourceforge.net>
madcowswe 0:feb4117d16d8 6 *
madcowswe 0:feb4117d16d8 7 * This library is free software; you can redistribute it and/or
madcowswe 0:feb4117d16d8 8 * modify it under the terms of the GNU Lesser General Public
madcowswe 0:feb4117d16d8 9 * License as published by the Free Software Foundation; either
madcowswe 0:feb4117d16d8 10 * version 2.1 of the License, or (at your option) any later version.
madcowswe 0:feb4117d16d8 11 *
madcowswe 0:feb4117d16d8 12 * This library is distributed in the hope that it will be useful,
madcowswe 0:feb4117d16d8 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
madcowswe 0:feb4117d16d8 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
madcowswe 0:feb4117d16d8 15 * Lesser General Public License for more details.
madcowswe 0:feb4117d16d8 16 *
madcowswe 0:feb4117d16d8 17 * You should have received a copy of the GNU Lesser General Public
madcowswe 0:feb4117d16d8 18 * License along with this library; if not, write to the Free Software
madcowswe 0:feb4117d16d8 19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
madcowswe 0:feb4117d16d8 20 *
madcowswe 0:feb4117d16d8 21 * $Id: config-vc71.h.in,v 1.2 2004-11-04 16:47:12 opetzold Exp $
madcowswe 0:feb4117d16d8 22 */
madcowswe 0:feb4117d16d8 23
madcowswe 0:feb4117d16d8 24 #ifndef TVMET_CONFIG_VC71_H
madcowswe 0:feb4117d16d8 25 #define TVMET_CONFIG_VC71_H
madcowswe 0:feb4117d16d8 26
madcowswe 0:feb4117d16d8 27
madcowswe 0:feb4117d16d8 28 /*******************************************************************
madcowswe 0:feb4117d16d8 29 * equivalent hand made header to configure.ac's autoheader.
madcowswe 0:feb4117d16d8 30 ******************************************************************/
madcowswe 0:feb4117d16d8 31
madcowswe 0:feb4117d16d8 32
madcowswe 0:feb4117d16d8 33 /* define if the compiler has complex<T> */
madcowswe 0:feb4117d16d8 34 #ifndef TVMET_HAVE_COMPLEX
madcowswe 0:feb4117d16d8 35 #define TVMET_HAVE_COMPLEX 1
madcowswe 0:feb4117d16d8 36 #endif
madcowswe 0:feb4117d16d8 37
madcowswe 0:feb4117d16d8 38 /* define if the compiler has complex math functions */
madcowswe 0:feb4117d16d8 39 #ifndef TVMET_HAVE_COMPLEX_MATH1
madcowswe 0:feb4117d16d8 40 #define TVMET_HAVE_COMPLEX_MATH1 1
madcowswe 0:feb4117d16d8 41 #endif
madcowswe 0:feb4117d16d8 42
madcowswe 0:feb4117d16d8 43 /* define if the compiler has more complex math functions */
madcowswe 0:feb4117d16d8 44 /* #undef TVMET_HAVE_COMPLEX_MATH2 */
madcowswe 0:feb4117d16d8 45
madcowswe 0:feb4117d16d8 46 /* Define to 1 if you have the <dlfcn.h> header file. */
madcowswe 0:feb4117d16d8 47 #ifdef TVMET_HAVE_DLFCN_H
madcowswe 0:feb4117d16d8 48 #undef TVMET_HAVE_DLFCN_H
madcowswe 0:feb4117d16d8 49 #endif
madcowswe 0:feb4117d16d8 50
madcowswe 0:feb4117d16d8 51 /* Define to 1 if you have the `floor' function. */
madcowswe 0:feb4117d16d8 52 #ifndef TVMET_HAVE_FLOOR
madcowswe 0:feb4117d16d8 53 #define TVMET_HAVE_FLOOR 1
madcowswe 0:feb4117d16d8 54 #endif
madcowswe 0:feb4117d16d8 55
madcowswe 0:feb4117d16d8 56 /* Define if the compiler supports IEEE math library */
madcowswe 0:feb4117d16d8 57 #ifndef TVMET_HAVE_IEEE_MATH
madcowswe 0:feb4117d16d8 58 #define TVMET_HAVE_IEEE_MATH 1
madcowswe 0:feb4117d16d8 59 #endif
madcowswe 0:feb4117d16d8 60
madcowswe 0:feb4117d16d8 61 /* Define to 1 if you have the <inttypes.h> header file. */
madcowswe 0:feb4117d16d8 62 #ifdef TVMET_HAVE_INTTYPES_H
madcowswe 0:feb4117d16d8 63 #undef TVMET_HAVE_INTTYPES_H
madcowswe 0:feb4117d16d8 64 #endif
madcowswe 0:feb4117d16d8 65
madcowswe 0:feb4117d16d8 66 /* Define to 1 if you have the `dl' library (-ldl). */
madcowswe 0:feb4117d16d8 67 #ifdef TVMET_HAVE_LIBDL
madcowswe 0:feb4117d16d8 68 #undef TVMET_HAVE_LIBDL
madcowswe 0:feb4117d16d8 69 #endif
madcowswe 0:feb4117d16d8 70
madcowswe 0:feb4117d16d8 71 /* Define to 1 if long double works and has more range or precision than
madcowswe 0:feb4117d16d8 72 double. */
madcowswe 0:feb4117d16d8 73 #ifndef TVMET_HAVE_LONG_DOUBLE
madcowswe 0:feb4117d16d8 74 #define TVMET_HAVE_LONG_DOUBLE 1
madcowswe 0:feb4117d16d8 75 #endif
madcowswe 0:feb4117d16d8 76
madcowswe 0:feb4117d16d8 77 /* Define if the compiler supports the long_long type */
madcowswe 0:feb4117d16d8 78 // enable MS extension for long long
madcowswe 0:feb4117d16d8 79 #ifndef TVMET_HAVE_LONG_LONG
madcowswe 0:feb4117d16d8 80 #define TVMET_HAVE_LONG_LONG 1
madcowswe 0:feb4117d16d8 81 #endif
madcowswe 0:feb4117d16d8 82
madcowswe 0:feb4117d16d8 83 /* Define to 1 if you have the <memory.h> header file. */
madcowswe 0:feb4117d16d8 84 #ifndef TVMET_HAVE_MEMORY_H
madcowswe 0:feb4117d16d8 85 #define TVMET_HAVE_MEMORY_H 1
madcowswe 0:feb4117d16d8 86 #endif
madcowswe 0:feb4117d16d8 87
madcowswe 0:feb4117d16d8 88 /* Define if the compiler supports the mutable keyword */
madcowswe 0:feb4117d16d8 89 #ifndef TVMET_HAVE_MUTABLE
madcowswe 0:feb4117d16d8 90 #define TVMET_HAVE_MUTABLE 1
madcowswe 0:feb4117d16d8 91 #endif
madcowswe 0:feb4117d16d8 92
madcowswe 0:feb4117d16d8 93 /* Define if the compiler implements namespaces */
madcowswe 0:feb4117d16d8 94 #ifndef TVMET_HAVE_NAMESPACES
madcowswe 0:feb4117d16d8 95 #define TVMET_HAVE_NAMESPACES 1
madcowswe 0:feb4117d16d8 96 #endif
madcowswe 0:feb4117d16d8 97
madcowswe 0:feb4117d16d8 98 /* Define if the compiler supports partial specialization */
madcowswe 0:feb4117d16d8 99 #ifndef TVMET_HAVE_PARTIAL_SPECIALIZATION
madcowswe 0:feb4117d16d8 100 #define TVMET_HAVE_PARTIAL_SPECIALIZATION 1
madcowswe 0:feb4117d16d8 101 #endif
madcowswe 0:feb4117d16d8 102
madcowswe 0:feb4117d16d8 103 /* Define to 1 if you have the `pow' function. */
madcowswe 0:feb4117d16d8 104 #ifndef TVMET_HAVE_POW
madcowswe 0:feb4117d16d8 105 #define TVMET_HAVE_POW 1
madcowswe 0:feb4117d16d8 106 #endif
madcowswe 0:feb4117d16d8 107
madcowswe 0:feb4117d16d8 108 /* Define to 1 if you have the `rint' function. */
madcowswe 0:feb4117d16d8 109
madcowswe 0:feb4117d16d8 110 #ifdef TVMET_HAVE_RINT
madcowswe 0:feb4117d16d8 111 #undef TVMET_HAVE_RINT
madcowswe 0:feb4117d16d8 112 #endif
madcowswe 0:feb4117d16d8 113
madcowswe 0:feb4117d16d8 114 /* Define to 1 if you have the `sqrt' function. */
madcowswe 0:feb4117d16d8 115 #ifndef TVMET_HAVE_SQRT
madcowswe 0:feb4117d16d8 116 #define TVMET_HAVE_SQRT 1
madcowswe 0:feb4117d16d8 117 #endif
madcowswe 0:feb4117d16d8 118
madcowswe 0:feb4117d16d8 119 /* Define to 1 if stdbool.h conforms to C99. */
madcowswe 0:feb4117d16d8 120 /* #undef TVMET_HAVE_STDBOOL_H */
madcowswe 0:feb4117d16d8 121
madcowswe 0:feb4117d16d8 122 /* Define to 1 if you have the <stdint.h> header file. */
madcowswe 0:feb4117d16d8 123 #ifdef TVMET_HAVE_STDINT_H
madcowswe 0:feb4117d16d8 124 #undef TVMET_HAVE_STDINT_H
madcowswe 0:feb4117d16d8 125 #endif
madcowswe 0:feb4117d16d8 126
madcowswe 0:feb4117d16d8 127 /* Define to 1 if you have the <stdlib.h> header file. */
madcowswe 0:feb4117d16d8 128 #ifndef TVMET_HAVE_STDLIB_H
madcowswe 0:feb4117d16d8 129 #define TVMET_HAVE_STDLIB_H 1
madcowswe 0:feb4117d16d8 130 #endif
madcowswe 0:feb4117d16d8 131
madcowswe 0:feb4117d16d8 132 /* Define to 1 if you have the <strings.h> header file. */
madcowswe 0:feb4117d16d8 133 #ifdef TVMET_HAVE_STRINGS_H
madcowswe 0:feb4117d16d8 134 #undef TVMET_HAVE_STRINGS_H
madcowswe 0:feb4117d16d8 135 #endif
madcowswe 0:feb4117d16d8 136
madcowswe 0:feb4117d16d8 137 /* Define to 1 if you have the <string.h> header file. */
madcowswe 0:feb4117d16d8 138 #ifndef TVMET_HAVE_STRING_H
madcowswe 0:feb4117d16d8 139 #define TVMET_HAVE_STRING_H 1
madcowswe 0:feb4117d16d8 140 #endif
madcowswe 0:feb4117d16d8 141
madcowswe 0:feb4117d16d8 142 /* Define if the compiler supports SYSV math library */
madcowswe 0:feb4117d16d8 143 /* #undef TVMET_HAVE_SYSV_MATH */
madcowswe 0:feb4117d16d8 144
madcowswe 0:feb4117d16d8 145 /* Define to 1 if you have the <sys/stat.h> header file. */
madcowswe 0:feb4117d16d8 146 #ifdef TVMET_HAVE_SYS_STAT_H
madcowswe 0:feb4117d16d8 147 #undef TVMET_HAVE_SYS_STAT_H
madcowswe 0:feb4117d16d8 148 #endif
madcowswe 0:feb4117d16d8 149
madcowswe 0:feb4117d16d8 150 /* Define to 1 if you have the <sys/time.h> header file. */
madcowswe 0:feb4117d16d8 151 #ifdef TVMET_HAVE_SYS_TIME_H
madcowswe 0:feb4117d16d8 152 #undef TVMET_HAVE_SYS_TIME_H
madcowswe 0:feb4117d16d8 153 #endif
madcowswe 0:feb4117d16d8 154
madcowswe 0:feb4117d16d8 155 /* Define to 1 if you have the <sys/types.h> header file. */
madcowswe 0:feb4117d16d8 156 #ifdef TVMET_HAVE_SYS_TYPES_H
madcowswe 0:feb4117d16d8 157 #undef TVMET_HAVE_SYS_TYPES_H
madcowswe 0:feb4117d16d8 158 #endif
madcowswe 0:feb4117d16d8 159
madcowswe 0:feb4117d16d8 160 /* Define if the compiler recognizes typename */
madcowswe 0:feb4117d16d8 161 #ifndef TVMET_HAVE_TYPENAME
madcowswe 0:feb4117d16d8 162 #define TVMET_HAVE_TYPENAME 1
madcowswe 0:feb4117d16d8 163 #endif
madcowswe 0:feb4117d16d8 164
madcowswe 0:feb4117d16d8 165 /* Define to 1 if you have the <unistd.h> header file. */
madcowswe 0:feb4117d16d8 166 #ifdef TVMET_HAVE_UNISTD_H
madcowswe 0:feb4117d16d8 167 #undef TVMET_HAVE_UNISTD_H
madcowswe 0:feb4117d16d8 168 #endif
madcowswe 0:feb4117d16d8 169
madcowswe 0:feb4117d16d8 170 /* Define to 1 if the system has the type `_Bool'. */
madcowswe 0:feb4117d16d8 171 /* #undef TVMET_HAVE__BOOL */
madcowswe 0:feb4117d16d8 172
madcowswe 0:feb4117d16d8 173 /* Define to the address where bug reports for this package should be sent. */
madcowswe 0:feb4117d16d8 174 #ifndef TVMET_PACKAGE_BUGREPORT
madcowswe 0:feb4117d16d8 175 #define TVMET_PACKAGE_BUGREPORT "opetzold@users.sourceforge.net"
madcowswe 0:feb4117d16d8 176 #endif
madcowswe 0:feb4117d16d8 177
madcowswe 0:feb4117d16d8 178 /* Define to the full name of this package. */
madcowswe 0:feb4117d16d8 179 #ifndef TVMET_PACKAGE_NAME
madcowswe 0:feb4117d16d8 180 #define TVMET_PACKAGE_NAME "tvmet"
madcowswe 0:feb4117d16d8 181 #endif
madcowswe 0:feb4117d16d8 182
madcowswe 0:feb4117d16d8 183 /* Define to the full name and version of this package. */
madcowswe 0:feb4117d16d8 184 #ifndef TVMET_PACKAGE_STRING
madcowswe 0:feb4117d16d8 185 #define TVMET_PACKAGE_STRING "tvmet 1.7.2"
madcowswe 0:feb4117d16d8 186 #endif
madcowswe 0:feb4117d16d8 187
madcowswe 0:feb4117d16d8 188 /* Define to the one symbol short name of this package. */
madcowswe 0:feb4117d16d8 189 #ifndef TVMET_PACKAGE_TARNAME
madcowswe 0:feb4117d16d8 190 #define TVMET_PACKAGE_TARNAME "tvmet"
madcowswe 0:feb4117d16d8 191 #endif
madcowswe 0:feb4117d16d8 192
madcowswe 0:feb4117d16d8 193 /* Define to the version of this package. */
madcowswe 0:feb4117d16d8 194 #ifndef TVMET_PACKAGE_VERSION
madcowswe 0:feb4117d16d8 195 #define TVMET_PACKAGE_VERSION "1.7.2"
madcowswe 0:feb4117d16d8 196 #endif
madcowswe 0:feb4117d16d8 197
madcowswe 0:feb4117d16d8 198 /* Define to 1 if you have the ANSI C header files. */
madcowswe 0:feb4117d16d8 199 #ifndef TVMET_STDC_HEADERS
madcowswe 0:feb4117d16d8 200 #define TVMET_STDC_HEADERS 1
madcowswe 0:feb4117d16d8 201 #endif
madcowswe 0:feb4117d16d8 202
madcowswe 0:feb4117d16d8 203 /* Define to 1 if your <sys/time.h> declares `struct tm'. */
madcowswe 0:feb4117d16d8 204 /* #undef TVMET_TM_IN_SYS_TIME */
madcowswe 0:feb4117d16d8 205
madcowswe 0:feb4117d16d8 206 /* Define to empty if `const' does not conform to ANSI C. */
madcowswe 0:feb4117d16d8 207 /* #undef _tvmet_const */
madcowswe 0:feb4117d16d8 208
madcowswe 0:feb4117d16d8 209 /* Define to `__inline__' or `__inline' if that's what the C compiler
madcowswe 0:feb4117d16d8 210 calls it, or to nothing if 'inline' is not supported under any name. */
madcowswe 0:feb4117d16d8 211 #ifndef __cplusplus
madcowswe 0:feb4117d16d8 212 /* #undef _tvmet_inline */
madcowswe 0:feb4117d16d8 213 #endif
madcowswe 0:feb4117d16d8 214
madcowswe 0:feb4117d16d8 215 /* Define to equivalent of C99 restrict keyword, or to nothing if this is not
madcowswe 0:feb4117d16d8 216 supported. Do not define if restrict is supported directly. */
madcowswe 0:feb4117d16d8 217 // unfortunally, VC++ 7.1 doesn't have restrict.
madcowswe 0:feb4117d16d8 218 #ifndef _tvmet_restrict
madcowswe 0:feb4117d16d8 219 #define _tvmet_restrict
madcowswe 0:feb4117d16d8 220 #endif
madcowswe 0:feb4117d16d8 221
madcowswe 0:feb4117d16d8 222 /* Define to `unsigned' if <sys/types.h> does not define. */
madcowswe 0:feb4117d16d8 223 /* #undef _tvmet_size_t */
madcowswe 0:feb4117d16d8 224
madcowswe 0:feb4117d16d8 225
madcowswe 0:feb4117d16d8 226
madcowswe 0:feb4117d16d8 227 /*******************************************************************
madcowswe 0:feb4117d16d8 228 * tvmet's config for special handling on MS VC
madcowswe 0:feb4117d16d8 229 ******************************************************************/
madcowswe 0:feb4117d16d8 230
madcowswe 0:feb4117d16d8 231
madcowswe 0:feb4117d16d8 232 #if defined(_MSC_VER)
madcowswe 0:feb4117d16d8 233
madcowswe 0:feb4117d16d8 234 /* The undefined case of TVMET_CXX_ALWAYS_INLINE is handled inside
madcowswe 0:feb4117d16d8 235 * tvmet.h, so there there is no need to do this here! */
madcowswe 0:feb4117d16d8 236
madcowswe 0:feb4117d16d8 237 #else // !defined(_MSC_VER)
madcowswe 0:feb4117d16d8 238
madcowswe 0:feb4117d16d8 239 // paranoia
madcowswe 0:feb4117d16d8 240 # warning "config header for MS VC 7.1 included without defined _MSC_VER"
madcowswe 0:feb4117d16d8 241
madcowswe 0:feb4117d16d8 242 #endif
madcowswe 0:feb4117d16d8 243
madcowswe 0:feb4117d16d8 244 #endif // TVMET_CONFIG_VC71_H
madcowswe 0:feb4117d16d8 245
madcowswe 0:feb4117d16d8 246 // Local Variables:
madcowswe 0:feb4117d16d8 247 // mode:C++
madcowswe 0:feb4117d16d8 248 // End:
madcowswe 0:feb4117d16d8 249 // LocalWords: autoheader