Skip to content

Instantly share code, notes, and snippets.

@igorburago
igorburago / partsort.c
Last active March 22, 2025 16:19
Fast partial sorting of an array on a subinterval
// Copyright 2024 Igor Burago
// SPDX-License-Identifier: ISC
#include <math.h> // for partition_floyd_rivest()
#include <stddef.h> // ptrdiff_t
#include <stdint.h>
#include <string.h> // memcpy(), memmove(), memset()
// Built-in u128 is not strictly required, but it makes mcg64 simpler and faster.
typedef __uint128_t uint128_t;
@igorburago
igorburago / xorab.c
Last active March 16, 2025 04:40
Finding all solutions of the equation x⊕(a-x)=b
// Copyright 2013 Igor Burago
// SPDX-License-Identifier: ISC
#include <limits.h>
#include <stdio.h>
static unsigned
enum_bit(unsigned q, unsigned x, unsigned *xs) {
if (q == 0) {
*xs = x;
@igorburago
igorburago / indentguides.vim
Last active March 16, 2025 04:32
Vim indentation guides emulation
" Copyright 2022 Igor Burago
" SPDX-License-Identifier: ISC
" Simple emulation of indentation guides.
"
" For tab-based indentation, using the 'listchars' option works fine.
" For space-based indentation, one can either:
" • use the match highlighting feature (see ':help match-highlight'),
" as shown in ToggleMatchHighlightIndentGuides(); or
" • use the 'leadmultispace' setting of the 'listchars' option (added