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

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

Archive

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