功峰's profile旋动家族PhotosBlogListsMore Tools Help

Blog


    August 26

    C++的一些免费库

    • Linear Algebra
      • MTL, the Matrix Template Library. Dense and sparse matrices and vectors; banded, symmetric, triangular matrices; basic algorithms. C++.

                 矩阵模版库,紧密和稀疏矩阵、矢量,带状,对称、三角矩阵,基本算法(C++语言)

      • uBLAS, BLAS in C++ with expression templates.

                  表达式模版形式的 C++中的BLAS ,

      • tvmet, a C++ library for "tiny" vectors and matrices with expression templates.

                  小型矢量和矩阵的表达式模版

      • GMM++, generic C++ template library for sparse, dense and skyline matrices, with solvers from ITL.
      • MET, a C++ matrix library with expression templates, which eliminates the overhead of overloaded operators.
      • SL++, the Scientific Library project. Will provide matrices, random numbers, complex, quaternions, plotting, and FFTs. C++.

                 科学计算库,提供矩阵、随机数、复数、四元数,快速复利叶变换(C++语言)

      • Seldon, C++ library for linear algebra with BLAS interface. Many matrix types (sparse, symmetric, hermitian, etc.) are supported.

                  BLAS 线性代数接口,支持 稀疏,对称,共轭矩阵

      • ALP, linear and polynomial algebra. Vectors, matrices, polynomials.
      • SVMT: E. Robert Tisdale's proposal for a standard C++ Scalar, Vector, Matrix and Tensor Class Library (with implementation). Note: this is a proposal, not an official standard.
      • GNUSSL [ftp only], the GNU Scientific Software Library. Linear algebra and arrays. C++.
      • CPPLapack, C++ wrapper for BLAS and LAPACK.
      • Lapack++, C++ wrapper for BLAS and LAPACK.
      • IML++ A C++ template library for numerical iterative methods.
      • MV++ Numerical Matrix/Vector Classes in C++
      • SparseLib++ A library for sparse matrix computations, including the Sparse BLAS (Basic Linear Algebra Subprograms). C++.
      • ISIS++, an object-oriented framework for solving sparse linear systems of equations. C++.
      • ARPACK++, a C++ template library for solving large-scale standard and generalized eigenvalue problems.
      • The Template Numerical Toolkit (TNT) for linear algebra is a successor to the Lapack++, Sparselib++, IML++, and MV++ packages. Its goal is to integrate these ideas into a generic algorithmic library, supporting generic user-defined data types, and increasing its functionality. C++.
      • LinAlg, basic linear algebra and optimization classes. C++.
      • CAM C++ Class Library (Matrix, vector, and graphics classes)
      • Newmat, a C++ matrix library (docs, download)
      • CLHEP includes matrix classes, random number generators for the High Energy Physics (HEP) community. C++.
      • BPKIT, Block Preconditioning Toolkit for iterative solution of linear systems. Callable from C++, C, or FORTRAN.

    • Arrays and Images
      • POOMA II framework for scientific computing on sequential and parallel computers. Provides parallel arrays; fields, meshes, particles to come in version 2.1 (June 1999). C++.
      • The Blitz++ class library: Array and Vector classes which rival Fortran's performance. C++.
      • The AIPS++ Array and Image Classes (Astronomical Information Processing System). C++.
      • Daixtrose, a general-purpose expression template engine.
      • PETE, an expression templates library -- add expression templates to your own array class.
      • SCTL (BlueSail), C++, arrays, matrics, vectors, sparse, rotations.  
      • VIGRA, generic computer vision/image processing library.
      • CPPIMA A C++ image processing library
      • LIMP, Large Image Manipulation Program
      • Image Restoration and Inpainting, C++ library for image restoration.
      • valarray<Troy> [ftp only], approximation of the valarray<T> class described in Ch. 26 of the ANSI/ISO C++ Standard. Uses expression templates for efficient evaluation.
      • Image Understanding Environment (IUE), a DARPA project. C++.
      • WAILI, a wavelet transform library in C++.

    • Neural Networks, genetic algorithms, machine learning, data mining

    • High-Energy Physics and Quantum Chemistry

    • Multiprecision, arbitrary precision data types
      • NTL, arbitrary length integers, vectors/matrices/polynomials over integers and over finite fields.
      • EXTNUM, version of double which has the same number of mantissa bits as IEEE 754, but extends the exponent to have range from 10^-646456993 to 10^646456992.
      • CLN, an extensive number library. Arbitrary precision integer, float, rational, polynomials, complex, modular integers, transcendental functions, assembly language kernels for some CPUs.
      • MUNTL, Multiprecision unsigned number template library (C++).
      • MPFUN++, a multiple precision floating point computation package in C++.
      • LiDIA, A library for computational number theory. Provides a collection of highly optimized implementations of various multiprecision data types and time-intensive algorithms.
      • Apfloat, a C++ High Performance Arbitrary Precision Arithmetic Package
      • hfloat, An arbitrary precision package, optimized for very large (> 1000) (decimal) digit numbers.
      • fPoint, a C++ class which helps convert floating-point arithmetic to fixed-point arithmetic by recommending range and precision requirements.
      • doubledouble, a quad-precision (approximately 30 decimal place) floating point arithmetic class.

    • Differential Equations
      • Rheoolef, finite element environment in C++.
      • EXPDE, a C++ library for solving partial differential equations on semi-unstructured grids. Parallel.
      • PZ, a C++ library for finite elements. 1-3 dimensions with hp-adaptivity, continuous or discontinuous, variety of matrix formats.
      • MBDyn, multibody dynamics analysis in C++. Built-in parallelization via MPI/Metis.
      • P2MESH, 2D finite volume/finite elements, C++ library designed for fast prototyping of high-performance PDE solvers.
      • Femlisp, a Common Lisp framework for Finite Element Methods.
      • GETFEM++, a C++ finite element library, generic, arbitrary dimensions.
      • MOUSE, a C++ library for finite volume computations on unstructured grids.
      • DEAL, a C++ library for adaptive finite elements and error estimation. Supports SMPs.
      • ODE++, a class library for ordinary differential equations. Explicit and linear-implicit ODE systems, IVP and BVP parameters, various solvers (Runge-Kutta, multistep, BDF). [English] [Deutsch]
      • PETSc, object-oriented software for partial differential equations (programmed in C)
      • Diffpack, partial differential equations in C++. ($)
      • TIDE: Classes for Ordinary Differential Equations. Provides vectors and matrices, extrapolation integrator for ODEs, sparse matrix classes, eigenvalues, shooting for two point BVPs, nonlinear solver, continuation
      • BoxLib/CCSE Applications Suite (docs), a class library supporting adaptive mesh refinement (AMR) schemes for computational fluid dynamics.
      • OVERTURE, a C++ class library for solving PDEs in complicated domains. Includes adaptive mesh refinement and overlapping grids.
      • FEMLIB (ftp, www) A Finite Element package [ftp only] by Michael Tiller (BROKEN LINK, no longer supported)

    • Automatic differentiation and interval arithmetic
      • Gaol, C++ library for interval arithmetic. Includes methods for interval constraint solvers.
      • FADBAD-TADIFF, a C++ package for automatic differentiation using any arithmetic (double or interval) by operator overloading.
      • PROFIL/BIAS [English] [Deutsch], a C++ interval arithmetic class library.

    • Visualization

    • Graph Theory/Combinatorics
      • Boost Graph Library, a general purpose, generic C++ library for graph data structures and graph algorithms.
      • GTL, the Graph Template Library (C++).
      • LEDA, a C++ library for graph theory and combinatorial computing.

    • Language interoperability/scripting
      • CPPF77 (cppf77.zip), a utility for interfacing C++ and Fortran 77 programs.
      • Paul Dubois's code for interfacing Python and C++
      • SWIG, generates Perl, Python, Tcl, Java, Eiffel and Guile wrappers for C++ libraries.
      • SILOON (Scripting Interface Languages for Object-Oriented Numerics), toolkits and run-time support for building scripting interfaces to existing numerical codes in C, C++, and Fortran. Generates script bindings for Perl, Tcl, and Python.
      • Matwrap, a tool which generates C++ wrapper code for matrix-oriented scripting languages such as Matlab 5, Octave, and tela.

    • Transforms
      • FFTPACK++, a C++ wrapper for FFTPACK complex routines using LAPACK++ Matrix and Vector classes.
      • The FXT library of transforms. FFTs, Hartley, Number theoretic, Walsh, others coded in C++.

    • Optimization
      • COOOL, an object-oriented optimization library
      • OptSolve++, a C++ optimization library from Tech-X. (commercial)
      • StarFLIP, optimization library for combinatorial problems with fuzzy constraints (C++)
      • LM (Levenberg-Marquardt) implementation in Java for nonlinear least squares problems.

    • Miscellaneous
    • Tools
      • TAU (Tuning and Analysis Utilities), explicit instrumentation of C++ libraries for profiling and tracing. For both serial and parallel codes.


    Compilers
    • Compilers
      • KAI C++, an optimizing compiler from Kuck & Associates (now a division of Intel). Unfortunately, this product has been discontinued.
      • The free GCC (Gnu Compiler Collection) has a good C++ compiler which can be used under unix or windows (with CygWin).
      • Intel's C++ compiler.
      • The Portland Group C++ compiler
      • The MPC++, a massively parallel, message passing, meta-level processing C++.
      • Titanium (free), a dialect of Java for large-scale scientific computing.


      Commercial software
      • Diffpack, a development framework for multi-physics simulations (C++).
      • VectorSpace provides vs.lib (integrable/differentiable objects in C++) and fe.lib (an object-oriented finite element library).
      • NMath provides vector, matrix, complex numbers and math functions for the .NET platform (e.g. C#)
      • macstl, std::valarray implementation using SIMD opcodes (Altivec on PowerPC, SSE/SSE2 on Intel)
      • ExacMath library (quad and double-quad precision floating point math), from Floating Point Software.
      • Math.h++ and LAPACK.h++ from Rogue Wave Software, Inc (LAPACK.h++ is not the same package as Roldan Pozo's LAPACK++ listed above)
      • MtxVec, linear algebra/numerical library for Delphi and C++ Builder.
      • Extreme Optimization Library, numerical library for .NET
      • MAT<LIB> (Matlab compatible C++ Matrix Class Library)
      • C-XSC: A C++ Class Library for Extended Scientific Computing (A C++ interval methods class library)
      • Siscat, C++ software for scattered data approximation
      • JNL, A numerical language/library proposal for Java from Visual Numerics.
      • LIA,GIA,ICE libraries for interval methods in C++ from Delisoft Ltd. Includes interval arithmetic, global optimization, and solving nonlinear equations.
      • AMRES, a C++ library for financial analysis.
      Diffpack, a development framework for multi-physics simulations (C++).
    • VectorSpace provides vs.lib (integrable/differentiable objects in C++) and fe.lib (an object-oriented finite element library).
    • NMath provides vector, matrix, complex numbers and math functions for the .NET platform (e.g. C#)
    • macstl, std::valarray implementation using SIMD opcodes (Altivec on PowerPC, SSE/SSE2 on Intel)
    • ExacMath library (quad and double-quad precision floating point math), from Floating Point Software.
    • Math.h++ and LAPACK.h++ from Rogue Wave Software, Inc (LAPACK.h++ is not the same package as Roldan Pozo's LAPACK++ listed above)
    • MtxVec, linear algebra/numerical library for Delphi and C++ Builder.
    • Extreme Optimization Library, numerical library for .NET
    • MAT<LIB> (Matlab compatible C++ Matrix Class Library)
    • C-XSC: A C++ Class Library for Extended Scientific Computing (A C++ interval methods class library)
    • Siscat, C++ software for scattered data approximation
    • JNL, A numerical language/library proposal for Java from Visual Numerics.
    • LIA,GIA,ICE libraries for interval methods in C++ from Delisoft Ltd. Includes interval arithmetic, global optimization, and solving nonlinear equations.
    • AMRES, a C++ library for financial analysis.
    KAI C++, an optimizing compiler from Kuck & Associates (now a division of Intel). Unfortunately, this product has been discontinued.
  • The free GCC (Gnu Compiler Collection) has a good C++ compiler which can be used under unix or windows (with CygWin).
  • Intel's C++ compiler.
  • The Portland Group C++ compiler
  • The MPC++, a massively parallel, message passing, meta-level processing C++.
  • Titanium (free), a dialect of Java for large-scale scientific computing.

    Commercial software
    • Diffpack, a development framework for multi-physics simulations (C++).
    • VectorSpace provides vs.lib (integrable/differentiable objects in C++) and fe.lib (an object-oriented finite element library).
    • NMath provides vector, matrix, complex numbers and math functions for the .NET platform (e.g. C#)
    • macstl, std::valarray implementation using SIMD opcodes (Altivec on PowerPC, SSE/SSE2 on Intel)
    • ExacMath library (quad and double-quad precision floating point math), from Floating Point Software.
    • Math.h++ and LAPACK.h++ from Rogue Wave Software, Inc (LAPACK.h++ is not the same package as Roldan Pozo's LAPACK++ listed above)
    • MtxVec, linear algebra/numerical library for Delphi and C++ Builder.
    • Extreme Optimization Library, numerical library for .NET
    • MAT<LIB> (Matlab compatible C++ Matrix Class Library)
    • C-XSC: A C++ Class Library for Extended Scientific Computing (A C++ interval methods class library)
    • Siscat, C++ software for scattered data approximation
    • JNL, A numerical language/library proposal for Java from Visual Numerics.
    • LIA,GIA,ICE libraries for interval methods in C++ from Delisoft Ltd. Includes interval arithmetic, global optimization, and solving nonlinear equations.
    • AMRES, a C++ library for financial analysis.
    Diffpack, a development framework for multi-physics simulations (C++).
  • VectorSpace provides vs.lib (integrable/differentiable objects in C++) and fe.lib (an object-oriented finite element library).
  • NMath provides vector, matrix, complex numbers and math functions for the .NET platform (e.g. C#)
  • macstl, std::valarray implementation using SIMD opcodes (Altivec on PowerPC, SSE/SSE2 on Intel)
  • ExacMath library (quad and double-quad precision floating point math), from Floating Point Software.
  • Math.h++ and LAPACK.h++ from Rogue Wave Software, Inc (LAPACK.h++ is not the same package as Roldan Pozo's LAPACK++ listed above)
  • MtxVec, linear algebra/numerical library for Delphi and C++ Builder.
  • Extreme Optimization Library, numerical library for .NET
  • MAT<LIB> (Matlab compatible C++ Matrix Class Library)
  • C-XSC: A C++ Class Library for Extended Scientific Computing (A C++ interval methods class library)
  • Siscat, C++ software for scattered data approximation
  • JNL, A numerical language/library proposal for Java from Visual Numerics.
  • LIA,GIA,ICE libraries for interval methods in C++ from Delisoft Ltd. Includes interval arithmetic, global optimization, and solving nonlinear equations.
  • AMRES, a C++ library for financial analysis.
  • 风波

    早上洗脚出门,顺便把鞋子给洗了下!
    走在半路上,我低头一看,吓了一跳,不知道怎么搞的,满脚的泡沫。
    天呢,丢大了。
    赶紧走路先,边走边甩脚,真是可恶!
    好不容易捱到公司,我去了不下十次厕所,还是没洗干净!
    于是一不做二不休,换拖鞋!我阴干你个破鞋子!
    看你还干跟我吐泡泡....
    等着它干.....
    August 08

    2008年8月8日8点 奥运

    今天是奥运开幕的日子,是我们北京举办奥运的日子!
     
    昨天晚上折腾个电脑到凌晨四点,早上很早就起床了。为嘛?为的是早早的回家看奥运开幕!
     
    这几天心里总是暖暖的,感到一阵喜悦,不知道为什么,有点要过年的味道,又有种家里来客人的感觉!
     
    预祝奥运圆满成功,预祝我们国家可以取得更多的金牌!
     
    August 02

    一生相随 转

    Life Together
    One fine day, an old couple around the age of 70, walks into a lawyer’s office. Apparently, they are there to file a divorce. Lawyer was very puzzled, after having a chat with them, he got their story.
    This couple had been quarreling all their 40 over years of marriage nothing ever seems to go right.
    They hang on because of their children, afraid that it might affect their up-bringing. Now, all their children have already grown up, have their own family, there’s nothing else the old couple have to worry about, all they wanted is to lead their own life free from all these years of unhappiness from their marriage, so both agree on a divorce.
    Lawyer was having a hard time trying to get the papers done, because he felt that after 40 years of marriage at the age of 70, he couldn’t understand why the old couple would still wants a divorce.
    While they were signing the papers, the wife told the husband. “I really love you, but I really can’t carry on anymore, I’m sorry.”
    “It’s OK, I understand.” said the husband. Looking at this, the lawyer suggested a dinner together, just three of them, wife thought, why not, since they are still going be friends.
      At the dining table, there was a silence of awkwardness.
    The first dish was roasted chicken, immediately, the old man took the drumstick for the old lady. “Take this, it’s your favorite.”
    Looking at this, the lawyer thought maybe there’s still a chance, but the wife was frowning when she answer. “This is always the problem, you always think so highly of yourself, never thought about how I feel, don’t you know that I hate drumsticks?”
    Little did she know that, over the years, the husband have been trying all ways to please her, little did she know that drumsticks was the husband’s favorite.
    Little did he know that she never thought he understand her at all, little did he know that she hates drumsticks even though all he wants is the best for her.
    That night, both of them couldn’t sleep, toss and turn, toss and turn. After hours, the old man couldn’t take it anymore, he knows that he still loves her, and he can’t carry on life without her, he wants her back, he wants to tell her, he is sorry, he wanted to tell her, “I love you.”
    He picks up the phone, started dialing her number. Ringing never stops. He never stop dialing.
    On the other side, she was sad, she couldn’t understand how come after all these years, he still doesn’t understand her at all, she loves him a lot, but she just can’t take it any- more. Phone’s ringing, she refuses to answer knowing that it’s him. “What’s the point of talking now that it’s over. I have asked for it and now. I want to keep it this way, if not I will lose face. “She thought. Phone still ringing. She has decided to pull out the cord.
    Little did she remember, he had heart problems.
    The next day, she received news that he had passed away. She rushed down to his apartment, saw his body, lying on the couch still holding on to the phone. He had a heart attack when he was still trying to get thru her phone line.
    As sad as she could be. She will have to clear his belongings. When she was looking thru the drawers, she saw this insurance policy, dated from the day they got married, beneficiary is her. Together in that file there’s this note.
    “To my dearest wife, by the time you are reading this, I’m sure I’m no longer around, I bought this policy for you, though the amount is only $100k, I hope it will be able to help me continue my promise that I have made when we got married, I might not be around anymore, I want this amount of money to continue taking care of you, just like the way I will if I could have live longer. I want you to know I will always be around, by your side. I love you.”
    Tears flowed like river.
    When you love someone, let them know. You never know what will happen the next minute. Learn to build a life together. Learn to love each other for who they are,Not what they are.
    【中文译文】:
      在一个阳光明媚的日子里,一对70多岁的老夫妇走进了律师事务所。显然地,他们准备到那儿办理离婚手续。律师对这对年老的夫妇提出要离婚的事感到非常困惑。后来,跟他们交谈了之后,他得知他们之间有这样一段故事:
    这对夫妇从40年前结婚之日起就一直吵个不停。他们似乎找不到共同点,一切在他们看来都格格不入。   
      由于担心他们的离婚会给孩子的成长带来不良影响,这对老夫妇把离婚的事搁浅到现在。现在,他们的孩子都长大成人了,也有他们各自的家庭了。于是,这对老夫妇再也没有什么事可以担忧的了。他们现在渴望的就是过各自的生活,免受这些年来婚姻带给他们的种种不幸。正因为这样,两个老人都赞同通过离婚解决事情的争端。
          律师极其艰难地为他们拟造了一份离婚协议书,因为他觉得,经过婚后40年的相濡以沫现在两个老人都70多岁了,他就是弄不明白为什么这对老夫妇仍然坚持要离婚。
      当他们签署文件时,老夫人遗憾地告诉丈夫:“我真的很爱你,但我再也不能忍受下去了,我非常抱歉。”
        “没有关系,我理解。”她的丈夫有点悲伤地回答道。看到他们夫妇还有一线挽救的希望,律师于是建议他们三个人一起去吃顿晚餐。就他们三个人,老夫人想道,为什么不呢,反正他们很快就成为朋友了。
        餐桌上,这对夫妇沉默不语,尴尬的气氛顿时弥漫开来。
        第一道菜是烤鸡。立刻地,老夫人的丈夫夹了一个鸡腿给她说道:“尝尝这个,我知道你最喜欢吃鸡腿了。”
     见到这种情景,律师心想,他们相亲相爱到这个地步本不应该提出离婚的。然而,出奇意料的是,当老夫人接过丈夫所夹的菜时,眉毛却很不自然地皱了一下答道:“这就是问题所在,你总是自以为是,从来没有顾及过我的感受,难道你就不知道我很讨厌吃鸡腿吗?”
      她一点也不清楚,这些年来,她的丈夫一直使尽办法讨她开心;她一点也不知道,鸡腿是她丈夫最喜爱吃的食物。
         他一点也不清楚,他的妻子会认为他完全不了解她;他一点也不知道,他妻子讨厌吃鸡腿,尽管他把自己最喜爱吃的都给了她。
         那天晚上,两个老人都睡不着,各自在自己的床上辗转反侧,辗转反侧。挣扎了几个小时后,老夫人的丈夫终于忍耐不住,他发觉他仍然深爱着老夫人。他的生活不能没有老夫人,他要她回来,他要亲口告诉她,“我很抱歉;”他要亲口告诉她,“我爱你。”
        于是,他拿起电话,开始按老夫人的电话号码,铃声响个不停,但另一边却没人接。尽管对方不接通他的电话,他还是一直不停地在按着重拔键。
        另一方面,老夫人也很伤心,她搞不清楚为什么经过多年来的相处她丈夫仍然一点都不了解她。事实上,她也非常爱她的丈夫,但她再也不愿意跟他一起生活了。电话铃声在响,老夫人知道是她丈夫打来的,但她心意已决不再接他的电话。 “现在谈论还有什么意思呢?我和你的感情已经结束了。当初,第一次提出离婚的人是我,那我现在也得保持这种现状。要不然,你会说我反悔,那我岂不是很丢脸。对,对,就这样下去。”老夫人心想道。电话铃声仍然在响,她于是索性把电话线拉开了。
      悲剧就这样发生了,她一点也不曾记起,她的丈夫有心脏病。
         第二天早上,老夫人得知她丈夫昨晚已逝世的消息。她径直向他的公寓里跑去,发现死后的丈夫躺在沙发上,手里仍然拿着电话。那天晚上,当她的丈夫试图接通她的电话时,心脏病突然发作,他就这样离开了她。
      尽管她很悲伤,老夫人仍不得不亲自动手清理他的遗物。当老夫人认真细致地翻着一个抽屉时,她发现了一张保险单。保险日期从他们结婚之日起算起,毫无疑问,保险受益人是她。在这个文件夹里,还有一份就是她丈夫亲手写的遗嘱,里面说道:
      “献给我最亲爱的妻子:当你读着这封遗嘱的时候,我确信我已不在人间。我为你买了这份保险。虽然金额总数才区区100英磅,但我希望它能帮助我继续履行我们结婚时我所起的照顾你一生一世的诺言。我不能再陪你一起度过你的余生,但我希望保险金额里的钱能够帮助我实现照顾你后半生生活的愿望,就像我可以重生的话那样照顾你。我同时也想让你知道,我会一直在你的周围,在你的身边,保护你关心你,我爱你!”
      老夫人读着读着,泪水如小河流水般奔涌而出。
      当你爱着一个人的时候,务必要让他们知道,因为你永远不知道下一分钟将会发生什么事。学会一起生活,学会互爱,不是他们是你的什么,而是他们是你的谁.
    August 01

    2008年8月1日 建军节

    今天是建军节,距离奥运会开幕一而就只剩下7天了!
    今天还是我拿到驾照四个月的纪念日,只是很可惜,一直没有钱来买属于自己的小汽车。
     
    努力,赚钱!
     
    好消息,下周三,EF测试。