{"id":25808547,"url":"https://github.com/d0ntpanic/rscalc","last_synced_at":"2026-03-11T11:02:31.618Z","repository":{"id":38673252,"uuid":"292478548","full_name":"D0ntPanic/rscalc","owner":"D0ntPanic","description":"RPN Stack Calculator for DM42","archived":false,"fork":false,"pushed_at":"2022-07-11T17:59:40.000Z","size":4819,"stargazers_count":22,"open_issues_count":1,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-07-15T00:25:50.462Z","etag":null,"topics":["exact-rationals","rpn-calculator","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/D0ntPanic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-09-03T05:48:19.000Z","updated_at":"2024-08-11T21:50:55.000Z","dependencies_parsed_at":"2022-07-10T20:02:45.397Z","dependency_job_id":null,"html_url":"https://github.com/D0ntPanic/rscalc","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/D0ntPanic/rscalc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/D0ntPanic%2Frscalc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/D0ntPanic%2Frscalc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/D0ntPanic%2Frscalc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/D0ntPanic%2Frscalc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/D0ntPanic","download_url":"https://codeload.github.com/D0ntPanic/rscalc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/D0ntPanic%2Frscalc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30379264,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-11T06:09:32.197Z","status":"ssl_error","status_checked_at":"2026-03-11T06:09:17.086Z","response_time":84,"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":["exact-rationals","rpn-calculator","rust"],"created_at":"2025-02-27T22:28:55.031Z","updated_at":"2026-03-11T11:02:31.578Z","avatar_url":"https://github.com/D0ntPanic.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# rscalc - RPN Stack Calculator\n\nThis project is a modern multiplatform RPN calculator written in Rust.\n\n## Major Features\n\n* **Large RPN stack**. The RPN stack is not limited to a fixed number of registers.\n* **Accurate decimal floating point**. Uses 128-bit decimal floating point with 34\n  digits of decimal precision.\n* **Exact rationals with large integers**. Integers and rational numbers are kept\n  in an exact rational representation. Results can be displayed as exact fractions\n  when possible, and the implementation never guesses the closest fraction.\n* **Unit conversions**. Supports conversions between common units. Utilizes the\n  rational representation for unit conversions so that converting between them\n  leads to no loss of precision.\n* **RPN stack undo**. Operations performed on the RPN stack can be undone with\n  a deep undo buffer.\n* **Works on dedicated calculator hardware**. Designed to run on the excellent\n  DM42 from Swiss Micros. This project has been optimized for highly efficient\n  LCD rendering and memory usage to create a very responsive interface. This\n  project is not an emulation and iterative improvement of the HP42 design\n  like the default firmware, but is rather a ground-up modern redesign\n  targeting the DM42 hardware.\n\n## Design Goals\n\nThis project was inspired by the DM42 hardware from Swiss Micros, but had the\nfollowing design goals in mind:\n\n* The desire was to create a modern reimagining of an RPN calculator on the\n  DM42 form factor.\n* This project was not meant to be constrained by the design or interface of\n  the HP42 calculator that the DM42 was inspired by. No effort is expended on\n  being compatible in any way with the HP42 ecosystem. If you are looking for\n  an improved HP42 that runs existing programs, the default DM42 firmware is\n  a better fit.\n* Keep the efficient workflow of RPN calculation, but optimize it where\n  workflow improvements can be made.\n* Utilize modern high resolution displays to improve the interface. The DM42\n  hardware has a much higher resolution than legacy RPN calculators and can\n  present information in a more natural and readable way. Desktops and\n  modern mobile devices can display even more detailed information and\n  provide rich user interaction, and this should be taken advantage of.\n* This project is designed for users who like an RPN interface. There are\n  many options available for algebraic notation, so it not a goal to provide\n  a non-RPN interface.\n\n## Building\n\nThis project requires the nightly Rust compiler as it has some dependencies\nthat require it (embedded development with the `alloc` crate is only possible\non nightly at this time, and the `gtk` crate has dependencies on the unstable\n`const_fn` feature).\n\nTo build the desktop version, you can use `cargo` normally. Use `cargo build`\nto build or `cargo run` to build and run.\n\nTo build the DM42 version, you must use the `Makefile`. Invoking `make` will\nbuild both the DM42 build and the desktop build. To build only the DM42\nbuild, use `make rscalc.pgm`. The DM42 build has only been tested on Linux\nand requires the `thumbv7em-none-eabihf` Rust target for cross compilation.\nThis target can be added with `rustup target add thumbv7em-none-eabihf`.\n\n## DM42 Calculation Limits\n\nThe DM42 hardware, being an embedded device designed for very low power\nconsumption, has limited RAM available. To work well in this environment, a\nfew limitations on calculation range are present on the DM42 build:\n\n* Exact integers up to ±2^8192\n* Exact rational numbers with a denominator up to 2^128\n* Stack is limited to 1000 entries\n* Vectors are limited to 1000 entries\n* Matricies are limited to 1024 elements total (rows × columns)\n\nAdditional notes:\n\n* Undo buffer may be limited in low memory situations. Undo entries are\n  automatically freed when memory gets low.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd0ntpanic%2Frscalc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fd0ntpanic%2Frscalc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd0ntpanic%2Frscalc/lists"}