2007年5月24日星期四

Arabica - an XML parser toolkit written in C++ (SAX in C++)

http://www.jezuk.co.uk/cgi-bin/view/SAX
用C++语言编写的XML解析器

Arabica is an XML parser toolkit, providing SAX2, DOM and XPath implementations, written in Standard C++.

SAX is an event-based XML processing API. Arabica is a full SAX2 implementation, including the optional interfaces and helper classes. It provides uniform SAX2 wrappers for the expat parser, Xerces, libxml and, on Windows, for the Microsoft XML parser.

The DOM is a platform- and language-neutral interface which models an XML document as a tree of nodes, defined by the W3C. Arabica implements the DOM Level 2 Core on top of the SAX layer.

XPath is a language for addressing parts of an XML document. Arabica implements XPath 1.0 over its DOM implementation.

Arabica is written in Standard C++ and should be portable to most platforms. It is parameterised on string type. Out of the box, it can provide UTF-8 encoded std::strings or UTF-16 encoded std::wstrings, but can easily be customised for arbitrary string types.

Arabica is available for download under a BSD-style license.

F2C - Fortran to C translator

http://www.netlib.org/f2c/
把Fortran语言翻译为C语言的程序。
CLAPACK据说就是用这个从FORTRAN版的LAPACK翻译过来的。

当然,可能需要一些少量的修改才能调试通,对于太复杂的Fortran,恐怕就没那么简单了。

F2C - Fortran to C translator

http://www.netlib.org/f2c/
把Fortran语言翻译为C语言的程序。
CLAPACK据说就是用这个从FORTRAN版的LAPACK翻译过来的。

当然,可能需要一些少量的修改才能调试通翻译完的程序。

GSL - GNU科学计算函数库

http://www.gnu.org/software/gsl/gsl.html
函数库中的内容涵盖了几乎所有方面,但有门门精通,门门稀松之嫌。它自己的说明文件也说如果对大型的计算,要考虑使用专业的库。不过里面的程序对于学习或者不是以专门的科学计算为目的的倒是非常够用。

GSL - GNU Scientific Library

Introduction to GSL

The GNU Scientific Library (GSL) is a numerical library for C and C++ programmers. It is free software under the GNU General Public License.

The library provides a wide range of mathematical routines such as random number generators, special functions and least-squares fitting. There are over 1000 functions in total with an extensive test suite.

The current version is GSL-1.9. It was released on 21 February 2007. This is a stable release.

The complete range of subject areas covered by the library includes,

Complex Numbers Roots of Polynomials Special Functions
Vectors and Matrices Permutations Sorting
BLAS Support Linear Algebra Eigensystems
Fast Fourier Transforms Quadrature Random Numbers
Quasi-Random Sequences Random Distributions Statistics
Histograms N-Tuples Monte Carlo Integration
Simulated Annealing Differential Equations Interpolation
Numerical Differentiation Chebyshev Approximation Series Acceleration
Discrete Hankel Transforms Root-Finding Minimization
Least-Squares Fitting Physical Constants IEEE Floating-Point
Discrete Wavelet Transforms

Unlike the licenses of proprietary numerical libraries the license of GSL does not restrict scientific cooperation. It allows you to share your programs freely with others.

C/C++ User Group Hot Links: 一些资源链接

http://www.hal9k.com/cug/links/index1.htm
按照类别如下:
AI Extreme Programming PalmPilot
Algorithms FAQs Parallel Processing
Animation Filesystems PDF
ASN.1 Finite Automata Persistent Storage
Aspect-Oriented Programming Firewall Pipes
Assembly Language Frameworks PLC
Astronomy Game Development PostScript
ATL Games Random Numbers
Audio Genetic Algorithms Report Writer
Barcodes Geometry RPC
Benchmarks GNU Scientific Apps
Bluetooth Graph Algorithms Simulation
Borland C++ Builder Graphics SMTP
Bug Tracking Graphics Editor SNMP
C Compilers Graphics File Format Software Engineering
C# Graphing Source Code Analysis
C/C++ Interpreters GUI Tools Source Code Control
C++ Certification Gurus Source Code Formatting
C++ Class Design Hardware Spam Tools
C++ Coding Standards Hardware Emulation Speech Recognition
C++ Compilers Hardware Interfacing Spell Checker
C++ Resource Links HP-GL Splines
CAD/CAM HTML Tools Spreadsheet
Calendar IDE Standards
Cartography Image Processing Statistics
CGI IMAP STL Programming
Chat Installation Tools String Classes
COM Instant Messaging Style
Communications Internationalization Template Metaprograms
Compiler Tools Internet Testing
Compression Interpreters Text Editors
CORBA Java Text Utilities
Cross-Platform GUI Java vs. C++ Threads
Cross-Reference Language Tools Training
Curses Linux Translators
Data Mining Localization Tutorials
Data Structures Magazines Typography
Database Mailing Lists UML
DCE Make UPS
DCOM Managed C++ USB
Debugging Marketing Users Group
Design Patterns Math Video
DirectX Math Precision Virtual Machines
Disassembler Memory Allocation Virtual Memory
Disk Utilities MFC Virtual Reality
DNS MP3 VxD
Documentation Multimedia Wavelets
DOS Extender Network Web browsers
DSP Neural Network Webservers
DVD Newsgroups Windows
Education Apps NNTP Newsreaders Windows CE
Eiffel vs. C++ Office Apps Winsock
Electrical Eng. OOA/OOD WWW
Emailers OpenGL XML
Embedded Systems Operating Systems XWindows
Encryption Operations Research Year 2000

The Object-Oriented Numerics Page

http://www.oonumerics.org/oon/
这是一个面向对象数值计算相关内容的网站,里面有一些用于科学计算的函数库。
提供了各种函数库的链接和介绍。

OptSolve++ - 非线性优化

http://www.techxhome.com/products/optsolve/

OptSolve++, in development since 1998, quickly brings powerful optimization capabilities to your C++ applications providing developers a more cost effective option than developing from scratch or using unproven solutions. Designed and developed for re-use, OptSolve++ offers a set of scalable and reliable pre-built software libraries that increase your productivity and substantially reduce your schedule and resource risk.

Powerful, standard optimization algorithms; easy-to-use object oriented design
OptSolve++ offers efficient and robust optimization of user-defined merit functions and an easy-to-use object oriented programming API. A canonical interface to the included optimizers is provided, making substituting one optimizer for another straight forward.

Taking full advantage of templating techniques and object-oriented design, OptSolve++ provides maximum flexibility in the choice of argument and return type for the merit function and in the configuration of options for the built-in algorithms.

OptSolve++ allows you to choose between algorithms requiring analytic derivatives and those that do not require gradient information. Functions for estimating numerical derivatives are also available.

With extensible object hierarchies that let you readily implement new algorithms or create a thin interface to existing C or C++ algorithms, OptSolve++ helps accelerate project deployment by reducing the planning, development and testing workload.

OptSolve++ library of nonlinear optimization algorithms

  • Powell - A good choice for problems where the slowness of nonlinear simplex is an issue but a gradient calculation is not available. It is not as robust as nonlinear simplex, but it converges to a solution faster.
  • Conjugate Gradient - Very robust; however, it requires the gradient of the function. A numerical gradient can be used, but as with all numerical approximations accuracy of the solution suffers as a result.
  • Nonlinear Simplex - Very accurate for low-dimensional optimization problems, and since it does not require a gradient calculation it can be used when that information is unavailable or a high-cost function. Nonlinear simplex algorithms are quick to come "in range" of the minimum, but often very slow to provide a high degree of accuracy. This slowness of convergence is a trade off for not using estimations of the function or gradient and the imprecision they include.
  • Levenberg-Marquardt - The de facto standard for nonlinear parametric optimizations.