# FPU

Published articles for FPU.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Weekly recommendations of articles and videos about programming, graphics, and computing

DevFeed: [Weekly recommendations of articles and videos about programming, graphics, and computing](<https://devfeed.tech/articles/things-3-25615.md>)

Original publisher: [Read original article](<https://www.romainguy.dev/posts/2026/things-3/>)

Author: Romain Guy

Published: 2026-08-20T00:00:00Z

Content type: article

Language: en

Sources: [Posts on Romain Guy](<https://devfeed.tech/sources/posts-on-romain-guy.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [GPU](<https://devfeed.tech/topics/gpu.md>), [intel](<https://devfeed.tech/topics/intel.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [article](<https://devfeed.tech/tags/article.md>), [articles](<https://devfeed.tech/tags/articles.md>), [books](<https://devfeed.tech/tags/books.md>), [developer](<https://devfeed.tech/tags/developer.md>), [fpu](<https://devfeed.tech/tags/fpu.md>), [gpu](<https://devfeed.tech/tags/gpu.md>), [graphics](<https://devfeed.tech/tags/graphics.md>), [intel](<https://devfeed.tech/tags/intel.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [links](<https://devfeed.tech/tags/links.md>), [precision](<https://devfeed.tech/tags/precision.md>), [programming](<https://devfeed.tech/tags/programming.md>), [videos](<https://devfeed.tech/tags/videos.md>)

### AI overview

A weekly roundup of recommended reading and viewing covering Intel's MMX, linear algebra, floating-point precision, Bézier curves, blackbody color fits, GPU memory behavior, and Game Boy Advance graphics modes.

### Source excerpt

Here is a list of tings I read/watched/played/etc. this week that you might find interesting or enjoyable: Things to read Link to heading SIMD in the 90s -- Great article explaining what Intel's MMX was all about. Linear algebra done right -- Contains a lot of stuff that I feel like I have to relearn every few years. Double-double: 31 digits of precision without leaving the FPU -- I really, really like reading about floaing points :) Curvature Béziers -- Yet another fascinating article on Bézier curves, this time with a focus on curvature. Blackbody: 4 rational fits -- A set of analytical fits for blackbody colors, from 798 to 5772 K. I have used a common fit before, but these fits look more useful in some situations. What happens when a GPU reads memory -- More information about how GPUs work is always welcome. Things to watch Link to heading How the Game Boy Advance's graphics modes made it so advanced -- A tour of the GameBoy Advance's graphics modes. I had a blast programming for the GBA back then, I kind of miss this style of graphics programming.

## Floating-Point Units on Espressif SoCs: Why (and when) they matter

DevFeed: [Floating-Point Units on Espressif SoCs: Why (and when) they matter](<https://devfeed.tech/articles/floating-point-units-on-espressif-socs-why-and-when-they-matter-13727.md>)

Original publisher: [Read original article](<https://developer.espressif.com/blog/2025/10/cores_with_fpu/>)

Author: John Lee

Published: 2025-10-13T00:00:00Z

Content type: article

Language: en

Sources: [Blog on Developer Portal](<https://devfeed.tech/sources/blog-on-developer-portal.md>)

Topics: [Espressif](<https://devfeed.tech/topics/espressif.md>), [Hardware](<https://devfeed.tech/topics/hardware.md>), [cpu](<https://devfeed.tech/topics/cpu.md>), [ESP32-S3](<https://devfeed.tech/topics/esp32-s3.md>), [ESP32-C3](<https://devfeed.tech/topics/esp32-c3.md>), [Benchmark](<https://devfeed.tech/topics/benchmark.md>), [math](<https://devfeed.tech/topics/math.md>)

Tags: [benchmark](<https://devfeed.tech/tags/benchmark.md>), [blog](<https://devfeed.tech/tags/blog.md>), [esp32](<https://devfeed.tech/tags/esp32.md>), [esp32-c3](<https://devfeed.tech/tags/esp32-c3.md>), [esp32-s3](<https://devfeed.tech/tags/esp32-s3.md>), [espressif](<https://devfeed.tech/tags/espressif.md>), [floating-point](<https://devfeed.tech/tags/floating-point.md>), [fpu](<https://devfeed.tech/tags/fpu.md>), [hardware](<https://devfeed.tech/tags/hardware.md>), [math](<https://devfeed.tech/tags/math.md>), [performance](<https://devfeed.tech/tags/performance.md>), [precision](<https://devfeed.tech/tags/precision.md>), [processor](<https://devfeed.tech/tags/processor.md>)

### AI overview

This article explains what floating-point units are, why they matter for calculations involving decimal values and wide dynamic ranges, and how they differ across Espressif SoCs. It states that the ESP32-S3 performs floating-point operations directly in hardware, while the ESP32-C3 executes them in software, and introduces a benchmark-based discussion of performance.

### Source excerpt

In this article, you'll learn what an FPU is, why it's useful, which Espressif SoCs feature one, and how it impacts performance through a benchmark.

## Why sin() and cos() Can Be Slow: Range Reduction, C Library Calls, and FPU Trigonometry

DevFeed: [Why sin() and cos() Can Be Slow: Range Reduction, C Library Calls, and FPU Trigonometry](<https://devfeed.tech/articles/help-my-sin-is-slow-and-my-fpu-is-inaccurate-36426.md>)

Original publisher: [Read original article](<https://berthub.eu/articles/posts/help-my-sin-is-slow-and-my-fpu-is-inaccurate/>)

Published: 2021-06-19T12:53:25Z

Content type: tutorial

Language: en

Sources: [Bert Hubert's writings](<https://devfeed.tech/sources/bert-hubert-s-writings.md>)

Topics: [C](<https://devfeed.tech/topics/c.md>), [cpu](<https://devfeed.tech/topics/cpu.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Algorithm](<https://devfeed.tech/topics/algorithm.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [c](<https://devfeed.tech/tags/c.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [floating-point](<https://devfeed.tech/tags/floating-point.md>), [fpu](<https://devfeed.tech/tags/fpu.md>), [linux](<https://devfeed.tech/tags/linux.md>), [programming](<https://devfeed.tech/tags/programming.md>)

### AI overview

This technical article investigates why a C simulation became unexpectedly slow when calling sin(). Experiments showed that replacing sin() with cos() or changing M_PI altered performance, leading to an examination of generated assembly and C library calls. The article explains range reduction and approximation methods such as Taylor series, lookup tables, and CORDIC as factors in trigonometric performance and accuracy.

### Source excerpt

Afer 8 years, I have updated this this post for 2021-era Linux (and also to fix bitrotted links). I am extremely joyful to report that the (hard) problem from 2013 appears to have been solved! There is a small addendum at the end to reflect this happy news. Back in 2013, I started writing code to do a simulation of biological system, and I got stuck after 20 lines. My test code tried to go through a million time steps doing basically nothing, and it was taking a minute to do it.

## Red/System: New Features

DevFeed: [Red/System: New Features](<https://devfeed.tech/articles/red-system-new-features-22378.md>)

Original publisher: [Read original article](<https://www.red-lang.org/2020/08/redsystem-new-features.html>)

Author: Nenad Rakocevic (noreply@blogger.com)

Published: 2020-08-20T10:54:00Z

Content type: release

Language: en

Sources: [Red](<https://devfeed.tech/sources/red.md>)

Topics: [Red](<https://devfeed.tech/topics/red.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [arrays](<https://devfeed.tech/tags/arrays.md>), [atomic](<https://devfeed.tech/tags/atomic.md>), [bugfixes](<https://devfeed.tech/tags/bugfixes.md>), [compilation](<https://devfeed.tech/tags/compilation.md>), [exceptions](<https://devfeed.tech/tags/exceptions.md>), [features](<https://devfeed.tech/tags/features.md>), [floating-point](<https://devfeed.tech/tags/floating-point.md>), [fpu](<https://devfeed.tech/tags/fpu.md>), [ia-32](<https://devfeed.tech/tags/ia-32.md>), [literal-arrays](<https://devfeed.tech/tags/literal-arrays.md>), [math](<https://devfeed.tech/tags/math.md>), [new-features](<https://devfeed.tech/tags/new-features.md>), [pointers](<https://devfeed.tech/tags/pointers.md>), [red-system](<https://devfeed.tech/tags/red-system.md>), [runtime-errors](<https://devfeed.tech/tags/runtime-errors.md>), [vfp](<https://devfeed.tech/tags/vfp.md>)

### AI overview

An overview of recent Red/System features, including subroutines, atomic and stack intrinsics, FPU status access, and changes to literal arrays.

### Source excerpt

In the past months, many new features were added to Red/System, the low-level dialect embedded in Red. Here is a sum up if you missed them. Subroutines During the work on the low-level parts of the new Red lexer, the need arised for intra-function factorization abilities to keep the lexer code as DRY as possible. Subroutines were introduced to solve that. They act as the GOSUB directive from Basic language. They are defined as a separate block of code inside a function's body and are called like regular functions (but without any arguments). So they are much lighter and faster than real function calls and require just one slot of stack space to store the return address. The declaration syntax is straightforward: <name>: [<body>] <name> : subroutine's name (local variable). <body> : subroutine's code (regular R/S code). To define a subroutine, you need to declare a local variable with the subroutine! datatype, then set that variable to a block of code. You can then invoke the subroutine by calling its name from anywhere in the function body (but after the subroutine own definition). Here is a first example of a fictive function processing I/O events: process: func [buf [byte-ptr!] event [integer!] return: [integer!] /local log do-error [subroutine!] ][ log: [print-line [">>" tab e "<<"]] do-error: [print-line ["** Error:" e] return 1] switch event [ EVT_OPEN [e: "OPEN" log unless connect buf [do-error]] EVT_READ [e: "READ" log unless receive buf [do-error]] EVT_WRITE [e: "WRITE" log unless send buf [do-error]] EVT_CLOSE [e: "CLOSE" log unless close buf [do-error]] default [e: "<unknown>" do-error] ] 0 ] This second example is more complete. It shows how subroutines can be combined and how values can be returned from a subroutine: #enum modes! [ CONV_UPPER CONV_LOWER CONV_INVERT ] convert: func [mode [modes!] text [c-string!] return: [c-string!] /local lower? upper? alpha? do-conv [subroutine!] delta [integer!] s [c-string!] c [byte!] ][ lower?: [all [#"a" <= c c <= #