**SciDart** is an experimental cross-platform scientific platform for Dart.

The main goal of **SciDart** is run the main module where Dart can run, in other words, run on Flutter, Dart CLI, Dart web, etc. Beside, offer tools to help the data analysis.

Some time ago I tried make a guitar tuner (frequency estimator) with Flutter and, I faced with the problem: Dart didn't have a unified scientific library. So, I tried implement something to help me and the community with this problem.

The **SciDart** are the combination of the following modules:

**SciDart**: main library with all the numerical processing routines. It can run everywhere (Github / PUB);**SciDart IO**: library to handle data files, for now, was made to run only in Desktop (Github / PUB);**SciDart Plot**: library to plot the data (Github / PUB);

Choose your package and following the instructions in the PUB website.

- NumDart: Numerical computation libraries;
- array_base: array manipulation;
- calculus: calculus base;
- constants: scientific constants;
- fastmath: optimized math operations;
- geometric: geometric related operations;
- interpolation: discrete function interpolation;
- linalg: linear algebra algorithms: matrix, decomposition, etc;
- numbers: numeric functions that are missing in Dart by default: Complex, double truncation, etc;
- polynomial: polynomial estimation, regression, etc;
- random: random data generation;
- spaces: vector linear spaces generators: arrange, ones, linspace, etc;
- statistic: statistic computation;
- time: execution time measurement;
- SciDart: Scientific computation libraries;
- fftpack: fourier transformer tools;
- dbfft
- fft
- fftfreq
- rfft

- signal: signal manipulation tools;
- convolution
- fir
- lfilter
- peaks
- windows

- special: special functions;
- bessel

- IO: File manipulation libraries;
- csv: CSV file manipulation;
- txt: text file manipulation;

Plot types:

Bar plot (code):

Dot plot (code):

Line plot (code):

Stem plot (code):

Pie plot (code):

Plot export formats: SVG string that can saved or redered anywhere;

Dart don't have REPL by default, but I found this amazing post from Andreas Kirsch and He implemented an experimental Dart REPL but the current library don't support Dart SDK > 2.0.0. So, I decided to leave this work pending for now.

I recommend check the **Projects** section and choose a task or choose and solve a problem with **SciDart** and
implement the missing parts and read the file CONTRIBUTING.md.

The reference values for all functions came from with SciPy. The contributions need use SciPy as reference too.

Every contribution need to have tests, documentation and examples, otherwise, the pull request will be blocked.

SciDart is an open source project that runs on donations to pay the bills e.g. our domain name. If you want to support SciDart, you can โ **buy a coffee here**.

Below, the list of the main references of **SciDart**:

- SciPy: https://www.scipy.org/
- Jupyter: https://jupyter.org/
- JAMA A Java Matrix Package: https://math.nist.gov/javanumerics/jama/
- Commons Math The Apache Commons Mathematics Library: https://commons.apache.org/proper/commons-math/
- Rosetta code: https://rosettacode.org/

Copyright (c) 2019-present Angelo Polotto and Contributors. Scidart is free and open-source software licensed under the Apache-2.0 License. The official logo was created by Juliano Polotto and distributed under Creative Commons license (CC BY-SA 4.0 International).