frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

Show HN: val – An arbitrary precision calculator language

https://github.com/terror/val
34•crap•1y ago
Wrote this to learn more about the `chumsky` parser combinator library, rustyline, and the `ariadne` error reporting crate.

Such a nice DX combo for writing new languages.

Still a work in progress, but I thought I'd share :)

Comments

jasonjmcghee•1y ago
Hey nice! We have similar interests. I built something similar, but with way less calculator functionality than you did :D

But the main idea I was going for was real-time JIT evaluation with rendered errors (specifically learning / using cranelift JIT) - less to do with the calculator aspect.

I ended up choosing miette for errors.

https://github.com/jasonjmcghee/basic-treesitter-cranelift-j...

occamatl•1y ago
> sqrt(10^100)-1 -> 100000000000000000000000000000000000000000000000000

Not what I expected.

emaro•1y ago
In the readme it says it uses double precision for numbers. Also not quite whet I expected from 'arbitrary precision'.
chriswarbo•1y ago
Hmm, yeah. It cites `bc` as prior art, which is quite widely used; but another interesting arbitrary-precision calculator is spigot https://www.chiark.greenend.org.uk/~sgtatham/spigot/spigot.h...
mananaysiempre•1y ago
Also the AOSP calculator, of course[1,2,3].

[1] https://chadnauseam.com/coding/random/calculator-app

[2] https://dl.acm.org/doi/10.1145/2911981

[3] https://dl.acm.org/doi/10.1145/3385412.3386037

emmelaich•1y ago
Ivy does big numbers (not arbitrary) but does rationals too. It's an APL subset.

    0.1 + 0.2
    3/10
https://github.com/robpike/ivy
lttlrck•1y ago
the addition of astro_float fixed this.
primitivesuave•1y ago
The UI is awesome, amazing work! However, arbitrary precision implies that there is no fixed upper limit to the number of digits - simple tests like `0.1 + 0.2 == 0.3` and `2^53 == 2^53 + 1` (both produce "false") indicates you're still using IEEE 754 double precision floats.

If "arbitrary precision" is not as important to you as "high precision", a 128 bit decimal has enough precision for 99% of real-world applications.

crap•1y ago
Thanks for checking it out! Should have been more clear that this is actively being worked on. This is ultimately the goal, and I'm currently working on integrating `astro_float` as the base for numbers.
primitivesuave•1y ago
That is awesome, I look forward to following the project and hopefully contributing! I became a better Rust programmer from reading your code :)
jdhwosnhw•1y ago
Do you mean, the first returns false and the second returns true?
primitivesuave•1y ago
Ah you're right, thank you for pointing it out!

In the previous version of this comment (where I was still reading it incorrectly) I added a fun fact, that the significand of an IEEE 754 double-precision float is only allocated 52 bits, but the "hidden bit trick" provides an extra bit of precision when the normalized form starts with 1.

johannesrexx•1y ago
Rewrite it like so

> 1/10 + 2/10 == 3/10 true >

I_complete_me•1y ago
I wish you well. And I clicked you a star on github. Keep up the good work.
crap•1y ago
Thanks to everyone who gave feedback!

Arbitrary precision is now supported in 0.3.0 after integrating the `astro_float` (https://docs.rs/astro-float/latest/astro_float/index.html) `BigFloat` type as the base for numbers in the language.

Still working out the kinks, but its live so give it a try!

lttlrck•1y ago
This is cool.

It love to have to base conversion functions, even if it's print only. Does that fit at all?

lttlrck•1y ago
and different input base notations, 0x, o, 0b etc
crap•1y ago
This definitely fits, base conversion is on the roadmap!
librasteve•1y ago
very cool, welcome to the small club of CLI calculator authors! before I read this I knew of frink and crag (https://raku.land/zef:librasteve/App::Crag since you ask)

Crag is built on raku so has some neat tricks up its sleeve - you can see Crag of the Day to see some in action...

  crag '0.1+0.2=0.2'   #True (arbitrary precision)
  crag '₃₆123.45'      #3F.G77777  (base 36)
  crag 'e ** (i * π) =~= -1'   #True  (math symbols, complex numbers)
  crag '0rMCMXLIV'     #1944 (Roman numerals)
  crag '^<௪௨ mph>'     #42mph  (Unicode and units)
hee hee

Show HN: CPU-only transcription for YouTube, TikTok, X, Instagram videos

https://github.com/kouhxp/yapsnap
7•mrkn1•1h ago•0 comments

Show HN: Dari-docs – Optimize your docs using parallel coding agents

https://github.com/mupt-ai/dari-docs
12•byhong03•6h ago•4 comments

Show HN: Lance – image/video generation and understanding in one model

https://github.com/bytedance/Lance
45•cleardusk•7h ago•14 comments

Show HN: I built Istanbul live transit map

https://tarif.ist/
6•berkaycubuk•3h ago•0 comments

Show HN: I made a tool for learning scales, chords, and how to combine them

https://projects.alesh.com/intervalkit/
11•aleshh•5h ago•9 comments

Show HN: Forge – Guardrails take an 8B model from 53% to 99% on agentic tasks

https://github.com/antoinezambelli/forge
643•zambelli•1d ago•234 comments

Show HN: expo-callkit-telecom – easily integrate CallKit/Core-Telecom

https://github.com/mfairley/expo-callkit-telecom
2•mfairley•4h ago•0 comments

Show HN: Hocuspocus 4 – self-hosted Yjs collaboration backend

https://github.com/ueberdosis/hocuspocus
30•philipisik•8h ago•3 comments

Show HN: Superlog (YC P26) – Observability that installs itself and fixes bugs

https://superlog.sh/
70•Magnanten•1d ago•45 comments

Show HN: Gaussian Splat of a Strawberry

https://superspl.at/scene/84df8849
515•danybittel•1d ago•195 comments

Show HN: Open-Source Agentic QA Harness with Memory

https://vostride.com/agent-qa
15•pranshuchittora•11h ago•2 comments

Show HN: IgniteMS – batch text embeddings at 253K msg/s on 8x A100

https://github.com/Artain-AI/ignite-ms
2•ddayanov•5h ago•0 comments

Show HN: Number Gacha, a gacha game distilled to its essence

https://isabisabel.com/gacha/
253•babel16•1w ago•140 comments

Show HN: I made a 3D pose maker for artists

https://setpose.com/
84•augustvdv•1d ago•32 comments

Show HN: Files.md – Open-source alternative to Obsidian

https://github.com/zakirullin/files.md
708•zakirullin•2d ago•346 comments

Show HN: Haystack – Review the PRs that need human attention

https://haystackeditor.com/
43•akshaysg•2d ago•16 comments

Show HN: Pg_deltax, Apache-licensed alternative to TimescaleDB

https://github.com/xataio/deltax
37•tee-es-gee•1d ago•1 comments

Show HN: Yt-x v0.8.0 – Browse, play, and download YouTube from the terminal

https://github.com/Benexl/yt-x
27•Benex254•1d ago•4 comments

Show HN: Id-agent – Token efficient UUID alternative for AI agents

https://github.com/vostride/id-agent
40•pranshuchittora•1d ago•54 comments

Show HN: Hsrs – Type-Safe Haskell Bindings Generator for Rust

https://github.com/harmont-dev/hsrs
53•suis_siva•1d ago•7 comments

Show HN: Every Lego minifigure ranked, from over 1.3M user votes

https://brickelo.com
3•gpattle•9h ago•1 comments

Show HN: InsForge – Open-source Heroku for coding agents

https://github.com/InsForge/InsForge
59•mrcoldbrew•2d ago•7 comments

Show HN: Rust Database from Scratch

https://github.com/ayoubnabil/aiondb
7•ayoubnabil•11h ago•4 comments

Show HN: IResearch – C++ search that beat Lucene and Tantivy on their benchmark

https://github.com/serenedb/serenedb/tree/main/libs/iresearch
11•gnusi•12h ago•3 comments

Show HN: Semble – Code search for agents that uses 98% fewer tokens than grep

https://github.com/MinishLab/semble
441•Bibabomas•3d ago•150 comments

Show HN: Rocksky – Music scrobbling and discovery on the AT Protocol

https://tangled.org/rocksky.app/rocksky
117•tsiry•4d ago•44 comments

Show HN: Mezz, a curl-able WiFi sandbox for IoT pentesting

https://github.com/ABGEO/mezz
40•ABGEO•5d ago•10 comments

Show HN: Watch a neural net learn to play Snake

https://ppo.gradexp.xyz/
203•c1b•6d ago•47 comments

Show HN: Javalamp – A glowing terminal screensaver that keeps your Mac awake

https://github.com/breschio/javalamp
3•tbreschi•19h ago•4 comments

Show HN: Auto-identity-remove – Automated data broker opt-out runner for macOS

https://github.com/stephenlthorn/auto-identity-remove
324•stephenlthorn•2d ago•135 comments