Note: This website is archived. For up-to-date information about D projects and development, please visit wiki.dlang.org.

Changes between Version 28 and Version 29 of WikiStart

Show
Ignore:
Author:
kyllingstad (IP: 80.202.209.213)
Timestamp:
12/17/13 06:47:54 (10 years ago)
Comment:

Removing old text

Legend:

Unmodified
Added
Removed
Modified
  • WikiStart

    v28 v29  
    1 = Important notice = 
    2 '''SciD has moved to !GitHub! ''' Please go to [https://github.com/kyllingstad/scid/wiki the new project page]. 
    3  
    4 The text below and the code in the dsource repository will no longer be updated. 
    5  
    6  
    7 = SciD = 
    8 SciD is a collection of numerical routines and bindings written in and for the D programming language. Currently, the collection is rather small (see below) but expanding. 
    9  
    10 For the time being, SciD simply aims to be a freely usable repository of numerical algorithms. 
    11 The long-term goal is to ultimately produce a full-fledged, general-purpose scientific library à la [http://www.gnu.org/software/gsl/ the GNU Scientific Library] and [http://www.scipy.org SciPy]. 
    12  
    13  
    14 == Status == 
    15  * (2010-11-03) SciD now compiles with DMD 2.050. 
    16  
    17  
    18 == Contents == 
    19 Below is a list of the main modules.  Click on the links to get to the documentation (updated 2010-07-22). 
    20  * [http://www.kyllingen.net/code/scid/doc/scid_calculus.html scid.calculus]: Numerical integration (quadrature) and differentiation. 
    21  * [http://www.kyllingen.net/code/scid/doc/scid_constants.html scid.constants]: Fundamental constants of mathematics and Nature. 
    22  * [http://www.kyllingen.net/code/scid/doc/scid_exception.html scid.exception]: Contains the !NumericsException class, thrown when an algorithm fails. 
    23  * [http://www.kyllingen.net/code/scid/doc/scid_functions.html scid.functions]: Special functions. 
    24  * [http://www.kyllingen.net/code/scid/doc/scid_linalg.html scid.linalg]: Linear algebra functions, i.e. user-friendly interfaces to LAPACK. 
    25  * [http://www.kyllingen.net/code/scid/doc/scid_matrix.html scid.matrix]: Contains the !MatrixView type, which is a LAPACK-compatible matrix view of ordinary D arrays, as well as some utility functions. 
    26  * [http://www.kyllingen.net/code/scid/doc/scid_nonlinear.html scid.nonlinear]: Contains a method for solving nonlinear equations sets. In the future, algorithms for nonlinear least-squares problems should be added. 
    27  * [http://www.kyllingen.net/code/scid/doc/scid_types.html scid.types]: Useful types. (Right now, just the Result type, which contains the result and absolute error of a calculation.) 
    28  * [http://www.kyllingen.net/code/scid/doc/scid_util.html scid.util]: Stuff that doesn't fit anywhere else. 
    29  
    30 There are also a few subpackages (click one of the links above and you'll find the API docs for these in the package tree): 
    31  * scid.core: Things that are not directly related to numerics. 
    32  * scid.bindings: Bindings to third-party libraries. Currently only contains the BLAS and LAPACK bindings by Bill Baxter. (Thanks, Bill!) 
    33  * scid.ports: This is where a lot of the action actually takes place. This package contains ports of FORTRAN and C code from various sources, mainly Netlib. It's been ported it using a "get it to work - NOW" philosophy, and as such a lot of it is just FORTRAN code written with D syntax. 
    34  
    35  
    36 == Requirements == 
    37  * DMD >=2.049 
    38  * BLAS and LAPACK libraries 
    39  
    40  
    41 == Installation == 
    42 Currently, the only way to get SciD is to download the development version from the repository.  SciD uses [http://git-scm.com/ Git] for version control, so to download the code, use the following command: 
    43 {{{ 
    44   git clone http://git.dsource.org/projects/scid/ 
    45 }}} 
    46 This will create a new directory named 'scid' containing a duplicate of the SciD repository.  When you have already cloned the repository and want to update it with the latest changes, run: 
    47 {{{ 
    48   git pull 
    49 }}} 
    50  
    51 To build SciD, use the D program {{{build.d}}}, found in the root directory of the repository.  The best way to run it is using the ''rdmd'' program which is bundled with the DMD compiler.  To build the library and generate header files, run: 
    52 {{{ 
    53   rdmd build 
    54 }}} 
    55 To generate the documentation, run: 
    56 {{{ 
    57   rdmd build html 
    58 }}} 
    59 The generated files can be found in the {{{generated/}}} subdirectory.  Currently, further installation must be done manually, but this will improve soon. 
    60  
    61  
    62 == Performance == 
    63 For numerical code, performance is key. However, there are enough libraries that provide awesome performance behind a butt-ugly API, so SciD need not go down that road. The design priorities are therefore, in order, 
    64  1. Correctness: Make the code work, and make it produce correct results. 
    65  2. User-friendliness: Give the code a nice API. 
    66  3. Performance: Optimise the code. 
    67 Luckily, D is the perfect programming language for hiding high-performance code behind a beautiful API, so ultimately SciD should be able to provide as good performance as other libraries. 
    68  
    69  
    70 == Contributing == 
    71 As stated in the introduction, a goal of SciD is to become a community project. Contributors are very welcome, so if you want to participate, let me know. 
    72  
    73 Here's a small tip: There is a lot of established and ''extremely'' well tested numerical code lying around the Internet, just waiting to be ported to D. A lot of it is in the public domain, so we are free to use it in any way we want. Instead of spending a lot of time re-inventing the wheel, port some existing code and try to improve on it when you get it working. 
    74  
    75 Here are a few starting points: 
    76  * [http://www.netlib.org/ Netlib] - the ultimate source of numerics software. It contains hundreds (thousands?) of algorithms, mainly written in FORTRAN, but you'll also find some C code there. The code is organised by (not-always-so-intuitive) package names only, therefore it is nice to have... 
    77  * [http://gams.nist.gov/ GAMS] - the Guide to Available Mathematical Software, which indexes and categorises the code in Netlib and a bunch of other sources. 
    78  
    79 This is an incomplete list of things which should at some point be added to SciD: 
    80  * Statistics (see David Simcha's [http://www.dsource.org/projects/dstats dstats] library) 
    81  * Machine learning 
    82  * Optimisation 
    83  * Plotting 
    84  * Basic image I/O and processing 
    85  * Special functions 
    86  * Fourier transforms 
    87  * Monte Carlo methods 
    88  * Series 
    89  * Least-squares fitting 
    90  * Differential and integral equations 
    91  
    92  
    93 == Questions? == 
    94 Send me an e-mail at dsource-at-kyllingen-dot-net.  
    95  
    96 ''-Lars Tandle Kyllingstad'' 
     1SciD has moved to !GitHub! Please go to [https://github.com/kyllingstad/scid/wiki the new project page]. The code in the dsource.org repository is no longer maintained.