Sunday, November 25, 2007

Comparsion Expression


Introduction

These are common phrases used in writing, but sorted by UNDERUSE by Chinese speakers. Use these expressions in your written English. Look up any of the expressions with the right-mouse context menu to see meanings, translations and how they are used in context. To hear an expression pronounced by people with different accents, right-click and select 'Human Voices'.

Expand all | Collapse all

Top 30

  1. for example
  2. the case of
  3. be argued that
  4. way in which
  5. would have to
  6. example of this is
  7. the work of
  8. discriminated against
  9. in the case
  10. is that of
  1. in this case
  2. has led to
  3. a product of
  4. a great deal of
  5. the amount of
  6. this would be
  7. is used to
  8. for example the
  9. a result of
  10. end of the
  1. the end of
  2. because of
  3. an attempt to
  4. as it is
  5. would not be
  6. in particular
  7. associated with
  8. for instance
  9. the nature of
  10. as a result of

Next 30

  1. in which the
  2. concerned with
  3. much of the
  4. majority of
  5. there have been
  6. the question of
  7. the end of the
  8. would be a
  9. consequences of
  10. for the sake
  1. necessary to
  2. that of the
  3. portrayal of
  4. this is the
  5. and as a
  6. role of the
  7. the world of
  8. the issue of
  9. parts of the
  10. be in the
  1. which have been
  2. be used to
  3. will be able to
  4. the context of
  5. which can be
  6. with the development of
  7. and it was
  8. which is used
  9. extent to which the
  10. the writer says

Next 30

  1. a reversal of
  2. would need to
  3. inherent in
  4. a state of
  5. are attempting to
  6. their ability to detect
  7. a product of the
  8. and in many
  9. the removal of
  10. and is therefore
  1. prime example of
  2. (for the) good of the
  3. greater number of
  4. in this case the
  5. all types of
  6. there is only
  7. be described as
  8. many areas of
  9. both of these
  10. be primarily responsible for
  1. because of his
  2. out of a
  3. the problems of
  4. a set of
  5. argue that the
  6. at the end of
  7. due to their
  8. in favour of
  9. (emphasis would be) placed on the
  10. portrayed in

Argumentative Expression


These are common phrases used in writing, but sorted by UNDERUSE by Chinese speakers. Use these expressions in your written English. Look up any of the expressions with the right-mouse context menu to see meanings, translations and how they are used in context. To hear an expression pronounced by people with different accents, right-click and select 'Human Voices'.


Top 30

  1. could be argued
  2. but it is
  3. there is no
  4. would not be
  5. it does not
  6. the question of
  7. is impossible to
  8. thus
  9. is not always
  10. is no longer
  1. this is not
  2. is virtually impossible
  3. there would be no
  4. be primarily responsible for
  5. argue that the
  6. does not always
  7. that it would be
  8. this does not
  9. does not have
  10. that it would
  1. it is argued that
  2. be argued that it
  3. has never been
  4. would agree with
  5. as not to/so as not to/so as to
  6. there were no
  7. could be argued that
  8. can not be bought
  9. will be forced
  10. the question is


Next 30

  1. argue that this
  2. it is impossible
  3. has not been
  4. would argue that it
  5. so there is no
  6. it could be argued that
  7. and has no
  8. be impossible to
  9. but this does not
  10. can also be argued
  1. argue that this is
  2. no right to
  3. (would, may)not have been able to
  4. argue that it is
  5. will become increasingly
  6. which can not
  7. which can not be
  8. no matter what
  9. but this is not
  10. no matter (how)
  1. it can be argued
  2. arguable that
  3. there would not be / there would be no
  4. should be primarily responsible for
  5. could argue that
  6. and in some cases
  7. were unable to
  8. you can not
  9. this does not mean
  10. can also be argued that


Next 30

  1. the only way in which
  2. of course there are
  3. (there is, make) a case for
  4. it is very unlikely (likely) that
  5. a strong argument
  6. would argue that it is
  7. be argued to be
  8. could be argued that the
  9. argue that it
  10. going to happen
  1. do not exist
  2. do not believe in
  3. that it does not
  4. it would be wrong to
  5. does not have a
  6. is not entirely
  7. not continue to
  8. denied to
  9. decision will be
  10. miss out on
  1. could have been prevented
  2. could be argued to
  3. possible to argue that
  4. can not simply be
  5. not do this
  6. something which will
  7. could also be argued
  8. clearly not
  9. can not be used
  10. from my own experience


Thursday, November 15, 2007

complex vs. complicated

complex,complicated,intricate,involved,knotty这几个形容词的一般含义是“复杂的”。

complex指组成某种机器的零件、构成某件事的因素或构成数学题的元素不仅很多,而且相互的关系或相互的作用也令人眼花缭乱,只有学识深的人或具有专门知识的人才能处理。
the complex mechanism of a watch
手表的复杂结构
the complex modern world
复杂的现代世界
Justice is part of the complex machinery of the law.
正义是复杂的法律机器的一部分。
He mentally visualizes a complex form all round itself.
他在脑海里从形体的各个方面来模拟复杂的形体。

complicated 具有complex的一切意义,但更强调复杂得难以解释或理解。一道算式题可能非常 complex,但未必确实complicated;而一道 complicated 算式一般总是 complex的。
The old view of Galileo was delightfully uncomplicated.
过去对伽利略的看法并不复杂(指不深奥),这是令人欣然的。
The apparatus thus described, however, records only the horizontal component of the wave movement.
然而,仪器的如此描画只记录下波的运动的水平组成部分,但是事实上波的运动要复杂得多(指不易解释)。

intricate 通常指交织在一起的众多因素,而且很难理出头绪来。
The child was perplexed by the intricate plot of the story.
这孩子被那头绪纷繁的故事弄得迷惑不解。

involved 通常指许多事物或事物的关系盘根错节。
These are involved financial affairs.
这是些错综复杂的金融事务。

knotty 指充满纠缠不清、令人困惑的复杂问题,而且包含着几乎不可能解决或弄懂的意义。
This is a knotty passage.
这是一段复杂难懂的文字。

[READ IT!]monte carlo

STL: vector vs. list

They solve different problems, so it depends on the "shape" of your data, and which is more important to you, inserting, deleting or accessing quickly.

Lists are double-linked lists, so insertion at either end, or in the middle (providing you know an existing element in the middle) is equally fast. Also, splicing is fast (eg. putting a list into the middle of another) - all that does is re-arrange the end pointers. All of those operations would be slower with vectors, because you would need to copy everything.

eg. Inserting into the middle of a vector of 1000 items would involve moving 500 items up one. Similarly with deleting. In fact, vectors are really only good for insertion and deletion at the end.

For things that require insertion and deletion, but only at *each* end (like a queue) then there is a dequeue (double-ended queue) which is really a collection of vectors. This is more efficient.

However, vectors shine in random access - since they are organised sequentially in memory, whilst this is slow for insertion at anywhere other than the end, you can easily find, say, element 500, you simply index into the vector. Thus, vectors can be sorted, shuffled, and accessed randomly.

What STL ever done for us?

"Well, yes, vectors, I mean obviously the vectors are good ..."
"Don't forget queues Reg, I mean, where would we be without properly organized queues and iterators for any data type ?" General murmurs of agreement
"Yes, alright, apart from vectors and queues ..."
"Sorts Reg - I hated having to code up a new sort routine for every class." Here, here, etc.
"Right. So apart from vectors, queues and associated containers classes, iterators, various useful algorithms and functions, what has the STL ever done for us ?"
"Memory allocators Reg. We can allocate container memory using any scheme we like, and change it without rewriting all the code. It keeps things in order" Reg loses his temper
"Order ? Order ? Oh shut up!"

At the end of this section, the waffle above should start making sense to you, but is unlikely to become more humorous as a result of your studies.

There are three types of sequence containers in the STL. These, as their name suggests, store data in linear sequence. They are the vector, deque and list:

  • vector
  • deque
  • list

To choose a container, decide what sort of operations you will most frequently perform on your data, then use the following table to help you.

Time overhead of operations on sequence containers
Operation Vector Deque List
Access 1st Element Constant Constant Constant
Access last Element Constant Constant Constant
Access "random" element Constant Constant Linear
Add/Delete at Beginning Linear Constant Constant
Add/Delete at End Constant Constant Constant
Add/Delete at "random" Linear Linear Constant

Each container has attributes suited to particular applications. The subsections and code samples below should further clarify when and how to use each type of sequence container.

full version: http://www.pottsoft.com/home/stl/stl.htmlx


Some notes

  • string to char*
string filename("myfile.wav");
const char* filename = patternfile.c_str();
or
char* filename= new char[patternfile.size()];
strcpy(filename,patternfile.c_str());

The Daubechies D4 Wavelet Transform in C++ and Java

http://www.bearcave.com/software/java/wavelets/daubechies/index.html

I recommend using the "save as" feature of your browser to save the C++ and Java source files (I'm not sure how to reliably suppress viewing and force download with all browsers).

  • The Daubechies D4 algorithm as a C++ class

  • Doxygen generated documentation for the C++ version of the Daubechies D4 algorithm. This documentation was generated with this Doxygen configuration file.

  • The Daubechies D4 algorithm as a Java class


Daubechies D4 wavelet transform (D4 denotes four coefficients)

I have to confess up front that the comment here does not even come close to describing wavelet algorithms and the Daubechies D4 algorithm in particular. I don't think that it can be described in anything less than a journal article or perhaps a book. I even have to apologize for the notation I use to describe the algorithm, which is barely adequate. But explaining the correct notation would take a fair amount of space as well. This comment really represents some notes that I wrote up as I implemented the code. If you are unfamiliar with wavelets I suggest that you look at the bearcave.com web pages and at the wavelet literature. I have yet to see a really good reference on wavelets for the software developer. The best book I can recommend is Ripples in Mathematics by Jensen and Cour-Harbo.

All wavelet algorithms have two components, a wavelet function and a scaling function. These are sometime also referred to as high pass and low pass filters respectively.

The wavelet function is passed two or more samples and calculates a wavelet coefficient. In the case of the Haar wavelet this is

  coefi = oddi - eveni
or
coefi = 0.5 * (oddi - eveni)

depending on the version of the Haar algorithm used.

The scaling function produces a smoother version of the original data. In the case of the Haar wavelet algorithm this is an average of two adjacent elements.

The Daubechies D4 wavelet algorithm also has a wavelet and a scaling function. The coefficients for the scaling function are denoted as hi and the wavelet coefficients are gi.

Mathematicians like to talk about wavelets in terms of a wavelet algorithm applied to an infinite data set. In this case one step of the forward transform can be expressed as the infinite matrix of wavelet coefficients represented below multiplied by the infinite signal vector.

     ai = ...h0,h1,h2,h3, 0, 0, 0, 0, 0, 0, 0, ...   si
ci = ...g0,g1,g2,g3, 0, 0, 0, 0, 0, 0, 0, ... si+1
ai+1 = ...0, 0, h0,h1,h2,h3, 0, 0, 0, 0, 0, ... si+2
ci+1 = ...0, 0, g0,g1,g2,g3, 0, 0, 0, 0, 0, ... si+3
ai+2 = ...0, 0, 0, 0, h0,h1,h2,h3, 0, 0, 0, ... si+4
ci+2 = ...0, 0, 0, 0, g0,g1,g2,g3, 0, 0, 0, ... si+5
ai+3 = ...0, 0, 0, 0, 0, 0, h0,h1,h2,h3, 0, ... si+6
ci+3 = ...0, 0, 0, 0, 0, 0, g0,g1,g2,g3, 0, ... si+7

The dot product (inner product) of the infinite vector and a row of the matrix produces either a smoother version of the signal (ai) or a wavelet coefficient (ci).

In an ordered wavelet transform, the smoothed (ai) are stored in the first half of an n element array region. The wavelet coefficients (ci) are stored in the second half the n element region. The algorithm is recursive. The smoothed values become the input to the next step.

The transpose of the forward transform matrix above is used to calculate an inverse transform step. Here the dot product is formed from the result of the forward transform and an inverse transform matrix row.

      si = ...h2,g2,h0,g0, 0, 0, 0, 0, 0, 0, 0, ...  ai
si+1 = ...h3,g3,h1,g1, 0, 0, 0, 0, 0, 0, 0, ... ci
si+2 = ...0, 0, h2,g2,h0,g0, 0, 0, 0, 0, 0, ... ai+1
si+3 = ...0, 0, h3,g3,h1,g1, 0, 0, 0, 0, 0, ... ci+1
si+4 = ...0, 0, 0, 0, h2,g2,h0,g0, 0, 0, 0, ... ai+2
si+5 = ...0, 0, 0, 0, h3,g3,h1,g1, 0, 0, 0, ... ci+2
si+6 = ...0, 0, 0, 0, 0, 0, h2,g2,h0,g0, 0, ... ai+3
si+7 = ...0, 0, 0, 0, 0, 0, h3,g3,h1,g1, 0, ... ci+3

Using a standard dot product is grossly inefficient since most of the operands are zero. In practice the wavelet coefficient values are moved along the signal vector and a four element dot product is calculated. Expressed in terms of arrays, for the forward transform this would be:

  ai = s[i]*h0 + s[i+1]*h1 + s[i+2]*h2 + s[i+3]*h3
ci = s[i]*g0 + s[i+1]*g1 + s[i+2]*g2 + s[i+3]*g3

This works fine if we have an infinite data set, since we don't have to worry about shifting the coefficients "off the end" of the signal.

I sometimes joke that I left my infinite data set in my other bear suit. The only problem with the algorithm described so far is that we don't have an infinite signal. The signal is finite. In fact not only must the signal be finite, but it must have a power of two number of elements.

If i=N-1, the i+2 and i+3 elements will be beyond the end of the array. There are a number of methods for handling the wavelet edge problem. This version of the algorithm acts like the data is periodic, where the data at the start of the signal wraps around to the end.

This algorithm uses a temporary array. A Lifting Scheme version of the Daubechies D4 algorithm does not require a temporary. The matrix discussion above is based on material from Ripples in Mathematics, by Jensen and Cour-Harbo. Any error are mine.

Author: Ian Kaplan
Use: You may use this software for any purpose as long as I cannot be held liable for the result. Please credit me with authorship if use use this source code.

This comment is formatted for the doxygen documentation generator

Reading and writing wav files

This example demonstrates how to use Dr. Fred DePiero's classes to read and write to/from files in the .wav format. All of Dr. DePiero's classes needed to read/write .wav files are included without comment. The program also demonstrates the use of command line arguments.

download: http://yongzhen.zhuang.googlepages.com/readwritewavfiles.rar

Baidu Baidu



Wednesday, November 14, 2007

之乎者也

眼處心生句自神,暗中摸索總非真

“眼處心生句自神,暗中摸索總非真”,是元好問論詩的句子。意為:見得真切,方才寫得入神;無生活底蘊而一味玄想虛擬,則難免失真。這可以看成是創作的通則。

Lehrer Tom

video: Tom Lehrer singing some math themed songs


Thomas Andrew "Tom" Lehrer (born April 9, 1928) is an American singer-songwriter, satirist, pianist, and mathematician. He also lectured on mathematics and musical theater.

Lehrer is best known for the pithy, humorous songs he recorded in the 1950s and 60s. His work often parodied popular song forms, notably in "The Elements", where he sets the names of the chemical elements to a tune from Gilbert and Sullivan. Lehrer's earlier work frequently dealt with trivial subject matter, but he also produced a number of songs dealing with the social and political issues of the day, particularly when he went on to write for the TV show That Was The Week That Was.

Lehrer earned his BA in mathematics (Magna Cum Laude) from Harvard University in 1947, when he was 18. He received his MA the next year, and was inducted into Phi Beta Kappa. He taught classes at MIT, Harvard and Wellesley. He remained in Harvard's doctoral program for several years, taking time out for his musical career and to work as a researcher at Los Alamos, New Mexico. He joined the Army from 1955 to 1957, working at the National Security Agency. (Lehrer has been rumored to have invented the Jello Shot during this time, as a means of circumventing liquor restrictions.[3] ) All of these experiences eventually became fodder for songs: "Fight Fiercely, Harvard", "The Wild West Is Where I Want To Be" and "It Makes a Fellow Proud to Be a Soldier", respectively. There was perhaps some truth to his comment in the intro to the latter song, in which he said he had left the Army and was now in the "Radioactive Reserve".

In 1960, Lehrer returned to full-time studies at Harvard. However, he never completed his doctoral studies, and never received a PhD in mathematics (pig ah, haha~~~). In 1972, he joined the faculty of the University of California, Santa Cruz, teaching an introductory course entitled "The Nature of Mathematics" to liberal-arts majors — "Math for Tenors", according to Lehrer. He also taught a class in musical theater. He still occasionally performs songs in his lectures, primarily those relating to the topic [2].

Math jokes and videos

Math love song by the Klein Four (There are lots of puns using math terms in here: group, function, relationship, etc.

Statistics rap video!

Tom Lehrer singing some math themed songs

Math jokes

More math jokes

Great Web Applications

  • Snapshot

https://account.snap.com/signup.php?source=pub-5821628-www.livejournal.com&campaign=bsblogo

Tuesday, November 13, 2007

Pseudo random number generators - uniform and non-uniform distributions

perfect one!!!! contain many generators!!!

http://www.agner.org/random/

This page contains software libraries for some very good random number generators.

The basic random number generators make floating point or integer random numbers with uniform distributions. This code is available in C++ and assembly language.

The non-uniform random number generators make random variates with the following distributions:
normal, bernoulli, poisson, binomial, hypergeometric, Wallenius' and Fisher's noncentral hypergeometric, multinomial, multivariate hypergeometric, Wallenius' and Fisher's multivariate noncentral hypergeometric, and shuffling. This code is available in C++ language.

Code examples are included, showing how to use these software libraries.

The uniform random number generators are also available as ready-to-use library files which can be linked into projects in many different programming languages under Windows, Linux, BSD and other operating systems on the PC platform. These libraries are coded in assembly language for improved speed.

These generators are intended for Monte Carlo applications, not for cryptographic applications.

Download packages:

Uniform random number generators in C++
Description: C++ class library containing the following random number generators: Mersenne twister and Mother-of-all. Can generate floating point or integer random numbers with uniform distribution, and random bits. Very good randomness, high resolution, extremely long cycle lengths, and high speed. Example included.
Also includes assembly language implementations for x86-based systems for improved speed.
System requirements: Any C++ compiler, any operating system.
Further description and instructions
Description of Mother-of-all generator
File name: randomc.zip, size: 102418, last modified: 2007-Sep-23.
Download C++ random number generators.
Non-uniform random number generators in C++
Description: C++ class library generating random numbers with the following distributions: normal, bernoulli, poisson, binomial, hypergeometric, Wallenius' and Fisher's noncentral hypergeometric, multinomial, multivariate hypergeometric, and multivariate Fisher's and Wallenius' noncentral hypergeometric distributions. A function for shuffling numbers is also included, as well as C++ examples showing how to use these functions for simulating evolution and for other purposes.
Most of the functions are fast and accurate, even for extreme values of the parameters.
You have the choice of using any of the uniform random number generators listed above (C++ or assembly) as base for these non-uniform random number generators.
Further description and instructions.
Definition of distributions pdf format.
Wallenius' noncentral hypergeometric distribution theory.
Theoretical description of sampling methods used pdf format.
File name: stocc.zip, size: 262823, last modified: 2007-Sep-23.
Download non-uniform random number generators.
List of random numbers
Description: A list of 10000 random numbers generated with a combined generator.
File name: 10000ran.zip, size: 49098, last modified: 2005-May-24.
Download 10000 random numbers.
R package for noncentral hypergeometric distributions
Description: Package for the R language (www.r-project.org) for calculating the various noncentral hypergeometric distributions. Useful for biased urn models, models of biased sampling and evolution by natural selection.
Package name: BiasedUrn, last modified: 2007-Jun-16.
BiasedUrn.

Comments to the theory of these random number generators can be posted to my discussion board.

Follow my research on the noncentral hypergeometric distributions.

Please don't mail me with your programming problems. Your mail will not be answered.

Links to related sites

_TCHAR and char

_TCHAR 是一种通用字符类型,它有可能是char型,也有可能是wchar_t型,决定它是那一种的关键是你的程序是否定义了#define _UNICODE ,当你没有定义时(ASII),_TCHAR就是char,定义了之后就是wchar_t型。_TCHAR有这种特性是因为微软制定的这种字符映射规则。_T()就是做了这种转换。

  • Defining
//请记住在stdafx.h的一开始:
#define UNICODE
//or #define _UNICODE

#include "stdafx.h"
#include "windows.h"
#include "tchar.h"
  • Using
strcmp(FileName, ".") ; 请改写为: _tcscmp(FileName,_T(".") ;
strstr(FileName, ".dat") 请一定改写为:_tcsstr(FileName, _T(".dat"));
......
  • Setting
vs2005: project properties -> configuration properties -> general -> Character Set
1. Not Set: SBCS (ASCII)
2. Unicode


use 'printf' in matlab

http://yongzhen.zhuang.googlepages.com/printfinmatlab.rar

random number generator

1. sources

2. tutorial

Intro

This tutorial provides a brief introduction to the random number functions that come as part of the C++ standard library, namely rand() and srand().

rand() and RAND_MAX

The C++ standard library includes a pseudo random number generator for generating random numbers. In order to use it we need to include the header. To generate a random number we use the rand() function. This will produce a result in the range 0 to RAND_MAX, where RAND_MAX is a constant defined by the implementation.

Here's a piece of code that will generate a single random number:

#include 
#include

using namespace std;

int main()
{
int random_integer = rand();
cout <<>
The value of RAND_MAX varies between compilers and can be as low as 32767, which would give a range from 0 to 32767 for rand(). To find out the value of RAND_MAX for your compiler run the following small piece of code:

#include 
#include

using namespace std;

int main()
{
cout << "The value of RAND_MAX is " <<>
srand()

The pseudo random number generator produces a sequence of numbers that gives the appearance of being random, when in fact the sequence will eventually repeat and is predictable.

We can seed the generator with the srand() function. This will start the generator from a point in the sequence that is dependent on the value we pass as an argument. If we seed the generator once with a variable value, for instance the system time, before our first call of rand() we can generate numbers that are random enough for simple use (though not for serious statistical purposes).

In our earlier example the program would have generated the same number each time we ran it because the generator would have been seeded with the same default value each time. The following code will seed the generator with the system time then output a single random number, which should be different each time we run the program.

#include 
#include
#include

using namespace std;

int main()
{
srand((unsigned)time(0));
int random_integer = rand();
cout <<>
Don't make the mistake of calling srand() every time you generate a random number; we only usually need to call srand() once, prior to the first call to rand().

Generating a number in a specific range

If we want to produce numbers in a specific range, rather than between 0 and RAND_MAX, we can use the modulo operator. It's not the best way to generate a range but it's the simplest. If we use rand()%n we generate a number from 0 to n-1. By adding an offset to the result we can produce a range that is not zero based. The following code will produce 20 random numbers from 1 to 10:

#include 
#include
#include

using namespace std;

int main()
{
srand((unsigned)time(0));
int random_integer;
for(int index=0; index<20; random_integer =" (rand()%10)+1;">
A better method, though slightly more complicated, is given below. This overcomes problems that are sometimes experienced with some types of pseudo random number generator that might be supplied with your compiler. As before, this will output 20 random numbers from 1 to 10.

#include 
#include
#include

using namespace std;

int main()
{
srand((unsigned)time(0));
int random_integer;
int lowest=1, highest=10;
int range=(highest-lowest)+1;
for(int index=0; index<20; random_integer =" lowest+int(range*rand()/(RAND_MAX">

Conclusion

If you need to use a pseudo random number generator for anything even remotely serious you should avoid the simple generator that comes with your compiler and use something more sophisticated instead. That said, rand() still has its place and you may find it useful.

kdtree by Steven Michael

Name: kdtree
Author: Steven Michael (smichael@ll.mit.edu)
Date: 3/1/2005

############################################################

The following code implements a KDTree search algorithm
in MATLAB

There are 4 main functions:

1. kdtree -- tree class creation
2. kdtree_range -- return all points within a range
3. kdtree_closestpoint -- return array of closest points to a
corresponding array of input points


A single reference was used in writing the code:

M. deBerg, M. vanKreveld, M. Overmars, and O. Schwarzkopf.
"Computational Geometry: Algorithms and Applications"
Springer, 2000.

download

Anyoption - C/C++ Command line and resource file option parsing

http://www.hackorama.com/anyoption/

AnyOption is a C++ class for easy parsing of complex commandline options. It also parses options from a rsourcefile in option value pair format.

AnyOption implements the traditional POSIX style character options ( -n ) as well as the newer GNU style long options ( --name ). Or you can use a simpler long option version ( -name ) by asking to ignore the POSIX style options.

AnyOption supports the traditional UNIX resourcefile syntax of, any line starting with "#" is a comment and the value pairs use ":" as a delimiter.

An option which expects a value is considered as an option value pair, while options without a value are considered flags.

Please read the header file for the documented public interface, and demo.cpp for an example of how easy it is to use AnyOption.

August 2004, added bug-fixes, and updates send by Michael Peters of Sandia Lab.
September 2006, fix from Boyan Asenov for a bug in mixing up option type indexes.

View Code:
anyoption.cpp
anyoption.h
demo.cpp

Get Code:
anyoption.cpp
anyoption.h
demo.cpp

Audio clips for research