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

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

Archive

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