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

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

Archive

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