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

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

Archive

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