# Usage of 80bit floating point in Racket

**URL:** <https://racket.discourse.group/t/usage-of-80bit-floating-point-in-racket/4197>\
**Category:** Internals\
**Created:** [May 6, 2026, 1:32am UTC](https://racket.discourse.group/t/usage-of-80bit-floating-point-in-racket/4197 "2026-05-06T01:32:32Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![ndykman](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/ndykman/32/2140_2.png) [@ndykman](https://racket.discourse.group/u/ndykman)\
**Post date:** [May 6, 2026, 1:32am UTC](https://racket.discourse.group/t/usage-of-80bit-floating-point-in-racket/4197/1 "2026-05-06T01:32:32Z")

</div>

Curious as to how much this is used. ARM64 has no support for it, and all modern x64 processors are optimized for 64bit doubles. Also, using 80bit basically eliminates SSE support, which is often a huge hit. Also, if you need the extra precision, it is probably best to use a library like GNU MPFR explicitly.

The context here comes down to depreciating the `longdouble.dll` Windows library which needs MinGW to compile. The goal being that Racket and the core libraries can be compiled with Mingw64 or MSVC.

Your consideration is appreciated.

---

<div class="post-metadata">

**Author:** ![shhyou](https://avatars.discourse-cdn.com/v4/letter/s/ccd318/32.png) [@shhyou](https://racket.discourse.group/u/shhyou)\
**Post date:** [May 6, 2026, 3:43am UTC](https://racket.discourse.group/t/usage-of-80bit-floating-point-in-racket/4197/2 "2026-05-06T03:43:06Z")

</div>

As far as I remember, for non-Windows platforms Racket has stopped supporting them for a long time since Racket-on-Chez became the default.

(FWIW, Racket call this type as Extflonums. This page may be helpful:  
[4.3.5&nbsp;Extflonums](https://docs.racket-lang.org/reference/extflonums.html) -- `extflonum-available?` returns false and `extfl+` errors with "unsupported".)

This is the only blog post I found, though:

> **[Racket-on-Chez Status: January 2019](https://blog.racket-lang.org/2019/01/racket-on-chez-status.html)**
>
> posted by Matthew Flatt For background information about Racket on Chez Scheme (a.k.a. Racket CS), see the original announcement, last January's report, and the report at Scheme Workshop 2018. Racket on Chez Scheme is done in a useful...

> Racket CS is intended to behave the same as the existing Racket implementation with a few exceptions:
> 
> - no single-precision or extended-precision flonums;

---

<div class="post-metadata">

**Author:** ![gneuner](https://avatars.discourse-cdn.com/v4/letter/g/b9e5f3/32.png) [@gneuner](https://racket.discourse.group/u/gneuner)\
**Post date:** [May 7, 2026, 5:53am UTC](https://racket.discourse.group/t/usage-of-80bit-floating-point-in-racket/4197/3 "2026-05-07T05:53:21Z")

</div>

> [@ndykman](#):
>
> Also, using 80bit basically eliminates SSE support, which is often a huge hit.

80-bit conflicts with MMX, not SSE. SSE has been the norm for 64-bit since ~2000. FPU/MMX and SSE are different FUs and there is no reason beyond compiler support that they can't be used together.

Even after SSE based 64-bit became the norm (circa ~2000), you still could use MMX and SSE together because they don't conflict. And you could do 80-bit FP from assembler while doing 64-bit FP or SIMD from your compiler.

My vote would be to lose 80-bit. I've been writing software since the mid 1980's, and have yet to encounter a situation where 64-bit floating point was not sufficient.

I would like to see Racket make more use of SIMD for vector/array processing. I may be wrong, but AFAIK, the only thing Racket does with SSE is ordinary floating point.

---

<div class="post-metadata">

**Author:** ![pavpanchekha](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/pavpanchekha/32/642_2.png) [@pavpanchekha](https://racket.discourse.group/u/pavpanchekha)\
**Post date:** [May 7, 2026, 2:32pm UTC](https://racket.discourse.group/t/usage-of-80bit-floating-point-in-racket/4197/4 "2026-05-07T14:32:57Z")

</div>

We should drop support. Chez doesn't support. ARM is increasingly important and doesn't support. The `fl2` family of operations exists for users who want more precision. We used them for a while in Herbie and removed support.

---

<div class="post-metadata">

**Author:** ![mflatt](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/mflatt/32/6_2.png) [@mflatt](https://racket.discourse.group/u/mflatt)\
**Post date:** [May 8, 2026, 2:43pm UTC](https://racket.discourse.group/t/usage-of-80bit-floating-point-in-racket/4197/5 "2026-05-08T14:43:27Z")

</div>

I agree that we can stop including `longdouble.dll`. Although that DLL doesn't really need to be rebuilt ever, so we could keep using the existing build, it's simplest to just drop it.

---

<div class="post-metadata">

**Author:** ![ndykman](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/ndykman/32/2140_2.png) [@ndykman](https://racket.discourse.group/u/ndykman)\
**Post date:** [May 8, 2026, 11:10pm UTC](https://racket.discourse.group/t/usage-of-80bit-floating-point-in-racket/4197/6 "2026-05-08T23:10:56Z")

</div>

Okay, then I won't worry about supporting it in my project.
