{"id":19829675,"url":"https://github.com/dyalog/math","last_synced_at":"2026-02-07T10:01:34.208Z","repository":{"id":81318498,"uuid":"46929324","full_name":"Dyalog/Math","owner":"Dyalog","description":"Math workspace and libraries for Dyalog APL","archived":false,"fork":false,"pushed_at":"2024-08-15T09:17:32.000Z","size":10276,"stargazers_count":14,"open_issues_count":1,"forks_count":0,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-07-18T17:23:19.728Z","etag":null,"topics":["dyalog-apl","dyalog-library","eigen","eigen-vector-decomposition","eigenvalues","eigenvectors","fast-fourier-transform","fftw","lapack","library","math","math-workspace","mathematics","namespace"],"latest_commit_sha":null,"homepage":null,"language":"Fortran","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Dyalog.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":"2015-11-26T13:49:02.000Z","updated_at":"2024-11-08T02:26:54.000Z","dependencies_parsed_at":"2025-01-11T09:56:02.618Z","dependency_job_id":null,"html_url":"https://github.com/Dyalog/Math","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/Dyalog/Math","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dyalog%2FMath","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dyalog%2FMath/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dyalog%2FMath/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dyalog%2FMath/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Dyalog","download_url":"https://codeload.github.com/Dyalog/Math/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dyalog%2FMath/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29191991,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T07:37:03.739Z","status":"ssl_error","status_checked_at":"2026-02-07T07:37:03.029Z","response_time":63,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["dyalog-apl","dyalog-library","eigen","eigen-vector-decomposition","eigenvalues","eigenvectors","fast-fourier-transform","fftw","lapack","library","math","math-workspace","mathematics","namespace"],"created_at":"2024-11-12T11:19:32.962Z","updated_at":"2026-02-07T10:01:34.176Z","avatar_url":"https://github.com/Dyalog.png","language":"Fortran","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `Math` – a namespace of mathematical functions and libraries for Dyalog APL\n\nThis repository contains a Math namespace for Dyalog APL with functions for\nfinding eigenvalues, eigenvectors and discrete Fourier transforms.\n\nThese functions are implemented as calls into shared libraries. Source code and\nbuild scripts for the libraries are included.\n\n## Using the namespace\n\nDownload an appropriate `Math-*.zip` from the releases page and extract the\nfiles somewhere on your computer.\n\nIn order for Windows to find the DLLs you'll have to put them:\n\n* in the current directory (this might be determined by the properties of the\nshortcut you use to start Dyalog), or\n* in the directory containing the Dyalog executable `dyalog.exe`, or\n* somewhere on your `%PATH%`.\n\nNow import the namespace using e.g. `]get path/to/Math.dyalog` or `⎕FIX'file://path/to/Math.dyalog'`.\n\nThe functions in this namespace include complex arithmetic. Dyalog\nrepresents complex numbers *a+bi* as `aJb`.\n\n### `Eigen`\n\nMonadic function `Eigen` takes an n×n real or complex matrix and returns\nan (n+1)×n result of Eigen: `Values⍪⍉↑Vectors`:\n\n    ┌───┬───┬───┬───┐\n    │  v a l u e s  │  ── Eigen values\n    ├───┼───┼───┼───┤\n    │ v │ v │ v │ v │  ┐\n    ├ e ┼ e ┼ e ┼ e ┤  │\n    │ c │ c │ c │ c │  │\n    ├ t ┼ t ┼ t ┼ t ┤  ├─ Eigen vectors.\n    │ o │ o │ o │ o │  │\n    ├ r ┼ r ┼ r ┼ r ┤  │\n    │   │   │   │   │  ┘\n    └───┴───┴───┴───┘\n\n`Eigen` has been constructed from LAPACK (Linear Algebra Package) double-\nprecision C functions which are available as source code from\nwww.netlib.org/lapack\n\nLAPACK.DLL contains these C functions. They can all be called individually\nthrough `⎕NA`. You need to examining each function's parameters in the\ncorresponding *.C file (downloaded from the internet) in order to correctly\nspecify their result and argument types.\n\nFor example, look at the `⎕NA` call for `dgeev_` in `Eigen`. Compare this with\nthe parameters specified in file DGEEV.C . All the other double-precision\nreal and complex LAPACK functions can be called in this way using `⎕NA`.\n\nTrace the following line in order to see `Eigen` in action:\n\n      test.eigen    ⍝ run and trace 10 times\n\n### `Domino`\n\n`Domino` is a cover function for APL's primitive `⌹` function.\nIt has been included for backwards compatibility with the Math workspace\nwhich was supplied with previous versions of Dyalog APL.\n\nTrace the following line in order to see `Domino` in action:\n\n      test.domino   ⍝ run and trace\n\n### `Fourier`\n\n`Fourier` takes a real or complex array right argument.\nThe left argument signifies:\n\n 1: Fourier Transform (default).  \n¯1: Inverse Fourier Transform.\n\n`Fourier` has been constructed from FFTW (the Fastest Fourier Transform\nin the World). The FFTW source code of C functions is available from\nwww.fftw.org\n\nThe FFTW.DLL contains all these functions. They can be called individually\nthrough `⎕NA` after examining each function's parameters in the FFTW\ndocumentation.\n\nCheck that\n\n      {⍵=¯1 Fourier Fourier ⍵}↓?((5?5),2)⍴100\n\nTrace the following line in order to see `Fourier` in action:\n\n      test.fourier   ⍝ run and trace\n\nNote that C cover functions dft and idft have been added to the DLL.\n\nThese functions are:\n\n```\n// dft.c discrete fourier transform\n\n#include \u003cfftw.h\u003e\n\nvoid dft(int *rank, const int *shape, double *data)\n{\n   fftwnd_plan plan;\n   plan = fftwnd_create_plan(*rank, shape, FFTW_FORWARD, FFTW_IN_PLACE);\n   fftwnd_one(plan, (void*)data, 0);\n   fftwnd_destroy_plan(plan);\n}\n\n// idft.c inverse discrete fourier transform\n\n#include \u003cfftw.h\u003e\n\nvoid idft(int *rank, const int *shape, double *data)\n{\n   fftwnd_plan plan;\n   plan = fftwnd_create_plan(*rank, shape, FFTW_BACKWARD, FFTW_IN_PLACE);\n   fftwnd_one(plan, (void*)data, 0);\n   fftwnd_destroy_plan(plan);\n}\n\nTo see an example of these functions, type:\n\n      test.eigen ⋄ test.domino ⋄ test.fourier\n```\n\n## Building the libraries\n\nThe supported build configurations are:\n* Linux (x86 and x86-64)\n* Cross-compiling from Linux to Windows (x86 and x86-64)\n\nTo build natively:\n\n* install some 32- and 64-bit Fortran compilers with\n`sudo apt-get install gfortran-multilib`\n* `cd` into the root of the repository\n* type `make -f Makefile.linux` to make `Math-linux.zip`\n\nTo cross-compile (tested on Ubuntu 17.04):\n\n* install some cross-compilers with\n`sudo apt-get install gfortran-mingw-w64`\n* `cd` into the root of the repository\n* type `make -f Makefile.windows` to make `Math-windows.zip`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdyalog%2Fmath","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdyalog%2Fmath","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdyalog%2Fmath/lists"}