{"action":"created","issue":{"url":"https://api.github.com/repos/iraikov/chicken-lapack/issues/2","labels_url":"https://api.github.com/repos/iraikov/chicken-lapack/issues/2/labels{/name}","comments_url":"https://api.github.com/repos/iraikov/chicken-lapack/issues/2/comments","events_url":"https://api.github.com/repos/iraikov/chicken-lapack/issues/2/events","html_url":"https://github.com/iraikov/chicken-lapack/issues/2","id":56923718,"number":2,"title":"Adding Eigen solution driver routines to egg.","user":{"login":"ThatGeoGuy","id":5060863,"avatar_url":"https://avatars.githubusercontent.com/u/5060863?v=3","gravatar_id":"","url":"https://api.github.com/users/ThatGeoGuy","html_url":"https://github.com/ThatGeoGuy","followers_url":"https://api.github.com/users/ThatGeoGuy/followers","following_url":"https://api.github.com/users/ThatGeoGuy/following{/other_user}","gists_url":"https://api.github.com/users/ThatGeoGuy/gists{/gist_id}","starred_url":"https://api.github.com/users/ThatGeoGuy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ThatGeoGuy/subscriptions","organizations_url":"https://api.github.com/users/ThatGeoGuy/orgs","repos_url":"https://api.github.com/users/ThatGeoGuy/repos","events_url":"https://api.github.com/users/ThatGeoGuy/events{/privacy}","received_events_url":"https://api.github.com/users/ThatGeoGuy/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":24,"created_at":"2015-02-07T20:00:11Z","updated_at":"2015-05-03T18:59:36Z","closed_at":null,"body":"This is somewhat of a feature request to complete some of the functionality made available via LAPACK. Currently, the egg only supports optimized LAPACK routines made available via ATLAS; however, most users will compile ATLAS with the complete LAPACK package using the following `configure` flag: \r\n\r\n    --with-netlib-lapack-tarfile=/path/to/netlib/lapack-x.x.x.tgz\r\n\r\nwhere the `x`s in the file name correspond to the version of lapack compiled with ATLAS. Moreover, most Linux distributions (or package managers in general) likewise package the full lapack functionality with ATLAS. To see if you have all of the functions, look for `dgeev_` or another driver routine that is in LAPACK but not provided via ATLAS in the symbols table:\r\n\r\n    $ nm /usr/lib/liblapack.a | grep dgeev\r\n    dgeev.o:\r\n    0000000000000000 T dgeev_\r\n    dgeevx.o:\r\n    0000000000000000 T dgeevx_\r\n\r\nThis means that these functions are available, but not fully provided via the ATLAS interface. You can compile a regular C program to take advantage of these functions as follows: \r\n\r\n    // Example C program\r\n    #include <stdio.h>\r\n    #include <stdlib.h>\r\n    #include <clapack.h>\r\n    \r\n    int main() {\r\n        dgeev_( /* args here */ );\r\n        return 0;\r\n    }\r\n\r\nWhich is then compiled with: \r\n\r\n    $ gcc example.c -o example -llapack -lf77blas -lgfortran -lcblas -latlas -lm\r\n\r\nSo  theoretically, this means that by perhaps adding `libf77blas` and `libgfortran` to the compiler flags in the .setup file, as well as making some changes to expose the interface to dgeev_ via CHICKEN scheme's bind egg, it should be plausible to expose additional LAPACK routines from this egg. The reason in particular I chose dgeev_ is because I have a vested interest in Eigenvalues / Eigenvectors, and I think beyond the general matrix solvers and the symmetric-positive-(semi)-definite solvers in LAPACK / ATLAS the Eigen solution functions are the most useful and versatile. \r\n\r\nI don't yet know what changes to make to expose dgeev_ to scheme bindings, but I believe it will takes some changes to existing code, because currently the code works by prepending `clapack_` to any of the called bindings (e.g. if you call `dgesv` in scheme it will expand and call to `clapack_dgesv` in ATLAS). This ought to be a good start to figuring out  the problem in any case, any suggestions or advice are appreciated, as I am willing to help implement this feature. \r\n"},"comment":{"url":"https://api.github.com/repos/iraikov/chicken-lapack/issues/comments/98523820","html_url":"https://github.com/iraikov/chicken-lapack/issues/2#issuecomment-98523820","issue_url":"https://api.github.com/repos/iraikov/chicken-lapack/issues/2","id":98523820,"user":{"login":"ThatGeoGuy","id":5060863,"avatar_url":"https://avatars.githubusercontent.com/u/5060863?v=3","gravatar_id":"","url":"https://api.github.com/users/ThatGeoGuy","html_url":"https://github.com/ThatGeoGuy","followers_url":"https://api.github.com/users/ThatGeoGuy/followers","following_url":"https://api.github.com/users/ThatGeoGuy/following{/other_user}","gists_url":"https://api.github.com/users/ThatGeoGuy/gists{/gist_id}","starred_url":"https://api.github.com/users/ThatGeoGuy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ThatGeoGuy/subscriptions","organizations_url":"https://api.github.com/users/ThatGeoGuy/orgs","repos_url":"https://api.github.com/users/ThatGeoGuy/repos","events_url":"https://api.github.com/users/ThatGeoGuy/events{/privacy}","received_events_url":"https://api.github.com/users/ThatGeoGuy/received_events","type":"User","site_admin":false},"created_at":"2015-05-03T18:59:36Z","updated_at":"2015-05-03T18:59:36Z","body":"I've submitted a PR that should definitively solve this issue. I will start working towards other issues that I had brought up back in March. Apologies for picking this up again so late, but I've only recently finished finals and come upon some free time again."}}