{"id":18595435,"url":"https://github.com/ericjang/svd3","last_synced_at":"2026-01-24T10:33:35.504Z","repository":{"id":16655558,"uuid":"19411027","full_name":"ericjang/svd3","owner":"ericjang","description":"Fast singular value decomposition, diagonalization, QR decomposition of 3x3 matrices.","archived":false,"fork":false,"pushed_at":"2021-11-06T10:08:55.000Z","size":36,"stargazers_count":155,"open_issues_count":4,"forks_count":20,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-05-13T14:32:14.676Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Mathematica","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/ericjang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-05-03T19:56:56.000Z","updated_at":"2025-03-23T23:12:08.000Z","dependencies_parsed_at":"2022-09-01T02:31:32.779Z","dependency_job_id":null,"html_url":"https://github.com/ericjang/svd3","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ericjang/svd3","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericjang%2Fsvd3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericjang%2Fsvd3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericjang%2Fsvd3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericjang%2Fsvd3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ericjang","download_url":"https://codeload.github.com/ericjang/svd3/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericjang%2Fsvd3/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28725366,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T10:24:43.181Z","status":"ssl_error","status_checked_at":"2026-01-24T10:24:36.112Z","response_time":89,"last_error":"SSL_read: 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":[],"created_at":"2024-11-07T01:19:43.142Z","updated_at":"2026-01-24T10:33:35.485Z","avatar_url":"https://github.com/ericjang.png","language":"Mathematica","funding_links":[],"categories":[],"sub_categories":[],"readme":"Fast 3x3 SVD\n===========\n\nThis is an implementation of the method described in \u003ca href=\"http://pages.cs.wisc.edu/~sifakis/papers/SVD_TR1690.pdf\"\u003e\"Computing the Singular Value Decomposition of 3x3 matrices with minimal branching and elementary floating point operations\"\u003c/a\u003e. I implemented this as part of \u003ca href=\"http://wyegelwel.github.io/snow/\"\u003ea group project\u003c/a\u003e for a computer graphics course. \n\nExecution time per svd call on the CPU is about 2.0 microseconds. Tested on a AMD Phenom(tm) II X4 965 Processor. \n\nExecution time on the GPU is about 174 microseconds. Tested on a NVIDIA GeForce GTX 460 (profiled using nvvp).\n\nAlso included are routines for diagonalization / QR decomposition of 3x3 matrices, which may be useful in their own right. \n\n\n##Usage\n\nJust include the header file and you are good to go! \n\n```C++\n\n#include \"svd3.h\"\nfloat a11, a12, a13, a21, a22, a23, a31, a32, a33;\n\na11= -0.558253; a12 = -0.0461681; a13 = -0.505735;\na21 = -0.411397; a22 = 0.0365854; a23 = 0.199707;\na31 = 0.285389; a32 =-0.313789; a33 = 0.200189;\n\nfloat \tu11, u12, u13, \n\t\tu21, u22, u23, \n\t\tu31, u32, u33;\n\nfloat \ts11, s12, s13, \n\t\ts21, s22, s23, \n\t\ts31, s32, s33;\n\nfloat \tv11, v12, v13, \n\t\tv21, v22, v23, \n\t\tv31, v32, v33;\n\nsvd(a11, a12, a13, a21, a22, a23, a31, a32, a33,\n    u11, u12, u13, u21, u22, u23, u31, u32, u33,\n    s11, s12, s13, s21, s22, s23, s31, s32, s33,\n    v11, v12, v13, v21, v22, v23, v31, v32, v33);\n\n```\n\nSee the included Mathematica notebook for derivations of numerical shortcuts.\n\n## License\nMIT License, Eric V. Jang 2014","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fericjang%2Fsvd3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fericjang%2Fsvd3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fericjang%2Fsvd3/lists"}