{"id":20999876,"url":"https://github.com/brentseidel/numerical","last_synced_at":"2026-01-02T00:05:43.743Z","repository":{"id":184878487,"uuid":"672617934","full_name":"BrentSeidel/Numerical","owner":"BrentSeidel","description":"A collection of Generic Ada packages for basic numerical analysis","archived":false,"fork":false,"pushed_at":"2024-11-05T17:36:54.000Z","size":4078,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-20T09:32:33.892Z","etag":null,"topics":["ada","numerical-analysis","numerical-integration","numerical-methods"],"latest_commit_sha":null,"homepage":"","language":"Ada","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BrentSeidel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-30T17:31:36.000Z","updated_at":"2024-11-05T17:36:59.000Z","dependencies_parsed_at":"2024-05-19T04:26:51.170Z","dependency_job_id":"2acb3aa5-05e1-411c-b127-f73ef197838e","html_url":"https://github.com/BrentSeidel/Numerical","commit_stats":null,"previous_names":["brentseidel/numerical"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrentSeidel%2FNumerical","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrentSeidel%2FNumerical/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrentSeidel%2FNumerical/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrentSeidel%2FNumerical/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BrentSeidel","download_url":"https://codeload.github.com/BrentSeidel/Numerical/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243417513,"owners_count":20287657,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ada","numerical-analysis","numerical-integration","numerical-methods"],"created_at":"2024-11-19T08:08:46.094Z","updated_at":"2026-01-02T00:05:43.715Z","avatar_url":"https://github.com/BrentSeidel.png","language":"Ada","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Numerical\nThis will contain a collection of Ada (and possibly lisp, if I get really\nambitious) packages for numerical operations.\n\n# Warning\nDon't blindly trust these or any other numerical methods.  You need to\nunderstand your problem and how computers do arithmatic.\n\nA rough outline of what I plan is below.  Obviously, this will be subject\nto change.  I expect that most, if not all of these packages will be generic\nso that they can be used on different numerical types.\n\n##  Complex Numbers\nIn general, you should probably use the complex package in the Ada standard\nnumerics library.  This is more of a practice run for me.  The one difference\nis that complex numbers are a tagged record so that object notation can be used\nfor some of the operations, if that's important to you.\n\n##  Differential Equations\nThese are basic algorithms for finding numerical solutions to differential\nequations.\n\nthe implemented algorithms are:\n* Euler's method\n* 4th order Runge-Kutta\n* 4/5th order Runge-Kutta-Fehlberg\n* 4th order Adams-Bashforth/Adams-Moulton\n* 4th order Runge-Kutta for systems of differential equations\n* Stormer/Verlet method for conservative 2nd order differential equations\n\n## Filtering\nThis provides an averaging filter to help smooth data.  More routines may\nbe added later.\n\n##  Functions\nThese are special functions not included with Ada's elementary functions\nthat are useful or needed by other routines here.\n* gamma2n - Divides the positive integer argument by two and computes the gamma function.  Used to support chi^2.\n* lngamma2n - Natural log of gamma2n.  Allows larger values of n without overflow.\n* lngamma - Natural log of gamma.  This allows positive real arguments\n* gammaP - Regularized incomplete upper Gamma function.\n* gammaQ - Regularized incomplete lower Gamma function.\n* erf - Error function.  This is computed using gammaP\n* erfc - Complementary error function.  This is computed using gammaQ.\n* beta - The beta function\n* lnbeta - The natural log of the beta function\n* factorial - Computes the factorial of n.\n* lnfact - Computes the natural log of the factorial of n allowing larger values of n without overflow.\n* nChoosek - Computes binomial coefficent based on n and k.\n\n##  Integration\nImplemented algorithms are:\n* Midpoint method\n* Composite trapezoid\n* Adaptive trapezoid\n* Composite Simpson's\n* Adaptive Simpson's\n* Romberg's method\n\n## Interpolation\nThese methods construct a polynomial that passes through the provided points.\nGenerally these are most accurate within the range of the provided points.\nThere is a danger of oscillation with higher order polynomials.\n\nImplemented algorithms are:\n* Lagrange 2 point (linear)\n* Lagrange 3 point (quadratic)\n* Lagrange 4 point (cubic)\n* Lagrange 5 point (quartic)\n\n##  Numerical Derivatives\nThese operations can easily cause trouble if you don't understand your\nproblem and computer arithmatic.  The core of taking a derivative involves\nsubtracting two nearly equal numbers and dividing by a small number.  This\nhas the effect of amplifying round-off errors.  Avoid these operations, if\nyou can.\n* 2 point method\n* 3 point methods\n* 5 point methods\n\n## Plotting\nRoutines are now available for drawing linear scaled plots.  The output\nis a file in either SVG or LaTeX (with tikz) format.\n\n##  Polynomials (real and complex)\nA polynomial is implemented as an array with the lower index value set to 0.  The index represents\nthe exponent for the independant variable and the array value at that index is the coefficient.\n\nImplemented operations include\n* Addition and subtraction of polynomials\n* Multiplication of polynomial by a scalar\n* Multiplication of polynomial by polynomial\n* Division of polynomial by polynomial\n* Evaluation of polynomial\n* Integral of polynomial\n* Derivative of polynomial\n\n## Random Numbers\nPseud-Random Number Generators implemented are\n* Linear Congruent Generator with settable parameters\n* Mersenne Twister (MT19937 algorithm)\n\n##  Regression\nSimple linear regression is implemented.\n\n##  Root Finding\nThese are used to find roots (zero crossings) of functions.  There are a number\nof different methods with diffrent pros and cons.  It is important to understand\nthe nature of the function before selecting the root finding algorithm.\n\nThe implemented algorithms are:\n* Bisection\n* Secant\n* Mueller (versions for real roots and complex roots)\n\n##  Quaternions\nSome basic operations are implemented.\n\n## Statistics\nSome basic functions are implemented for analyzing data\n*  Mean\n*  Variance\n*  Limits\n\nThe following probability distribution are implemented\n* Chi^2 (PDF and CDF)\n* Exponential (PDF and CDF)\n* Normal (PDF and CDF)\n* Poisson (PMF)\n* Student's T (PDF and CDF)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrentseidel%2Fnumerical","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrentseidel%2Fnumerical","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrentseidel%2Fnumerical/lists"}