mscroggs.co.uk
mscroggs.co.uk

subscribe

Comment

Comments

Comments in green were written by me. Comments in blue were not written by me.
@Oleg:

I removed my macros:
#define __tzcnt_u32(v) ((v) ? (_tzcnt_u32(v)) : (32))
#define __lzcnt32(v) ((v) ? (_lzcnt_u32(v)) : (32))
replacing them with simple inline code


Util.h

//#include // not including all
#include // just include what's needed
#include // just include what's needed
#include // just include what's needed

#if 1 // use safe localtime
struct tm buf; // use safe localtime
auto err = localtime_s(&buf, &cur_time); // use safe localtime
return std::put_time(&buf, "%F %T"); // use safe localtime
#else // use safe localtime
return std::put_time(std::localtime(&cur_time), "%F %T");
#endif // use safe localtime


State.h

changed _mm_set_epi8(0x80 to -0x80 to stop warnings

inline replacement:
//int i = __tzcnt_u32(mask); // for no BMI; without zero test, as not needed here
int i = _tzcnt_u32(mask); // for no BMI; without zero test, as not needed here

inline replacement:
//int last_idx_before_mid = 31 - __lzcnt32(off_mask); // for no BMI; without zero test, as not needed here
int last_idx_before_mid = _lzcnt_u32(off_mask); // for no BMI; without zero test, as not needed here


Solver.h

inline replacement:
//return ini.size(); // to stop warning
return (int)ini.size(); // to stop warning

inline replacement:
//const int dim = __tzcnt_u32(mask); // for no BMI; without zero test, as not needed here
const int dim = _tzcnt_u32(mask); // for no BMI; without zero test, as not needed here


I tried '9' runs: with asserts: 10:31, without: 10:18 (saved 2%)
A minute slower than the faulty version, but still not too bad for a 2013 (Q3) CPU :)
Lord Sméagol
on /blog/119
               

Archive

Show me a random blog post
 2026 

May 2026

World Cup stickers 2026

Apr 2026

A new puzzle every day
Mixing Wordle with other games

Feb 2026

Christmas (2025) is over
 2025 

Dec 2025

Christmas card 2025

Nov 2025

Christmas (2025) is coming!

Sep 2025

The partridge puzzle

Aug 2025

TMiP 2025 puzzle hunt

Jun 2025

A nonogram alphabet

Mar 2025

How to write a crossnumber

Jan 2025

Christmas (2024) is over
Friendly squares
 2024 

Dec 2024

A regular expression Christmas puzzle
Christmas card 2024

Nov 2024

Christmas (2024) is coming!

Feb 2024

Zines, pt. 2

Jan 2024

Christmas (2023) is over
 2023 
▼ show ▼
 2022 
▼ show ▼
 2021 
▼ show ▼
 2020 
▼ show ▼
 2019 
▼ show ▼
 2018 
▼ show ▼
 2017 
▼ show ▼
 2016 
▼ show ▼
 2015 
▼ show ▼
 2014 
▼ show ▼
 2013 
▼ show ▼
 2012 
▼ show ▼

Tags

chalkdust magazine hyperbolic surfaces games finite group light bluesky kenilworth approximation fonts dataset programming live stream palindromes arrangement puzzles cross stitch talking maths in public numerical analysis exponential growth cambridge pi edinburgh crochet wave scattering guest posts sorting stirling numbers databet draughts christmas card european cup logo golden ratio geometry gather town advent calendar wool gaussian elimination raspberry pi countdown determinants news gerry anderson go braiding geogebra finite element method newcastle pi approximation day reuleaux polygons latex mathsteroids sport graphs trigonometry london logs matrix multiplication national lottery the aperiodical bots realhats final fantasy video games kings triangles speed partridge puzzle inverse matrices statistics manchester science festival captain scarlet mean bubble bobble rugby runge's phenomenon estimation pascal's triangle 24 hour maths reddit crossnumber quadrilaterals mathsjam tmip radio 4 big internet math-off machine learning matt parker coventry regular expressions datasaurus dozen correlation wordle nonograms probability bempp pokémon recursion world cup polynomials game show probability football hannah fry oeis menace game of life javascript alphabets signorini conditions accuracy rhombicuboctahedron stickers youtube inline code map projections matrix of cofactors christmas dinosaurs convergence weather station folding paper logic graph theory rust errors martin gardner platonic solids royal institution puzzles thirteen nine men's morris sobolev spaces ternary matrices crosswords pizza cutting people maths dates curvature fence posts friendly squares pythagoras preconditioning computational complexity error bars turtles fractals phd numbers interpolation hexapawn data pokémon wordle warwick london underground anscombe's quartet bodmas ucl royal baby chebyshev binary matrix of minors propositional calculus flexagons arithmetic golden spiral crossnumbers squares tetris standard deviation folding tube maps misleading statistics boundary element methods mathslogicbot books dragon curves chess sound weak imposition electromagnetic field craft tennis manchester plastic ratio asteroids zines hats data visualisation harriss spiral pac-man frobel a gamut of games python noughts and crosses coins simultaneous equations php

Archive

Show me a random blog post
▼ show ▼
© Matthew Scroggs 2012–2026