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•11mo 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•11mo 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•11mo ago
> sqrt(10^100)-1 -> 100000000000000000000000000000000000000000000000000

Not what I expected.

emaro•11mo ago
In the readme it says it uses double precision for numbers. Also not quite whet I expected from 'arbitrary precision'.
chriswarbo•11mo 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•11mo 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•11mo 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•11mo ago
the addition of astro_float fixed this.
primitivesuave•11mo 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•11mo 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•11mo 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•11mo ago
Do you mean, the first returns false and the second returns true?
primitivesuave•11mo 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•11mo ago
Rewrite it like so

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

I_complete_me•11mo ago
I wish you well. And I clicked you a star on github. Keep up the good work.
crap•11mo 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•11mo ago
This is cool.

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

lttlrck•11mo ago
and different input base notations, 0x, o, 0b etc
crap•11mo ago
This definitely fits, base conversion is on the roadmap!
librasteve•11mo 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: ProofShot – Give AI coding agents eyes to verify the UI they build

https://proofshot.argil.io/
10•jberthom•57m ago•4 comments

Show HN: Cq – Stack Overflow for AI coding agents

https://blog.mozilla.ai/cq-stack-overflow-for-agents/
136•peteski22•16h ago•47 comments

Show HN: The King Wen Permutation: [52, 10, 2]

https://gzw1987-bit.github.io/iching-math/
56•gezhengwen•1d ago•27 comments

Show HN: Littlebird – Screenreading is the missing link in AI

https://littlebird.ai/
42•delu•15h ago•21 comments

Show HN: AgentDrive – Persistent file storage for AI agents

https://www.getagentdrive.com
3•itstomo•5h ago•0 comments

Show HN: WhyThere.life – Compare cities side-by-side to decide where to move

https://whythere.life
12•daversa•11h ago•4 comments

Show HN: Revise – An AI Editor for Documents

https://revise.io
79•artursapek•1d ago•68 comments

Show HN: Codala, a social network built on scanning barcodes

https://play.google.com/store/apps/details?id=com.hsynkrkye.codala&hl=en
62•hsynkrkye•5d ago•29 comments

Show HN: VoidLLM – privacy-first LLM proxy (Go, self-hosted)

https://github.com/voidmind-io/voidllm
3•chrisremo85•9h ago•2 comments

Show HN: Mutatr – an open source A/B testing agent

https://github.com/novynlabs-repo/mutatr
3•AhmedAshraf•9h ago•0 comments

Show HN: Agent Kernel – Three Markdown files that make any AI agent stateful

https://github.com/oguzbilgic/agent-kernel
40•obilgic•1d ago•19 comments

Show HN: Dgs-CLI – 63-command CLI for D-Link DGS-1100 switches via Selenium

https://github.com/bobberb/dgs-cli
3•ShellackGobln7•10h ago•0 comments

Show HN: OpenCastor Agent Harness Evaluator Leaderboard

https://craigm26.github.io/OpenCastor/
3•craigm26•10h ago•1 comments

Show HN: ArXiv metadata as Parquet files (2.99M papers, 1.44GB, 417 files)

https://huggingface.co/datasets/open-index/open-arxiv
2•tamnd•3h ago•0 comments

Show HN: Atomic – Self-hosted, semantically-connected personal knowledge base

https://github.com/kenforthewin/atomic
146•kenforthewin•2d ago•23 comments

Show HN: Burn Room – ephemeral SSH chat, messages burn after 1 hour

https://burnroom.chat
6•joematrix•12h ago•0 comments

Show HN: Aerko_ – An offline-first, Vanilla JavaScript fitness PWA with local AI

https://github.com/SrPakura/AERKO_PWA
7•SrPakura•17h ago•2 comments

Show HN: Shrouded, secure memory management in Rust

https://github.com/thesis/shrouded
5•mhluongo•13h ago•0 comments

Show HN: We built a terminal-only Bluesky / AT Proto client written in Fortran

https://github.com/FormerLab/fortransky
145•FormerLabFred•3d ago•82 comments

Show HN: Lockpaw One hotkey to cover your Mac screen without putting it to sleep

https://github.com/sorkila/lockpaw
5•eriknielsen•19h ago•1 comments

Show HN: Sonar – A tiny CLI to see and kill whatever's running on localhost

https://github.com/RasKrebs/sonar
201•raskrebs•3d ago•80 comments

Show HN: Primer – build software with AI agents one milestone at a time

https://github.com/armgabrielyan/primer
3•armen99•14h ago•8 comments

Show HN: JulIDE – Lightweight Julia IDE Built with Tauri

https://github.com/sinisterMage/JulIde
6•SinisterMage2•14h ago•3 comments

Show HN: Minimalist library to generate SVG views of scientific data

https://github.com/alefore/mini_svg/
5•afc•14h ago•0 comments

Show HN: I made a tool for converting text snippets to shareable image

https://snip2img.com
5•wesammikhail•23h ago•2 comments

Show HN: Time Keep – Location timezones, timers, alarms, countdowns in one place

25•jmbuilds•4d ago•8 comments

Show HN: Story Trainer, a self-guided tool for learning story structure

https://planetofthepaul.github.io/StoryTrainer/
2•minviex•16h ago•0 comments

Show HN: Duplicate 3 layers in a 24B LLM, logical deduction .22→.76. No training

https://github.com/alainnothere/llm-circuit-finder
264•xlayn•5d ago•81 comments

Show HN: Three new Kitten TTS models – smallest less than 25MB

https://github.com/KittenML/KittenTTS
557•rohan_joshi•4d ago•183 comments

Show HN: Termcraft – Terminal-first 2D sandbox survival in Rust

https://github.com/pagel-s/termcraft
135•sebosch•2d ago•25 comments